P1d: ship the claude-code-bridge runtime (cloud-mirror) to brew devices#81
Merged
Conversation
…loud-mirror The customer harness install (homebrew-tap builds from source -> npm pack) shipped only dist/, but claude-code-bridge is a plain runtime asset dir (no build step) -- so cloud-mirror.mjs, serve.mjs, mirror.mjs + the wiki-mirror LaunchAgent template never reached a brew-installed openclaw. Add extensions/claude-code-bridge/ to the published files so npm pack includes the bridge. Verified via npm pack --dry-run: cloud-mirror.mjs (14.4kB), serve.mjs (27.8kB), mirror.mjs (10.3kB), ai.openclaw.wiki-mirror.plist.template now ship. Also corrects the plist template's stale __INGEST_KEY__ comment (was 'super-admin API key' -> the device's tenant-scoped wiki:mirror key; writes ONLY this instance's shard) and notes the enroll bootstrap automates the install. Pairs with mono openclaw#2282 (enroll bootstrap enables the LaunchAgent). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Agent-Aurelius
force-pushed
the
feat/ship-cloud-mirror-bridge
branch
from
June 22, 2026 17:44
9f7ed20 to
eaf0cc9
Compare
Agent-Aurelius
marked this pull request as ready for review
June 22, 2026 18:12
Agent-Aurelius
approved these changes
Jun 22, 2026
Agent-Aurelius
left a comment
There was a problem hiding this comment.
Anvil auto-approval — verdict READY, non-code-owned. Approved under the dedicated Anvil reviewer identity.
Agent-Aurelius
added a commit
that referenced
this pull request
Jun 23, 2026
…82) These power the Aurelius web console under ultracode but were running ONLY as uncommitted floating patches on the live detached gateway worktree (backed up at origin/backup/gateway-patches-2026-06-22), NOT on main: - C1: salvage clean assistant text from leaked raw Claude-CLI stream-json (salvageClaudeStreamJsonText in agent-event-assistant-text.ts, applied in writeAssistantContentChunk). - C3: bridge a native AskUserQuestion into the console's openclaw_ask_choice card (buildAskChoiceFromArgs + request-scope blob buffering in the /v1/chat/completions handler) + extractAskUserQuestionFromClaudeStreamJson. Merged onto current main (#81); #79's read-only-tools enforcement is preserved (additive, different code paths). agent-event-assistant-text.ts + cli-runner/ execute.ts were untouched by main so taken whole; openai-http.ts merged (import superset + salvage in writeAssistantContentChunk + the ask_choice bridge). Companion to the gateway durability reconcile: once merged, both live gateways rebuild from this main commit and stop running uncommitted detached patches. Co-authored-by: Aurelius <[email protected]>
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.
P1d · ship the claude-code-bridge runtime to brew devices
The enclave per-tenant memory architecture needs the cloud-mirror daemon on the customer's Mac: it federates the device's local vault into
instances/{instanceId}/wikiEntries(write lane) andserve.mjsserves the tenant's own canon (recall read lane). The daemon already exists here, is instanceId-aware, and has a LaunchAgent template + README — but it never shipped to a brew install.Root cause
The homebrew formula builds from source then
npm packs, so only thefilesallowlist ships (dist/+ a few source dirs).extensions/claude-code-bridge/is a plain.mjsruntime asset dir (no package.json, no build step → never emitted todist/), so it was in neither. A brew device had the enrollment but no daemon.Fix (one line)
Add
extensions/claude-code-bridge/to the publishedfiles.Proof —
npm pack --dry-run --ignore-scriptsnow includesPairs with mono openclaw#2282
The enroll bootstrap resolves the bridge under the openclaw package root, probing both
extensions/(this fix) anddist/extensions/layouts — so the daemon lands exactly where the device looks.Deploy (operator)
After merge: tag
v2026.6.8-bench.3→ bumphomebrew-tap/Formula/openclaw.rb(url/sha/version) → customersbrew upgrade benchagi/tap/openclaw. Tracked in the go-live runbook.🤖 Generated with Claude Code