Skip to content

ci: Version Packages - #1118

Merged
AlemTuzlak merged 1 commit into
mainfrom
changeset-release/main
Aug 18, 2026
Merged

ci: Version Packages#1118
AlemTuzlak merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

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

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@tanstack/ai@0.45.0

Minor Changes

  • #1110 c63319e - Harness adapters honor chat({ outputSchema }) on the same turn.

    Claude Code and Codex pass a native schema flag. OpenCode, Grok Build, and acpCompatible parse JSON from the final assistant text. The engine reads a structured-output.complete event so harness prose is not parsed as JSON.

  • #1114 0fb8263 - Rename Code Mode "skills" to "snippets" to disambiguate them from agent skills (the SKILL.md packaging system).

    Breaking — package rename. @tanstack/ai-code-mode-skills is now published as @tanstack/ai-code-mode-snippets. Update your dependency and imports. The /storage subpath is unchanged.

    Breaking — API rename. Every Skill/skill identifier in the package public API becomes Snippet/snippet, for example:

    • codeModeWithSkills()codeModeWithSnippets()
    • skillsToTools() / skillToTool()snippetsToTools() / snippetToTool()
    • skillsToBindings() / skillsToSimpleBindings()snippetsToBindings() / snippetsToSimpleBindings()
    • selectRelevantSkills()selectRelevantSnippets()
    • createSkillManagementTools()createSnippetManagementTools()
    • createSkillsSystemPrompt()createSnippetsSystemPrompt()
    • generateSkillTypes()generateSnippetTypes()
    • createFileSkillStorage() / createMemorySkillStorage()createFileSnippetStorage() / createMemorySnippetStorage()
    • Types: Skill, SkillStorage, SkillIndexEntry, SkillStats, SkillBinding, SkillsConfig, CodeModeWithSkillsOptions/Result → the Snippet… equivalents
    • Options: skillssnippets, skillsAsToolssnippetsAsTools, maxSkillsInContextmaxSnippetsInContext
    • Runtime tools: search_skills / get_skill / register_skillsearch_snippets / get_snippet / register_snippet
    • Sandbox bindings are now exposed with the snippet_ prefix (was skill_)

    Breaking — sandbox hook (@tanstack/ai-code-mode). The createCodeModeTool config option getSkillBindings is renamed to getSnippetBindings (same signature — an optional () => Promise<Record<string, ToolBinding>> returning dynamic bindings merged at execution time).

    Breaking — wire contract (@tanstack/ai). The Code Mode custom events are renamed: code_mode:skill_call / _result / _errorcode_mode:snippet_* (payload field skillsnippet), and skill:registeredsnippet:registered. The exported event types CodeModeSkillCallEvent / CodeModeSkillResultEvent / CodeModeSkillErrorEvent / SkillRegisteredEvent are renamed to their Snippet equivalents.

Patch Changes

  • #1116 d10dfe6 - Preserve existing message IDs on interrupt MESSAGES_SNAPSHOT events.

  • #1132 eda82cc - Timestamp native and fallback structured-output events when they are emitted so their lifecycle remains chronologically ordered.

  • #1134 b09e010 - Return malformed tool arguments to the model as an error result so the agent loop can repair them.

@tanstack/ai-acp@0.3.0

Minor Changes

  • #1110 c63319e - Harness adapters honor chat({ outputSchema }) on the same turn.

    Claude Code and Codex pass a native schema flag. OpenCode, Grok Build, and acpCompatible parse JSON from the final assistant text. The engine reads a structured-output.complete event so harness prose is not parsed as JSON.

Patch Changes

@tanstack/ai-claude-code@0.4.0

Minor Changes

  • #1110 c63319e - Harness adapters honor chat({ outputSchema }) on the same turn.

    Claude Code and Codex pass a native schema flag. OpenCode, Grok Build, and acpCompatible parse JSON from the final assistant text. The engine reads a structured-output.complete event so harness prose is not parsed as JSON.

Patch Changes

@tanstack/ai-code-mode@0.4.0

Minor Changes

  • #1114 0fb8263 - Rename Code Mode "skills" to "snippets" to disambiguate them from agent skills (the SKILL.md packaging system).

    Breaking — package rename. @tanstack/ai-code-mode-skills is now published as @tanstack/ai-code-mode-snippets. Update your dependency and imports. The /storage subpath is unchanged.

    Breaking — API rename. Every Skill/skill identifier in the package public API becomes Snippet/snippet, for example:

    • codeModeWithSkills()codeModeWithSnippets()
    • skillsToTools() / skillToTool()snippetsToTools() / snippetToTool()
    • skillsToBindings() / skillsToSimpleBindings()snippetsToBindings() / snippetsToSimpleBindings()
    • selectRelevantSkills()selectRelevantSnippets()
    • createSkillManagementTools()createSnippetManagementTools()
    • createSkillsSystemPrompt()createSnippetsSystemPrompt()
    • generateSkillTypes()generateSnippetTypes()
    • createFileSkillStorage() / createMemorySkillStorage()createFileSnippetStorage() / createMemorySnippetStorage()
    • Types: Skill, SkillStorage, SkillIndexEntry, SkillStats, SkillBinding, SkillsConfig, CodeModeWithSkillsOptions/Result → the Snippet… equivalents
    • Options: skillssnippets, skillsAsToolssnippetsAsTools, maxSkillsInContextmaxSnippetsInContext
    • Runtime tools: search_skills / get_skill / register_skillsearch_snippets / get_snippet / register_snippet
    • Sandbox bindings are now exposed with the snippet_ prefix (was skill_)

    Breaking — sandbox hook (@tanstack/ai-code-mode). The createCodeModeTool config option getSkillBindings is renamed to getSnippetBindings (same signature — an optional () => Promise<Record<string, ToolBinding>> returning dynamic bindings merged at execution time).

    Breaking — wire contract (@tanstack/ai). The Code Mode custom events are renamed: code_mode:skill_call / _result / _errorcode_mode:snippet_* (payload field skillsnippet), and skill:registeredsnippet:registered. The exported event types CodeModeSkillCallEvent / CodeModeSkillResultEvent / CodeModeSkillErrorEvent / SkillRegisteredEvent are renamed to their Snippet equivalents.

Patch Changes

@tanstack/ai-code-mode-snippets@0.4.0

Minor Changes

  • #1114 0fb8263 - Rename Code Mode "skills" to "snippets" to disambiguate them from agent skills (the SKILL.md packaging system).

    Breaking — package rename. @tanstack/ai-code-mode-skills is now published as @tanstack/ai-code-mode-snippets. Update your dependency and imports. The /storage subpath is unchanged.

    Breaking — API rename. Every Skill/skill identifier in the package public API becomes Snippet/snippet, for example:

    • codeModeWithSkills()codeModeWithSnippets()
    • skillsToTools() / skillToTool()snippetsToTools() / snippetToTool()
    • skillsToBindings() / skillsToSimpleBindings()snippetsToBindings() / snippetsToSimpleBindings()
    • selectRelevantSkills()selectRelevantSnippets()
    • createSkillManagementTools()createSnippetManagementTools()
    • createSkillsSystemPrompt()createSnippetsSystemPrompt()
    • generateSkillTypes()generateSnippetTypes()
    • createFileSkillStorage() / createMemorySkillStorage()createFileSnippetStorage() / createMemorySnippetStorage()
    • Types: Skill, SkillStorage, SkillIndexEntry, SkillStats, SkillBinding, SkillsConfig, CodeModeWithSkillsOptions/Result → the Snippet… equivalents
    • Options: skillssnippets, skillsAsToolssnippetsAsTools, maxSkillsInContextmaxSnippetsInContext
    • Runtime tools: search_skills / get_skill / register_skillsearch_snippets / get_snippet / register_snippet
    • Sandbox bindings are now exposed with the snippet_ prefix (was skill_)

    Breaking — sandbox hook (@tanstack/ai-code-mode). The createCodeModeTool config option getSkillBindings is renamed to getSnippetBindings (same signature — an optional () => Promise<Record<string, ToolBinding>> returning dynamic bindings merged at execution time).

    Breaking — wire contract (@tanstack/ai). The Code Mode custom events are renamed: code_mode:skill_call / _result / _errorcode_mode:snippet_* (payload field skillsnippet), and skill:registeredsnippet:registered. The exported event types CodeModeSkillCallEvent / CodeModeSkillResultEvent / CodeModeSkillErrorEvent / SkillRegisteredEvent are renamed to their Snippet equivalents.

Patch Changes

@tanstack/ai-codex@0.4.0

Minor Changes

  • #1110 c63319e - Harness adapters honor chat({ outputSchema }) on the same turn.

    Claude Code and Codex pass a native schema flag. OpenCode, Grok Build, and acpCompatible parse JSON from the final assistant text. The engine reads a structured-output.complete event so harness prose is not parsed as JSON.

Patch Changes

@tanstack/ai-gemini@0.24.0

Minor Changes

  • #1104 a8454a7 - Add the GA Gemini native image model ids and give each native image model its own size type.

    gemini-3.1-flash-image-preview and gemini-3-pro-image-preview were shut down on 2026-06-25 and now 404. Their GA replacements — gemini-3.1-flash-image and gemini-3-pro-image — are now the primary ids. The -preview ids remain in the model union as aliases so existing code keeps compiling; gemini-2.5-flash-image stays fully supported ahead of its 2026-10-02 shutdown.

    Sizes were a single flat union ({8 ratios}_{1K|2K|4K}) applied to every native model. Google documents four different sets, so each model now maps to its own:

    model aspect ratios resolutions
    gemini-3.1-flash-image (+ -preview) 14 512 1K 2K 4K
    gemini-3.1-flash-lite-image 14 1K
    gemini-3-pro-image (+ -preview) 10 1K 2K 4K
    gemini-2.5-flash-image 10 none — bare ratio, e.g. '16:9'

    4:5 and 5:4 are now accepted on every native model (Google lists them for all four; the old union omitted them). 9:21 is deliberately still rejected — it exists on Vertex/Cloud only and the Gemini API rejects it.

    Runtime behaviour changes in two places. The rest of the change is types-only, but these two are real wire-format deltas:

    • parseNativeImageSize() now accepts a bare aspect ratio. Previously '16:9' failed to parse, so the adapter omitted imageConfig entirely and the model picked its own aspect ratio; it now parses to { aspectRatio: '16:9' } and the adapter sends imageConfig.aspectRatio = '16:9'. A JavaScript caller — or a TypeScript caller whose size is computed at runtime and widened to string — that already passed a bare ratio will get a differently-framed image after upgrading, with no compile or runtime error.
    • Migrating a gemini-2.5-flash-image call from '16:9_1K' to the now-required bare '16:9' drops imageSize from the generateContent request. That is intended: Google publishes no image_size value or default for this model, so the adapter no longer guesses a tier the API never documented.

    BREAKING (types only): size combinations the selected model never supported no longer compile. No model id was removed.

    • gemini-3.1-flash-lite-image: 2K and 4K are rejected (the model only emits 1K). Use '<ratio>_1K'.
    • gemini-3-pro-image / gemini-3-pro-image-preview: the extreme banner ratios 1:4 4:1 1:8 8:1 are rejected (Gemini 3.1 Flash Image only), as is the 512 tier.
    • gemini-2.5-flash-image: any _1K / _2K / _4K suffix is rejected — pass the bare ratio ('16:9', not '16:9_1K') — as are the four extreme banner ratios.
    • GeminiNativeImageSize is now the union of the per-model types rather than one flat template literal. It was not previously reachable from the package entry point, so this is a new export rather than a changed one.

    New type exports, so the per-model narrowing is nameable and not just inferred at the call site: GeminiImageModelSizeByName, GeminiStandardImageAspectRatio, GeminiExtendedImageAspectRatio, Gemini31FlashImageSize, Gemini31FlashLiteImageSize, Gemini3ProImageSize, Gemini25FlashImageSize, GeminiNativeImageSize.

    Two caveats worth knowing before you rely on this.

    • No in-editor deprecation warning on the dead -preview ids. The @deprecated tags live on module-private model-metadata consts, and GeminiImageModels is projected out of a const array ((typeof GEMINI_IMAGE_MODELS)[number]), which collapses to bare string literals — JSDoc does not survive that projection. So geminiImage('gemini-3-pro-image-preview') still compiles cleanly with no strikethrough and no hint, and fails only at request time. Grep your codebase for -image-preview rather than expecting the compiler to flag it.
    • gemini-3.1-flash-lite-image's four extreme ratios (1:4 4:1 1:8 8:1) are partially inferred. Unlike the other three native models, Flash Lite has no per-model ratio table on the Gemini API guide. The 14-value set rests on the Cloud model page's explicit enumeration plus ai.google.dev's bare "a discrete set of 14 aspect ratios" assertion; the only Gemini-API enumeration for this model is a 10-item bullet prefixed "New aspect ratios", read here as a what's-new list rather than an exhaustive set. If the API rejects those four in practice, this type over-accepts and should narrow to the 10-ratio set.
  • #1103 4f02789 - Type Gemini-native image models with their own provider options. GeminiImageModelProviderOptionsByName mapped every image model to the Imagen-shaped GeminiImageProviderOptions, so modelOptions: { safetySettings, thinkingConfig, imageConfig, systemInstruction } was a compile error on gemini-3.1-flash-image-preview, gemini-3.1-flash-lite-image, gemini-3-pro-image-preview, and gemini-2.5-flash-image — even though those models are served by generateContent, whose GenerateContentConfig accepts all of them. The adapter compensated by forwarding only seed, silently dropping anything else.

    The map now splits native vs Imagen, mirroring the split already used by GeminiImageModelSizeByName and GeminiImageModelInputModalitiesByName: native models get the new GeminiNativeImageProviderOptions (seed, safetySettings, thinkingConfig, imageConfig, systemInstruction), Imagen models keep GeminiImageProviderOptions. Both API paths now pick their config fields by name — never a wholesale spread — so neither shape's fields can reach the other's endpoint. Runtime routing moves the same way, off a gemini- prefix test onto membership in GEMINI_NATIVE_IMAGE_MODELS: a gemini-* image model not present in that list now routes to generateImages instead of generateContent, so it fails against that endpoint rather than silently taking the native path.

    responseModalities stays a protected adapter default (['TEXT', 'IMAGE']) and is deliberately absent from the new type. modelOptions.imageConfig merges over the imageConfig derived from the portable size option, per field — passing only imageConfig.imageSize keeps the aspectRatio that size implied. HarmCategory and HarmBlockThreshold are now re-exported so safetySettings can be written without adding @google/genai to your own dependencies.

    GEMINI_NATIVE_IMAGE_MODELS and isGeminiNativeImageModel are exported so callers can read the same list the adapter uses for routing.

    Native imageConfig is now GeminiNativeImageConfig: only aspectRatio and imageSize. Other @google/genai ImageConfig keys type-checked and then threw on the Gemini Developer API.

    BREAKING (types only): Imagen fields no longer compile on Gemini-native image models — aspectRatio, negativePrompt, personGeneration, safetyFilterLevel, addWatermark, language, outputMimeType, outputCompressionQuality, guidanceScale, enhancePrompt, includeSafetyAttributes, includeRaiReason, outputGcsUri, labels. They previously type-checked but were already dropped at runtime (only seed was ever forwarded to generateContent), so no request behaviour changes. The compiler now reports what was already happening. Migrate aspectRatio to the portable size option ('16:9_4K') or to modelOptions.imageConfig, and drop the rest. Native imageConfig also no longer accepts Vertex-only SDK keys such as personGeneration and outputMimeType. GeminiImageAdapter.generateImages (and its ~types.providerOptions) also widens from ImageGenerationOptions<GeminiImageProviderOptions> to ImageGenerationOptions<GeminiAnyImageProviderOptions>, which affects code structurally annotated against the old signature.

Patch Changes

@tanstack/ai-grok@0.15.0

Minor Changes

  • #1136 b7928f2 - Catch up with the current xAI Imagine / Voice catalog:
    • Image: add grok-imagine-image-2.0 (xAI's recommended model, $0.04/image) with its 2.0-only quality: 'low' | 'medium' provider option.
    • Video: grok-imagine-video-1.5 now supports text-to-video (the stale image-to-video-only guard is removed). Reference-to-video lands via image prompt parts with metadata.role: 'reference' | 'character' (→ reference_images) and preset voices via modelOptions.reference_audios (max 3) — 1.5-only, typed per model and gated at runtime. Image-to-video and reference-to-video cannot be combined. Video editing and extension land on grok-imagine-video only, via a source video prompt part plus modelOptions.mode: 'edit' | 'extend' (/v1/videos/edits / /v1/videos/extensions; in extend mode duration is the added tail, not the total). Because edit/extend outputs inherit the source clip's properties, the adapter rejects size / aspect_ratio / resolution (and duration in edit mode) in those modes instead of sending fields the API ignores.
    • Voice: add grok-voice-think-fast-2.0 (current recommended) and the grok-voice-latest alias to the realtime models; the realtime token and adapter defaults move off the deprecated 1.0 ids to grok-voice-think-fast-2.0.

Patch Changes

@tanstack/ai-grok-build@0.4.0

Minor Changes

  • #1110 c63319e - Harness adapters honor chat({ outputSchema }) on the same turn.

    Claude Code and Codex pass a native schema flag. OpenCode, Grok Build, and acpCompatible parse JSON from the final assistant text. The engine reads a structured-output.complete event so harness prose is not parsed as JSON.

Patch Changes

@tanstack/ai-opencode@0.3.0

Minor Changes

  • #1110 c63319e - Harness adapters honor chat({ outputSchema }) on the same turn.

    Claude Code and Codex pass a native schema flag. OpenCode, Grok Build, and acpCompatible parse JSON from the final assistant text. The engine reads a structured-output.complete event so harness prose is not parsed as JSON.

Patch Changes

@tanstack/ai-angular@0.4.3

Patch Changes

@tanstack/ai-anthropic@0.16.6

Patch Changes

@tanstack/ai-bedrock@0.2.2

Patch Changes

  • #1132 eda82cc - Timestamp native and fallback structured-output events when they are emitted so their lifecycle remains chronologically ordered.

  • Updated dependencies [d10dfe6, eda82cc, c63319e, b09e010, 0fb8263]:

    • @tanstack/ai@0.45.0
    • @tanstack/openai-base@0.9.13

@tanstack/ai-byteplus@0.1.2

Patch Changes

  • #1132 eda82cc - Timestamp native and fallback structured-output events when they are emitted so their lifecycle remains chronologically ordered.

  • Updated dependencies [d10dfe6, eda82cc, c63319e, b09e010, 0fb8263]:

    • @tanstack/ai@0.45.0
    • @tanstack/openai-base@0.9.13

@tanstack/ai-client@0.23.3

Patch Changes

@tanstack/ai-cohere@0.1.1

Patch Changes

@tanstack/ai-devtools-core@0.5.3

Patch Changes

@tanstack/ai-durable-stream@0.1.2

Patch Changes

@tanstack/ai-elevenlabs@0.2.37

Patch Changes

@tanstack/ai-fal@0.10.1

Patch Changes

@tanstack/ai-groq@0.6.1

Patch Changes

@tanstack/ai-isolate-cloudflare@0.2.42

Patch Changes

  • Updated dependencies [0fb8263]:
    • @tanstack/ai-code-mode@0.4.0

@tanstack/ai-isolate-daytona@0.1.1

Patch Changes

  • Updated dependencies [0fb8263]:
    • @tanstack/ai-code-mode@0.4.0

@tanstack/ai-isolate-node@0.1.51

Patch Changes

  • Updated dependencies [0fb8263]:
    • @tanstack/ai-code-mode@0.4.0

@tanstack/ai-isolate-quickjs@0.3.1

Patch Changes

  • Updated dependencies [0fb8263]:
    • @tanstack/ai-code-mode@0.4.0

@tanstack/ai-isolate-quickjs-bun@0.1.1

Patch Changes

  • Updated dependencies [0fb8263]:
    • @tanstack/ai-code-mode@0.4.0

@tanstack/ai-mcp@0.3.1

Patch Changes

@tanstack/ai-memory@0.1.2

Patch Changes

@tanstack/ai-mistral@0.3.2

Patch Changes

@tanstack/ai-ollama@0.9.1

Patch Changes

@tanstack/ai-openai@0.19.1

Patch Changes

@tanstack/ai-openrouter@0.17.1

Patch Changes

  • #1135 fe42d82 - Exclude the prediction parameter from the generated OpenRouter model options. The OpenRouter API newly reports it as a supported parameter, but @openrouter/sdk's ChatRequest does not declare it (its outbound schema would strip it), so the generated Pick<OpenRouterBaseOptions, ... | 'prediction'> types failed to compile.

  • #1132 eda82cc - Timestamp native and fallback structured-output events when they are emitted so their lifecycle remains chronologically ordered.

  • #1048 bc8c5e8 - Update model metadata from OpenRouter API

  • Updated dependencies [d10dfe6, eda82cc, c63319e, b09e010, 0fb8263]:

    • @tanstack/ai@0.45.0

@tanstack/ai-perplexity@0.2.1

Patch Changes

@tanstack/ai-persistence@0.1.5

Patch Changes

  • #1117 3e94871 - Ignore empty TEXT_MESSAGE_START message IDs so tool-call parentMessageId can be used.

  • #1129 302c9f6 - Persist cumulative usage for chat runs that make multiple model calls, interrupt, fail, or abort.

  • Updated dependencies [d10dfe6, eda82cc, c63319e, b09e010, 0fb8263]:

    • @tanstack/ai@0.45.0

@tanstack/ai-preact@0.12.3

Patch Changes

@tanstack/ai-react@0.19.3

Patch Changes

@tanstack/ai-sandbox@0.3.3

Patch Changes

@tanstack/ai-sandbox-cloudflare@0.3.2

Patch Changes

@tanstack/ai-solid@0.16.3

Patch Changes

@tanstack/ai-svelte@0.16.3

Patch Changes

@tanstack/ai-vercel-gateway@0.1.1

Patch Changes

@tanstack/ai-vue@0.16.3

Patch Changes

@tanstack/openai-base@0.9.13

Patch Changes

ag-ui@0.0.6

Patch Changes

  • Updated dependencies [f492bc9]:
    • @tanstack/ai-client@0.23.3
    • @tanstack/ai-react@0.19.3
    • @tanstack/ai-react-ui@0.8.16

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 8 times, most recently from aa59207 to fe0fcf9 Compare August 18, 2026 15:29
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from fe0fcf9 to bd81af9 Compare August 18, 2026 16:07
@AlemTuzlak
AlemTuzlak merged commit b2b1c43 into main Aug 18, 2026
2 checks passed
@AlemTuzlak
AlemTuzlak deleted the changeset-release/main branch August 18, 2026 17:29
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.

1 participant