Files
Jack Chen cc2a83395a fix: name the current DeepSeek Flash model instead of a retired alias (#598)
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.
2026-09-12 01:04:31 +08:00

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