diff --git a/.changeset/bedrock-guardrail-finish-reason.md b/.changeset/bedrock-guardrail-finish-reason.md deleted file mode 100644 index 5755535da2..0000000000 --- a/.changeset/bedrock-guardrail-finish-reason.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-bedrock': patch ---- - -A Bedrock Converse chat stream that ends with `stopReason: 'guardrail_intervened'` now reports `finishReason: 'content_filter'` on `RUN_FINISHED`. Before, it was a normal `stop`. The structured-output stream uses the same finish reason when the body is valid JSON. When a guardrail leaves no JSON, that stream reports `RUN_ERROR` with code `content_filter` instead of `empty-response` or `parse-error`. diff --git a/.changeset/compaction-hash-key-order.md b/.changeset/compaction-hash-key-order.md deleted file mode 100644 index aa3d94e1a3..0000000000 --- a/.changeset/compaction-hash-key-order.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-compaction': patch ---- - -A compaction checkpoint is now reused when the message store gives messages back with their object keys in another order, as PostgreSQL `jsonb` and schema parsing do. `hashMessages` hashes the messages with `stableJson`, so an equal history no longer looks changed and the summarizer does not run again over it. After the upgrade, saved checkpoints, saved usage counts and ready background summaries whose messages were not stored in sorted key order miss until the next compaction replaces them. Each such thread pays for one summarizer run. diff --git a/.changeset/gemini-live-thoughts-usage.md b/.changeset/gemini-live-thoughts-usage.md deleted file mode 100644 index 8fdd5735f6..0000000000 --- a/.changeset/gemini-live-thoughts-usage.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-gemini': patch ---- - -Gemini Live (realtime) `usage` events now include `thoughtsTokenCount` in `completionTokens`, matching how the text adapters report usage. diff --git a/.changeset/gemini-tool-result-parts-once.md b/.changeset/gemini-tool-result-parts-once.md deleted file mode 100644 index 2981cc0bed..0000000000 --- a/.changeset/gemini-tool-result-parts-once.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-gemini': patch ---- - -Send a multimodal tool result's parts to Gemini once, inside its `functionResponse`. Before, the adapter also put them beside the `functionResponse` in the same turn, so each image was sent and billed twice. diff --git a/.changeset/loop-stopped-signal.md b/.changeset/loop-stopped-signal.md deleted file mode 100644 index 2be31fac10..0000000000 --- a/.changeset/loop-stopped-signal.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@tanstack/ai': minor -'@tanstack/ai-harness': minor ---- - -A run that the agent loop stops before the model finished now says so. When `agentLoopStrategy` (for example `maxIterations`) or a middleware `onShouldContinue` returns `false` while tool results wait for the next model call, `chat()` ends the stream with a `RUN_FINISHED` that has `metadata.tanstack.loopStopped: true`, and the last stored assistant message gets the same field. `finishReason` stays the reason of the last model call (`tool_calls`, or `length` for a cut answer). A run that the model ends has no `loopStopped`. - -In `@tanstack/ai-harness`, a turn that the loop stops settles with `{ outcome: 'completed', loopStopped: true }`. `session.settled()`, the `harness.input.settled` event of `createHarnessClient().events()`, and the transcript all carry it. diff --git a/.changeset/ollama-stream-length-error.md b/.changeset/ollama-stream-length-error.md deleted file mode 100644 index 16d2022d61..0000000000 --- a/.changeset/ollama-stream-length-error.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-ollama': patch ---- - -Report `finishReason: "length"` on `RUN_FINISHED` when an Ollama stream ends with `done_reason: "length"`. This includes a reply cut by `num_predict`, and a tool call cut the same way. A normal stop stays `"stop"`. A finished tool call stays `"tool_calls"`. diff --git a/.changeset/responses-adjacent-answer-items.md b/.changeset/responses-adjacent-answer-items.md deleted file mode 100644 index 58ecc03756..0000000000 --- a/.changeset/responses-adjacent-answer-items.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@tanstack/ai': minor -'@tanstack/openai-base': patch ---- - -Keep Responses item ids and phases when adjacent answer text is merged. Save each item's text length so replay can restore its boundary. diff --git a/.changeset/sandbox-keep-earlier-tool-history.md b/.changeset/sandbox-keep-earlier-tool-history.md deleted file mode 100644 index 7700d45656..0000000000 --- a/.changeset/sandbox-keep-earlier-tool-history.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-sandbox': patch ---- - -Keep the harness tool calls of earlier runs in a saved thread. Before, `withSandbox` removed them from the chat transcript instead of only from the model request, so with `withPersistence` each run's save dropped the tool calls of the runs before it, and a reload showed those runs without their tool cards. diff --git a/.changeset/stable-json-export.md b/.changeset/stable-json-export.md deleted file mode 100644 index 74fee10db3..0000000000 --- a/.changeset/stable-json-export.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@tanstack/ai': patch -'@tanstack/ai-harness': patch ---- - -`@tanstack/ai` exports `stableJson`: JSON text with the keys of every object in sorted order, for values that come back from a store with their keys reordered. `@tanstack/ai-harness` now imports it and no longer keeps its own copy. diff --git a/.changeset/tidy-gemini-filter-stops.md b/.changeset/tidy-gemini-filter-stops.md deleted file mode 100644 index daa5202e66..0000000000 --- a/.changeset/tidy-gemini-filter-stops.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai-gemini': patch ---- - -Report Gemini content filter stops (SAFETY, RECITATION, BLOCKLIST, PROHIBITED_CONTENT, SPII, IMAGE_SAFETY, IMAGE_PROHIBITED_CONTENT, IMAGE_RECITATION) as `finishReason: "content_filter"` on chat streams, and as a `content_filter` error from `structuredOutput` and `structuredOutputStream`. diff --git a/.changeset/tool-event-polling-leak.md b/.changeset/tool-event-polling-leak.md deleted file mode 100644 index b5b7867046..0000000000 --- a/.changeset/tool-event-polling-leak.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai': patch ---- - -Stop a long-running server tool from leaking memory. While a tool ran, the event poll subscribed to the tool's promise again every 10 ms and kept every subscription until the tool finished. Memory grew by about 100 MB per hour while a tool stayed pending. The poll now subscribes once. diff --git a/.changeset/wacky-gifts-show.md b/.changeset/wacky-gifts-show.md deleted file mode 100644 index 71d0887086..0000000000 --- a/.changeset/wacky-gifts-show.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tanstack/ai': patch ---- - -Preserve metadata from live AG-UI TOOL_CALL_RESULT events on ToolResultPart. diff --git a/packages/ai-acp/CHANGELOG.md b/packages/ai-acp/CHANGELOG.md index b48aaf104d..591312ef7c 100644 --- a/packages/ai-acp/CHANGELOG.md +++ b/packages/ai-acp/CHANGELOG.md @@ -1,5 +1,14 @@ # @tanstack/ai-acp +## 1.0.2 + +### Patch Changes + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`2753972`](https://github.com/TanStack/ai/commit/275397292ef5c2d88f77b7e6d33ced6ae5762a5c), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + - @tanstack/ai-sandbox@1.2.1 + ## 1.0.1 ### Patch Changes diff --git a/packages/ai-acp/package.json b/packages/ai-acp/package.json index c2e9467461..34cef5ad6d 100644 --- a/packages/ai-acp/package.json +++ b/packages/ai-acp/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-acp", - "version": "1.0.1", + "version": "1.0.2", "description": "Shared Agent Client Protocol (ACP) transport, session, and AG-UI translation for TanStack AI harness adapters.", "author": "", "license": "MIT", diff --git a/packages/ai-bedrock/CHANGELOG.md b/packages/ai-bedrock/CHANGELOG.md index d17e40bf2a..b699a5fa22 100644 --- a/packages/ai-bedrock/CHANGELOG.md +++ b/packages/ai-bedrock/CHANGELOG.md @@ -1,5 +1,15 @@ # @tanstack/ai-bedrock +## 1.2.1 + +### Patch Changes + +- [#2057](https://github.com/TanStack/ai/pull/2057) [`844496a`](https://github.com/TanStack/ai/commit/844496a616f3858f21ed300662f7642d87dae063) - A Bedrock Converse chat stream that ends with `stopReason: 'guardrail_intervened'` now reports `finishReason: 'content_filter'` on `RUN_FINISHED`. Before, it was a normal `stop`. The structured-output stream uses the same finish reason when the body is valid JSON. When a guardrail leaves no JSON, that stream reports `RUN_ERROR` with code `content_filter` instead of `empty-response` or `parse-error`. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/openai-base@1.0.3 + ## 1.2.0 ### Minor Changes diff --git a/packages/ai-bedrock/package.json b/packages/ai-bedrock/package.json index d9e1d60ab3..04e28723b2 100644 --- a/packages/ai-bedrock/package.json +++ b/packages/ai-bedrock/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-bedrock", - "version": "1.2.0", + "version": "1.2.1", "type": "module", "description": "Amazon Bedrock adapter for TanStack AI — OpenAI-compatible chat, responses, tools, and reasoning.", "author": "", diff --git a/packages/ai-code-mode/CHANGELOG.md b/packages/ai-code-mode/CHANGELOG.md index 065ac75870..7ee029b490 100644 --- a/packages/ai-code-mode/CHANGELOG.md +++ b/packages/ai-code-mode/CHANGELOG.md @@ -1,5 +1,13 @@ # @tanstack/ai-code-mode +## 1.1.1 + +### Patch Changes + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/ai-code-mode/package.json b/packages/ai-code-mode/package.json index bf46374e21..3799feddb1 100644 --- a/packages/ai-code-mode/package.json +++ b/packages/ai-code-mode/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-code-mode", - "version": "1.1.0", + "version": "1.1.1", "description": "Secure TypeScript Code Mode for TanStack AI agents to execute sandboxed tool orchestration programs.", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/ai-compaction/CHANGELOG.md b/packages/ai-compaction/CHANGELOG.md index 64c8c1554a..622bc19a15 100644 --- a/packages/ai-compaction/CHANGELOG.md +++ b/packages/ai-compaction/CHANGELOG.md @@ -1,5 +1,14 @@ # @tanstack/ai-compaction +## 1.0.1 + +### Patch Changes + +- [#2056](https://github.com/TanStack/ai/pull/2056) [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a) - A compaction checkpoint is now reused when the message store gives messages back with their object keys in another order, as PostgreSQL `jsonb` and schema parsing do. `hashMessages` hashes the messages with `stableJson`, so an equal history no longer looks changed and the summarizer does not run again over it. After the upgrade, saved checkpoints, saved usage counts and ready background summaries whose messages were not stored in sorted key order miss until the next compaction replaces them. Each such thread pays for one summarizer run. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + ## 1.0.0 ### Major Changes diff --git a/packages/ai-compaction/package.json b/packages/ai-compaction/package.json index d1c5150fd6..b47fce3835 100644 --- a/packages/ai-compaction/package.json +++ b/packages/ai-compaction/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-compaction", - "version": "1.0.0", + "version": "1.0.1", "description": "Context-window compaction middleware for TanStack AI chat()", "author": "", "license": "MIT", diff --git a/packages/ai-computer-use/CHANGELOG.md b/packages/ai-computer-use/CHANGELOG.md index b5aa23c118..19a71606c2 100644 --- a/packages/ai-computer-use/CHANGELOG.md +++ b/packages/ai-computer-use/CHANGELOG.md @@ -1,5 +1,13 @@ # @tanstack/ai-computer-use +## 1.1.1 + +### Patch Changes + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/ai-computer-use/package.json b/packages/ai-computer-use/package.json index 2d566e76ae..b780281d96 100644 --- a/packages/ai-computer-use/package.json +++ b/packages/ai-computer-use/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-computer-use", - "version": "1.1.0", + "version": "1.1.1", "description": "Provider-agnostic computer use for TanStack AI.", "author": "", "license": "MIT", diff --git a/packages/ai-gemini/CHANGELOG.md b/packages/ai-gemini/CHANGELOG.md index 73442f8f57..c21768f2ab 100644 --- a/packages/ai-gemini/CHANGELOG.md +++ b/packages/ai-gemini/CHANGELOG.md @@ -1,5 +1,18 @@ # @tanstack/ai-gemini +## 1.2.1 + +### Patch Changes + +- [#2083](https://github.com/TanStack/ai/pull/2083) [`548ec42`](https://github.com/TanStack/ai/commit/548ec42d8f552a8cd7443b37cb7a665baa1cdf9f) - Gemini Live (realtime) `usage` events now include `thoughtsTokenCount` in `completionTokens`, matching how the text adapters report usage. + +- [#2053](https://github.com/TanStack/ai/pull/2053) [`925a505`](https://github.com/TanStack/ai/commit/925a50536ee4ea43f8446d271eede7df8dd032fc) - Send a multimodal tool result's parts to Gemini once, inside its `functionResponse`. Before, the adapter also put them beside the `functionResponse` in the same turn, so each image was sent and billed twice. + +- [#2088](https://github.com/TanStack/ai/pull/2088) [`9bcdd41`](https://github.com/TanStack/ai/commit/9bcdd4115eaf80ceca78edd99d71aec02bb77f09) - Report Gemini content filter stops (SAFETY, RECITATION, BLOCKLIST, PROHIBITED_CONTENT, SPII, IMAGE_SAFETY, IMAGE_PROHIBITED_CONTENT, IMAGE_RECITATION) as `finishReason: "content_filter"` on chat streams, and as a `content_filter` error from `structuredOutput` and `structuredOutputStream`. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + ## 1.2.0 ### Minor Changes diff --git a/packages/ai-gemini/package.json b/packages/ai-gemini/package.json index 8f97495631..0f014e1fa9 100644 --- a/packages/ai-gemini/package.json +++ b/packages/ai-gemini/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-gemini", - "version": "1.2.0", + "version": "1.2.1", "description": "Google Gemini adapter for TanStack AI chat, images, speech, audio generation, and structured outputs.", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/ai-harness-cli/CHANGELOG.md b/packages/ai-harness-cli/CHANGELOG.md index 73970e8ebd..1aed166e4b 100644 --- a/packages/ai-harness-cli/CHANGELOG.md +++ b/packages/ai-harness-cli/CHANGELOG.md @@ -1,5 +1,15 @@ # @tanstack/ai-harness-cli +## 0.1.2 + +### Patch Changes + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + - @tanstack/ai-acp@1.0.2 + - @tanstack/ai-mcp@1.1.1 + ## 0.1.1 ### Patch Changes diff --git a/packages/ai-harness-cli/package.json b/packages/ai-harness-cli/package.json index 1276a8fe9c..b57b97993e 100644 --- a/packages/ai-harness-cli/package.json +++ b/packages/ai-harness-cli/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-harness-cli", - "version": "0.1.1", + "version": "0.1.2", "description": "Run a TanStack AI harness from the terminal: line mode or your own screen, print mode, NDJSON, ACP, MCP, and an HTTP server", "author": "", "license": "MIT", diff --git a/packages/ai-harness/CHANGELOG.md b/packages/ai-harness/CHANGELOG.md index e73729c628..a26627b84c 100644 --- a/packages/ai-harness/CHANGELOG.md +++ b/packages/ai-harness/CHANGELOG.md @@ -1,5 +1,21 @@ # @tanstack/ai-harness +## 0.3.0 + +### Minor Changes + +- [#2071](https://github.com/TanStack/ai/pull/2071) [`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20) - A run that the agent loop stops before the model finished now says so. When `agentLoopStrategy` (for example `maxIterations`) or a middleware `onShouldContinue` returns `false` while tool results wait for the next model call, `chat()` ends the stream with a `RUN_FINISHED` that has `metadata.tanstack.loopStopped: true`, and the last stored assistant message gets the same field. `finishReason` stays the reason of the last model call (`tool_calls`, or `length` for a cut answer). A run that the model ends has no `loopStopped`. + + In `@tanstack/ai-harness`, a turn that the loop stops settles with `{ outcome: 'completed', loopStopped: true }`. `session.settled()`, the `harness.input.settled` event of `createHarnessClient().events()`, and the transcript all carry it. + +### Patch Changes + +- [#2056](https://github.com/TanStack/ai/pull/2056) [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a) - `@tanstack/ai` exports `stableJson`: JSON text with the keys of every object in sorted order, for values that come back from a store with their keys reordered. `@tanstack/ai-harness` now imports it and no longer keeps its own copy. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-persistence@1.0.1 + ## 0.2.0 ### Minor Changes diff --git a/packages/ai-harness/package.json b/packages/ai-harness/package.json index f1a7ab2169..f4ef2a27d1 100644 --- a/packages/ai-harness/package.json +++ b/packages/ai-harness/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-harness", - "version": "0.2.0", + "version": "0.3.0", "description": "Build agent harnesses on TanStack AI: long-lived sessions, typed agents, and plugins", "keywords": [ "agent", diff --git a/packages/ai-mcp/CHANGELOG.md b/packages/ai-mcp/CHANGELOG.md index b4876da466..6fd6d32c2c 100644 --- a/packages/ai-mcp/CHANGELOG.md +++ b/packages/ai-mcp/CHANGELOG.md @@ -1,5 +1,13 @@ # @tanstack/ai-mcp +## 1.1.1 + +### Patch Changes + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/ai-mcp/package.json b/packages/ai-mcp/package.json index 09f1f0ff7a..2393a1d4a9 100644 --- a/packages/ai-mcp/package.json +++ b/packages/ai-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-mcp", - "version": "1.1.0", + "version": "1.1.1", "description": "Host-side Model Context Protocol client for TanStack AI: discover and run MCP server tools, resources, and prompts in any adapter's chat() loop, with generated end-to-end types.", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/ai-ollama/CHANGELOG.md b/packages/ai-ollama/CHANGELOG.md index 35ab66c268..0b8a98a017 100644 --- a/packages/ai-ollama/CHANGELOG.md +++ b/packages/ai-ollama/CHANGELOG.md @@ -1,5 +1,14 @@ # @tanstack/ai-ollama +## 1.1.1 + +### Patch Changes + +- [#2077](https://github.com/TanStack/ai/pull/2077) [`c32f641`](https://github.com/TanStack/ai/commit/c32f6417f40d8e3d06ae9006cea79683ca128601) - Report `finishReason: "length"` on `RUN_FINISHED` when an Ollama stream ends with `done_reason: "length"`. This includes a reply cut by `num_predict`, and a tool call cut the same way. A normal stop stays `"stop"`. A finished tool call stays `"tool_calls"`. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/ai-ollama/package.json b/packages/ai-ollama/package.json index 3712881d91..430620f565 100644 --- a/packages/ai-ollama/package.json +++ b/packages/ai-ollama/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-ollama", - "version": "1.1.0", + "version": "1.1.1", "description": "Ollama adapter for TanStack AI local LLM chat, tool calling, and structured outputs.", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/ai-sandbox/CHANGELOG.md b/packages/ai-sandbox/CHANGELOG.md index 13b3e3ef91..9388b0c69f 100644 --- a/packages/ai-sandbox/CHANGELOG.md +++ b/packages/ai-sandbox/CHANGELOG.md @@ -1,5 +1,17 @@ # @tanstack/ai-sandbox +## 1.2.1 + +### Patch Changes + +- [#2060](https://github.com/TanStack/ai/pull/2060) [`2753972`](https://github.com/TanStack/ai/commit/275397292ef5c2d88f77b7e6d33ced6ae5762a5c) - Keep the harness tool calls of earlier runs in a saved thread. Before, `withSandbox` removed them from the chat transcript instead of only from the model request, so with `withPersistence` each run's save dropped the tool calls of the runs before it, and a reload showed those runs without their tool cards. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + - @tanstack/ai-persistence@1.0.1 + - @tanstack/ai-skills@1.0.2 + ## 1.2.0 ### Minor Changes diff --git a/packages/ai-sandbox/package.json b/packages/ai-sandbox/package.json index f7f521a389..252bf6710d 100644 --- a/packages/ai-sandbox/package.json +++ b/packages/ai-sandbox/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-sandbox", - "version": "1.2.0", + "version": "1.2.1", "description": "Provider-agnostic sandbox layer for TanStack AI — run harness adapters inside isolated sandboxes (defineSandbox, defineWorkspace, withSandbox) with a uniform SandboxHandle, workspace bootstrap, policy, and resumable lifecycle.", "author": "", "license": "MIT", diff --git a/packages/ai-skills/CHANGELOG.md b/packages/ai-skills/CHANGELOG.md index bb5f27f40a..5cc9f9aa97 100644 --- a/packages/ai-skills/CHANGELOG.md +++ b/packages/ai-skills/CHANGELOG.md @@ -1,5 +1,13 @@ # @tanstack/ai-skills +## 1.0.2 + +### Patch Changes + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + - @tanstack/ai-harness@0.3.0 + ## 1.0.1 ### Patch Changes diff --git a/packages/ai-skills/package.json b/packages/ai-skills/package.json index b9c68a3d11..77b2b04ec6 100644 --- a/packages/ai-skills/package.json +++ b/packages/ai-skills/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai-skills", - "version": "1.0.1", + "version": "1.0.2", "description": "Portable Agent Skills (SKILL.md) as a first-class chat() middleware for TanStack AI.", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 928b45d934..478923983e 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -1,5 +1,23 @@ # @tanstack/ai +## 1.3.0 + +### Minor Changes + +- [#2071](https://github.com/TanStack/ai/pull/2071) [`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20) - A run that the agent loop stops before the model finished now says so. When `agentLoopStrategy` (for example `maxIterations`) or a middleware `onShouldContinue` returns `false` while tool results wait for the next model call, `chat()` ends the stream with a `RUN_FINISHED` that has `metadata.tanstack.loopStopped: true`, and the last stored assistant message gets the same field. `finishReason` stays the reason of the last model call (`tool_calls`, or `length` for a cut answer). A run that the model ends has no `loopStopped`. + + In `@tanstack/ai-harness`, a turn that the loop stops settles with `{ outcome: 'completed', loopStopped: true }`. `session.settled()`, the `harness.input.settled` event of `createHarnessClient().events()`, and the transcript all carry it. + +- [#2087](https://github.com/TanStack/ai/pull/2087) [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e) - Keep Responses item ids and phases when adjacent answer text is merged. Save each item's text length so replay can restore its boundary. + +### Patch Changes + +- [#2056](https://github.com/TanStack/ai/pull/2056) [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a) - `@tanstack/ai` exports `stableJson`: JSON text with the keys of every object in sorted order, for values that come back from a store with their keys reordered. `@tanstack/ai-harness` now imports it and no longer keeps its own copy. + +- [#2086](https://github.com/TanStack/ai/pull/2086) [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50) - Stop a long-running server tool from leaking memory. While a tool ran, the event poll subscribed to the tool's promise again every 10 ms and kept every subscription until the tool finished. Memory grew by about 100 MB per hour while a tool stayed pending. The poll now subscribes once. + +- [#2069](https://github.com/TanStack/ai/pull/2069) [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118) - Preserve metadata from live AG-UI TOOL_CALL_RESULT events on ToolResultPart. + ## 1.2.0 ### Minor Changes diff --git a/packages/ai/package.json b/packages/ai/package.json index c3ff1a9d04..29f27e279d 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/ai", - "version": "1.2.0", + "version": "1.3.0", "description": "Type-safe TypeScript AI SDK for streaming chat, tool calling, agents, structured outputs, and multimodal generation.", "author": "Tanner Linsley", "license": "MIT", diff --git a/packages/openai-base/CHANGELOG.md b/packages/openai-base/CHANGELOG.md index e54d8564ce..a9e9401569 100644 --- a/packages/openai-base/CHANGELOG.md +++ b/packages/openai-base/CHANGELOG.md @@ -1,5 +1,14 @@ # @tanstack/openai-base +## 1.0.3 + +### Patch Changes + +- [#2087](https://github.com/TanStack/ai/pull/2087) [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e) - Keep Responses item ids and phases when adjacent answer text is merged. Save each item's text length so replay can restore its boundary. + +- Updated dependencies [[`e8546f9`](https://github.com/TanStack/ai/commit/e8546f90834ace0129c4e2b5491909ea87e07f20), [`5fd5355`](https://github.com/TanStack/ai/commit/5fd535501784df0102880470835913ceec3a8e1e), [`9393839`](https://github.com/TanStack/ai/commit/9393839d380dde91fa91e81b5e92448610e9782a), [`215e339`](https://github.com/TanStack/ai/commit/215e3396eb907054baddbf3423da8bc3e90ecf50), [`7157ef3`](https://github.com/TanStack/ai/commit/7157ef3e8556ac23c350822ba0f3c4bbf0abb118)]: + - @tanstack/ai@1.3.0 + ## 1.0.2 ### Patch Changes diff --git a/packages/openai-base/package.json b/packages/openai-base/package.json index 37bddb0872..caf017b627 100644 --- a/packages/openai-base/package.json +++ b/packages/openai-base/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/openai-base", - "version": "1.0.2", + "version": "1.0.3", "description": "Shared OpenAI SDK base adapters for TanStack AI providers using Chat Completions and Responses APIs.", "author": "Tanner Linsley", "license": "MIT",