Skip to content

chore(deps): update dependency ai to v6.0.259 - #378

Open
renovate[bot] wants to merge 2 commits into
mainfrom
renovate/ai-6.x
Open

chore(deps): update dependency ai to v6.0.259#378
renovate[bot] wants to merge 2 commits into
mainfrom
renovate/ai-6.x

Conversation

@renovate

@renovate renovate Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
ai (source) 6.0.1166.0.259 age confidence

Release Notes

vercel/ai (ai)

v6.0.259

Compare Source

Patch Changes

v6.0.258

Compare Source

v6.0.257

Compare Source

Patch Changes

v6.0.256

Compare Source

Patch Changes

v6.0.255

Compare Source

v6.0.253

Compare Source

Patch Changes

v6.0.252

Compare Source

Patch Changes
  • 2f96d3f: Allow providers without reranking model support to satisfy the Provider type.
  • afb1965: Propagate errors thrown by the Chat onFinish callback to the initiating request.
  • Updated dependencies [18b0965]
  • Updated dependencies [451d2c3]

v6.0.250

Compare Source

Patch Changes

v6.0.249

Compare Source

Patch Changes
  • a774b7b: Stop pending and active resumed chat streams after cancellation, and prevent
    overlapping resumptions from applying stale updates.
  • Updated dependencies [b39f987]
  • Updated dependencies [d79117b]

v6.0.248

Compare Source

Patch Changes
  • 2171d15: feat(video): allow aspectRatio: 'adaptive' on generateVideo

    Some video models derive the output ratio from the input and reject explicit
    {width}:{height} values — BytePlus Seedance 2.5 does this for first-frame,
    first-and-last-frame, editing, and extension tasks. aspectRatio on
    VideoModelV3CallOptions, and
    experimental_generateVideo is now `${number}:${number}` | 'adaptive', so
    those calls no longer need a type assertion. Support is provider-specific.

  • Updated dependencies [2171d15]

v6.0.247

Compare Source

Patch Changes

v6.0.246

Compare Source

Patch Changes

v6.0.244

Compare Source

Patch Changes
  • 79e58aa: Preserve preceding assistant messages when regenerating a response.

v6.0.243

Compare Source

v6.0.242

Compare Source

v6.0.241

Compare Source

Patch Changes

v6.0.240

Compare Source

Patch Changes

v6.0.239

Compare Source

Patch Changes

v6.0.238

Compare Source

Patch Changes
  • 9ecdefe: Prevent validated downloads on Node.js from reaching private or internal services through DNS aliases or DNS rebinding by validating and pinning every resolved address at connection time.
  • 26d10c0: support overriding model call settings for individual prepareStep invocations
  • 7767170: Preserve provider metadata from empty text deltas in streamText.
  • Updated dependencies [9ecdefe]
  • Updated dependencies [87fb433]

v6.0.237

Compare Source

Patch Changes

v6.0.236

v6.0.235

Patch Changes

v6.0.234

Patch Changes
  • 1efdef8: fix(ai): bound media-type sniffing decode for ID3-prefixed input

    Media-type detection stripped ID3 tags before the ~18-byte prefix cap, decoding the entire base64 attachment (plus a full-size copy) whenever the data began with ID3/SUQz. This turned the intended O(1) sniff into an O(N) decode of the whole attachment. Detection now decodes at most a bounded prefix and skips the ID3 tag within that bound, keeping cost O(1) in input size on all paths (image, audio, and combined).

  • 49414cf: Return response piping promises so callers can catch stream read and write errors.

  • Updated dependencies [e7d064f]

v6.0.233

Patch Changes
  • fe410e7: fix: detect MP4 audio from its ftyp box during transcription
  • af7188c: fix(ai): preserve tool parts when tool call IDs repeat across steps
  • Updated dependencies [a09f944]

v6.0.232

Compare Source

Patch Changes
  • 7644a61: Preserve provider options when combining consecutive tool messages.

v6.0.231

Compare Source

Patch Changes
  • 926f5a0: Allow UI message chunks to include fields added by newer server versions.
  • 4c5a22f: Propagate abort reasons when generation is cancelled during tool execution.
  • 842a383: Prevent tools excluded by activeTools from being parsed or executed.
  • Updated dependencies [2dd1aab]
  • Updated dependencies [e567091]

v6.0.230

Compare Source

Patch Changes

v6.0.229

Compare Source

Patch Changes

v6.0.228

Compare Source

Patch Changes

v6.0.227

Compare Source

Patch Changes
  • 6ace546: Fix chat onFinish handling when overlapping requests clear the active response before a resume stream finishes.

v6.0.226

Compare Source

Patch Changes
  • 94219a2: Allow validating assistant UI messages with empty parts so persisted errored responses remain loadable.
  • b1be847: Prevent pending tool executions from enqueueing results after a model stream error closes the result stream.
  • Updated dependencies [06fb54c]
  • Updated dependencies [bc46977]

v6.0.225

Compare Source

Patch Changes

v6.0.224

Compare Source

Patch Changes

v6.0.223

Compare Source

Patch Changes

v6.0.222

Compare Source

Patch Changes

v6.0.221

Compare Source

v6.0.220

Compare Source

Patch Changes
  • 158d027: Sort tool results by their tool call order when converting generation output to response messages.
  • eb3cdd9: Fix extractJsonMiddleware preserving leading whitespace in the final streamed text suffix when no markdown fence prefix was stripped.
  • Updated dependencies [7dea716]
  • Updated dependencies [4f7fe37]
  • Updated dependencies [0952964]

v6.0.219

Compare Source

v6.0.218

Compare Source

Patch Changes

v6.0.217

Compare Source

Patch Changes

v6.0.216

Compare Source

Patch Changes

v6.0.215

Compare Source

Patch Changes
  • f66ac32: fix(ai): prune orphaned tool-approval responses in pruneMessages

    When pruning a specific tool by name (toolCalls: [{ type, tools: [...] }]), pruneMessages left the tool's tool-approval-response in place while removing its tool-approval-request and tool-call. The tool name of an approval response was resolved per-message, but approval responses live in a separate tool message from their approval request, so the name could never be resolved and the response was always kept. Tool name resolution is now done across all messages, so approval requests and responses are pruned together.

v6.0.214

Compare Source

Patch Changes

v6.0.213

Compare Source

Patch Changes

v6.0.212

Compare Source

Patch Changes

v6.0.211

Compare Source

Patch Changes

v6.0.210

Compare Source

Patch Changes

v6.0.209

Compare Source

v6.0.208

Compare Source

v6.0.207

Compare Source

Patch Changes
  • 779f5cd: fix(provider-utils): cancel response body on download rejection to prevent socket leak

    When a download was rejected early — because the Content-Length header exceeded the size limit, the response status was not ok, or a redirect resolved to a blocked URL — the fetch response body was left unconsumed and uncancelled. With WHATWG Fetch/undici this leaves the underlying TCP socket open instead of returning it to the connection pool, allowing an attacker-controlled origin to exhaust file descriptors and cause a denial of service. The body is now cancelled on all early-rejection paths in readResponseWithSizeLimit, download, and downloadBlob, and fetchWithValidatedRedirects cancels each redirect hop's body before following or rejecting the next hop.

  • Updated dependencies [5bfde36]

  • Updated dependencies [779f5cd]

v6.0.206

Compare Source

Patch Changes

v6.0.205

Compare Source

Patch Changes

v6.0.204

Compare Source

v6.0.203

Compare Source

Patch Changes
  • f42aa79: fix: harden download URL SSRF guard against hostname and redirect bypasses

    validateDownloadUrl and the file download helpers (downloadBlob, download) could be bypassed in several ways when handling untrusted URLs:

    • A fully-qualified hostname with a trailing dot (e.g. localhost., myhost.local.) skipped the localhost/.local blocklist.
    • IPv6 addresses that embed an IPv4 address in their last 32 bits — IPv4-compatible (::127.0.0.1), IPv4-translated (::ffff:0:127.0.0.1), and NAT64 (64:ff9b::127.0.0.1, including the 64:ff9b:1::/48 local-use prefix) — were not decoded and checked against the private IPv4 ranges.
    • Redirects were validated only after fetch had already followed them, so the request to a redirect target (e.g. an internal/metadata address) had already been issued before the check ran.
    • Several reserved/internal address ranges were not blocked: CGNAT (100.64.0.0/10, used by some cloud providers for internal traffic), benchmarking (198.18.0.0/15), IETF protocol assignments (192.0.0.0/24), the reserved 240.0.0.0/4 block (including the 255.255.255.255 broadcast address), and IPv6 site-local (fec0::/10) and multicast (ff00::/8).

    The validator now strips trailing dots before the hostname checks and fully expands IPv6 addresses to detect embedded private IPv4 targets. The download helpers now follow redirects manually (redirect: 'manual'), re-validating each hop before requesting it, so an unsafe redirect target is never fetched. When a redirect cannot be inspected because the runtime returns an opaque response, the helpers fail closed (reject the redirect) on the server; only in a real browser — where SSRF is not reachable (fetch is constrained by CORS and cannot reach a server's internal network or cloud-metadata endpoints) — is the redirect followed natively so legitimate redirected downloads keep working.

  • 5291f7e: Harden stream text processing and middleware against prototype pollution from stream part IDs.

  • b4b575a: fix: redact server error details from UI message streams by default

    streamText(...).toUIMessageStream() and createUIMessageStream defaulted their onError callback to getErrorMessage, which serializes the raw error (error.toString() / JSON.stringify(error)) into the client-facing { type: 'error', errorText } chunk — and also into tool-output-error parts. The documented default was () => 'An error occurred.', so applications relying on the documented behavior were unknowingly streaming server exception details (internal hostnames, paths, provider request data, validation inputs) to end users.

    The default onError now returns the documented generic 'An error occurred.'. Raw error details are only emitted when the developer explicitly supplies an onError handler. This also redacts tool-output-error and invalid-tool-input error text by default; pass an onError to surface richer messages.

  • Updated dependencies [bfa5864]

  • Updated dependencies [f42aa79]

v6.0.202

Compare Source

Patch Changes
  • 942f2f8: fix(security): re-validate tool approvals from client message history before execution

    The approval-replay path in generateText/streamText reconstructed approved tool calls from the client-supplied messages array and executed them without re-validating input against the tool's schema or re-checking that the tool actually requires approval. A client could forge an assistant message with a pre-approved tool-call part and have the server execute a tool with attacker-chosen arguments.

    The replay path now verifies the HMAC signature (when experimental_toolApprovalSecret is configured), re-validates tool-call input against the tool's input schema, and re-resolves whether the tool requires approval before execution.

  • Updated dependencies [942f2f8]

v6.0.201

Compare Source

Patch Changes
  • 0c8c0ed: fix(ai): return schema-transformed elements in array output mode

    Previously final array output validation checked each element against the schema but returned the raw model output. Array output now returns the validated values so Zod transforms, coercions, defaults, and pipes are applied consistently with object output.

v6.0.200

Compare Source

Patch Changes
  • 14098e7: fix(ai): reject streamText result promises with NoOutputGeneratedError when the model stream ends without producing any output. Previously such streams resolved with an empty step. Incomplete streams with partial output still resolve with the partial result.
  • 2cabe9c: Harden UI message stream processing against prototype pollution from chunk IDs.

v6.0.199

Compare Source

Patch Changes

v6.0.198

Compare Source

Patch Changes

v6.0.197

Compare Source

v6.0.196

Compare Source

Patch Changes

v6.0.195

Compare Source

v6.0.194

Compare Source

v6.0.193

Compare Source

Patch Changes
  • af580ea: fix(ai): do not re-validate tool input for output-error parts in validateUIMessages

v6.0.192

Compare Source

Patch Changes

v6.0.191

Compare Source

Patch Changes

v6.0.190

Compare Source

Patch Changes

v6.0.189

Compare Source

Patch Changes
  • 356c3cf: fix(ai): make input optional on input-streaming UIMessagePart variants

v6.0.188

Compare Source

Patch Changes
  • c98715a: Add allowSystemInMessages option to ToolLoopAgent.

    This exposes the same option that exists on streamText and generateText, whether role: "system" messages are allowed in the prompt or messages fields. When unset, system messages are rejected because they can create a prompt injection attack risk. Ideally, use the instructions option instead. Set to true to allow system messages, or false to explicitly reject them.

    const agent = new ToolLoopAgent({
      model,
      allowSystemInMessages: true,
    });
    
    await agent.generate({
      messages: [
        { role: "system", content: "Server context" },
        { role: "user", content: "Hello" },
      ],
    });

    The option can also be returned from prepareCall for dynamic per-call configuration.

v6.0.187

Compare Source

Patch Changes

v6.0.185

Compare Source

Patch Changes

v6.0.184

Compare Source

Patch Changes
  • 40fc5e4: fix(ai): default missing embedding warnings to an empty array

v6.0.183

Compare Source

Patch Changes

v6.0.182

Compare Source

Patch Changes
  • e76a29a: fix(ai): download tool-result file URLs

v6.0.180

Compare Source

Patch Changes

v6.0.178

Compare Source

Patch Changes
  • ac6f27e: fix(ai): update opentelemetry pinned version

v6.0.177

Compare Source

Patch Changes

v6.0.176

Compare Source

Patch Changes

v6.0.175

Compare Source

Patch Changes

v6.0.174

Compare Source

Patch Changes

v6.0.173

Compare Source

Patch Changes

v6.0.172

Compare Source

v6.0.171

Compare Source

Patch Changes
  • 48f842a: fix(ai): enforce callOptionsSchema at runtime in ToolLoopAgent

    ToolLoopAgentSettings.callOptionsSchema was declared and documented as a runtime schema for options, but tool-loop-agent.ts never invoked it. Any invariant a developer encoded in the schema was silently bypassed at runtime, and unchecked options flowed straight into prepareCall and any instructions template that interpolated them.

    ToolLoopAgent.prepareCall now validates caller-supplied options against callOptionsSchema (when set) via safeValidateTypes, throwing InvalidArgumentError on failure before forwarding to prepareCall / generateText / streamText.

  • a727da4: chore: ensure consistent import handling and avoid import duplicates or cycles

  • 5fee301: fix(mcp): prevent prototype pollution by using secureJsonParse

  • Updated dependencies [a727da4]

v6.0.170

Compare Source

Patch Changes
  • 19d587a: fix(ai): add allowSystemInMessages option and warn by default when system messages are found in prompt or messages

v6.0.169

Compare Source

v6.0.168

Compare Source

Patch Changes

v6.0.167

Compare Source

Patch Changes

v6.0.166

Compare Source

Patch Changes
  • b8d28f4: fix(ai): omit reasoning-start/end when sendReasoning is false

v6.0.165

Compare Source

Patch Changes

v6.0.164

Compare Source

Patch Changes

v6.0.163

Compare Source

Patch Changes

v6.0.162

Compare Source

Patch Changes

v6.0.161

Compare Source

Patch Changes

v6.0.160

Compare Source

Patch Changes

v6.0.159

Compare Source

Patch Changes

v6.0.158

Compare Source

Patch Changes
  • 295beba: fix(ai): fix lastAssistantMessageIsCompleteWithApprovalResponses to no longer ignore providerExecuted tool approvals

v6.0.157

Compare Source

Patch Changes
  • ff11aee: fix(ai): fix providerExecuted tool approvals being passed to language model twice

v6.0.156

Compare Source

Patch Changes

v6.0.155

Compare Source

Patch Changes
  • 06764c5: fix(ai): skip passing invalid JSON inputs to response messages

v6.0.154

Compare Source

Patch Changes

v6.0.153

Compare Source

Patch Changes
  • f152133: feat (ai/core): support plain string model IDs in rerank() function

    The rerank() function now accepts plain model strings (e.g., 'cohere/rerank-v3.5') in addition to RerankingModel objects, matching the behavior of generateText, embed, and other core functions.

v6.0.152

Compare Source

Patch Changes
  • d42076d: Add AI Gateway hint to provider READMEs

v6.0.151

Compare Source

Patch Changes

v6.0.150

Compare Source

Patch Changes

v6.0.149

Compare Source

Patch Changes

v6.0.148

Compare Source

Patch Changes

v6.0.147

Compare Source

Patch Changes

v6.0.146

Compare Source

Patch Changes

v6.0.145

Compare Source

Patch Changes

v6.0.144

Compare Source

Patch Changes

v6.0.143

Compare Source

Patch Changes

v6.0.142

Compare Source

Patch Changes

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@vercel

vercel Bot commented May 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sexyvoice Ready Ready Preview Aug 23, 2026 10:11am
sexyvoice-docs Ready Ready Preview Aug 23, 2026 10:11am

Request Review

@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@argos-ci

argos-ci Bot commented May 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Argos notifications ↗︎

Awaiting the start of a new Argos build…

@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 1101e30 to 1f2e090 Compare May 15, 2026 16:42
@renovate renovate Bot changed the title Update dependency ai to v6.0.177 Update dependency ai to v6.0.178 May 15, 2026
@renovate
renovate Bot temporarily deployed to Production May 15, 2026 16:42 Inactive
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 1f2e090 to 03a7355 Compare May 16, 2026 01:12
@renovate renovate Bot changed the title Update dependency ai to v6.0.178 Update dependency ai to v6.0.180 May 16, 2026
@renovate
renovate Bot temporarily deployed to Production May 16, 2026 01:12 Inactive
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 03a7355 to f12ccd0 Compare May 16, 2026 21:40
@renovate renovate Bot changed the title Update dependency ai to v6.0.180 Update dependency ai to v6.0.182 May 16, 2026
@renovate
renovate Bot temporarily deployed to Production May 16, 2026 21:40 Inactive
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from f12ccd0 to ce4e780 Compare May 18, 2026 19:02
@renovate renovate Bot changed the title Update dependency ai to v6.0.182 Update dependency ai to v6.0.183 May 18, 2026
@renovate
renovate Bot temporarily deployed to Production May 18, 2026 19:02 Inactive
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from ce4e780 to 499446d Compare May 19, 2026 09:55
@renovate renovate Bot changed the title Update dependency ai to v6.0.183 Update dependency ai to v6.0.184 May 19, 2026
@renovate
renovate Bot temporarily deployed to Production May 19, 2026 09:56 Inactive
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 499446d to 430400e Compare May 21, 2026 21:35
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 074fd3d to f222249 Compare May 26, 2026 02:02
@renovate renovate Bot changed the title Update dependency ai to v6.0.190 Update dependency ai to v6.0.191 May 26, 2026
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from f222249 to 5cc3e6c Compare May 28, 2026 16:15
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 5cc3e6c to 8922f26 Compare May 31, 2026 17:38
@renovate renovate Bot changed the title Update dependency ai to v6.0.191 Update dependency ai to v6.0.192 May 31, 2026
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 8922f26 to 907de1c Compare June 1, 2026 00:39
@renovate renovate Bot changed the title Update dependency ai to v6.0.192 Update dependency ai to v6.0.193 Jun 1, 2026
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 907de1c to cb6351c Compare June 4, 2026 21:50
@renovate renovate Bot changed the title Update dependency ai to v6.0.193 Update dependency ai to v6.0.194 Jun 4, 2026
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from cb6351c to 15e91b2 Compare June 5, 2026 11:14
@renovate
renovate Bot force-pushed the renovate/ai-6.x branch from 15e91b2 to 5088d31 Compare June 5, 2026 22:35
@socket-security

socket-security Bot commented Jun 7, 2026

Copy link
Copy Markdown

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@socket-security

socket-security Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​ai@​6.0.2599810010099100

View full report

@gianpaj

gianpaj commented Aug 23, 2026

Copy link
Copy Markdown
Owner

@claude Fix the type issues and make sure the tests succeed. Commit onto this same branch

00:05:36.248 Running build in Cleveland, USA (East) – cle1
00:05:36.248 Build machine configuration: 4 cores, 8 GB
00:05:36.414 Cloning github.com/gianpaj/sexyvoice (Branch: renovate/ai-6.x, Commit: e420350)
00:05:37.289 Cloning completed: 874.000ms
00:05:38.414 Restored build cache from previous deployment (D4hAymJUuzRzTFYEqPoq4TNmbaPt)
00:05:41.376 Running "git log -1 --pretty=oneline --abbrev-commit | grep -E 'skip deploy|skip ci|skip docs' && exit 0 || exit 1"
00:05:41.569 Running "vercel build"
00:05:41.580 Vercel CLI 59.3.0
00:05:41.603 > Detected Turbo. Adjusting default settings...
00:05:41.825 Detected `pnpm-lock.yaml` version 9 generated by pnpm@10.x with package.json#packageManager pnpm@11.16.0
00:05:41.827 Running "install" command: `pnpm install`...
00:05:43.883 Scope: all 4 workspace projects
00:05:44.109 ? Verifying lockfile against supply-chain policies (1927 entries)...
00:05:44.499 ../..                                    | Progress: resolved 1, reused 0, downloaded 0, added 0
00:05:44.738 ../..                                    |   +8   -2 +-
00:05:44.939 ../..                                    | Progress: resolved 8, reused 0, downloaded 8, added 8, done
00:05:50.621 ✓ Lockfile passes supply-chain policies (1927 entries in 6.5s)
00:05:50.827 
00:05:50.827 dependencies:
00:05:50.827 - ai 6.0.116
00:05:50.827 + ai 6.0.259
00:05:50.828 
00:05:50.840 ../.. prepare$ husky
00:05:50.860 . postinstall$ fumadocs-mdx
00:05:51.185 ../.. prepare: Done
00:05:51.471 . postinstall: [MDX] generated files in 10.951368000000002ms
00:05:51.475 . postinstall: Done
00:05:51.502 Done in 8.1s using pnpm v11.16.0
00:05:51.556 Detected Next.js version: 16.3.0
00:05:51.557 Running "turbo run build "--filter=@sexyvoice/docs""
00:05:51.860 
00:05:51.861    • Packages in scope: @sexyvoice/docs
00:05:51.861    • Running build in 1 packages
00:05:51.861    • Remote caching enabled
00:05:51.861 
00:05:52.012 @sexyvoice/docs:build: cache miss, executing ee16672dcafb2b30
00:05:52.707 @sexyvoice/docs:build: $ fumadocs-mdx && pnpm run test-links && pnpm run generate-openapi-docs && next build
00:05:52.973 @sexyvoice/docs:build: [MDX] generated files in 15.948259999999976ms
00:05:53.402 @sexyvoice/docs:build: $ tsx ./src/scripts/lint.mts
00:05:55.919 @sexyvoice/docs:build: 0 errored file, 0 errors
00:05:56.364 @sexyvoice/docs:build: $ tsx ./src/scripts/generate-docs.mts
00:05:56.979 @sexyvoice/docs:build: Generated: content/docs/api-reference/endpoints/api/v1/models/get.mdx
00:05:56.979 @sexyvoice/docs:build: Generated: content/docs/api-reference/endpoints/api/v1/voices/get.mdx
00:05:56.979 @sexyvoice/docs:build: Generated: content/docs/api-reference/endpoints/api/v1/speech/post.mdx
00:05:56.979 @sexyvoice/docs:build: Generated: content/docs/api-reference/endpoints/api/v1/billing/get.mdx
00:05:57.440 @sexyvoice/docs:build: ▲ Next.js 16.3.0 (Turbopack)
00:05:57.647 @sexyvoice/docs:build: [MDX] generated files in 12.048406ms
00:05:57.720 @sexyvoice/docs:build:   Applying modifyConfig from Vercel
00:05:57.721 @sexyvoice/docs:build: ✓ Running next.config.mjs took 281ms
00:05:57.808 @sexyvoice/docs:build: 
00:05:57.834 @sexyvoice/docs:build:   Creating an optimized production build ...
00:06:06.615 @sexyvoice/docs:build: ✓ Compiled successfully in 8.0s
00:06:06.615 @sexyvoice/docs:build:   Running TypeScript ...
00:06:07.790 @sexyvoice/docs:build: src/components/ai/search.tsx(34,24): error TS2344: Type 'ChatUIMessage' does not satisfy the constraint 'UIMessage<unknown, UIDataTypes, UITools>'.
00:06:07.791 @sexyvoice/docs:build:   Types of property 'parts' are incompatible.
00:06:07.791 @sexyvoice/docs:build:     Type 'UIMessagePart<{ client: { location: string; }; }, UITools>[]' is not assignable to type 'UIMessagePart<UIDataTypes, UITools>[]'.
00:06:07.791 @sexyvoice/docs:build:       Type 'UIMessagePart<{ client: { location: string; }; }, UITools>' is not assignable to type 'UIMessagePart<UIDataTypes, UITools>'.
00:06:07.791 @sexyvoice/docs:build:         Type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' is not assignable to type 'UIMessagePart<UIDataTypes, UITools>'.
00:06:07.791 @sexyvoice/docs:build:           Type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' is not assignable to type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; providerExecuted?: boolean | undefined; } & { state: "input-streaming"; input: unknown; output?: undefined; errorText?: undefined; callProviderMetadata?: SharedV3ProviderMetadata | undefined; approval?: undefined; }'.
00:06:07.792 @sexyvoice/docs:build:             Type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' is not assignable to type '{ state: "input-streaming"; input: unknown; output?: undefined; errorText?: undefined; callProviderMetadata?: SharedV3ProviderMetadata | undefined; approval?: undefined; }'.
00:06:07.792 @sexyvoice/docs:build:               Property 'input' is optional in type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' but required in type '{ state: "input-streaming"; input: unknown; output?: undefined; errorText?: undefined; callProviderMetadata?: SharedV3ProviderMetadata | undefined; approval?: undefined; }'.
00:06:07.792 @sexyvoice/docs:build: src/components/ai/search.tsx(341,24): error TS2344: Type 'ChatUIMessage' does not satisfy the constraint 'UIMessage<unknown, UIDataTypes, UITools>'.
00:06:07.792 @sexyvoice/docs:build:   Types of property 'parts' are incompatible.
00:06:07.792 @sexyvoice/docs:build:     Type 'UIMessagePart<{ client: { location: string; }; }, UITools>[]' is not assignable to type 'UIMessagePart<UIDataTypes, UITools>[]'.
00:06:07.792 @sexyvoice/docs:build:       Type 'UIMessagePart<{ client: { location: string; }; }, UITools>' is not assignable to type 'UIMessagePart<UIDataTypes, UITools>'.
00:06:07.792 @sexyvoice/docs:build:         Type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' is not assignable to type 'UIMessagePart<UIDataTypes, UITools>'.
00:06:07.792 @sexyvoice/docs:build:           Type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' is not assignable to type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; providerExecuted?: boolean | undefined; } & { state: "input-streaming"; input: unknown; output?: undefined; errorText?: undefined; callProviderMetadata?: SharedV3ProviderMetadata | undefined; approval?: undefined; }'.
00:06:07.792 @sexyvoice/docs:build:             Type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' is not assignable to type '{ state: "input-streaming"; input: unknown; output?: undefined; errorText?: undefined; callProviderMetadata?: SharedV3ProviderMetadata | undefined; approval?: undefined; }'.
00:06:07.792 @sexyvoice/docs:build:               Property 'input' is optional in type '{ type: "dynamic-tool"; toolName: string; toolCallId: string; title?: string | undefined; toolMetadata?: JSONObject | undefined; providerExecuted?: boolean | undefined; } & { ...; }' but required in type '{ state: "input-streaming"; input: unknown; output?: undefined; errorText?: undefined; callProviderMetadata?: SharedV3ProviderMetadata | undefined; approval?: undefined; }'.
00:06:07.801 @sexyvoice/docs:build: Failed to type check.
00:06:07.801 @sexyvoice/docs:build: 
00:06:07.969 @sexyvoice/docs:build: [ELIFECYCLE] Command failed with exit code 1.
00:06:07.995  ERROR  @sexyvoice/docs#build: command (/vercel/path0/apps/docs) /pnpm10/node_modules/.bin/pnpm run build exited (1)
00:06:07.996 
00:06:07.996   Tasks:    0 successful, 1 total
00:06:07.996  Cached:    0 cached, 1 total
00:06:07.997    Time:    16.325s 
00:06:07.997 Summary:    /vercel/path0/.turbo/runs/3IHzdIr8wRwcyMTECml45rnpEak.json
00:06:07.997  Failed:    @sexyvoice/docs#build
00:06:07.997 
00:06:08.001  ERROR  run failed: command  exited (1)
00:06:08.019 Error: Command "turbo run build "--filter=@sexyvoice/docs"" exited with 1

@claude

claude Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Claude finished @gianpaj's task in 9m 10s —— View job


Type errors fixed — pushed to renovate/ai-6.x

  • Gather context (apps/docs/src/components/ai/search.tsx, apps/docs/src/app/api/chat/route.ts, lockfile)
  • Diagnose the root cause
  • Fix the type issues
  • Commit & push (6a4b84d)
  • ⚠️ Run pnpm type-check / pnpm fixall / pnpm testnot possible in this environment (see below)

Root cause

Not a code problem — a duplicate ai install. @ai-sdk/react@3.0.118 (catalog-pinned) depends on an exact ai@6.0.116, so bumping the catalog to 6.0.259 left two copies in the tree:

'@ai-sdk/react@3.0.118(react@19.2.7)(zod@4.4.3)':
  dependencies:
    ai: 6.0.116(zod@4.4.3)   # <- while apps/docs + apps/web use ai 6.0.259

ChatUIMessage (apps/web… actually apps/docs/src/app/api/chat/route.ts:21) is built from 6.0.259's UIMessage, while useChat / UseChatHelpers (search.tsx:34, search.tsx:341) constrain to 6.0.116's UIMessage. Between those releases the dynamic-tool part gained toolMetadata and made input optional on input-streaming (ai 6.0.176 / 6.0.189), so the newer type no longer satisfies the older constraint — exactly the TS2344 the build reported.

Fix

Dedupe ai to a single version instead of patching the types around the mismatch:

# pnpm-workspace.yaml
overrides:
  "@ai-sdk/react>ai": "6.0.259"

Plus the matching pnpm-lock.yaml edits: the override entry, @ai-sdk/react's ai dependency repointed to 6.0.259(zod@4.4.3), and the now-unreachable entries removed (ai@6.0.116, @ai-sdk/gateway@3.0.66, @vercel/oidc@3.1.0). No source files changed — with one ai version, useChat<ChatUIMessage> type-checks the same way it did before the bump, and @ai-sdk/react moves within the same 6.0.x minor.

apps/web doesn't use useChat, so it's unaffected apart from also getting the single ai copy.

What I could not verify ⚠️

This runner has no pnpm and no network access (pnpm/corepack/npm view/curl are all outside my allowed commands), so I could not run pnpm install, pnpm type-check, pnpm fixall, or pnpm test. The lockfile changes were made by hand and reviewed line by line — I verified no dangling references to the removed entries remain — but they need a real pnpm install --frozen-lockfile to confirm. CI (tests.yml, e2e-tests.yml) and the Vercel docs build will exercise exactly that.

Note for follow-ups

The override value must stay in sync with the ai catalog entry (there's a comment in pnpm-workspace.yaml saying so). The cleaner long-term fix is to bump @ai-sdk/react to the release that depends on ai@6.0.259 and drop the override — that needs a lockfile regen with registry access, which I couldn't do here. If you'd rather go that route, letting Renovate group ai + @ai-sdk/* bumps together would prevent this class of breakage.
branch renovate/ai-6.x

@ai-sdk/react@3.0.118 pins ai@6.0.116, so bumping the catalog to ai@6.0.259
installed two copies of ai. The UIMessage types of the two copies are not
assignable to each other (dynamic-tool parts gained toolMetadata and made
input optional), which broke the docs build:

  src/components/ai/search.tsx(34,24): error TS2344: Type 'ChatUIMessage'
  does not satisfy the constraint 'UIMessage<unknown, UIDataTypes, UITools>'

Add an '@ai-sdk/react>ai' override so both resolve to the catalog version.

Co-authored-by: Gianfranco P <899175+gianpaj@users.noreply.github.com>
@renovate

renovate Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

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