Skip to content

chore: sync model metadata from OpenRouter - #1048

Merged
tombeckenham merged 1 commit into
mainfrom
automated/sync-models
Aug 18, 2026
Merged

chore: sync model metadata from OpenRouter#1048
tombeckenham merged 1 commit into
mainfrom
automated/sync-models

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Automated daily sync of model metadata from the OpenRouter API.

  • Fetches the latest model list from OpenRouter
  • Converts to the internal adapter format
  • Syncs provider-specific model metadata for affected packages
  • Creates a patch changeset for all changed packages

@github-actions
github-actions Bot requested a review from a team as a code owner August 4, 2026 08:13
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

🚀 Changeset Version Preview

23 package(s) bumped directly, 29 bumped as dependents.

🟥 Major bumps

Package Version Reason
@tanstack/ai-angular 0.3.1 → 1.0.0 Changeset
@tanstack/ai-anthropic 0.16.3 → 1.0.0 Changeset
@tanstack/ai-byteplus 0.0.0 → 1.0.0 Changeset
@tanstack/ai-durable-stream 0.0.0 → 1.0.0 Changeset
@tanstack/ai-gemini 0.20.1 → 1.0.0 Changeset
@tanstack/ai-grok 0.14.9 → 1.0.0 Changeset
@tanstack/ai-memory 0.0.0 → 1.0.0 Changeset
@tanstack/ai-openai 0.17.1 → 1.0.0 Changeset
@tanstack/ai-openrouter 0.15.10 → 1.0.0 Changeset
@tanstack/ai-persistence 0.0.0 → 1.0.0 Changeset
@tanstack/ai-preact 0.11.1 → 1.0.0 Changeset
@tanstack/ai-react 0.18.1 → 1.0.0 Changeset
@tanstack/ai-sandbox 0.2.4 → 1.0.0 Changeset
@tanstack/ai-solid 0.15.1 → 1.0.0 Changeset
@tanstack/ai-svelte 0.15.1 → 1.0.0 Changeset
@tanstack/ai-vue 0.15.1 → 1.0.0 Changeset
@tanstack/openai-base 0.9.9 → 1.0.0 Changeset
@tanstack/ai-acp 0.2.3 → 1.0.0 Dependent
@tanstack/ai-bedrock 0.1.4 → 1.0.0 Dependent
@tanstack/ai-claude-code 0.2.3 → 1.0.0 Dependent
@tanstack/ai-code-mode 0.3.8 → 1.0.0 Dependent
@tanstack/ai-code-mode-skills 0.3.11 → 1.0.0 Dependent
@tanstack/ai-codex 0.2.3 → 1.0.0 Dependent
@tanstack/ai-elevenlabs 0.2.34 → 1.0.0 Dependent
@tanstack/ai-fal 0.9.12 → 1.0.0 Dependent
@tanstack/ai-grok-build 0.2.3 → 1.0.0 Dependent
@tanstack/ai-groq 0.5.3 → 1.0.0 Dependent
@tanstack/ai-isolate-node 0.1.47 → 1.0.0 Dependent
@tanstack/ai-isolate-quickjs 0.1.47 → 1.0.0 Dependent
@tanstack/ai-mistral 0.2.3 → 1.0.0 Dependent
@tanstack/ai-ollama 0.8.16 → 1.0.0 Dependent
@tanstack/ai-opencode 0.2.3 → 1.0.0 Dependent
@tanstack/ai-react-ui 0.8.15 → 1.0.0 Dependent
@tanstack/ai-sandbox-cloudflare 0.2.4 → 1.0.0 Dependent
@tanstack/ai-sandbox-daytona 0.2.0 → 1.0.0 Dependent
@tanstack/ai-sandbox-docker 0.2.0 → 1.0.0 Dependent
@tanstack/ai-sandbox-local-process 0.2.0 → 1.0.0 Dependent
@tanstack/ai-sandbox-sprites 0.2.1 → 1.0.0 Dependent
@tanstack/ai-sandbox-vercel 0.2.0 → 1.0.0 Dependent
@tanstack/ai-solid-ui 0.7.14 → 1.0.0 Dependent

🟨 Minor bumps

Package Version Reason
@tanstack/ai 0.42.0 → 0.43.0 Changeset
@tanstack/ai-client 0.22.1 → 0.23.0 Changeset
@tanstack/ai-devtools-core 0.4.24 → 0.5.0 Changeset
@tanstack/ai-event-client 0.6.8 → 0.7.0 Changeset
@tanstack/ai-utils 0.3.1 → 0.4.0 Changeset

🟩 Patch bumps

Package Version Reason
@tanstack/ai-mcp 0.2.5 → 0.2.6 Changeset
@tanstack/ai-isolate-cloudflare 0.2.38 → 0.2.39 Dependent
@tanstack/ai-vue-ui 0.2.34 → 0.2.35 Dependent
@tanstack/preact-ai-devtools 0.1.67 → 0.1.68 Dependent
@tanstack/react-ai-devtools 0.2.67 → 0.2.68 Dependent
@tanstack/solid-ai-devtools 0.2.67 → 0.2.68 Dependent
ag-ui 0.0.2 → 0.0.3 Dependent

@nx-cloud

nx-cloud Bot commented Aug 4, 2026

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 64a758d

Command Status Duration Result
nx run-many --targets=build --exclude=examples/... ✅ Succeeded 3s View ↗

☁️ Nx Cloud last updated this comment at 2026-08-18 01:48:19 UTC

@harshlocham harshlocham left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes — CI is red after this model sync

Ran the PR quality checks locally. Passing: sherif, knip, docs, kiira, oxlint, test:dts. Failing: test:types, test:lib, build/test:build.

1. Blocking — OpenRouter prediction breaks @tanstack/ai-openrouter:build / test:types

OpenRouter now advertises supported_parameters: ["prediction"] for:

  • mistralai/codestral-2508
  • openai/gpt-4o
  • openai/gpt-4o-2024-05-13
  • openai/gpt-4o-2024-08-06
  • openai/gpt-4o-2024-11-20
  • openai/gpt-4o-mini
  • openai/gpt-4o-mini-2024-07-18

The converter generates:

Pick<OpenRouterBaseOptions, ..., 'prediction', ...>

OpenRouterBaseOptions is derived from @openrouter/sdk's ChatRequest, which does not expose a prediction field. This causes TS2344 during build and cascades into the OpenRouter type tests.

The converter already documents the intended behavior: parameters not supported by the SDK should be excluded because they are stripped by the outbound schema.

Suggested fix: add 'prediction' to excludedParams in scripts/convert-openrouter-models.ts, regenerate model-meta.ts, and verify @tanstack/ai-openrouter:build and test:types pass.

2. Blocking — Anthropic tool capability map is incomplete

claude-opus-5 and claude-opus-5-fast were added to:

  • ANTHROPIC_MODELS
  • AnthropicChatModelProviderOptionsByName
  • AnthropicModelInputModalitiesByName

but not to AnthropicChatModelToolCapabilitiesByName.

As a result, the exhaustiveness check in tools-per-model-type-safety.test.ts fails.

Suggested fix: add tool capability entries for the new models and verify any other manually maintained capability maps remain exhaustive.

3. Blocking — Grok unit test is stale

GROK_CHAT_MODELS now includes grok-4.5, but grok-adapter.test.ts still asserts the previous list:

expect(GROK_CHAT_MODELS).toEqual([
  'grok-build-0.1',
  'grok-4.3',
])

Suggested fix: update the expected model list to include grok-4.5.


End with the last suggested fix and nothing else.

@github-actions
github-actions Bot force-pushed the automated/sync-models branch 8 times, most recently from a5ca6a3 to fcb5d2d Compare August 12, 2026 07:02
@github-actions
github-actions Bot force-pushed the automated/sync-models branch 2 times, most recently from c5c66ce to 5929856 Compare August 14, 2026 07:03
@github-actions
github-actions Bot force-pushed the automated/sync-models branch 2 times, most recently from dc0f690 to 7435a46 Compare August 16, 2026 06:19
@pkg-pr-new

pkg-pr-new Bot commented Aug 18, 2026

Copy link
Copy Markdown

Open in StackBlitz

@tanstack/ai

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai@1048

@tanstack/ai-acp

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-acp@1048

@tanstack/ai-angular

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-angular@1048

@tanstack/ai-anthropic

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-anthropic@1048

@tanstack/ai-bedrock

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-bedrock@1048

@tanstack/ai-byteplus

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-byteplus@1048

@tanstack/ai-claude-code

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-claude-code@1048

@tanstack/ai-client

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-client@1048

@tanstack/ai-code-mode

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-code-mode@1048

@tanstack/ai-code-mode-snippets

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-code-mode-snippets@1048

@tanstack/ai-codex

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-codex@1048

@tanstack/ai-cohere

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-cohere@1048

@tanstack/ai-devtools-core

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-devtools-core@1048

@tanstack/ai-durable-stream

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-durable-stream@1048

@tanstack/ai-elevenlabs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-elevenlabs@1048

@tanstack/ai-event-client

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-event-client@1048

@tanstack/ai-fal

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-fal@1048

@tanstack/ai-gemini

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-gemini@1048

@tanstack/ai-grok

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-grok@1048

@tanstack/ai-grok-build

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-grok-build@1048

@tanstack/ai-groq

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-groq@1048

@tanstack/ai-isolate-cloudflare

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-cloudflare@1048

@tanstack/ai-isolate-daytona

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-daytona@1048

@tanstack/ai-isolate-node

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-node@1048

@tanstack/ai-isolate-quickjs

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-quickjs@1048

@tanstack/ai-isolate-quickjs-bun

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-isolate-quickjs-bun@1048

@tanstack/ai-mcp

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-mcp@1048

@tanstack/ai-memory

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-memory@1048

@tanstack/ai-mistral

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-mistral@1048

@tanstack/ai-ollama

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-ollama@1048

@tanstack/ai-openai

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-openai@1048

@tanstack/ai-opencode

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-opencode@1048

@tanstack/ai-openrouter

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-openrouter@1048

@tanstack/ai-perplexity

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-perplexity@1048

@tanstack/ai-persistence

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-persistence@1048

@tanstack/ai-preact

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-preact@1048

@tanstack/ai-react

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-react@1048

@tanstack/ai-react-ui

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-react-ui@1048

@tanstack/ai-sandbox

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox@1048

@tanstack/ai-sandbox-cloudflare

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-cloudflare@1048

@tanstack/ai-sandbox-daytona

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-daytona@1048

@tanstack/ai-sandbox-docker

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-docker@1048

@tanstack/ai-sandbox-local-process

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-local-process@1048

@tanstack/ai-sandbox-sprites

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-sprites@1048

@tanstack/ai-sandbox-vercel

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-sandbox-vercel@1048

@tanstack/ai-solid

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-solid@1048

@tanstack/ai-solid-ui

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-solid-ui@1048

@tanstack/ai-svelte

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-svelte@1048

@tanstack/ai-utils

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-utils@1048

@tanstack/ai-vercel-gateway

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vercel-gateway@1048

@tanstack/ai-vue

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vue@1048

@tanstack/ai-vue-ui

npm i https://pkg.pr.new/TanStack/ai/@tanstack/ai-vue-ui@1048

@tanstack/openai-base

npm i https://pkg.pr.new/TanStack/ai/@tanstack/openai-base@1048

@tanstack/preact-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/preact-ai-devtools@1048

@tanstack/react-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/react-ai-devtools@1048

@tanstack/solid-ai-devtools

npm i https://pkg.pr.new/TanStack/ai/@tanstack/solid-ai-devtools@1048

commit: f5ea8d1

@tombeckenham
tombeckenham force-pushed the automated/sync-models branch from 64a758d to f5ea8d1 Compare August 18, 2026 01:46
@tombeckenham
tombeckenham self-requested a review August 18, 2026 02:10
@github-actions
github-actions Bot force-pushed the automated/sync-models branch from f5ea8d1 to 50c7df0 Compare August 18, 2026 06:20
@tombeckenham
tombeckenham merged commit bc8c5e8 into main Aug 18, 2026
2 checks passed
@tombeckenham
tombeckenham deleted the automated/sync-models branch August 18, 2026 07:02
tombeckenham added a commit that referenced this pull request Aug 18, 2026
- Image: add grok-imagine-image-2.0 (xAI's recommended model) with the
  2.0-only quality provider option ('low' | 'medium').
- Video: drop the stale image-to-video-only guard on grok-imagine-video-1.5
  (it now supports text-to-video with native 1080p); add reference-to-video
  (role:'reference' image parts -> reference_images, preset voices via
  modelOptions.reference_audios, max 3); add edit/extend modes via a source
  video prompt part + modelOptions.mode ('edit' -> /v1/videos/edits,
  'extend' -> /v1/videos/extensions with duration = added tail).
- Voice: add grok-voice-think-fast-2.0 (current recommended) and the
  grok-voice-latest alias; move realtime token/adapter defaults off the
  deprecated 1.0 ids.
- Fix the stale GROK_CHAT_MODELS test expectation broken by the #1048
  model-metadata sync.
- Update docs, media-generation skill, and example apps accordingly.

Closes #1133
AlemTuzlak pushed a commit that referenced this pull request Aug 18, 2026
…ated model options (#1135)

The OpenRouter model-metadata sync (#1048) started emitting 'prediction'
in the generated per-model option Picks, but @openrouter/sdk's ChatRequest
does not declare that field (its outbound schema would strip it at
runtime), so packages/ai-openrouter no longer compiled and main CI went
red. Add 'prediction' to the generator's excludedParams set (same
rationale as the existing entries) and strip it from the generated
model-meta.

Also update the stale GROK_CHAT_MODELS test expectation that the same
sync commit broke by adding grok-4.5 / grok-4.6.
AlemTuzlak pushed a commit that referenced this pull request Aug 18, 2026
- Image: add grok-imagine-image-2.0 (xAI's recommended model) with the
  2.0-only quality provider option ('low' | 'medium').
- Video: drop the stale image-to-video-only guard on grok-imagine-video-1.5
  (it now supports text-to-video with native 1080p); add reference-to-video
  (role:'reference' image parts -> reference_images, preset voices via
  modelOptions.reference_audios, max 3); add edit/extend modes via a source
  video prompt part + modelOptions.mode ('edit' -> /v1/videos/edits,
  'extend' -> /v1/videos/extensions with duration = added tail).
- Voice: add grok-voice-think-fast-2.0 (current recommended) and the
  grok-voice-latest alias; move realtime token/adapter defaults off the
  deprecated 1.0 ids.
- Fix the stale GROK_CHAT_MODELS test expectation broken by the #1048
  model-metadata sync.
- Update docs, media-generation skill, and example apps accordingly.

Closes #1133
AlemTuzlak added a commit that referenced this pull request Aug 18, 2026
…1136)

* feat(ai-grok): catch up Grok Imagine image, video, and voice modes

- Image: add grok-imagine-image-2.0 (xAI's recommended model) with the
  2.0-only quality provider option ('low' | 'medium').
- Video: drop the stale image-to-video-only guard on grok-imagine-video-1.5
  (it now supports text-to-video with native 1080p); add reference-to-video
  (role:'reference' image parts -> reference_images, preset voices via
  modelOptions.reference_audios, max 3); add edit/extend modes via a source
  video prompt part + modelOptions.mode ('edit' -> /v1/videos/edits,
  'extend' -> /v1/videos/extensions with duration = added tail).
- Voice: add grok-voice-think-fast-2.0 (current recommended) and the
  grok-voice-latest alias; move realtime token/adapter defaults off the
  deprecated 1.0 ids.
- Fix the stale GROK_CHAT_MODELS test expectation broken by the #1048
  model-metadata sync.
- Update docs, media-generation skill, and example apps accordingly.

Closes #1133

* fix(ai-grok): harden video mode routing and per-model options after review

Address /review-pr findings on #1136:

- Reject unknown modelOptions.mode values instead of silently misrouting a
  source-video body to /videos/generations (wrong endpoint, wrong billing).
- Stop leaking raw duration/aspect_ratio/resolution from modelOptions into
  edit/extend bodies: edit rejects any duration (output inherits the source
  clip's length) and both modes reject size/aspect_ratio/resolution, matching
  the documented inherit-from-source semantics instead of sending fields the
  API ignores. Extend still snaps its added-tail duration.
- Hoist mode-exclusivity checks into a dedicated edit/extend path so error
  messages never give generation-path advice for mode requests.
- Throw on unknown image metadata.role strings instead of silently dropping
  the part (roles arrive untrusted from JSON callers).
- Gate reference inputs to grok-imagine-video-1.5 at runtime, and split the
  provider options per model (GrokVideoBaseProviderOptions vs the 1.5 shape)
  so v1.0 no longer advertises reference fields at compile time.
- Extract GROK_DEFAULT_REALTIME_MODEL so the token issuer and client adapter
  can't drift apart on future default bumps.
- Comment/doc accuracy fixes: 'character' role alias documented, stale xAI
  URL and file headers refreshed, create-response JSDoc covers all three
  endpoints, deprecated 1.0 voice ids named in docs, example now requests
  the native 1080p it advertises.
- 10 new tests: unknown mode/role rejection, edit duration/size rejection,
  extend snapping (modelOptions + generic), combined start-frame+reference
  body, explicit reference_images override, v1.0 reference gating, 1080p
  T2V body assertion, realtime token default model.

* fix(ai-grok): restrict edit/extend to grok-imagine-video and reject mixed modes

* fix(ai-anthropic): add opus-5 models to the tool-capabilities map

* fix(ai-grok): normalize JSON-null options and name endpoints in failures

Re-applies the review residuals on top of the rebased branch:

- Treat JSON-serialized null / empty-array values for duration and the
  reference fields as unset on every path: the generation branch no longer
  sends "duration": null or empty reference arrays, and null reference
  fields no longer trip the v1.0 reference gate; edit/extend destructure
  the reference fields out of the passthrough so no known key can leak
  into those bodies.
- Name the actual endpoint in create-job failure messages so a failed
  edit/extension no longer reports as a 'video generation' failure.
- Type-tie GROK_VIDEO_REFERENCE_MODELS / GROK_VIDEO_SOURCE_MODELS to the
  per-model options map so a typo or an unlisted future capable model is
  a compile error.
- Sync the media-generation skill with the current contract (v1.0-only
  edit/extend, reference caps, 720p reference cap, 1080p on 1.5 only,
  edit/extend option rejections).
- Tests: null-duration strip, null/empty reference normalization,
  endpoint-named edit failure (124 total).

---------

Co-authored-by: Alem Tuzlak <t.zlak@hotmail.com>
@github-actions github-actions Bot mentioned this pull request Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants