feat(connectd): native-binary connectors + companion sidecar lifecycle #2
Reference in New Issue
Block a user
Delete Branch "feat/bin-native-connector"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Native-binary connectors + companion sidecar lifecycle
Enables connectors backed by a bundled native binary (not just Node servers), with a long-running companion sidecar — needed for WhatsApp (Go MCP + a bridge that holds the paired session).
@bin/<file>command resolution (spawn a bundled native MCP binary) alongside@node/@bundled.companion {command,args,env,healthUrl,cwd}: on connect, spawn-or-reuse the sidecar (health-probe, 401=up), then spawn the MCP; killed on disconnect + SIGINT/SIGTERM.cwd(created if missing) gives the WhatsApp bridge a writable session dir.Additive (no effect on existing connectors). Typecheck clean. Part of WhatsApp connector (ship-the-moat #11).
Make connectors work on a clean Mac with no Node/npm installed, and lay the foundation for one-click Google sign-in. Clean-install bundling: - bundle scripts: `npm run bundle` -> self-contained dist/connectd.cjs (CJS, no node_modules); `bundle:servers` -> pre-bundled MCP servers (fs-server.mjs for "Your files", runs without npx); `bundle:all`. - runtime resolution in the bridge: a connector config can use command "@node" (the bundled runtime, process.execPath) and arg "@bundled/<server>" (a server shipped alongside the bridge), resolved at spawn time via NEURON_CONNECTD_BUNDLE_DIR. So remote connectors + "Your files" work offline, zero deps. - graceful ENOENT -> needs_setup ("coming soon") instead of a cryptic spawn crash for not-yet-bundled npx connectors on a clean machine. Google OAuth foundation (google-oauth.ts): - desktop-style authorization-code + PKCE flow, refresh, Keychain storage, gated on GOOGLE_OAUTH_CLIENT_ID (honest needs_setup until configured). - new auth mode "google" for stdio connectors + /google/oauth/start and /google/callback endpoints. NOTE: pending the Neuron Google OAuth client + Google verification; not certified end-to-end yet. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>Adds optional ServerConfig.companion {command,args,env,healthUrl}. On stdio connect, ensureCompanion spawns the sidecar (e.g. the WhatsApp bridge) if healthUrl isn't already serving, polls health (15s), then spawns the MCP server that talks to it. Killed on closeServer + SIGINT/SIGTERM (disposeCompanions) so it never orphans. Reuses an already-running bridge (idempotent). Typecheck clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.