mirror of
https://github.com/JackChen-me/open-multi-agent.git
synced 2026-10-22 11:02:59 -05:00
DeepSeek retired the V4-Flash model and named the current generation `deepseek-flash`, with no version in the name. `deepseek-v4-flash` is still accepted, but DeepSeek documents it as a temporary compatibility name and already serves those requests from V4.1-Flash. The repository handed that name to users in the places most likely to be copied: the `oma` CLI default for `provider: 'deepseek'`, the adapter JSDoc that ships in the type declarations, the provider table in docs, the scaffolder env template, and every DeepSeek example. A copied name that the vendor calls temporary has an expiry date the reader cannot see. The provider table and the adapter JSDoc also stated that `deepseek-v4-flash` resolves to DeepSeek-V4-Flash-0731. That model is retired, so the sentence described a routing that no longer happens. Two corrections of the same kind travel with it. The thinking-mode note claimed the V4 models run at `high` effort, but the adapter forwards whatever effort the caller passes and sets none itself, so the claim is dropped rather than restated. Three `examples/basics` headers offered `deepseek-chat`, which DeepSeek retired outright on 2026-07-24 and which no longer resolves at all. The release bot moves to the same name. Callers that pass an explicit model are unaffected, and the old name keeps working for as long as DeepSeek accepts it. Left unchanged on purpose: `bench/config.json`, whose values are frozen controls for an already-run benchmark; the AtlasCloud pages, whose IDs come from that vendor's own model library; and the changelog history.
110 lines
4.1 KiB
YAML
110 lines
4.1 KiB
YAML
name: OMA Release Bot
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# Friday 18:23 Asia/Taipei. The offset is intentionally documented because
|
|
# GitHub schedules are UTC and can be delayed during high load. The :23
|
|
# keeps the trigger off the top of the hour, the most contended slot: the
|
|
# 2026-08-28 trigger was never delivered at all, not merely delayed.
|
|
- cron: '23 10 * * 5'
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: oma-release-bot-main
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
prepare-release-pr:
|
|
if: github.repository == 'open-multi-agent/open-multi-agent'
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
permissions:
|
|
contents: read
|
|
issues: write
|
|
steps:
|
|
- name: Create narrowly scoped GitHub App token
|
|
id: app-token
|
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
|
with:
|
|
client-id: ${{ vars.RELEASE_BOT_APP_CLIENT_ID }}
|
|
private-key: ${{ secrets.RELEASE_BOT_APP_PRIVATE_KEY }}
|
|
permission-contents: write
|
|
permission-pull-requests: write
|
|
|
|
- name: Resolve GitHub App commit identity
|
|
id: app-user
|
|
env:
|
|
GH_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
APP_SLUG: ${{ steps.app-token.outputs.app-slug }}
|
|
run: |
|
|
set -euo pipefail
|
|
user_id=$(gh api "/users/${APP_SLUG}[bot]" --jq .id)
|
|
echo "name=${APP_SLUG}[bot]" >> "$GITHUB_OUTPUT"
|
|
echo "email=${user_id}+${APP_SLUG}[bot]@users.noreply.github.com" >> "$GITHUB_OUTPUT"
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
fetch-depth: 0
|
|
token: ${{ steps.app-token.outputs.token }}
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 24
|
|
cache: npm
|
|
|
|
- run: npm ci --ignore-scripts
|
|
|
|
- name: Configure auditable bot commit identity
|
|
env:
|
|
BOT_NAME: ${{ steps.app-user.outputs.name }}
|
|
BOT_EMAIL: ${{ steps.app-user.outputs.email }}
|
|
run: |
|
|
git config user.name "$BOT_NAME"
|
|
git config user.email "$BOT_EMAIL"
|
|
|
|
- name: Build the repository-local release bot
|
|
run: npm run build -w @open-multi-agent/release-bot
|
|
|
|
- name: Analyze merged changes and create a ready release PR
|
|
env:
|
|
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
|
|
RELEASE_BOT_GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
RELEASE_BOT_MODEL: deepseek-flash
|
|
run: node packages/release-bot/dist/cli.js prepare-pr
|
|
|
|
# A weekly job that fails only into the Actions tab is a job nobody reads.
|
|
# Two consecutive Friday runs failed unnoticed before this step existed.
|
|
# Uses the built-in token, so it needs no App permission or new secret.
|
|
- name: Surface a failed run so the weekly cadence cannot fail silently
|
|
if: failure()
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
ISSUE_TITLE: Release bot run failed
|
|
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
|
TRIGGER: ${{ github.event_name }}
|
|
COMMIT_SHA: ${{ github.sha }}
|
|
run: |
|
|
set -euo pipefail
|
|
# Filter the plain list rather than the search index, which lags far
|
|
# enough behind creation to open a second issue for one incident.
|
|
number=$(gh issue list --state open --limit 100 --json number,title \
|
|
--jq 'map(select(.title == env.ISSUE_TITLE)) | .[0].number // empty')
|
|
body=$(printf '%s\n' \
|
|
"The \`$TRIGGER\` release bot run did not finish." \
|
|
"" \
|
|
"- Run: $RUN_URL" \
|
|
"- Commit: \`$COMMIT_SHA\`" \
|
|
"" \
|
|
"Open the failing step's log for the cause. A token-budget stop or a" \
|
|
"skipped task now names itself on the \`OMA release analysis failed.\`" \
|
|
"line rather than leaving it blank.")
|
|
if [ -n "$number" ]; then
|
|
gh issue comment "$number" --body "$body"
|
|
else
|
|
gh issue create --title "$ISSUE_TITLE" --body "$body"
|
|
fi
|