Repository navigation
Connect ACP clients to a live REPL Sidekick #989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+4,397
−213
Merged
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
c0ec455
Share root-owned Sidekick dispatch and preserve whole exchange outcomes
taras 66b3281
Keep completed Sidekick snapshots bound to their exchange
taras 03b18f2
Declare the CLI Sidekick attachment SDK dependency
taras fb310a2
Attach ACP clients to the existing live Sidekick
taras ecb3b83
Join Sidekick endpoint directory acquisition during teardown
taras d45a22b
Compose Sidekick ACP attachment with reviewed TestAgent delivery
taras bbbe6e6
Correct legacy-origin expectation in Sidekick recovery test
taras 302609a
Initialize Sidekick for fresh ACP attachments
taras c672a55
Join ACP bootstrap work on terminal shutdown
taras 40be3e3
Require the current saved-message format for Sidekick records
taras 61221d3
Raise authority failures past the Sidekick exchange and declare its SDK
taras 8cf8756
Resolve the released ACPX client the way its declarer does
taras e517f58
Keep the attachment listener attached until its listener closes
taras e2e5742
Hold a peer that arrives while the attachment listener tears down
taras File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Performance (measured, conditional): every
xmdcommand now loads the ACP SDK at startup.This static import chain is
cli.ts→sidekick-acp/command.ts→sidekick-acp/bridge.ts→@agentclientprotocol/sdk, soxmd run,xmd --help, the credential helper path and so on pay for the SDK module graph even though onlyxmd sidekick acpuses it. Read-only timing on this head (Node v26.5.1, arm64 macOS, prepared worktree, three runs):So the marginal cost is on the order of 40 ms per process under Node source; I did not measure base, the compiled binary or Bun, so treat this as a bound to confirm rather than a regression number.
Recommendation: measure
xmd --helpbase vs head under Node and the compiled binary (for examplehyperfine --warmup 3 'node packages/cli/src/node.ts --help'on each, or the compiledxmd --help). If the delta is confirmed, load the bridge lazily behind thesidekick acpbranch ofrunSidekickCommandwith a literal dynamicimport("./bridge.ts")adapted throughuntil()— the CLI already does this for the workflow host (packages/cli/src/workflow.tsline 1045), sodeno compileand knip handle the pattern.protocol.ts/client.tscan stay static; they only pull zod. This changes no behaviour and keeps the manifest-boundary regression inrepl-boundaries.test.tsvalid.