Skip to content

feat: add agent-bundle compiler and developer workbench - #2

Merged
ScriptedAlchemy merged 736 commits into
mainfrom
codex/agent-bundle-implementation
Aug 27, 2026
Merged

feat: add agent-bundle compiler and developer workbench#2
ScriptedAlchemy merged 736 commits into
mainfrom
codex/agent-bundle-implementation

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

Add the agent-bundle compiler, CLI, and developer workbench. RSC Runtime stays on draft #1. Native Claude/Codex smokes were not run.

ScriptedAlchemy and others added 21 commits August 25, 2026 23:41
Coalesce concurrent prepare() calls, reuse ignore rules across skills, and
lazy-load the API graph so help and version stay cheap.
The Claude and Codex adapters ended plan() with a 69-line block that was
identical apart from the target name, selection predicate, and the plugin
and marketplace paths, plus a byte-identical artifactLayout. Editing one
adapter's sourceInputs spread without the other silently desynchronized
manifest provenance between targets. Both now call one
standardPluginArtifactPlan and share standardArtifactLayout; entry order,
spread order, and freeze semantics are unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EMWczsXAkj7fC5ssSxGK43
The dev-server boot and teardown block was pasted ~25 times across nine
e2e files, and its cleanup semantics had already forked: four sites
preserved the test failure over a cleanup failure, the rest leaked or
swallowed one of them. withWorkbenchServer now owns the sequence -
teardown tasks (gate releases, env restoration), then server close, then
project removal, each settled separately so a vanishing project root can
never fail the server's own shutdown. 24 of 25 sites converted; the two
that close mid-test as their subject matter keep their own flow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EMWczsXAkj7fC5ssSxGK43
readToEnd existed three times, deferred four times (two shapes), and the
node child-process collector four times; three of the four within-style
copies converged earlier. The shared deferred is Promise.withResolvers
behind one frozen shape, and runNodeScript owns the spawn/collect wiring,
so the published-hook assertions now also pin stdout to empty on error
paths instead of ignoring the stream.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EMWczsXAkj7fC5ssSxGK43
…gest

Five dev-lock tests shared one shape (write a corrupt lock, expect
DEV_LOCK_INVALID, remove the root) and differed only in the payload; they
now drive one table while the recovery-gate, symlink, and concurrency
cases keep their own bodies. Six files hand-rolled createHash sha256 hex
digests; they now call sha256Hex so hash assertions exercise the digest
implementation production ships.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EMWczsXAkj7fC5ssSxGK43
The Logs page can abort and re-issue its replay fetch while settling, and
waitForResponse could hand back the aborted request, whose body the
browser has already discarded - the intermittent 'No data found for
resource' failure in the packed dogfood run. Collect every replay
response from before the navigation and read the newest one whose body is
still available.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EMWczsXAkj7fC5ssSxGK43
@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Post-merge CI root cause: the relay-shell test added here kept hostOrigin hard-coded to 127.0.0.1:43123 while asking the proxy for port: 0. On Node 22.19 CI, the kernel legally assigned 43123, so the production different-origin guard correctly rejected the fixture. Recent merges including #341 did not touch this path; #341's Rstest socket-root relocation is unrelated. #349 reserves an actual host listener, eliminating the collision while preserving the guard.

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.

2 participants