Repository navigation
Upgrade Atomic to the 0.9.41-alpha.1 pre-release - #720
Merged
Merged
Conversation
The harness catalog now pins @bastani/atomic 0.9.41-alpha.1, Atomic's next pre-release, and the lockfile resolves @bastani/atomic, @bastani/atomic-natives with its platform packages, and @bastani/pi-ai at 0.9.41-alpha.1, with no older @Bastani package left. No other dependency moves with them. Atomic's one breaking change makes steer() and followUp() start a turn when the session is idle and already has messages. A Planner session between Chopin's turns is exactly that, so a message an extension or workflow queues there now starts a turn of its own. The adapter already stops any turn it did not start before it reaches the model, and the Planner's next turn still runs; the test of that guard now covers a queued follow-up as well as a self-started notice. Atomic now records a workflow run's ending in its journal after reporting the run ended, and offers session.workflows.waitForSettled(runId) to wait for that. Chopin lets a Planner session go as soon as its last run ends, so before disposing the session the adapter now waits, for at most 10 seconds, until each run that finished, failed or was stopped has its ending journaled. Live, paused and blocked runs are not waited on, and a run whose ending could not be recorded is logged by its ID before the session still goes. The structured-output changes (failing paths in rejections, a total timeoutMs) do not reach Chopin, which uses its own result tool rather than Atomic's structured_output. The self-hosting guide names the new version and the hosted-agent guide describes both changes. Assistant-model: Claude Opus 5.5 (fast) Assistant-workflow: inline (fast subagents) Assistant-verification: bun test (6713 pass, 22 skip, 0 fail), bun run types, bun run ci Assistant-verification: red-first unit test for settling ended runs; real Atomic run confirms its ending is journaled before the session is disposed Assistant-verification: real Atomic sessions stop self-started and queued turns before the model, checked against a disabled guard Assistant-verification: docker build of the server image; container started healthy with HARNESS=atomic and imports Atomic 0.9.41-alpha.1 Assistant-verification: targeted bun run e2e (34 passed) User-preference: Adopt Atomic's fixes from the 0.9.41-alpha.1 pre-release now Co-authored-by: Alex Lavaee <alexlavaee@microsoft.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.
Moves the Atomic harness to the
0.9.41-alpha.1pre-release (npmnext) and adapts it to what that release changes.Versions
catalog:harnesspins@bastani/atomic0.9.41-alpha.1. The lockfile resolves these at0.9.41-alpha.1, with no older@bastanipackage left:@bastani/atomic@bastani/atomic-nativesand all eight of its platform packages@bastani/pi-aiNo other dependency moves with them.
What in the release reaches Chopin
steer()andfollowUp()now start a turn on an idle session that already has messages (breaking). A Planner session between Chopin's turns is exactly that kind of session. So a message an extension or workflow queues there now starts a turn of its own. The adapter already stops any turn it did not start before the turn reaches the model. I checked this against real Atomic sessions:steerandfollowUpcustom messages, and queued user messages were each stopped;The existing guard test now also covers a queued follow-up. Both cases fail when the guard is disabled.
session.workflows.waitForSettled(runId)(fix for a run leftrunningin the journal). Chopin lets a Planner session go as soon as its last run ends. That is the case Atomic fixed. Before disposing the session, the adapter now waits, for at most 10 seconds, until each run that finished, failed or was stopped has its ending journaled.Structured output now names failing paths, and decisions have a total
timeoutMs. This does not reach Chopin. Chopin uses its own result tool, not Atomic'sstructured_output.The OAuth refresh, model routing and default-Copilot-model changes do not reach Chopin either. Its Atomic sessions keep credentials in memory and always name their model.
Docs
docs/self-hosting.mdnames the new version.docs/hosted-agent.mddescribes both adapter behaviours.Verification
bun test: 6713 pass, 22 skip, 0 fail.bun run typesandbun run cipass.HARNESS=atomicstarted healthy and imports Atomic0.9.41-alpha.1. It holds only0.9.41-alpha.1@bastanipackages.bun run e2e(run cards, Planner attachment, harness, smoke): 34 passed, no retries.The connector (
apps/connector) does not change.