Skip to content

chore: bump agents from 0.17.4 to 0.33.0 in /client - #42

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/client/agents-0.33.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/client/agents-0.33.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 9, 2026

Copy link
Copy Markdown

Bumps agents from 0.17.4 to 0.33.0.

Release notes

Sourced from agents's releases.

agents@0.33.0

This release adds support for Pi 1.5, which makes PiHarness much faster and lighter on memory, and lets you continue a run that ended without an answer.

Highlights

  • Pi 1.5 support: agents/harness/pi, agents/models/pi-ai and the Pi tools now run on Pi 1.5.
  • Far fewer storage writes while streaming: Pi stores streamed answers and tool output in batches, at the latest every second, instead of on every update. Over SQLite this cuts storage transactions about 27x for long answers and 5.7x for turns with parallel tools, and CPU by about a quarter. A crash can now lose up to about a second of streamed output.
  • Faster with many sessions: Pi's scheduler no longer rechecks every conversation on each commit, so on SQLite one Pi harness with 2,048 sessions went from 88 to 459 agent runs per second. Commits that arrive together now share one storage call, and a normal run makes no storage reads.
  • Large answers no longer blow up memory: streaming a 500 KB tool call used to take about 20 s of CPU and a 100 MB heap, and a 140 KB answer followed by a 140 KB tool call held over 100 MB. Pi now appends new text instead of copying it on every update.
  • Conversation view: session.watch() replaces session.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.
  • Continue a run: 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.
  • Turn limit: defaults.maxTurns caps the tool rounds a run can take in new sessions. A run that reaches it ends without an answer, with reason turn_limit.
  • Crash-looping tasks end instead of parking: a tool call cut off by Pi's restart limit ends with an error result the model sees, and a model request ends its run without an answer, with reason restart_limit. See How recovery works.
  • Other changes: submit() takes whenIdle: "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, browserTool gives scripts its run as an object, with screenshots as image blocks for image(). browserTool stops when the harness aborts its call, and BrowserSession lets code outside browserTool run the same browser object. 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-ai or the Pi tools.

  1. Update Pi to ~1.5.0 (@earendil-works/pi-durable, pi-ai, chord) and install @earendil-works/pi-schema alongside 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.

  2. Check pi-durable's 1.5.0 changelog for its breaking changes, such as the removal of watchEvents(), tagged watch calls and ends, and ConversationView.entries becoming a window over the transcript.

  3. Replace session.events() with session.watch() and render the view each time it changes. To show a transcript longer than the window, merge each value into Pi's ConversationTranscript, which pages older entries with session.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 idle pi.live now keeps runFailure after a failed run, so check run === undefined instead of comparing it with {}.

    - const stream = await session.events();
    - initialize(stream.snapshot);
    - stream.start(async (events) => events.forEach(apply));
    + const watch = await session.watch();
    + render(watch.value);
    + watch.start(async (call) => {
    +   if (call.kind === "value") render(call.value);
    + });
  4. Build your Pi tool schemas with @earendil-works/pi-schema, as pi-ai no longer exports TypeBox's Type. Unlike Type.Object, obj() rejects properties it doesn't list; pass { open: true } to allow them. To keep TypeBox instead, import Type from typebox.

    - import { Type } from "@earendil-works/pi-ai";
    - const WordCount = Type.Object({ text: Type.String() });
    + import { obj, str } from "@earendil-works/pi-schema";
    + const WordCount = obj({ text: str() });
  5. Remove calls to retry() and handling of the parked status. To run work again after a run ended without an answer, call session.continue() or submit it again.

  6. Update your onReport callback if you pass one to Harness.open. It now takes one report tagged by kind, with the error on it. session_failed is now storage_failed, and a task the restart limit ends is reported as task_interrupted instead of task_parked.

Minor Changes

... (truncated)

Changelog

Sourced from agents's changelog.

0.33.0

This release adds support for Pi 1.5, which makes PiHarness much faster and lighter on memory, and lets you continue a run that ended without an answer.

Highlights

  • Pi 1.5 support: agents/harness/pi, agents/models/pi-ai and the Pi tools now run on Pi 1.5.
  • Far fewer storage writes while streaming: Pi stores streamed answers and tool output in batches, at the latest every second, instead of on every update. Over SQLite this cuts storage transactions about 27x for long answers and 5.7x for turns with parallel tools, and CPU by about a quarter. A crash can now lose up to about a second of streamed output.
  • Faster with many sessions: Pi's scheduler no longer rechecks every conversation on each commit, so on SQLite one Pi harness with 2,048 sessions went from 88 to 459 agent runs per second. Commits that arrive together now share one storage call, and a normal run makes no storage reads.
  • Large answers no longer blow up memory: streaming a 500 KB tool call used to take about 20 s of CPU and a 100 MB heap, and a 140 KB answer followed by a 140 KB tool call held over 100 MB. Pi now appends new text instead of copying it on every update.
  • Conversation view: session.watch() replaces session.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.
  • Continue a run: 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.
  • Turn limit: defaults.maxTurns caps the tool rounds a run can take in new sessions. A run that reaches it ends without an answer, with reason turn_limit.
  • Crash-looping tasks end instead of parking: a tool call cut off by Pi's restart limit ends with an error result the model sees, and a model request ends its run without an answer, with reason restart_limit. See How recovery works.
  • Other changes: submit() takes whenIdle: "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, browserTool gives scripts its run as an object, with screenshots as image blocks for image(). browserTool stops when the harness aborts its call, and BrowserSession lets code outside browserTool run the same browser object. 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-ai or the Pi tools.

  1. Update Pi to ~1.5.0 (@earendil-works/pi-durable, pi-ai, chord) and install @earendil-works/pi-schema alongside 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.

  2. Check pi-durable's 1.5.0 changelog for its breaking changes, such as the removal of watchEvents(), tagged watch calls and ends, and ConversationView.entries becoming a window over the transcript.

  3. Replace session.events() with session.watch() and render the view each time it changes. To show a transcript longer than the window, merge each value into Pi's ConversationTranscript, which pages older entries with session.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 idle pi.live now keeps runFailure after a failed run, so check run === undefined instead of comparing it with {}.

    - const stream = await session.events();
    - initialize(stream.snapshot);
    - stream.start(async (events) => events.forEach(apply));
    + const watch = await session.watch();
    + render(watch.value);
    + watch.start(async (call) => {
    +   if (call.kind === "value") render(call.value);
    + });
  4. Build your Pi tool schemas with @earendil-works/pi-schema, as pi-ai no longer exports TypeBox's Type. Unlike Type.Object, obj() rejects properties it doesn't list; pass { open: true } to allow them. To keep TypeBox instead, import Type from typebox.

    - import { Type } from "@earendil-works/pi-ai";
    - const WordCount = Type.Object({ text: Type.String() });
    + import { obj, str } from "@earendil-works/pi-schema";
    + const WordCount = obj({ text: str() });
  5. Remove calls to retry() and handling of the parked status. To run work again after a run ended without an answer, call session.continue() or submit it again.

  6. Update your onReport callback if you pass one to Harness.open. It now takes one report tagged by kind, with the error on it. session_failed is now storage_failed, and a task the restart limit ends is reported as task_interrupted instead of task_parked.

Minor Changes

  • #2796 edf1b52 Thanks @​ben-reitz! - Support Pi 1.5 (~1.5.0; Pi 1.4 is no longer supported): session.watch() replaces session.events() and returns Pi's conversation view, session.entries() pages the transcript, retry() and the parked pending status are removed as Pi now ends crash-looping tasks, submit() takes whenIdle: "reject", and the Pi tools build their schemas with @earendil-works/pi-schema, a new optional peer, as pi-ai no longer exports TypeBox's Type. See pi-durable 1.5.0's changelog.

... (truncated)

Commits
  • 5684e27 Version Packages (#2806)
  • 3e21ee4 Give BrowserSession a contract for code outside browserTool (#2795)
  • 748e693 feat(browser): give pi code mode scripts the browser run as an object (#2801)
  • 62ccd87 fix(agents): parse streamed chat-completions tool arguments with pi-ai (#2798)
  • 77138fa feat(agents): continue a Pi session and cap its tool rounds (#2797)
  • edf1b52 feat(agents)!: support Pi 1.5 (#2796)
  • baf26bc fix(agents): make Stop cancel server-started turns streamed without a resume ...
  • be17492 Version Packages (#2746)
  • 3832749 Revert "fix(agents): upgrade opencode to 2.2.1 (#2767)" (#2775)
  • 5cfafcf fix(agents): upgrade opencode to 2.2.1 (#2767)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [agents](https://github.com/cloudflare/agents/tree/HEAD/packages/agents) from 0.17.4 to 0.33.0.
- [Release notes](https://github.com/cloudflare/agents/releases)
- [Changelog](https://github.com/cloudflare/agents/blob/main/packages/agents/CHANGELOG.md)
- [Commits](https://github.com/cloudflare/agents/commits/agents@0.33.0/packages/agents)

---
updated-dependencies:
- dependency-name: agents
  dependency-version: 0.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Nov 9, 2026

Copy link
Copy Markdown
Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

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.

0 participants