Repository navigation
fix(deps): update dependency agents to ^0.33.0 - #266
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/agents-0.x
branch
2 times, most recently
from
October 30, 2026 19:01
239fd2f to
48c50c6
Compare
renovate
Bot
force-pushed
the
renovate/agents-0.x
branch
from
November 1, 2026 21:17
48c50c6 to
232680f
Compare
renovate
Bot
force-pushed
the
renovate/agents-0.x
branch
2 times, most recently
from
November 6, 2026 14:25
0bcb6a9 to
5eb740a
Compare
renovate
Bot
force-pushed
the
renovate/agents-0.x
branch
from
November 6, 2026 14:35
5eb740a to
20431ba
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^0.29.0→^0.33.0Release Notes
cloudflare/agents (agents)
v0.33.0Compare Source
This release adds support for Pi 1.5, which makes
PiHarnessmuch faster and lighter on memory, and lets you continue a run that ended without an answer.Highlights
agents/harness/pi,agents/models/pi-aiand the Pi tools now run on Pi 1.5.session.watch()replacessession.events(). It returns the newest transcript entries and the session's live state, such as the answer being streamed, running tools, and why the last run ended without an answer.session.entries()pages older entries. See Work with sessions.session.continue()starts a run on the transcript as it is, without a new message, for example after the model errored or the run hit its turn limit.defaults.maxTurnscaps the tool rounds a run can take in new sessions. A run that reaches it ends without an answer, with reasonturn_limit.restart_limit. See How recovery works.submit()takeswhenIdle: "reject", so an idle session refuses input instead of starting a run. Streamed tool-call arguments on the chat-completions wire that aren't valid JSON now fail the tool call with an error the model can fix. In Pi's code mode,browserToolgives scripts its run as an object, with screenshots as image blocks forimage().browserToolstops when the harness aborts its call, andBrowserSessionlets code outsidebrowserToolrun the samebrowserobject.useAgentChat().stop()now cancels server-started turns streamed without a resume handshake.Upgrading
You only need to make changes if you use the Pi harness,
agents/models/pi-aior the Pi tools.Update Pi to
~1.5.0(@earendil-works/pi-durable,pi-ai,chord) and install@earendil-works/pi-schemaalongside them. Once a conversation runs on Pi 1.5, Pi 1.4 cannot read it, so a deployment cannot roll back past this release. Roll forward to fix a bad deploy instead.Check pi-durable's 1.5.0 changelog for its breaking changes, such as the removal of
watchEvents(), tagged watch calls and ends, andConversationView.entriesbecoming a window over the transcript.Replace
session.events()withsession.watch()and render the view each time it changes. To show a transcript longer than the window, merge each value into Pi'sConversationTranscript, which pages older entries withsession.entries(). The view's entries now include those before a reset or compaction: Pi adds the reset or summary in place instead of cutting the transcript there. An idlepi.livenow keepsrunFailureafter a failed run, so checkrun === undefinedinstead of comparing it with{}.Build your Pi tool schemas with
@earendil-works/pi-schema, as pi-ai no longer exports TypeBox'sType. UnlikeType.Object,obj()rejects properties it doesn't list; pass{ open: true }to allow them. To keep TypeBox instead, importTypefromtypebox.Remove calls to
retry()and handling of theparkedstatus. To run work again after a run ended without an answer, callsession.continue()or submit it again.Update your
onReportcallback if you pass one toHarness.open. It now takes one report tagged bykind, with the error on it.session_failedis nowstorage_failed, and a task the restart limit ends is reported astask_interruptedinstead oftask_parked.Minor Changes
#2796
edf1b52Thanks @ben-reitz! - Support Pi 1.5 (~1.5.0; Pi 1.4 is no longer supported):session.watch()replacessession.events()and returns Pi's conversation view,session.entries()pages the transcript,retry()and theparkedpending status are removed as Pi now ends crash-looping tasks,submit()takeswhenIdle: "reject", and the Pi tools build their schemas with@earendil-works/pi-schema, a new optional peer, as pi-ai no longer exports TypeBox'sType. See pi-durable 1.5.0's changelog.#2797
77138faThanks @ben-reitz! - Two new controls for the Pi harness, from Pi 1.5:continue()starts a run without sending a new message. Use it to try again after a run ended without an answer, for example because the model errored or the run hit its turn limit.defaults.maxTurnslimits how many tool rounds a run can take. A run that reaches it ends without an answer, with reasonturn_limit.See Pi harness.
Patch Changes
#2795
3e21ee4Thanks @ben-reitz! - AddBrowser.functionDocs(),BrowserSession.functions, reportnotices, opt-in scope locks (browser.session({ lock: true }),session.lock()) andconversationScope()toagents/browser, so code outsidebrowserToolcan run the samebrowserobject. See Browse the Web.#2795
3e21ee4Thanks @ben-reitz! -browserToolstops when the harness aborts its call, for pi, the AI SDK and TanStack AI. See Browse the Web.#2798
62ccd87Thanks @ben-reitz! - Pi models on the chat-completions wire (Workers AI, and OpenAI-compatible models through AI Gateway) now parse streamed tool-call arguments with pi-ai's own parser. When a model sends arguments that aren't valid JSON, the tool call now fails with an error the model can see and fix, instead of running with whatever arguments could be salvaged.See Models for pi-ai.
#2801
748e693Thanks @ben-reitz! - The pibrowserToolgives code mode scripts the run as an object, with screenshots as image blocks forimage(). See Browse the Web.#2805
baf26bcThanks @ben-reitz! -useAgentChat().stop()now cancels server-started turns streamed without a resume handshake. See Request cancellation.v0.32.0Compare Source
Minor Changes
#2752
34cbd30Thanks @mattzcarey! - Addexperimental_registerOpenTelemetry()toagents/observability, which records spans from OpenTelemetry-instrumented libraries as Workers trace spans. Experimental and subject to change.#2771
54ae3e8Thanks @mattzcarey! - Breaking:agents/skillsnow loads Agent Skills from Computer Workspace files (workspace()), R2 (r2()), or code (manifest()), checksSKILL.mdagainst the Agent Skills spec, and replacesSkillRegistrywithloadSkillCatalog()andcreateSkillTools()(fromagents/skills/tools/ai-sdk);parseSkill()follows the spec's guide for agents, loading skills that break a rule with warnings;runner()moved toagents/skills/runner; theagents:skillsVite import andagents/skills/compileare removed. See Agent Skills.Patch Changes
#2763
df85805Thanks @mattzcarey! - Agents SDK spans (agent lifecycle,wrapAISDK, Think) now set span statuserroron failure, where the Workers runtime supportsSpan.setStatus(); attributes are unchanged. See Observability.#2737
08747d9Thanks @mattzcarey! - Mark the package side-effect free (apart from the CLI), so bundlers drop the modules a Worker doesn't use.import { routeAgentRequest } from "agents"no longer bundles the MCP client.#2744
a2d371eThanks @mattzcarey! - Update@modelcontextprotocol/clientand@modelcontextprotocol/serverto 2.4.0 and@modelcontextprotocol/sdkto 1.32.2, and add aclientMetadataUrloption toDurableObjectOAuthClientProviderfor OAuth Client ID Metadata Documents. See MCP client.#2740
8cf6da1Thanks @mattzcarey! -agents/models/pi-aiparses streamed chat-completions tool-call arguments incrementally, instead of re-parsing the whole argument text on every delta.#2766
b372289Thanks @github-actions! - Allow@tanstack/ai1.x in the optional peer dependency ranges, and type the TanStack AI tools so they compile against both 0.x and 1.x. See TanStack AI.v0.31.0Compare Source
This release adds internal hostnames to the browser. Give a Browser Run browser hostnames such as
preview.internal, and its requests to them go to your agent instead of the internet, so the model can open a dev server, a workspace folder or another Worker in the same browser it uses for the web.Highlights
browserRun()asinternalHosts. Serve each one from afetchfunction on your agent or from another Worker. See Internal hostnames.targetschema, and the model chooses what it serves withbrowser.assignHost(), such as a container port or a folder in its workspace. Without a target, a host always serves the same thing.@modelcontextprotocol/sdkand@modelcontextprotocol/serverare now optional peer dependencies, so apps that don't serve MCP no longer install them.agents/models/ai-sdkandagents/models/pi-aiare no longer experimental. See Models.createMcpHandlerpasses the verified token from@cloudflare/workers-oauth-provider1.x to tool callbacks ascontext.http.authInfo.createAIfromagents/models/pi-aisends pi-ai's Anthropic betas for catalog Claude models.PiWhenBusyaccepts"reject".browserToolimprovements: the model's code runs in its own Dynamic Worker instead of on codemode, and is stopped from outside that Worker if it overruns its timeout. It can no longer close the browser or create a Live View link.this.browser.session()lets your own code drive the same browser.createBrowserTools,createBrowserRuntime,BrowserConnectorand the Quick Action helpers are deprecated in favour ofbrowserTool.Upgrading
You only need to make changes if you serve MCP or use
browserTool.If you serve MCP or use
agents/x402oragents/experimental/webmcp:Add the MCP packages to your
package.jsonat the versions this release expects, since your package manager no longer installs them. Until you do, builds fail with an unresolved import.agents/mcp(McpAgent,WorkerTransport,createLegacyMcpHandler) andagents/x402:@modelcontextprotocol/sdk@1.32.1and@modelcontextprotocol/server@2.3.1agents/mcp/server(createMcpHandler):@modelcontextprotocol/server@2.3.1agents/experimental/webmcp:@modelcontextprotocol/sdk@1.32.1See Upgrading an existing
McpAgentserver.Import client helpers such as
RPCClientTransportfromagents/mcp/clientinstead ofagents/mcp. MCP client code needs neither package.If you use
browserTool:Remove the
CodemodeRuntimeexport from your Worker unlesscreateBrowserToolsstill uses it, and removectxfrombrowserTool's options. Keep theLOADERbinding and keep@cloudflare/codemodeinstalled for now.Update instructions of your own that mention
cdp.send, such as a system prompt. The tool's description already teaches the new call:Read
noticeinstead ofrestarted,newTabsandcallsif your code inspects results.noticesays in sentences whether the browser restarted, the page opened tabs, or another chat closed or shares the tab.PiBrowserToolDetailsnow has onlyexecutionIdandstatus.Minor Changes
#2673
865a57eThanks @ben-reitz! - AddinternalHoststobrowserRun()provider: set internal hostnames the browser can reach through your agent. Allow the model to point these hostnames at specific targets like container ports or workspace folders withbrowser.assignHost(). See Internal hostnames.#2667
03b4609Thanks @ben-reitz! -browserToolnow runs the model's code in its own Dynamic Worker instead of on codemode, so it needs noctxorCodemodeRuntimeexport (keep@cloudflare/codemodeinstalled for now) and its output has nocallslog;browser.session()gives your own code the same connection to the browser. See Persistent browser.#2634
565e37cThanks @mattzcarey! -@modelcontextprotocol/sdkand@modelcontextprotocol/serverare now optional peer dependencies, so add them to yourpackage.jsonif you useagents/mcp,agents/mcp/server,agents/x402oragents/experimental/webmcp. See Upgrading an existingMcpAgentserver.Patch Changes
#2668
183c141Thanks @ben-reitz! -browserTool's model code now calls abrowserglobal (browser.cdp(...),browser.spec({ domain })) instead ofcdp.send(...), and the result'snoticereplaces therestartedandnewTabsfields. See Persistent browser.#2666
57c7813Thanks @ben-reitz! -createBrowserTools,createBrowserRuntimeandBrowserConnectorare deprecated; usebrowserTool. See Persistent browser. The Quick Action helpers (createQuickActionTools,runQuickAction,browserMarkdownand the rest) are deprecated too and will not change.#2743
f049ee1Thanks @mattzcarey! -agents/models/ai-sdkandagents/models/pi-aiare no longer experimental. See Models.#2718
916c0e3Thanks @ben-reitz! -createAIfromagents/models/pi-ainow sends pi-ai'sbetasas theanthropic-betaheader for catalog Claude models on/run, as it already did on the provider-native path. See #2714.#2717
4d7734aThanks @ben-reitz! -PiWhenBusyaccepts"reject", whichPiHarness.submit()already passed through to pi-durable. See Pi harness.#2680
2a25d88Thanks @mattzcarey! -createMcpHandlernow reads the verified token that@cloudflare/workers-oauth-provider1.x sets asctx.auth, so tool callbacks receivecontext.http.authInfo(token, client ID, scopes, expiry and resource) behindOAuthProviderandOAuthResourceServer.getMcpAuthContext().propsis unchanged.v0.30.1Compare Source
Patch Changes
9c79ba1Thanks @ben-reitz! - FixPiHarnesswithonWakenot resuming a sleeping Pi task, such as a compaction retry, while another task is running (#2683). See How recovery works.v0.30.0Compare Source
This release adds support for Pi 1.4 and makes
PiHarnessrecover more reliably from evictions, crashes and storage errors.Highlights
agents/harness/pinow runs on Pi 1.4.PiHarnesspasses Pi'sonWakethrough your harness factory, so a Durable Object sleeps until Pi's next task is due instead of staying in memory.PiHarnesswakes from Pi'swake(), so a task stopped by Pi's restart limit no longer keeps the object awake.parkedinpending(), andretry()runs them again.Upgrading
Update Pi to
~1.4.0(@earendil-works/pi-durable,pi-ai,pi-agent-core) and install@earendil-works/chordalongside them. Pi 1.4 migrates session storage to a schema Pi 1.3 cannot open, so a deployment cannot roll back past this release.Check pi-durable's 1.4.0 changelog for its breaking changes, such as the removal of
TaskRuntime.sleep(), the newsleepingtask status, and the restart limit that parks a crash-looping task after 5 restarts.Pass
onWaketoHarness.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.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
Harnesssubscribed 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.Keep the harness factory safe to run more than once. It now runs again when Pi reopens after a storage error.
Handle the new
parkedstatus if you switch onPiPendingOperation.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
cfe9d0fThanks @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
4b535dcThanks @ben-reitz! -PiHarnesshands its factory anonWaketo pass toHarness.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
3954859Thanks @ben-reitz! -PiHarnessshows operations stopped by Pi's restart limit asparkedinpending(), andretry()runs them again. See Pi harness.Patch Changes
#2644
f404547Thanks @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
fc4cd24Thanks @ben-reitz! - Stop Lifecycle startup keeping an evicted Durable Object in memory when a capability's startup leaves a promise pending, asPiHarnessdoes when it opens Pi. See Pi harness.#2643
e117121Thanks @ben-reitz! -agents/models/pi-aireports 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
cfe9d0fThanks @ben-reitz! -agents/harness/pinow uses chord's own context helpers, so install@earendil-works/chordalongside pi-durable and pi-ai. See Pi harness.#2648
000fcafThanks @ben-reitz! -PiHarnessopens pi again after a storage error closes it, instead of failing every call until the object restarts. See How recovery works.#2618
3e91dedThanks @ben-reitz! -PiHarnesswakes from Pi'swake()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
91a8f61Thanks @ben-reitz! -PiHarnesskeeps 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.Configuration
📅 Schedule: (in timezone Asia/Tokyo)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.