Repository navigation
Release 0.22.2 - #441
Merged
Merged
Release 0.22.2#441
Conversation
…since 0.22.1 The pending fragments describe each change against main as it stood when it merged. Three of them now describe a main that no release had: - anima-research#344's fragment said a failed write to a stdio child's stdin reaches the transport's 'error' listener or is dropped, and anima-research#384, which merged before this release, changed that: an error on the child's stdin or stdout now ends the child. anima-research#384's fragment said such an error "used to reach only the transport's 'error' listener", which was main between the two, not 0.22.1, where it was thrown as an uncaught exception. One bullet now says what 0.22.1 did and what 0.22.2 does, and anima-research#344's bullet goes. - The anima-research#331 entry said stop() failed when its teardown timeout ran out. stop() has no default teardown timeout, so with the default it never returned (the maintainer's review of anima-research#344, R1-2). - The spawn entry quoted the refusal as Node words it. The refusal carries the runtime's own spawn error, which reads differently elsewhere (the same review, R1-4). anima-research#384's description promised both corrections in the release commit. - The TypeScript 7 entry counted the .js.map files that change as measured when anima-research#274 merged. Built from this release's source with 7.0.2 and with 5.9.3, 115 change and 111 of them move only columns, so the entry now says "all but four", which held then and holds now. The rest of the entry holds as written: the JavaScript is byte-identical, the same seven declaration files differ only in their quotes, and 56 .d.ts.map files change, 49 and 7 as it says. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… back An operator section at the top of the release, as 0.22.1's has, for two things the entries don't put where someone deciding to upgrade or to go back would see them: - Going back to 0.22.1 refuses to create the framework when an agent's persisted runtime setting can't be applied, such as a budget no longer above the recipe's maxTokens, or a budget below the recipe's on a strategy that can't prepare a smaller window (the default passthrough). 0.22.2 boots such a store, keeps the setting set but unapplied and logs it. Resetting the setting under 0.22.2 first lets 0.22.1 boot. A probe that installed the packed candidate and the published 0.22.1 side by side, both on context-manager 0.14.1, showed both: 0.22.1's create failed on the kept setting, and booted once it had been reset. - On a workspace mount over 5000 files, the first passes after the upgrade catch up on what 0.22.1's walks never reached, and with wakeOnChange admitting a kind, each pass's event of that kind is one message to the agent listing its paths (anima-research#272's fifth sub-bullet). The rest says what 0.22.1 does again on going back (anima-research#266's 1 MiB refusal, anima-research#272's walks and their place), and what the probe didn't cover. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
[Low impact] This release-only PR appears safe to merge. SummaryPrepares the
Reviews (1) · Last reviewed commit: "0.22.2" · Reviewed by Greptile |
nissa-seru
pushed a commit
to nissa-seru/agent-framework
that referenced
this pull request
Oct 17, 2026
The 0.22.2 release (anima-research#441) is cut from main without this change, and it folds typescript-7.changed.md as main has it, which is true of 0.22.2: its `files` still packs dist, so dist/tsconfig.tsbuildinfo and the test build ship, and its source-map counts take in dist/test's. Once that release merges back, main has no fragment for this change to correct, so editing it would only meet a modify/delete conflict and put the TypeScript 7 build's notes into the next release's. This change no longer touches it, and changelog.d/package-files.fixed.md is its whole note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nissa-seru
pushed a commit
to nissa-seru/agent-framework
that referenced
this pull request
Oct 17, 2026
…ma-research#352's body-aware removals and surgery maintenance waits carried into this branch's marks Main merged 21 pull requests since cd036e0, 0.22.2's release (anima-research#441) among them. The merge conflicted in eight files, each resolved from both sides' intent: - changelog.d/stop-waits-for-operator-operations.fixed.md and switch-branch.added.md: 0.22.2 folded them into CHANGELOG.md, so their deletion stands (Ada-1017, room-203 #127725). What this branch changed in them is described against 0.22.2's published entries. A switch's marks, and the delivery a branch switch or an undo started, are in surgery-marks-one-shot.changed.md and surgery-marks-opt-in.breaking.md already, and the awareness barrier's stop-time behaviour went with the barrier (one-shot: delivery no longer holds MCPL traffic). The one change no fragment carried, a delivery pass that claims nothing more once stop() has begun, is the new surgery-marks-delivery-at-stop.changed.md. - src/api/server.ts: main (anima-research#352) reads the store's branch whenever it reports one, through a getter, and its branch.switch announces its own move, since switchBranch can now move the store after the call returns. This branch removed startDiscordAwarenessDelivery() and said a switch adds or removes no marks. The switch's comment says both, and undo and redo neither set the branch by hand nor start a delivery. - src/framework.ts: - imports: McplRequestError beside main's stderrTailOf, withStderr and McplConnectionCloseInfo. - main moved the surgery read helpers (SurgeryReadableCm, locateMessageIndex, locateMessageIndices, bodyGroupRun) to stored-removal.ts. This branch's copies were the base's unchanged, so they go, and its marks helpers (marksScope, checkedMarks, describeMarksChoice) stay. - host/command hide: main's refusal while a surgery holds the store, and its body-aware runs (every copy of the message, each body whole, removeStoredMessages per run, the hidden count and capped ids), with this branch's marks choice, now scheduled for every message the runs remove, and its operator-log fields (marks, markers). - rollbackToMessage and suppressMessages: main's wait for running maintenance before the switch or fork, then this branch's prepareMarkerBatch. - switchBranch's doc: with main's maintenance wait, the store can move after the call returns, and the doc (main's too) still said it had moved by then. It now says when it moves. Auto-merged, and read: resumePreparedDiscordSuppressions removes each interval through removeStoredMessages, as main's does, inside this branch's completeSuppression path; switchBranch has main's maintenance wait and this branch's no-marks rule. - src/mcpl/server-connection.ts: the event doc has main's (anima-research#399) stderrTail payloads and this branch's reconnect sentence. - src/recovery/offline-branch.ts: both sides' imports. Auto-merged, and read: main's removeStoredInterval loop runs inside this branch's try, after branchAt; main's continuesBody boundary checks and range ends sit beside this branch's carriers. - test/discord-awareness-outbox.test.ts: main's two tests of a resumed suppression (a one-shard body removed as a range; an interval that committed before the crash skipped, and one only partly present refused) are carried over to this branch's journal: storeHarness, a scope, and a start that retires a surgery's batch where main's activated it. Main's stub fields for a surgery's maintenance wait and provider-gate wake (maintenancePass, overBudgetDrains, providerGates) go into hostCommandFramework, which replaced the stub main added them to, and the wait's two fields into this branch's stub for a switch onto a pending suppression's target, since switchBranch now waits too. - test/offline-recovery-branch.test.ts: both sides' new tests. Main's four that read result.refs to name what a recovery removed, the three in the conflict and "a suppressed range takes every copy of both its messages" beside it, choose marks: { scope: 'all' }, as this branch did for the base's own tests, since refs now lists only the refs a recovery marks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 is the 0.22.2 release commit, cut with
npm version patchfrommainat7125cb86, which is 0.22.1 plus the 24 changes merged since, through #377. Among its fixes are the ways a stdio MCPL server could end its host or leavestop()waiting for ever: a child ended by a signal the transport didn't send, such as an OOM kill (#331), a command that can't be spawned (#336), and an error on the child's stdin or stdout. Context maintenance now fails one agent at a time and holds still while an operator surgery orswitchBranchmoves the store, andstop()waits for an operator's operation that is already running.Anarchid's review of #372 asked for any further 0.22.x patch to go out before #372 merges, and this is that patch.
What this branch is
64894b17corrects four fragments before they're folded:mcpl-transport-closeandmcpl-transport-spawntake the corrections that Anarchid's review of fix(mcpl): no hang after a signal kill, no uncaught transport or spawn errors #344 asked for in R1-2 and R1-4, as fix(mcpl): SIGTERM a stdio child whose stdin or stdout fails #384's description said the release commit would.mcpl-transport-pipe-errornow starts from 0.22.1, where an error on the child's stdin, stdout or stderr was thrown as an uncaught exception, and fix(mcpl): no hang after a signal kill, no uncaught transport or spawn errors #344's third bullet, which describedmainbetween fix(mcpl): no hang after a signal kill, no uncaught transport or spawn errors #344 and fix(mcpl): SIGTERM a stdio child whose stdin or stdout fails #384, goes.typescript-7's counts of the source maps that change were measured again on this tree, and hold.63b6feb9adds an operator section to## Unreleased: what the first passes after upgrading do on a workspace mount over 5000 files, and the one kind of stored setting that stops 0.22.1 from starting, with its remedy.fe2898b9isnpm version patch's commit. It folds the 22 fragments into## 0.22.2 — 2026-10-17, with the operator section at its top, and sets the version.It's cut from
7125cb86, so changes merged after that commit aren't in it. #372 and #400 are among the open pull requests that carry breaking entries, and once one of them merges,npm versionrefuses another 0.22.x frommain. Merged back, this PR givesmainthe version and the folded changelog. It changes onlyCHANGELOG.md,package.json's version and the 22 fragments it deletes.Why a patch, and all of
mainadded, twochangedand seventeenfixed.npm version's check for a pending breaking entry (build(release): while a breaking entry is pending, a new version must open a line no release has reached #348) passed, so the release is a patch, which^0.22.1takes. connectome-host 0.10.2 declares^0.22.1, so an npm install of the host resolves to this release, while a checkout keeps the 0.22.1 its lockfiles name until they move.7125cb86is the tree that was tested together:mainat that commit.mainbranches of its dependencies and of connectome-host, context-manager's 0.15.0 among them, ran connectome-host's 1,826 tests and two boots against it, and loaded stores written by connectome-host 0.3.1 through 0.10.2.npm test's--test-force-exit, Node 24 ran 2,424 of them, since the flag ends four files before their last tests (npm test's --test-force-exit can end a test file before its tests report, so a short run still passes #294).release-0.21, requires context-manager^0.15.0, while this release still requires^0.14.1, so a host moving from it to 0.22.2 takes context-manager back to 0.14. In a probe, a store the published 0.21.3 wrote on context-manager 0.15.0 opened under this release's code on 0.14.1: an autobiographical resident's messages, L1 summaries and summary-id counter came through, and turns and maintenance ran. It opened again back on 0.21.3. Not tried: merged levels, a store whose load repair 0.15 changed, kv-unified, or connectome-host.Going back
A probe installed the packed candidate on its own, with the published 0.22.1 beside it, both on context-manager 0.14.1, and walked stores from the candidate to 0.22.1 and back. Going back is safe for a store 0.22.2 wrote, with one exception, which the operator section names with its remedy: 0.22.1 refuses to create the framework when an agent's persisted runtime setting is one that 0.22.2 keeps set but unapplied. Resetting that setting under 0.22.2 first let 0.22.1 start. 0.22.1 keeps #290's new
contextBudgetReachedTokenskey in the persisted settings, and 0.22.2 trusts it only when it equals the stored budget. The operator section also says what the probe didn't cover.Checks
release-hold, andnpm versionchecked again before it bumped anything (build(release): an open release-hold issue stops the release #329).scripts/pack-installs-alone.mjs, build(release): install the packed release on its own before publishing, and on pull requests #349). The publish workflow runs the same check before it publishes.— Ada-1017 (Claude Opus 5.5). Hilda-2681 read the notes against the code at
v0.22.1and at this tree, and each entry's "before" wherever an earlier merge in this release could have touched the same code. Gladys-2413 planned going back, ran its probe and drafted the operator section.