diff --git a/packages/agent/package.json b/packages/agent/package.json index 04ca3ce..a591965 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -57,14 +57,14 @@ "example:structured": "tsx examples/06-structured-output.ts" }, "dependencies": { - "@ai-sdk/provider": "4.0.31", + "@ai-sdk/provider": "4.0.33", "ws": "^8.22.0" }, "devDependencies": { - "@ai-sdk/react": "4.0.152", + "@ai-sdk/react": "4.0.154", "@types/node": "^26.6.5", "@types/ws": "^8.18.2", - "ai": "^7.0.148", + "ai": "^7.0.150", "tsup": "^9.0.0", "tsx": "^4.23.15", "typescript": "npm:@typescript/typescript6@^6.0.2", diff --git a/packages/effect/package.json b/packages/effect/package.json index 255dcb6..baf7ba8 100644 --- a/packages/effect/package.json +++ b/packages/effect/package.json @@ -56,19 +56,19 @@ "example:sandbox": "tsx examples/03-sandbox.ts" }, "dependencies": { - "@ai-sdk/provider": "4.0.31", + "@ai-sdk/provider": "4.0.33", "@coder/ai-sdk-agent": "workspace:^", "@coder/ai-sdk-provider": "workspace:^", "@coder/ai-sdk-sandbox": "workspace:^" }, "devDependencies": { - "@ai-sdk/harness": "^1.0.159", - "@ai-sdk/provider-utils": "^5.0.65", + "@ai-sdk/harness": "^1.0.161", + "@ai-sdk/provider-utils": "^5.0.67", "@arethetypeswrong/cli": "^0.18.5", "@types/node": "^26.6.3", "@vitest/coverage-v8": "^5.0.5", - "ai": "^7.0.148", - "effect": "4.0.5", + "ai": "^7.0.150", + "effect": "4.0.6", "publint": "^0.3.25", "tsup": "^9.0.0", "tsx": "^4.23.15", diff --git a/packages/effect/src/language-model.ts b/packages/effect/src/language-model.ts index 76570ee..6814a59 100644 --- a/packages/effect/src/language-model.ts +++ b/packages/effect/src/language-model.ts @@ -730,6 +730,17 @@ const responseMetadataPart = (metadata: { timestamp: metadata.timestamp?.toISOString(), }); +/** + * Map the AI SDK's unified finish reason onto `effect/ai`'s. `effect/ai` has + * no `"interrupted"` (the provider stream ended without a completion signal), + * so it becomes `"unknown"`: the model gave no finish reason. Like every + * reason other than stop/tool-calls/pause, `effect/ai` treats it as an + * incomplete response and does not run tool handlers. + */ +const toFinishReason = ( + unified: LanguageModelV4FinishReason["unified"], +): Response.FinishPartEncoded["reason"] => (unified === "interrupted" ? "unknown" : unified); + /** The finish part, with `metadata.coder` only when it has keys. */ const finishPart = ( finishReason: LanguageModelV4FinishReason, @@ -738,7 +749,7 @@ const finishPart = ( ): Response.FinishPartEncoded => { const part: Response.FinishPartEncoded = { type: "finish", - reason: finishReason.unified, + reason: toFinishReason(finishReason.unified), usage: { inputTokens: { uncached: usage.inputTokens.noCache, diff --git a/packages/effect/test/language-model.test.ts b/packages/effect/test/language-model.test.ts index 2ddb8a7..040c28e 100644 --- a/packages/effect/test/language-model.test.ts +++ b/packages/effect/test/language-model.test.ts @@ -584,6 +584,31 @@ describe("streamText", () => { expect(text).toBe("Hello"); }); + it("maps an interrupted finish onto the unknown finish reason", async () => { + // @ai-sdk/anthropic emits `interrupted` when the provider stream ends + // without a completion signal; effect/ai has no such literal. + const model = fakeModel({ + doStream: async () => ({ + stream: streamOf([ + { type: "text-start", id: "t1" }, + { type: "text-delta", id: "t1", delta: "Hel" }, + { + type: "finish", + finishReason: { unified: "interrupted", raw: undefined }, + usage: USAGE, + }, + ]), + }), + }); + + const parts = await Effect.runPromise( + Effect.flatMap(service(model), (m) => Stream.runCollect(m.streamText({ prompt: "hi" }))), + ); + + const finish = parts.find((part) => part.type === "finish"); + expect(finish?.reason).toBe("unknown"); + }); + it("streams server tool markers and reports server tool calls on finish", async () => { const model = fakeModel({ doStream: async () => ({ diff --git a/packages/provider/package.json b/packages/provider/package.json index 5e4d28b..4991952 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -59,15 +59,15 @@ "example:anthropic": "tsx examples/03-anthropic.ts" }, "dependencies": { - "@ai-sdk/anthropic": "^4.0.85", - "@ai-sdk/openai-compatible": "^3.0.75", - "@ai-sdk/provider": "4.0.31" + "@ai-sdk/anthropic": "^4.0.87", + "@ai-sdk/openai-compatible": "^3.0.77", + "@ai-sdk/provider": "4.0.33" }, "devDependencies": { "@arethetypeswrong/cli": "^0.18.5", "@types/node": "^26.6.5", "@vitest/coverage-v8": "^5.0.5", - "ai": "^7.0.148", + "ai": "^7.0.150", "publint": "^0.3.25", "tsup": "^9.0.0", "tsx": "^4.23.15", diff --git a/packages/release-please-ai/package.json b/packages/release-please-ai/package.json index 2293214..5d359ab 100644 --- a/packages/release-please-ai/package.json +++ b/packages/release-please-ai/package.json @@ -14,8 +14,8 @@ "release": "tsx src/cli.ts" }, "dependencies": { - "@ai-sdk/anthropic": "^4.0.85", - "ai": "^7.0.148", + "@ai-sdk/anthropic": "^4.0.87", + "ai": "^7.0.150", "release-please": "~17.11.2", "zod": "4.6.7" }, diff --git a/packages/sandbox/package.json b/packages/sandbox/package.json index 6e1efbc..c2759cb 100644 --- a/packages/sandbox/package.json +++ b/packages/sandbox/package.json @@ -58,10 +58,10 @@ "yaml": "^2.9.1" }, "devDependencies": { - "@ai-sdk/harness": "^1.0.159", - "@ai-sdk/harness-claude-code": "^1.0.163", - "@ai-sdk/provider-utils": "^5.0.65", - "@ai-sdk/tui": "^1.0.149", + "@ai-sdk/harness": "^1.0.161", + "@ai-sdk/harness-claude-code": "^1.0.165", + "@ai-sdk/provider-utils": "^5.0.67", + "@ai-sdk/tui": "^1.0.151", "@arethetypeswrong/cli": "^0.18.5", "@types/node": "^26.6.5", "@types/ws": "^8.18.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1447751..6d2dc22 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,15 +26,15 @@ importers: packages/agent: dependencies: '@ai-sdk/provider': - specifier: 4.0.31 - version: 4.0.31 + specifier: 4.0.33 + version: 4.0.33 ws: specifier: ^8.22.0 version: 8.22.0 devDependencies: '@ai-sdk/react': - specifier: 4.0.152 - version: 4.0.152(react@19.2.8)(zod@4.6.7) + specifier: 4.0.154 + version: 4.0.154(react@19.2.8)(zod@4.6.7) '@types/node': specifier: ^26.6.5 version: 26.6.5 @@ -42,8 +42,8 @@ importers: specifier: ^8.18.2 version: 8.18.2 ai: - specifier: ^7.0.148 - version: 7.0.148(zod@4.6.7) + specifier: ^7.0.150 + version: 7.0.150(zod@4.6.7) tsup: specifier: ^9.0.0 version: 9.0.0(@typescript/typescript6@6.0.2)(postcss@8.5.31)(tsx@4.23.15)(yaml@2.9.1) @@ -66,8 +66,8 @@ importers: packages/effect: dependencies: '@ai-sdk/provider': - specifier: 4.0.31 - version: 4.0.31 + specifier: 4.0.33 + version: 4.0.33 '@coder/ai-sdk-agent': specifier: workspace:^ version: link:../agent @@ -79,11 +79,11 @@ importers: version: link:../sandbox devDependencies: '@ai-sdk/harness': - specifier: ^1.0.159 - version: 1.0.159(ws@8.22.0)(zod@4.6.7) + specifier: ^1.0.161 + version: 1.0.161(ws@8.22.0)(zod@4.6.7) '@ai-sdk/provider-utils': - specifier: ^5.0.65 - version: 5.0.65(zod@4.6.7) + specifier: ^5.0.67 + version: 5.0.67(zod@4.6.7) '@arethetypeswrong/cli': specifier: ^0.18.5 version: 0.18.5 @@ -94,11 +94,11 @@ importers: specifier: ^5.0.5 version: 5.0.5(vitest@5.0.5) ai: - specifier: ^7.0.148 - version: 7.0.148(zod@4.6.7) + specifier: ^7.0.150 + version: 7.0.150(zod@4.6.7) effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.0.6 + version: 4.0.6 publint: specifier: ^0.3.25 version: 0.3.25 @@ -124,14 +124,14 @@ importers: packages/provider: dependencies: '@ai-sdk/anthropic': - specifier: ^4.0.85 - version: 4.0.85(zod@4.6.7) + specifier: ^4.0.87 + version: 4.0.87(zod@4.6.7) '@ai-sdk/openai-compatible': - specifier: ^3.0.75 - version: 3.0.75(zod@4.6.7) + specifier: ^3.0.77 + version: 3.0.77(zod@4.6.7) '@ai-sdk/provider': - specifier: 4.0.31 - version: 4.0.31 + specifier: 4.0.33 + version: 4.0.33 devDependencies: '@arethetypeswrong/cli': specifier: ^0.18.5 @@ -143,8 +143,8 @@ importers: specifier: ^5.0.5 version: 5.0.5(vitest@5.0.5) ai: - specifier: ^7.0.148 - version: 7.0.148(zod@4.6.7) + specifier: ^7.0.150 + version: 7.0.150(zod@4.6.7) publint: specifier: ^0.3.25 version: 0.3.25 @@ -170,11 +170,11 @@ importers: packages/release-please-ai: dependencies: '@ai-sdk/anthropic': - specifier: ^4.0.85 - version: 4.0.85(zod@4.6.7) + specifier: ^4.0.87 + version: 4.0.87(zod@4.6.7) ai: - specifier: ^7.0.148 - version: 7.0.148(zod@4.6.7) + specifier: ^7.0.150 + version: 7.0.150(zod@4.6.7) release-please: specifier: ~17.11.2 version: 17.11.2(supports-color@7.2.0) @@ -205,17 +205,17 @@ importers: version: 2.9.1 devDependencies: '@ai-sdk/harness': - specifier: ^1.0.159 - version: 1.0.159(ws@8.22.0)(zod@4.6.7) + specifier: ^1.0.161 + version: 1.0.161(ws@8.22.0)(zod@4.6.7) '@ai-sdk/harness-claude-code': - specifier: ^1.0.163 - version: 1.0.163(zod@4.6.7) + specifier: ^1.0.165 + version: 1.0.165(zod@4.6.7) '@ai-sdk/provider-utils': - specifier: ^5.0.65 - version: 5.0.65(zod@4.6.7) + specifier: ^5.0.67 + version: 5.0.67(zod@4.6.7) '@ai-sdk/tui': - specifier: ^1.0.149 - version: 1.0.149(zod@4.6.7) + specifier: ^1.0.151 + version: 1.0.151(zod@4.6.7) '@arethetypeswrong/cli': specifier: ^0.18.5 version: 0.18.5 @@ -252,26 +252,26 @@ importers: packages: - '@ai-sdk/anthropic@4.0.85': - resolution: {integrity: sha512-nfv/vtR4HuNUZyCzdK37d2CaW1mzeZJlzSmC+4Jn8Dn8ces8R9HOAgF9d+8iwx+SedmzurKQQmNvJ7xYGBcPMQ==} + '@ai-sdk/anthropic@4.0.87': + resolution: {integrity: sha512-x55N7G47mh9p38C2a6qMAzmUxlgKDCXoE9ohRaF4D3hcOGQrYIOZZ/9Iv4Uf9/OxlNDog9Yz4YPX2GL1+otGlg==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 - '@ai-sdk/gateway@4.0.121': - resolution: {integrity: sha512-cPNXvQ4B5OkmVAm98Dxe1fHdMthyqqqAG0HJx3D92NUa9FpcvkNxdAqiuZdeAhNAodFb9lBrslzzzEwxuVS53A==} + '@ai-sdk/gateway@4.0.123': + resolution: {integrity: sha512-IC6w1vADmRyOfB7Kl9A7348p5pazYodb2humlQAahSJSBW9MGCoafbM8h8+rgukYBSV8gjcZoAxPxPX5RQK8mw==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 - '@ai-sdk/harness-claude-code@1.0.163': - resolution: {integrity: sha512-3B7pSWVIoNU8prJRyYzQzfxpH6IYmdPDajdugD1mxSU/opAV4gIKr5mPQSTX6xvoU6AGolQ1GMXFpyJwMDgp3Q==} + '@ai-sdk/harness-claude-code@1.0.165': + resolution: {integrity: sha512-6wcQuqGbFJEPjVx3qEj//L6cWYAE9m9GJ5/db+xtCejfH+ZWfEcCj4FEMUeJplaQbjzLWB28Jedt1AnvNSdGpg==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 - '@ai-sdk/harness@1.0.159': - resolution: {integrity: sha512-wOa+IzY6RTr4gbM3Nl98kANiSh1NVtwWtI7mFArMQxy0sNc5EF1kf11a8zQsdsOPYdCBLV6MMAGo9ubPAk54fw==} + '@ai-sdk/harness@1.0.161': + resolution: {integrity: sha512-VE1HwxoE+djx3+gz9qmdFlE81EDZQYr14MwSNt9R28wp2FRRUr7CAPUUcWd0+auujxIlD/WoVy9DYy4e+lMINQ==} engines: {node: '>=22'} peerDependencies: ws: ^8.21.0 @@ -280,36 +280,36 @@ packages: ws: optional: true - '@ai-sdk/mcp@2.0.81': - resolution: {integrity: sha512-2ZqfHLu1K93uPse+QWbcNjkznCtM6UHMoNWjUDpmM9kCr+y9bWcf5VWfNAWi4ziQoncZPJo2qUWeDIXgrqLsKg==} + '@ai-sdk/mcp@2.0.83': + resolution: {integrity: sha512-XcDGqrMvbJHZOE5GS/RFLCYGMgH+4CDqQMWtpu9ddzdujbCJU3dDLCT5h573ba4tJedv9K9UiAggawbayT+4IA==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 - '@ai-sdk/openai-compatible@3.0.75': - resolution: {integrity: sha512-Zs+EWsK1XprpCR6+VIva50W2YuD3TNSymd5DKFh8XSrroK0copxm2BlSDRKWVdx3SZEh1XqD+1cgYzGR7huL4A==} + '@ai-sdk/openai-compatible@3.0.77': + resolution: {integrity: sha512-RzFe7uaMo6Yww9SdeGwHjNiERQvT79unzMlvQva7QEpjUDjzWE/OK04wTLFBRlJrxYMOSSLjUCJKGJGU9os9zQ==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 - '@ai-sdk/provider-utils@5.0.65': - resolution: {integrity: sha512-LCugcsP8oWmdeI3BASf4Fuo1wiC6Qx0YrefFssl7n12s+LV4DNi5RdwWQrtrB4oek3GGNQRN/h/NSwVZM2eHKw==} + '@ai-sdk/provider-utils@5.0.67': + resolution: {integrity: sha512-EUzV6GXutGcesWKOY8tRKgijfuv1LUBpqAquMh5k0n74NCjDbca5d5ZG12qhVtM2X5UwM4B2ZMP2XpnAwZlA8Q==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 - '@ai-sdk/provider@4.0.31': - resolution: {integrity: sha512-3wJnwVTFg8SwOyoZCv+ov7Re2GB+7IQnU5a5MYJACrtiWDDUHgqTBeeesq2MB2ddgojzL8hgWleltwpAgtUqfg==} + '@ai-sdk/provider@4.0.33': + resolution: {integrity: sha512-C6ylMuAXjgqKJllp6ODIJwUltK/tm3ZmIj4V2fqENP3Y8gif2DyeJSsTcDwFrXppgEKcrBisi/BWx2tYeoeCAw==} engines: {node: '>=22'} - '@ai-sdk/react@4.0.152': - resolution: {integrity: sha512-2A4bttJJgDmdiCTXO6qM6J28q1C3ucAVAwbWzYuaQ4ZF1PUy7GwelNtMGMf2FoRl8krCeHYAdAhRnJlnfciKpQ==} + '@ai-sdk/react@4.0.154': + resolution: {integrity: sha512-kaKzm0PBWcKA4CJ9MhM2Sv8HLuL3mG/1Bw4B8OEAH0blyGn0dv/62RP4xUTLZaA4dzlKp4ODs40vHoM/J9Jxzg==} engines: {node: '>=22'} peerDependencies: react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1 - '@ai-sdk/tui@1.0.149': - resolution: {integrity: sha512-HhRw/4y1R+RB/+IrJyiMmqyEQbIhwSLZKTYxQZMObhpBEdXpEdoad6HEgiBr5Ux42IsiNi0GD4o805NyJeJfeA==} + '@ai-sdk/tui@1.0.151': + resolution: {integrity: sha512-ijvr0VzpFBPj/uc1WQiovT0X9Mh69I5GgAvOmE6ogyzFXBgjM8q1LiIoGH923yZmmdkzl/Z176BY6FMs6XqfWQ==} engines: {node: '>=22'} '@andrewbranch/untar.js@1.0.4': @@ -1310,8 +1310,8 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ai@7.0.148: - resolution: {integrity: sha512-FPgfIAhz/FrlzcvqTN7pGGibahR5rD19NXZWX9WQ1tskTic+CN+jxvubpreyq8uN1maIEHPwvZmil/3IYN8FIw==} + ai@7.0.150: + resolution: {integrity: sha512-ZTgHXBTJf2ad0elG2HWhbNTUGPaYy8e5pzK4A8LP/dDa48bvIRi8Iv1/bQhklFmFssosajAjCsAZrieBUa+hYA==} engines: {node: '>=22'} peerDependencies: zod: 4.6.7 @@ -1531,8 +1531,8 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - effect@4.0.5: - resolution: {integrity: sha512-BY4/28NlpOd99yzmV741xbVGmp+1U7tks4oB7F/Png64bTa5tm5eCA6W0RiXsnuLDDoJpjfVSo4Dnq4BZb/89Q==} + effect@4.0.6: + resolution: {integrity: sha512-Tc3mkzuLR6t6P9dhLt0D2GrxYtmU5td4XEJEiXCmILz53IRIfJyHsKZWjTA3xEjiwpNTtXBgI4iqYPxMztBDrw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2479,81 +2479,81 @@ packages: snapshots: - '@ai-sdk/anthropic@4.0.85(zod@4.6.7)': + '@ai-sdk/anthropic@4.0.87(zod@4.6.7)': dependencies: - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) zod: 4.6.7 - '@ai-sdk/gateway@4.0.121(zod@4.6.7)': + '@ai-sdk/gateway@4.0.123(zod@4.6.7)': dependencies: - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) '@vercel/oidc': 3.2.0 zod: 4.6.7 - '@ai-sdk/harness-claude-code@1.0.163(zod@4.6.7)': + '@ai-sdk/harness-claude-code@1.0.165(zod@4.6.7)': dependencies: - '@ai-sdk/harness': 1.0.159(ws@8.22.0)(zod@4.6.7) - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) + '@ai-sdk/harness': 1.0.161(ws@8.22.0)(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) ws: 8.22.0 zod: 4.6.7 transitivePeerDependencies: - bufferutil - utf-8-validate - '@ai-sdk/harness@1.0.159(ws@8.22.0)(zod@4.6.7)': + '@ai-sdk/harness@1.0.161(ws@8.22.0)(zod@4.6.7)': dependencies: - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) - ai: 7.0.148(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) + ai: 7.0.150(zod@4.6.7) zod: 4.6.7 optionalDependencies: ws: 8.22.0 - '@ai-sdk/mcp@2.0.81(zod@4.6.7)': + '@ai-sdk/mcp@2.0.83(zod@4.6.7)': dependencies: - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) cross-spawn: 7.0.6 pkce-challenge: 5.0.1 zod: 4.6.7 - '@ai-sdk/openai-compatible@3.0.75(zod@4.6.7)': + '@ai-sdk/openai-compatible@3.0.77(zod@4.6.7)': dependencies: - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) zod: 4.6.7 - '@ai-sdk/provider-utils@5.0.65(zod@4.6.7)': + '@ai-sdk/provider-utils@5.0.67(zod@4.6.7)': dependencies: - '@ai-sdk/provider': 4.0.31 + '@ai-sdk/provider': 4.0.33 '@standard-schema/spec': 1.1.0 '@workflow/serde': 4.1.0 eventsource-parser: 3.1.1 undici: 7.30.0 zod: 4.6.7 - '@ai-sdk/provider@4.0.31': + '@ai-sdk/provider@4.0.33': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@4.0.152(react@19.2.8)(zod@4.6.7)': + '@ai-sdk/react@4.0.154(react@19.2.8)(zod@4.6.7)': dependencies: - '@ai-sdk/mcp': 2.0.81(zod@4.6.7) - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) - ai: 7.0.148(zod@4.6.7) + '@ai-sdk/mcp': 2.0.83(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) + ai: 7.0.150(zod@4.6.7) react: 19.2.8 swr: 2.5.1(react@19.2.8) throttleit: 2.1.0 transitivePeerDependencies: - zod - '@ai-sdk/tui@1.0.149(zod@4.6.7)': + '@ai-sdk/tui@1.0.151(zod@4.6.7)': dependencies: - ai: 7.0.148(zod@4.6.7) + ai: 7.0.150(zod@4.6.7) transitivePeerDependencies: - zod @@ -3164,11 +3164,11 @@ snapshots: agent-base@7.1.4: {} - ai@7.0.148(zod@4.6.7): + ai@7.0.150(zod@4.6.7): dependencies: - '@ai-sdk/gateway': 4.0.121(zod@4.6.7) - '@ai-sdk/provider': 4.0.31 - '@ai-sdk/provider-utils': 5.0.65(zod@4.6.7) + '@ai-sdk/gateway': 4.0.123(zod@4.6.7) + '@ai-sdk/provider': 4.0.33 + '@ai-sdk/provider-utils': 5.0.67(zod@4.6.7) zod: 4.6.7 ansi-escapes@7.3.0: @@ -3373,7 +3373,7 @@ snapshots: dependencies: is-obj: 2.0.0 - effect@4.0.5: {} + effect@4.0.6: {} emoji-regex@8.0.0: {}