Skip to content

chore(deps): update minor dependencies (minor) - #34

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/minor-dependencies
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/minor-dependencies

Conversation

@renovate

@renovate renovate Bot commented Oct 5, 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 Type Update Pending
@modelcontextprotocol/client (source) 2.2.0 → 2.4.0 age confidence devDependencies minor
@modelcontextprotocol/client (source) 2.2.0 → 2.4.0 age confidence dependencies minor
@modelcontextprotocol/sdk (source) 1.31.0 → 1.32.2 age confidence dependencies minor
@modelcontextprotocol/server (source) 2.2.0 → 2.4.0 age confidence devDependencies minor
@modelcontextprotocol/server (source) 2.2.0 → 2.4.0 age confidence dependencies minor
@types/node (source) 26.2.0 → 26.6.5 age confidence devDependencies minor 26.6.6
agents (source) 0.24.0 → 0.30.1 age confidence dependencies minor 0.31.0
docus 5.13.0 → 5.15.0 age confidence dependencies minor
node (source) v26.10.0 → 26.12.1 age confidence minor v26.13.0
nuxt (source) 4.5.2 → 4.6.2 age confidence dependencies minor 4.6.3
typebox 1.3.34 → 1.4.3 age confidence devDependencies minor
typebox 1.3.34 → 1.4.3 age confidence dependencies minor
vite (source) 1.0.0 → 1.4.0 age confidence pnpm.catalog.default minor
vite-plus (source) 1.0.0 → 1.4.0 age confidence pnpm.catalog.default minor
wrangler (source) 4.128.0 → 4.152.0 age confidence devDependencies minor 4.154.0 (+1)

Release Notes

modelcontextprotocol/typescript-sdk (@​modelcontextprotocol/client)

v2.4.0

Compare Source

Minor Changes
  • #​3057 c05225a Thanks @​steipete! - ServerEvent takes optional params, which the subscriptions/listen router delivers with its own subscription ID, so a gateway can forward change notifications with their _meta and extension params.

  • #​3047 46d9c99 Thanks @​KKonstantinov, @​tobi-oye, @​mattzcarey! - Add the Skills extension (SEP-2640), reachable through new ext/skills subpaths; package root exports are unchanged.

    • @modelcontextprotocol/server/ext/skills: SkillsExtension (attach(server) serves skills/list, skills/get, resources/directory/read and a skill://{+path} resource template), SkillsExtension.load(files) returning a SkillCatalog with entries and reload(), the SkillFiles storage adapter with memorySkillFiles, SkillSource for generated catalogs, skillEntry, and SkillCatalogError. Invalid skills are skipped with a warning (onWarning), or fail under strict. A file whose bytes are valid UTF-8 is served as text, whatever its MIME type; any other file as a base64 blob.
    • @modelcontextprotocol/server/ext/skills/node: loadSkills(folder) and nodeSkillFiles(folder).
    • @modelcontextprotocol/client/ext/skills: SkillsClient with list() (throws on an invalid entry; skipInvalid: true keeps the valid ones and returns the rest in invalid), get(), read(skill, path?) (size, digest and SKILL.md frontmatter verified, SkillVerificationError on a mismatch; a copy from the response cache that fails a check is fetched once more with cacheMode: 'refresh' first) and readDirectory().
    • @modelcontextprotocol/core/ext/skills: schemas, types and constants, including SKILL_LIMITS. The result schemas follow the stable spec, so ttlMs and cacheScope are required.

    SkillsExtension.attach is @experimental: how an extension is wired to a server may change in a minor release. The rest of the Skills API is stable.

    Works on 2025-11-25 and 2026-07-28. On 2026-07-28 only, the server sends the caching fields (ttlMs, cacheScope), and SkillsClient requires them and returns them from list(), get() and readDirectory().

Patch Changes
  • #​3083 ef38c67 Thanks @​claude! - The bundled Ajv validator is now built with fast-uri 3.1.8 (was 3.1.0). fast-uri 3.1.6 and later reject a $id or $ref whose text before the first colon is not a valid URI scheme (my_tool:output), or whose URN namespace is not valid (urn:my_tool:output): a schema that uses one no longer compiles, and a tool that carries it fails with an invalid-schema error. An underscore without a colon (my_tool_output) and a $ref into #/$defs/... or #/definitions/... are not affected.

  • #​2960 43c45f4 Thanks @​claude! - A server whose tool puts x-mcp-header on a number-typed parameter keeps checking that tool's Mcp-Param-* headers on tools/call, as 2.3.0 does: a header that is missing for a value in the body, or that disagrees with the body, is answered 400 with JSON-RPC error -32020. Clients on a 2026-07-28 connection other than stdio no longer list such a tool and send no Mcp-Param-* headers for it, so a call that carries a value for a declared parameter is rejected the same way; the server logs a warning each time tools are listed. Use an integer (z.int()) or remove the annotation.

  • #​3081 5820f79 Thanks @​claude! - A tool outputSchema whose root is a $ref to a type: "object" entry of its own $defs or definitions (what zod writes for z.object({...}).meta({ id })), or a union of such refs, is now treated as an object schema. On 2025-era connections the tool's schema and structuredContent are no longer wrapped in { result: ... }, so a 2025-era client that read structuredContent.result for such a tool now reads structuredContent. On every era the advertised schema gains type: "object" at its root.

  • #​3057 c05225a Thanks @​steipete! - Connecting a Server or McpServer to a PerRequestHTTPServerTransport classified at a modern revision that supportedProtocolVersions lists and the SDK implements now binds that revision, instead of answering -32022.

  • #​3005 b381559 Thanks @​chaeyn! - Reflect resource and resource template update({ title }) changes in list responses. Preserve other metadata and individual resource titles when a template supplies list entries.

  • #​3002 895007f Thanks @​Hugo-DDT! - createMcpHandler now sends Allow: POST on every 405 it answers to a non-POST request, with legacy: 'stateless' (the default) and with legacy: 'reject'.

  • #​2762 b022522 Thanks @​pcarleton! - x-mcp-header on a number-typed tool parameter is now rejected, matching the 2026-07-28 spec ("Parameters with type number are not permitted"; clients MUST exclude such tools from tools/list). Previously number was accepted only to satisfy an older conformance fixture that has since been corrected. integer, string and boolean are unaffected.

  • Updated dependencies [46d9c99]:

v2.3.1

Compare Source

Patch Changes

v2.3.0

Compare Source

Minor Changes
  • #​2929 40f8f4e Thanks @​claude! - requireBearerAuth and verifyBearerToken take a new optional expectedResource, which makes them accept only tokens issued for this resource (the token's audience). Set it to the value your authorization server puts into tokens meant for this server, usually the server's URL. When it is set, a token is accepted only if the verifier reports that value in AuthInfo.resource; the two are compared as strings, ignoring a fragment and one trailing slash. A token reported for another value, or for none, is answered 401 invalid_token with the usual WWW-Authenticate challenge. When it is not set, nothing changes. To use it, pass expectedResource and have verifyAccessToken fill AuthInfo.resource, for example from the aud claim. The option is declared on a new exported type, VerifyBearerTokenOptions, which extends BearerAuthOptions; BearerAuthOptions itself is unchanged. The Express requireBearerAuth passes the option through. With Express, @modelcontextprotocol/express has to be upgraded to this release as well: 2.0.1 does not pass the option on, so nothing is compared. Its options type does not have the option, so TypeScript reports an expectedResource written in a call to the 2.0.1 requireBearerAuth as an error.

  • #​2926 6d8dbc6 Thanks @​claude! - McpServer now accepts a maxToolInputElements option that limits the number of elements in tool-call arguments: the largest combined number of array elements and object members a single tools/call arguments payload may contain. It is off by default, so behavior is unchanged unless you set it. When it is set and a call exceeds it, that call is answered with an isError: true tool result that names the limit, before the input schema runs, and the server keeps serving. Set it above the largest arguments your tools legitimately accept; maxRequestBodySize remains the primary limit on request size. The value must be a number of at least 1, or Infinity for no limit; any other value is rejected at construction. The options type is exported as McpServerOptions.

  • #​2918 84804c2 Thanks @​claude! - A Server or McpServer now serves one connection at a time, and a Streamable HTTP server transport without sessions (sessionIdGenerator: undefined) serves one request. An app that uses one server object, or one stateless transport, for every HTTP request fails on the second request after this upgrade. Build the server and the transport per request instead.

    What keeps working without a change:

    • createMcpHandler(buildServer) and serveStdio(buildServer), where buildServer returns a new server on every call.
    • A handler that builds a new server and a new stateless transport for each request.
    • One server and one transport per session (a transport with a sessionIdGenerator).
    • Connecting a server again after close().
    • Client.

    What fails now, how it shows, and what to change:

    • One server object with a new stateless transport per request (const server = new McpServer(...) outside the handler, await server.connect(transport) inside it): the second HTTP request the process receives fails, and so does every later one. connect() rejects with an SdkError of code ALREADY_CONNECTED. If the handler closes the transport when the response ends, requests that arrive one after the other still work and a request that overlaps another one fails. Change: move new McpServer(...) and its registrations into the handler.
    • One stateless transport for every request (a transport built once with sessionIdGenerator: undefined): the second HTTP request fails. WebStandardStreamableHTTPServerTransport.handleRequest() rejects with Stateless transport cannot be reused across requests. Create a new transport per request., and NodeStreamableHTTPServerTransport.handleRequest() answers 500. Change: build the server and the transport inside the handler and connect them there.
    • createMcpHandler(() => server) with a server built once: a request that arrives after the previous response has been read to its end still works. A request that arrives while another one is being served is answered 500 with the JSON-RPC error -32603 (Internal server error); the reason is reported only through the onerror option. Change: pass a function that builds the server, as in createMcpHandler(buildServer).
    • One server object for every session: the initialize request of the second session fails with ALREADY_CONNECTED. Change: build a server per session.

    What the caller sees when connect() or handleRequest() rejects depends on the host. Express 5, Fastify and Hono answer 500. A plain node:http listener without its own error handling gets an unhandled rejection, which ends the process.

    The README examples of @modelcontextprotocol/express, @modelcontextprotocol/fastify, @modelcontextprotocol/hono and @modelcontextprotocol/node, and the handler examples in the JSDoc of WebStandardStreamableHTTPServerTransport and NodeStreamableHTTPServerTransport, now build a server and a transport per request.

  • #​2907 e55f9ac Thanks @​claude! - allowedOrigins and validateOriginHeader accept lowercase entries of the form <scheme>://*, such as moz-extension://* or chrome-extension://*, which admit every origin of that scheme. This lets a server admit MCP clients that run as a browser extension when the extension ID cannot be listed, as on Firefox, where it differs on every install. http://* and https://* are not honoured, and the defaults are unchanged.

Patch Changes
  • #​2599 5238fba Thanks @​freya0926! - A server can now serve, and a client can now call, tasks/get and tasks/cancel of the Tasks extension (SEP-2663) on a 2026-07-28 connection, when the handler is registered and the request is sent with an explicit schema. Every other method that a protocol revision removed is still refused. If one server factory serves both eras and such a handler is meant for 2025-era clients only, register it only when ctx.era === 'legacy'.

  • #​2107 2fc49ea Thanks @​pragnyanramtha! - prompts/get without arguments no longer fails with "Invalid arguments" when every argument of the prompt is optional. A missing arguments is now validated as {}, as it already is for tools/call, so a top-level .optional() or .default(...) on argsSchema no longer sees undefined.

  • #​2889 4d94e7b Thanks @​claude! - registerTool no longer converts tool schemas up front, so a server built per request stops converting every tool on every request. The warning about an invalid x-mcp-header declaration now appears each time tools are listed, not when the tool is registered.

  • #​2908 633dd3e Thanks @​claude! - The license field of the package manifests is now Apache-2.0; the LICENSE file shipped in each package carries the full terms, including the MIT text for earlier contributions. No code change.

  • #​2841 2237555 Thanks @​sharziki! - McpServer.registerPrompt() now types the callback correctly when no argsSchema is given: its one parameter is the server context. Before, reading ctx.mcpReq there was a type error although it worked at runtime. Prompts registered with an argsSchema are unchanged.

  • Updated dependencies [633dd3e]:

cloudflare/agents (agents)

v0.30.1

Compare Source

Patch Changes

v0.30.0

Compare Source

This release adds support for Pi 1.4 and makes PiHarness recover more reliably from evictions, crashes and storage errors.

Highlights
  • Pi 1.4 support: agents/harness/pi now runs on Pi 1.4.
  • Hibernation while Pi's tasks sleep: PiHarness passes Pi's onWake through your harness factory, so a Durable Object sleeps until Pi's next task is due instead of staying in memory.
  • One wake job per object: PiHarness wakes from Pi's wake(), so a task stopped by Pi's restart limit no longer keeps the object awake.
  • Parked tasks: tasks stopped by Pi's restart limit show as parked in pending(), and retry() runs them again.
  • Recovery: Pi reopens after a storage error instead of failing every call until the object restarts, and the wake job survives failed steps with backoff.
  • Fixes: Lifecycle no longer keeps evicted Durable Objects in memory, and it arms a fallback alarm when startup fails. pi-ai now reports cut-off model streams with wording Pi treats as transient, so Pi retries them.
Upgrading
  1. Update Pi to ~1.4.0 (@earendil-works/pi-durable, pi-ai, pi-agent-core) and install @earendil-works/chord alongside them. Pi 1.4 migrates session storage to a schema Pi 1.3 cannot open, so a deployment cannot roll back past this release.

  2. Check pi-durable's 1.4.0 changelog for its breaking changes, such as the removal of TaskRuntime.sleep(), the new sleeping task status, and the restart limit that parks a crash-looping task after 5 restarts.

  3. Pass onWake to Harness.open, as in the diff below. Without it, the harness still works but logs a warning, and the object stays in memory while Pi's tasks sleep.

  4. If you create Pi's registry at module scope, move it into your class, as a field or in the factory. Our tool examples showed module scope before this release. Pi keeps every Harness subscribed to its registry until it closes, and an evicted object never closes it, so a module-level registry keeps every evicted object's harness in memory.

    - const registry = createRegistry();
      export class Assistant extends Agent<Env> {
    +   registry = createRegistry();
        harness = new PiHarness({
          harness: ({ storage, context, onWake }) =>
    -       Harness.open(storage, { models, registry }, context)
    +       Harness.open(storage, { models, registry: this.registry, onWake }, context)
        });
      }
  5. Keep the harness factory safe to run more than once. It now runs again when Pi reopens after a storage error.

  6. Handle the new parked status if you switch on PiPendingOperation.status.

Existing objects need no migration step. Wake jobs left by earlier releases are handed over to the new wake job on first start.

Minor Changes
  • #​2617 cfe9d0f Thanks @​ben-reitz! - Support Pi 1.4: the Pi peer range is now ~1.4.0. Pi 1.4 migrates SQLite session storage to a schema that Pi 1.3 cannot open, so a deployment cannot roll back past this release. See Pi harness.

  • #​2619 4b535dc Thanks @​ben-reitz! - PiHarness hands its factory an onWake to pass to Harness.open, so the Durable Object can hibernate while Pi's tasks sleep. Add it to your factory: harness: ({ storage, context, onWake }) => Harness.open(storage, { ...options, onWake }, context). Without it the harness still works and logs a warning. See Pi harness.

  • #​2624 3954859 Thanks @​ben-reitz! - PiHarness shows operations stopped by Pi's restart limit as parked in pending(), and retry() runs them again. See Pi harness.

Patch Changes
  • #​2644 f404547 Thanks @​ben-reitz! - Lifecycle arms a fallback alarm while its job queue holds jobs, before startup runs in an alarm and after a startup that queued jobs throws, so a failed startup cannot leave queued jobs without a wake. See Lifecycle.

  • #​2653 fc4cd24 Thanks @​ben-reitz! - Stop Lifecycle startup keeping an evicted Durable Object in memory when a capability's startup leaves a promise pending, as PiHarness does when it opens Pi. See Pi harness.

  • #​2643 e117121 Thanks @​ben-reitz! - agents/models/pi-ai reports a cut-off or idle model stream with wording pi's retry policy treats as transient, so pi retries the turn instead of failing it. See Models with pi-ai.

  • #​2617 cfe9d0f Thanks @​ben-reitz! - agents/harness/pi now uses chord's own context helpers, so install @earendil-works/chord alongside pi-durable and pi-ai. See Pi harness.

  • #​2648 000fcaf Thanks @​ben-reitz! - PiHarness opens pi again after a storage error closes it, instead of failing every call until the object restarts. See How recovery works.

  • #​2618 3e91ded Thanks @​ben-reitz! - PiHarness wakes from Pi's wake() with one job per object, so a task parked by Pi's restart limit no longer keeps the Durable Object awake. See Pi harness.

  • #​2649 91a8f61 Thanks @​ben-reitz! - PiHarness keeps its wake job when a step fails, retrying with a backoff up to 10 minutes, and counts a memory-limit reset during the job's wait against the alarm memory-limit breaker. See How recovery works.

v0.29.0

Compare Source

Minor Changes
Patch Changes
  • #​2584 3b3a88e Thanks @​ben-reitz! - Browser creates and closes its Browser Run sessions with the binding's typed acquire() and closeSession(), falling back to the HTTP API in fully local dev. See Browser.

  • #​2615 05843e4 Thanks @​mattzcarey! - Chat recovery now seals a turn after chatRecovery.maxInterruptedAttempts interrupted attempts (default 5), so a turn that exceeds the Durable Object memory limit on every run no longer retries forever; maxOomRetries is deprecated. See Stream Recovery.

  • #​2604 5d6f5d6 Thanks @​mattzcarey! - createAI takes { accountId, apiToken } in place of binding, to use a gateway in another account or to run outside a Worker. See the models docs.

  • #​2622 2c68a71 Thanks @​mattzcarey! - createAI transcribes with @cf/deepgram/nova-3. See the models docs.

  • #​2576 b048873 Thanks @​mattzcarey! - createAI no longer uses AI Gateway's deprecated Universal Endpoint. Model ids, now including catalog ids like anthropic/claude-opus-4.8, run on env.AI.run; model objects go to the provider-native path. Adds byokAlias, fixes pi-ai catalog models and dynamic routes, and lets agents/models/opencode take catalog ids. See the models docs.

  • #​2589 841cc18 Thanks @​mattzcarey! - createAI resumes a catalog or dynamic route stream that drops mid-answer, with nothing lost or repeated. See the models docs.

  • #​2594 cc34652 Thanks @​ben-reitz! - agents/models/pi-ai resolves Claude ids from pi-ai 1.2's gateway catalog under AI Gateway's spelling, anthropic/claude-opus-4.8. See Models for pi-ai.

  • #​2594 cc34652 Thanks @​ben-reitz! - Support Pi 1.3: the Pi web search, web fetch, browser, and skills tools return output, and the Pi peer range is now ~1.3.0. See Pi harness.

  • #​2621 e80a201 Thanks @​ben-reitz! - PiHarness submit() and steer() now accept pi-durable's entry option, which labels an input with a transcript kind of your own (for example app.approval) instead of pi.user. Before, the harness had no way to pass it. See Label input the user did not type.

  • #​2616 65ddec8 Thanks @​ben-reitz! - openPiSessionStore now uses pi-durable's own Durable Object SQLite adapter, so several Pi storages in one object share its operation queue. See Pi harness.

v0.28.1

Compare Source

Patch Changes
  • #​2571 1bd2bc5 Thanks @​mattzcarey! - createAI (agents/models/ai-sdk, agents/models/pi-ai) adds the zdr gateway option, and vendorKey: "request" for AI SDK models routed with your own vendor key. See docs/agents/models.md.

  • #​2572 b7c6ab9 Thanks @​mattzcarey! - createAI (agents/models/ai-sdk, agents/models/pi-ai) takes AI Gateway dynamic routes as ai("dynamic/<route>"). See docs/agents/models.md.

  • #​2573 80719a5 Thanks @​mattzcarey! - Update @modelcontextprotocol/client and @modelcontextprotocol/server to 2.2.0 and @modelcontextprotocol/sdk to 1.31.0. See Model Context Protocol.

  • #​2574 131af4b Thanks @​mattzcarey! - Update @modelcontextprotocol/client and @modelcontextprotocol/server to 2.3.1 and @modelcontextprotocol/sdk to 1.32.1. The MCP client transports now follow redirects only within the same origin. See Model Context Protocol.

  • #​2574 131af4b Thanks @​mattzcarey! - McpAgent now answers requests for a session ended with DELETE with 404 straight away, instead of serving it until deferred teardown runs, and createMcpHandler rejects a Legacy request whose factory returns an instance still serving another request without closing that instance. See Transport.

  • #​2568 46570f5 Thanks @​mattzcarey! - OpenCodeHarness: session.events() now returns a stream with a snapshot of the session and then its events, translated into the same kinds PiHarness reports: run_start/run_end, operation_start/operation_end (with the result wait() returns), message_start/message_end, text_delta, reasoning_delta, tool_start/tool_end, permissions and compaction. It replaces the async iterable of OpenCode's raw events; those are still available, durable and resumable, from session.log(). The OpenCode example now gives the model Workspace tools from @cloudflare/computer in place of OpenCode's local file and shell tools.

v0.28.0

Compare Source

Minor Changes
Patch Changes

v0.27.0

Compare Source

This release adds four new experimental harnesses and a web_search tool, and reorganizes the experimental Channels API.

  • New experimental harnesses: AiSdkHarness, ThinkHarness, ContainerHarness (which runs Claude Code or Codex in a Container) and OpenCodeHarness, all with the same shape as PiHarness.
  • New agents/websearch: a web_search tool over Cloudflare's Web Search API for pi, the AI SDK and TanStack AI.
  • Channels moved to agents/experimental/channels: Channels is being rebuilt around conversations and turns, and the old agents/channels entry point has been removed. The new API includes ChannelGateway, the Web Channel and its client, an AI SDK chat transport, and a new npx agents tui terminal client.
  • Fixes: Streams, Tasks, useAgentChat reconnects, WebChannelClient, MCP credential cleanup on removeServer(), and x402 with MCP SDK v2.
Minor Changes
  • #​2434 0ebeae5 Thanks @​cjol! - Add AiSdkHarness from the new agents/harness/ai-sdk entry point, which runs each message with streamText and keeps sessions and transcripts in the Durable Object, so Channels.forHarness can serve an AI SDK model. The same entry point exports the AI SDK message conversions it is built on and createSendMessageTool, an AI SDK tool that sends a message to a surface through the gateway.

  • #​2431 6393265 Thanks @​cjol! - Add Channels to agents/experimental/channels: a Lifecycle capability that serves an agent harness's sessions as conversations to every surface that joins them, with durable, resumable responses on Streams. Connect a harness with Channels.forHarness(harness, { channels }). The entry point also exports the turn protocol types and a draft harness interface (AgentHarness), which may change.

  • #​2429 df4cbd6 Thanks @​cjol! - Breaking: remove the first pass of agents/channels and move Channels to agents/experimental/channels.

    The agents/channels entry points are gone, along with ChannelHost, the fallback and fanout composites, and the AI SDK, TanStack AI and Voice helpers from the first pass. Slack, Telegram and Email move to agents/experimental/channels/slack, agents/experimental/channels/telegram and agents/experimental/channels/email, and keep verified ingress and normalization. Channels is being rebuilt around conversations and turns; the new API is experimental and may change between releases.

  • #​2432 752cdc3 Thanks @​cjol! - Add ChannelGateway to agents/experimental/channels: the Worker entry point that verifies channel webhooks, takes Web Channel upgrades through web() from agents/experimental/channels/web, routes each to the agent object that holds its conversation, and delivers outbound messages. Every Channel that takes ingress needs a participant callback, where the application says who the sender is; Channels never picks an identity. The agent object is the authorization boundary: by default each participant gets one of their own, and a route callback can share one between participants or refuse them.

  • #​2436 062d091 Thanks @​cjol! - Add WebChannelChatTransport (agents/experimental/channels/web/ai-sdk), an AI SDK ChatTransport over the Web Channel, so AI SDK UIs can join a Channels conversation.

  • #​2433 6e6c58a Thanks @​cjol! - Add the Web Channel (agents/experimental/channels/web) and its client (agents/experimental/channels/web/client), which connect browsers and terminals to a conversation over the agent's WebSockets: live transcript and turns, approvals, client tool results, and creating, forking, resetting, listing and following conversations. WebSockets gains use for protocol handlers that run before the configured ones.

  • #​2502 66ae955 Thanks @​ben-reitz! - Add agents/websearch, a web_search tool over Cloudflare's Web Search API for the pi harness, the AI SDK, and TanStack AI. See Search the Web.

Patch Changes
  • #​2480 1923625 Thanks @​cjol! - AiSdkHarness: session.wait(operationId, signal) now rejects straight away when signal is already aborted, instead of staying pending until the operation settles.

  • #​2463 1e97e11 Thanks @​cjol! - AiSdkHarness no longer fails to start when it has stored sessions. onStart listed sessions while listing each one's pending work, and Durable Object storage allows one open kv.list() at a time, so a restarted agent stopped acknowledging messages.

  • #​2502 66ae955 Thanks @​ben-reitz! - AiSdkHarness passes its tools to convertToModelMessages, so a tool's toModelOutput also shapes its results on later turns instead of the model getting the raw output as JSON.

  • #​2488 98ec934 Thanks @​ben-reitz! - browserTool now has its own tool description instead of codemode's generic one. It covers the cdp API, common CDP mistakes, and the run time limit, so the model no longer runs codemode.search first. It also explains how to take a smaller screenshot when one is over the 1 MB result limit. See Persistent browser.

  • #​2437 5a7643e Thanks @​cjol! - Add npx agents tui <url>, a terminal client for a conversation's Web Channel.

    It streams the transcript with highlighted Markdown, collapsible reasoning and tool cards, and shows messages and turns from every surface live. It answers approvals inline, lets a person type a client tool's result, and cancels the running turn with Esc. --header adds headers to the WebSocket upgrade, and CF_ACCESS_CLIENT_ID / CF_ACCESS_CLIENT_SECRET are sent as an Access service token. Its dependencies are bundled into dist/cli.js, so installing agents adds none.

  • #​2514 1203bdd Thanks @​mattzcarey! - Add experimental agents/harness/container, agents/harness/container/daemon, agents/harness/container/runtime and agents/harness/store. Everything in them may change before it stabilizes.

    ContainerHarness runs an agent CLI such as Claude Code or Codex in a Cloudflare Container (ctx.container) and drives it from a Durable Object, with the same interface as PiHarness (prompt, submit, wait, abort, messages, pending, session(id), sessions). Typed presets (claudeCode(), codex(), containerAgent()) say what runs: the harness builds the container from cloudflare/debian-trixie at runtime and snapshots it, so there is no image to build, and ContainerEgress adds credentials (apiKey, baseUrl, headers) outside the container, which only ever sees a placeholder key. The container stops after an idle timeout (five minutes by default) and the next prompt starts a new one in which the CLI resumes its own session; a container lost mid-run settles that run as container_lost (or reruns it with onContainerLost: "retry"), and an object evicted mid-run reattaches and replays what it missed. agents/harness/container/runtime is the daemon's Node runtime with cliAdapter, for images that bring their own CLI; agents/harness/container/daemon is its runtime-agnostic core; and agents/harness/store is a session store on the object's SQLite that any harness can use.

  • #​2475 [7a4c6c0](https://redirect.github.com/cloudflare/agents/commit/7a4c

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Europe/Warsaw)

  • Branch creation
    • "before 6am on monday"
  • 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.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


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

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

@renovate
renovate Bot requested a review from oritwoen as a code owner October 5, 2026 00:05
@renovate renovate Bot added the dependencies label Oct 5, 2026
@coldtea-pr-lens

Copy link
Copy Markdown

Note

renovate[bot] opened this pull request, so PR Lens left it undrawn. Comment @pr-lens draw to draw it

github.comment.notice: false in .github/pr-lens.yml turns this note off

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://renovate-minor-dependencies-agntn-tools.oritwoen.workers.dev (commit eaa310f)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Failed ❌

View logs ↗
baf838a 2026-10-10T18:01:40.626Z View logs ↗
  • Build: Failed ❌

View logs ↗
4e815f0 2026-10-10T04:56:18.098Z View logs ↗
  • Build: Failed ❌

View logs ↗
ee41336 2026-10-10T00:49:29.998Z View logs ↗
  • Build: Failed ❌

View logs ↗
c137e44 2026-10-09T14:31:04.399Z View logs ↗
  • Build: Failed ❌

View logs ↗
4333d41 2026-10-09T02:29:44.547Z View logs ↗
  • Build: Failed ❌

View logs ↗
6b54476 2026-10-08T20:04:41.920Z View logs ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://e2d3e9d1-agntn-tools.oritwoen.workers.dev eaa310f 2026-10-08T14:24:35.135Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://a038bda5-agntn-tools.oritwoen.workers.dev 51574b5 2026-10-06T10:01:26.039Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://28afae1e-agntn-tools.oritwoen.workers.dev b65c468 2026-10-05T22:35:02.601Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://debcfed8-agntn-tools.oritwoen.workers.dev a2e21fe 2026-10-05T13:19:40.425Z Visit the dashboard ↗

View all previews: View all previews ↗

@renovate
renovate Bot force-pushed the renovate/minor-dependencies branch 12 times, most recently from baf838a to 7527af7 Compare October 11, 2026 20:40
@renovate
renovate Bot force-pushed the renovate/minor-dependencies branch 8 times, most recently from c7ade05 to dd97546 Compare October 19, 2026 10:41
@renovate
renovate Bot force-pushed the renovate/minor-dependencies branch 6 times, most recently from 4a83be6 to e393ec6 Compare October 25, 2026 08:30
@renovate
renovate Bot force-pushed the renovate/minor-dependencies branch 3 times, most recently from 15c34bc to b16928a Compare October 26, 2026 05:07
@renovate
renovate Bot force-pushed the renovate/minor-dependencies branch from b16928a to 27ae686 Compare October 26, 2026 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants