Skip to main content

update-models

Sync model types from SAP Notes 3437766. Use when model-types.ts needs updating from the latest SAP AI model availability table.

معلومات المصدر

المستودع
SAP/ai-sdk-js
آخر نشاط في المصدر
٢٢ سبتمبر ٢٠٢٦ في ١٢:١٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٢٦
التفرعات
٥٨

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
update-models
description
Sync model types from SAP Notes 3437766. Use when model-types.ts needs updating from the latest SAP AI model availability table.
argument-hint
[no arguments needed]
# Update Model Types from SAP Notes Syncs `packages/core/src/model-types.ts` and the deprecated models table in the SAP/ai-sdk docs with the current model table on SAP Notes (me.sap.com/notes/3437766). ## Steps 1. **Navigate to the SAP Notes page** using the Playwright MCP tool: - Use `browser_navigate` to go to `https://me.sap.com/notes/3437766` - Use `browser_wait_for` to wait for `Availability of Generative AI Models` - If the page shows a login screen, tell the user to log in to me.sap.com in the Playwright browser window and wait for their confirmation, then retry. 2. **Extract the model tables** (then close the browser tab when done): - Read `scripts/extract-model-table.js` and pass its contents as the function body to `browser_evaluate`. - The script returns either `{ active: [...], retired: [...], batch: [...] }` (success) or `{ error: '...' }` (failure). - If the result is an error or `result.active` is empty, the session has expired — tell the user to log in to me.sap.com in the Playwright browser window and wait for their confirmation, then retry. - On success, **sync models into `scripts/sap-models.json`**: - **Remove duplicate scraped rows, keeping the latest version first**: both tables include a `Version` column. When `result.active` or `result.retired` contains multiple rows for the same `model` name, compare their `version` strings and keep only the row with the **latest version** (use your judgment — versions may be date-like `2024-11-20`, semantic `1.2`, or arbitrary strings; pick the one a human would call newest). Discard the older-versioned rows entirely. - **Status is determined by the latest version only**: if the latest-versioned row of a model is active (not deprecated/retired), treat the model as active even if older-versioned rows are marked deprecated or retired. Conversely, only treat a model as deprecated/retired when its latest version carries that status. - For each de-duplicated model in `result.active`: update the existing entry matched by `model` field (update all fields including `version`), or append it if not already present. **Clear** the `retired` field (set to `""`) if it was previously set. - For each de-duplicated model in `result.retired`: if already present in `sap-models.json`, set `retired: "yes"` and update `suggestedReplacement` and `version` from `result.retired`. If not present at all, **append** a new entry with `retired: "yes"` and the fields from `result.retired` (set `availableInOrchestration: ""`, `deprecated: ""`, `retirementDate: ""`). - **Do not remove** any entries from `sap-models.json` — retired models stay in the file with `retired: "yes"`. - If both `result.active` and `result.retired` list a model (after per-table de-duplication), treat it as retired. - After merging, **verify no duplicate `model` values exist** in `sap-models.json`. If any remain, remove the older/less-complete entry and report the duplicate removal to the user. - **Sync batch models into the `batchModels` key of `scripts/sap-models.json`**: - `result.batch` is a string array of model names from the SAP Notes "Batch Consumption Supported Models" section. - **The SAP Notes batch list is authoritatively incomplete** — the LLM batch service supports models not listed there. The `batchModels` key in `sap-models.json` is the ground truth and must never be shrunk by a scrape. - Merge non-destructively: take the **union** of the existing `batchModels` array and `result.batch`, de-duplicated and sorted ascending. **Add** any scraped model not already in the array. - **Never auto-remove** a model that is in `batchModels` but absent from `result.batch` — it is likely a service-only model the SAP Notes omit. Instead, **list those models to the user** and let them decide whether to remove any. Only remove on explicit user confirmation. - If `result.batch` is empty (section not found), keep `batchModels` unchanged and warn the user. - When you later run `pnpm tsx scripts/sync-model-types.ts`, it now emits a `⚠ Batch model "..."` warning for any `batchModels` entry that is retired/excluded for chat. Review each warning and decide whether to remove that entry (still manual — the script never auto-removes). - **Close the browser tab** using `browser_close` to avoid stale session issues on future runs. 3. **Patch model-types.ts** by running the sync script: ```bash pnpm tsx scripts/sync-model-types.ts ``` If the output ends with a `⚠ Skipped N model(s)` warning, show the user the listed model names and their `executableId` values and ask whether they want to add a mapping. If yes, add the appropriate entry to `EXECUTABLE_ID_TO_TYPE` in `scripts/sync-model-types.ts` and re-run the script before proceeding. The script also checks which synced models are available in your landscape using the foundation-models API. 4. **Sync the deprecated models table in `docs-js/overview.mdx` (SAP/ai-sdk repository):** a. Clone the SAP/ai-sdk repository into a temp directory: ```bash DOCS_DIR=$(mktemp -d) git clone --depth=1 https://github.com/SAP/ai-sdk "$DOCS_DIR" ``` b. Using the Edit tool, make the following targeted changes to `$DOCS_DIR/docs-js/overview.mdx`: - **Remove** rows where the model has `retired: "yes"` in `sap-models.json` — note removed models to the user. Only list models that are still active (not retired) but deprecated (`deprecated: "yes"` or retirement date set in `sap-models.json`). Fully retired models must be removed from the table. - **Update** the replacement cell of any existing row whose replacement differs from the script output. If the replacement is not listed in `sap-models.json` add it as `<!-- MODEL_NAME -->` in the cell so the user can decide how to handle it. - **Append** rows for newly deprecated models (not yet in the table) to the bottom, one per line. Preserve existing row order — new entries go at the end. c. Use the Edit tool to replace the entire markdown table (header row through last data row) in `$DOCS_DIR/docs-js/overview.mdx`. Write rows without padding — `lint:fix` will normalize column widths. d. Run install, lint fix, and build to verify: ```bash cd "$DOCS_DIR" && npm ci && npm run lint:fix && npm run build ``` If any step fails, show the error to the user and stop. e. Show the diff: ```bash git -C "$DOCS_DIR" diff docs-js/overview.mdx ``` 5. **Check for deprecated model usage** in the ai-sdk-js codebase: - From `scripts/sap-models.json`, collect names of all models where `retired` is `"yes"`, `deprecated` is `"yes"`, or a retirement date is set. - Grep the repository for any of those model names (exclude `scripts/sap-models.json` itself, `packages/core/src/model-types.ts`, OpenAPI specs and generated files like `packages/*/src/client/**/*.ts`). - If matches are found, report them to the user so they can decide whether to update or remove those usages. 6. **Show the ai-sdk-js diff** to the user: ```bash git diff packages/core/src/model-types.ts ``` If neither file changed, tell the user everything is already up to date and stop. 7. **Ask the user** if they want to open PRs with these changes. 8. If yes, **create branches and open PRs** — one per repository: **ai-sdk-js** (model types): ```bash git checkout -b model-types-update/$(date +%Y-%m-%d) git add scripts/sap-models.json packages/core/src/model-types.ts git commit -m "chore: sync model types from SAP Notes 3437766" gh pr create --draft --base main --title "chore: Sync model types from SAP Notes" --body "Automated sync of model types from [SAP Notes 3437766](https://me.sap.com/notes/3437766).\n\n## Changes\n\nUpdated LiteralUnion type blocks in \`packages/core/src/model-types.ts\` to reflect current model availability.\n\n## Definition of Done\n- [ ] Model names are correct\n- [ ] Compilation passes\n- [ ] Release notes / Changeset updated if needed" ``` **SAP/ai-sdk** (docs), if `docs-js/overview.mdx` changed: ```bash BRANCH="docs/update-deprecated-models-js-$(date +%Y-%m-%d)" git -C "$DOCS_DIR" checkout -b "$BRANCH" git -C "$DOCS_DIR" add docs-js/overview.mdx git -C "$DOCS_DIR" commit -m "docs: update deprecated models table" git -C "$DOCS_DIR" push origin "$BRANCH" gh pr create --draft --repo SAP/ai-sdk --base main --head "$BRANCH" \ --title "docs: Update deprecated models table" \ --body "Sync of the deprecated models table in \`docs-js/overview.mdx\` from [SAP Notes 3437766](https://me.sap.com/notes/3437766).\n\n## Changes\n\n- Added newly deprecated models\n- Removed retired models (no longer listed in SAP Notes)\n- Updated replacement suggestions\n\n## Definition of Done\n- [ ] Table entries are correct\n- [ ] Retired models removed\n- [ ] Replacement suggestions accurate" ``` ## Prerequisites - `playwright@claude-plugins-official` must be enabled as a Claude Code plugin — install it via `/plugin` in Claude Code - `gh` CLI must be authenticated: run `gh auth login` if not already done - **First run:** me.sap.com credentials required for manual login in the Playwright browser window (the session is saved automatically for future runs)
عرض على GitHub