agent-relay 1.1.0 â 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/bridge/spawner.d.ts +53 -0
- package/dist/bridge/spawner.d.ts.map +1 -1
- package/dist/bridge/spawner.js +203 -19
- package/dist/bridge/spawner.js.map +1 -1
- package/dist/bridge/types.d.ts +12 -0
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/cli/index.js +401 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cloud/api/auth.d.ts +3 -2
- package/dist/cloud/api/auth.d.ts.map +1 -1
- package/dist/cloud/api/auth.js +10 -98
- package/dist/cloud/api/auth.js.map +1 -1
- package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
- package/dist/cloud/api/cli-pty-runner.d.ts.map +1 -0
- package/dist/cloud/api/cli-pty-runner.js +119 -0
- package/dist/cloud/api/cli-pty-runner.js.map +1 -0
- package/dist/cloud/api/generic-webhooks.d.ts +8 -0
- package/dist/cloud/api/generic-webhooks.d.ts.map +1 -0
- package/dist/cloud/api/generic-webhooks.js +129 -0
- package/dist/cloud/api/generic-webhooks.js.map +1 -0
- package/dist/cloud/api/git.d.ts +8 -0
- package/dist/cloud/api/git.d.ts.map +1 -0
- package/dist/cloud/api/git.js +131 -0
- package/dist/cloud/api/git.js.map +1 -0
- package/dist/cloud/api/github-app.d.ts +11 -0
- package/dist/cloud/api/github-app.d.ts.map +1 -0
- package/dist/cloud/api/github-app.js +189 -0
- package/dist/cloud/api/github-app.js.map +1 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
- package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -1
- package/dist/cloud/api/middleware/planLimits.js +39 -1
- package/dist/cloud/api/middleware/planLimits.js.map +1 -1
- package/dist/cloud/api/monitoring.d.ts +11 -0
- package/dist/cloud/api/monitoring.d.ts.map +1 -0
- package/dist/cloud/api/monitoring.js +578 -0
- package/dist/cloud/api/monitoring.js.map +1 -0
- package/dist/cloud/api/nango-auth.d.ts +9 -0
- package/dist/cloud/api/nango-auth.d.ts.map +1 -0
- package/dist/cloud/api/nango-auth.js +377 -0
- package/dist/cloud/api/nango-auth.js.map +1 -0
- package/dist/cloud/api/onboarding.d.ts +8 -1
- package/dist/cloud/api/onboarding.d.ts.map +1 -1
- package/dist/cloud/api/onboarding.js +300 -119
- package/dist/cloud/api/onboarding.js.map +1 -1
- package/dist/cloud/api/policy.d.ts +8 -0
- package/dist/cloud/api/policy.d.ts.map +1 -0
- package/dist/cloud/api/policy.js +229 -0
- package/dist/cloud/api/policy.js.map +1 -0
- package/dist/cloud/api/providers.js +114 -42
- package/dist/cloud/api/providers.js.map +1 -1
- package/dist/cloud/api/test-helpers.d.ts +10 -0
- package/dist/cloud/api/test-helpers.d.ts.map +1 -0
- package/dist/cloud/api/test-helpers.js +575 -0
- package/dist/cloud/api/test-helpers.js.map +1 -0
- package/dist/cloud/api/webhooks.d.ts +7 -0
- package/dist/cloud/api/webhooks.d.ts.map +1 -0
- package/dist/cloud/api/webhooks.js +496 -0
- package/dist/cloud/api/webhooks.js.map +1 -0
- package/dist/cloud/api/workspaces.js +225 -8
- package/dist/cloud/api/workspaces.js.map +1 -1
- package/dist/cloud/billing/plans.d.ts.map +1 -1
- package/dist/cloud/billing/plans.js +13 -0
- package/dist/cloud/billing/plans.js.map +1 -1
- package/dist/cloud/billing/types.d.ts +9 -3
- package/dist/cloud/billing/types.d.ts.map +1 -1
- package/dist/cloud/config.d.ts +9 -2
- package/dist/cloud/config.d.ts.map +1 -1
- package/dist/cloud/config.js +13 -4
- package/dist/cloud/config.js.map +1 -1
- package/dist/cloud/db/drizzle.d.ts +84 -1
- package/dist/cloud/db/drizzle.d.ts.map +1 -1
- package/dist/cloud/db/drizzle.js +470 -0
- package/dist/cloud/db/drizzle.js.map +1 -1
- package/dist/cloud/db/index.d.ts +9 -4
- package/dist/cloud/db/index.d.ts.map +1 -1
- package/dist/cloud/db/index.js +11 -3
- package/dist/cloud/db/index.js.map +1 -1
- package/dist/cloud/db/schema.d.ts +3283 -556
- package/dist/cloud/db/schema.d.ts.map +1 -1
- package/dist/cloud/db/schema.js +314 -1
- package/dist/cloud/db/schema.js.map +1 -1
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +2 -0
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/provisioner/index.d.ts +24 -0
- package/dist/cloud/provisioner/index.d.ts.map +1 -1
- package/dist/cloud/provisioner/index.js +319 -18
- package/dist/cloud/provisioner/index.js.map +1 -1
- package/dist/cloud/server.d.ts +1 -0
- package/dist/cloud/server.d.ts.map +1 -1
- package/dist/cloud/server.js +357 -13
- package/dist/cloud/server.js.map +1 -1
- package/dist/cloud/services/auto-scaler.d.ts +152 -0
- package/dist/cloud/services/auto-scaler.d.ts.map +1 -0
- package/dist/cloud/services/auto-scaler.js +439 -0
- package/dist/cloud/services/auto-scaler.js.map +1 -0
- package/dist/cloud/services/capacity-manager.d.ts +148 -0
- package/dist/cloud/services/capacity-manager.d.ts.map +1 -0
- package/dist/cloud/services/capacity-manager.js +449 -0
- package/dist/cloud/services/capacity-manager.js.map +1 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts.map +1 -0
- package/dist/cloud/services/ci-agent-spawner.js +373 -0
- package/dist/cloud/services/ci-agent-spawner.js.map +1 -0
- package/dist/cloud/services/index.d.ts +12 -0
- package/dist/cloud/services/index.d.ts.map +1 -0
- package/dist/cloud/services/index.js +15 -0
- package/dist/cloud/services/index.js.map +1 -0
- package/dist/cloud/services/mention-handler.d.ts +65 -0
- package/dist/cloud/services/mention-handler.d.ts.map +1 -0
- package/dist/cloud/services/mention-handler.js +405 -0
- package/dist/cloud/services/mention-handler.js.map +1 -0
- package/dist/cloud/services/nango.d.ts +126 -0
- package/dist/cloud/services/nango.d.ts.map +1 -0
- package/dist/cloud/services/nango.js +191 -0
- package/dist/cloud/services/nango.js.map +1 -0
- package/dist/cloud/services/persistence.d.ts +131 -0
- package/dist/cloud/services/persistence.d.ts.map +1 -0
- package/dist/cloud/services/persistence.js +200 -0
- package/dist/cloud/services/persistence.js.map +1 -0
- package/dist/cloud/services/planLimits.d.ts +15 -0
- package/dist/cloud/services/planLimits.d.ts.map +1 -1
- package/dist/cloud/services/planLimits.js +28 -0
- package/dist/cloud/services/planLimits.js.map +1 -1
- package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
- package/dist/cloud/services/scaling-orchestrator.d.ts.map +1 -0
- package/dist/cloud/services/scaling-orchestrator.js +502 -0
- package/dist/cloud/services/scaling-orchestrator.js.map +1 -0
- package/dist/cloud/services/scaling-policy.d.ts +121 -0
- package/dist/cloud/services/scaling-policy.d.ts.map +1 -0
- package/dist/cloud/services/scaling-policy.js +415 -0
- package/dist/cloud/services/scaling-policy.js.map +1 -0
- package/dist/cloud/vault/index.js +1 -1
- package/dist/cloud/vault/index.js.map +1 -1
- package/dist/cloud/webhooks/index.d.ts +24 -0
- package/dist/cloud/webhooks/index.d.ts.map +1 -0
- package/dist/cloud/webhooks/index.js +29 -0
- package/dist/cloud/webhooks/index.js.map +1 -0
- package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
- package/dist/cloud/webhooks/parsers/github.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/github.js +234 -0
- package/dist/cloud/webhooks/parsers/github.js.map +1 -0
- package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
- package/dist/cloud/webhooks/parsers/index.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/index.js +30 -0
- package/dist/cloud/webhooks/parsers/index.js.map +1 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/linear.js +258 -0
- package/dist/cloud/webhooks/parsers/linear.js.map +1 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/slack.js +214 -0
- package/dist/cloud/webhooks/parsers/slack.js.map +1 -0
- package/dist/cloud/webhooks/responders/github.d.ts +8 -0
- package/dist/cloud/webhooks/responders/github.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/github.js +73 -0
- package/dist/cloud/webhooks/responders/github.js.map +1 -0
- package/dist/cloud/webhooks/responders/index.d.ts +23 -0
- package/dist/cloud/webhooks/responders/index.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/index.js +30 -0
- package/dist/cloud/webhooks/responders/index.js.map +1 -0
- package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
- package/dist/cloud/webhooks/responders/linear.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/linear.js +149 -0
- package/dist/cloud/webhooks/responders/linear.js.map +1 -0
- package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
- package/dist/cloud/webhooks/responders/slack.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/slack.js +178 -0
- package/dist/cloud/webhooks/responders/slack.js.map +1 -0
- package/dist/cloud/webhooks/router.d.ts +25 -0
- package/dist/cloud/webhooks/router.d.ts.map +1 -0
- package/dist/cloud/webhooks/router.js +504 -0
- package/dist/cloud/webhooks/router.js.map +1 -0
- package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
- package/dist/cloud/webhooks/rules-engine.d.ts.map +1 -0
- package/dist/cloud/webhooks/rules-engine.js +287 -0
- package/dist/cloud/webhooks/rules-engine.js.map +1 -0
- package/dist/cloud/webhooks/types.d.ts +186 -0
- package/dist/cloud/webhooks/types.d.ts.map +1 -0
- package/dist/cloud/webhooks/types.js +8 -0
- package/dist/cloud/webhooks/types.js.map +1 -0
- package/dist/continuity/formatter.d.ts +51 -0
- package/dist/continuity/formatter.d.ts.map +1 -0
- package/dist/continuity/formatter.js +313 -0
- package/dist/continuity/formatter.js.map +1 -0
- package/dist/continuity/handoff-store.d.ts +67 -0
- package/dist/continuity/handoff-store.d.ts.map +1 -0
- package/dist/continuity/handoff-store.js +472 -0
- package/dist/continuity/handoff-store.js.map +1 -0
- package/dist/continuity/index.d.ts +45 -0
- package/dist/continuity/index.d.ts.map +1 -0
- package/dist/continuity/index.js +48 -0
- package/dist/continuity/index.js.map +1 -0
- package/dist/continuity/ledger-store.d.ts +110 -0
- package/dist/continuity/ledger-store.d.ts.map +1 -0
- package/dist/continuity/ledger-store.js +500 -0
- package/dist/continuity/ledger-store.js.map +1 -0
- package/dist/continuity/manager.d.ts +178 -0
- package/dist/continuity/manager.d.ts.map +1 -0
- package/dist/continuity/manager.js +562 -0
- package/dist/continuity/manager.js.map +1 -0
- package/dist/continuity/parser.d.ts +76 -0
- package/dist/continuity/parser.d.ts.map +1 -0
- package/dist/continuity/parser.js +579 -0
- package/dist/continuity/parser.js.map +1 -0
- package/dist/continuity/types.d.ts +180 -0
- package/dist/continuity/types.d.ts.map +1 -0
- package/dist/continuity/types.js +9 -0
- package/dist/continuity/types.js.map +1 -0
- package/dist/daemon/agent-manager.d.ts +27 -0
- package/dist/daemon/agent-manager.d.ts.map +1 -1
- package/dist/daemon/agent-manager.js +107 -6
- package/dist/daemon/agent-manager.js.map +1 -1
- package/dist/daemon/agent-registry.d.ts +32 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -1
- package/dist/daemon/agent-registry.js +42 -2
- package/dist/daemon/agent-registry.js.map +1 -1
- package/dist/daemon/api.d.ts +12 -0
- package/dist/daemon/api.d.ts.map +1 -1
- package/dist/daemon/api.js +131 -2
- package/dist/daemon/api.js.map +1 -1
- package/dist/daemon/cli-auth.d.ts +67 -0
- package/dist/daemon/cli-auth.d.ts.map +1 -0
- package/dist/daemon/cli-auth.js +537 -0
- package/dist/daemon/cli-auth.js.map +1 -0
- package/dist/daemon/cloud-sync.d.ts.map +1 -1
- package/dist/daemon/cloud-sync.js +9 -7
- package/dist/daemon/cloud-sync.js.map +1 -1
- package/dist/daemon/orchestrator.d.ts.map +1 -1
- package/dist/daemon/orchestrator.js +30 -0
- package/dist/daemon/orchestrator.js.map +1 -1
- package/dist/daemon/router.d.ts +5 -0
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +78 -26
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +5 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +9 -1
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/browser-testing.d.ts +88 -0
- package/dist/daemon/services/browser-testing.d.ts.map +1 -0
- package/dist/daemon/services/browser-testing.js +244 -0
- package/dist/daemon/services/browser-testing.js.map +1 -0
- package/dist/daemon/services/container-spawner.d.ts +135 -0
- package/dist/daemon/services/container-spawner.d.ts.map +1 -0
- package/dist/daemon/services/container-spawner.js +313 -0
- package/dist/daemon/services/container-spawner.js.map +1 -0
- package/dist/daemon/types.d.ts +5 -1
- package/dist/daemon/types.d.ts.map +1 -1
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/480-2d4111711d4e473c.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/724-73c1ee5f60abe860.js +9 -0
- package/dist/dashboard/out/_next/static/chunks/766-c3a14283c88d815b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-7120be68bea622f3.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-dc2e3a1a22478efc.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/{page-b6edd4dde8d08194.js â page-56a8b4616a90dc43.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/login/page-3eac37ea6f5dd153.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1081dd190a331a91.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-daf87e86f783f980.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-b68a681526eb145e.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/signup/page-fee4ed1709070bcd.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
- package/dist/dashboard/out/_next/static/chunks/{main-c2f423b9c9f4591b.js â main-97850e03d723ea8c.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
- package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
- package/dist/dashboard/out/_next/static/css/411ce23ffeae9f76.css +1 -0
- package/dist/dashboard/out/app.html +1 -14
- package/dist/dashboard/out/app.txt +2 -2
- package/dist/dashboard/out/connect-repos.html +1 -0
- package/dist/dashboard/out/connect-repos.txt +7 -0
- package/dist/dashboard/out/history.html +1 -1
- package/dist/dashboard/out/history.txt +2 -2
- package/dist/dashboard/out/index.html +1 -1
- package/dist/dashboard/out/index.txt +2 -2
- package/dist/dashboard/out/login.html +6 -0
- package/dist/dashboard/out/login.txt +7 -0
- package/dist/dashboard/out/metrics.html +1 -1
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +2 -2
- package/dist/dashboard/out/pricing.txt +2 -2
- package/dist/dashboard/out/providers.html +1 -0
- package/dist/dashboard/out/providers.txt +7 -0
- package/dist/dashboard/out/signup.html +6 -0
- package/dist/dashboard/out/signup.txt +7 -0
- package/dist/dashboard-server/server.d.ts.map +1 -1
- package/dist/dashboard-server/server.js +1308 -8
- package/dist/dashboard-server/server.js.map +1 -1
- package/dist/hooks/emitter.d.ts +40 -0
- package/dist/hooks/emitter.d.ts.map +1 -0
- package/dist/hooks/emitter.js +63 -0
- package/dist/hooks/emitter.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/registry.d.ts +173 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +476 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/trajectory-hooks.d.ts +52 -0
- package/dist/hooks/trajectory-hooks.d.ts.map +1 -0
- package/dist/hooks/trajectory-hooks.js +183 -0
- package/dist/hooks/trajectory-hooks.js.map +1 -0
- package/dist/hooks/types.d.ts +141 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/adapters/index.d.ts +8 -0
- package/dist/memory/adapters/index.d.ts.map +1 -0
- package/dist/memory/adapters/index.js +8 -0
- package/dist/memory/adapters/index.js.map +1 -0
- package/dist/memory/adapters/inmemory.d.ts +59 -0
- package/dist/memory/adapters/inmemory.d.ts.map +1 -0
- package/dist/memory/adapters/inmemory.js +195 -0
- package/dist/memory/adapters/inmemory.js.map +1 -0
- package/dist/memory/adapters/supermemory.d.ts +71 -0
- package/dist/memory/adapters/supermemory.d.ts.map +1 -0
- package/dist/memory/adapters/supermemory.js +338 -0
- package/dist/memory/adapters/supermemory.js.map +1 -0
- package/dist/memory/factory.d.ts +48 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +143 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +32 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-hooks.d.ts +60 -0
- package/dist/memory/memory-hooks.d.ts.map +1 -0
- package/dist/memory/memory-hooks.js +313 -0
- package/dist/memory/memory-hooks.js.map +1 -0
- package/dist/memory/service.d.ts +49 -0
- package/dist/memory/service.d.ts.map +1 -0
- package/dist/memory/service.js +146 -0
- package/dist/memory/service.js.map +1 -0
- package/dist/memory/types.d.ts +195 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/policy/agent-policy.d.ts +225 -0
- package/dist/policy/agent-policy.d.ts.map +1 -0
- package/dist/policy/agent-policy.js +665 -0
- package/dist/policy/agent-policy.js.map +1 -0
- package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
- package/dist/policy/cloud-policy-fetcher.d.ts.map +1 -0
- package/dist/policy/cloud-policy-fetcher.js +64 -0
- package/dist/policy/cloud-policy-fetcher.js.map +1 -0
- package/dist/resiliency/crash-insights.d.ts +156 -0
- package/dist/resiliency/crash-insights.d.ts.map +1 -0
- package/dist/resiliency/crash-insights.js +492 -0
- package/dist/resiliency/crash-insights.js.map +1 -0
- package/dist/resiliency/gossip-health.d.ts +137 -0
- package/dist/resiliency/gossip-health.d.ts.map +1 -0
- package/dist/resiliency/gossip-health.js +241 -0
- package/dist/resiliency/gossip-health.js.map +1 -0
- package/dist/resiliency/index.d.ts +5 -0
- package/dist/resiliency/index.d.ts.map +1 -1
- package/dist/resiliency/index.js +5 -0
- package/dist/resiliency/index.js.map +1 -1
- package/dist/resiliency/leader-watchdog.d.ts +109 -0
- package/dist/resiliency/leader-watchdog.d.ts.map +1 -0
- package/dist/resiliency/leader-watchdog.js +189 -0
- package/dist/resiliency/leader-watchdog.js.map +1 -0
- package/dist/resiliency/memory-monitor.d.ts +172 -0
- package/dist/resiliency/memory-monitor.d.ts.map +1 -0
- package/dist/resiliency/memory-monitor.js +593 -0
- package/dist/resiliency/memory-monitor.js.map +1 -0
- package/dist/resiliency/stateless-lead.d.ts +149 -0
- package/dist/resiliency/stateless-lead.d.ts.map +1 -0
- package/dist/resiliency/stateless-lead.js +308 -0
- package/dist/resiliency/stateless-lead.js.map +1 -0
- package/dist/resiliency/supervisor.d.ts +38 -0
- package/dist/resiliency/supervisor.d.ts.map +1 -1
- package/dist/resiliency/supervisor.js +122 -0
- package/dist/resiliency/supervisor.js.map +1 -1
- package/dist/shared/cli-auth-config.d.ts +91 -0
- package/dist/shared/cli-auth-config.d.ts.map +1 -0
- package/dist/shared/cli-auth-config.js +264 -0
- package/dist/shared/cli-auth-config.js.map +1 -0
- package/dist/storage/adapter.d.ts +1 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/trajectory/config.d.ts +84 -0
- package/dist/trajectory/config.d.ts.map +1 -0
- package/dist/trajectory/config.js +163 -0
- package/dist/trajectory/config.js.map +1 -0
- package/dist/trajectory/index.d.ts +8 -0
- package/dist/trajectory/index.d.ts.map +1 -0
- package/dist/trajectory/index.js +8 -0
- package/dist/trajectory/index.js.map +1 -0
- package/dist/trajectory/integration.d.ts +292 -0
- package/dist/trajectory/integration.d.ts.map +1 -0
- package/dist/trajectory/integration.js +834 -0
- package/dist/trajectory/integration.js.map +1 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/project-namespace.d.ts +24 -0
- package/dist/utils/project-namespace.d.ts.map +1 -1
- package/dist/utils/project-namespace.js +84 -0
- package/dist/utils/project-namespace.js.map +1 -1
- package/dist/wrapper/parser.d.ts +10 -0
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +100 -33
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/pty-wrapper.d.ts +197 -16
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +943 -106
- package/dist/wrapper/pty-wrapper.js.map +1 -1
- package/dist/wrapper/shared.d.ts +165 -0
- package/dist/wrapper/shared.d.ts.map +1 -0
- package/dist/wrapper/shared.js +270 -0
- package/dist/wrapper/shared.js.map +1 -0
- package/dist/wrapper/tmux-wrapper.d.ts +73 -11
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +541 -120
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/CLOUD-ARCHITECTURE.md +152 -0
- package/docs/HOOKS_API.md +394 -0
- package/docs/WRAPPER_EVENTS.md +358 -0
- package/docs/agent-policy-snippet.md +40 -0
- package/docs/agent-relay-protocol.md +238 -0
- package/docs/agent-relay-snippet.md +53 -47
- package/docs/archive/EXECUTIVE_SUMMARY.md +358 -0
- package/docs/archive/ROADMAP.md +329 -0
- package/docs/competitive/GASTOWN.md +451 -0
- package/docs/{COMPETITIVE_ANALYSIS.md â competitive/OVERVIEW.md} +1 -0
- package/docs/competitive/README.md +34 -0
- package/docs/competitive/TMUX_ORCHESTRATOR.md +605 -0
- package/docs/dashboard.png +0 -0
- package/docs/design/ci-failure-webhooks.md +812 -0
- package/docs/design/comprehensive-integrations.md +238 -0
- package/docs/design/e2b-sandbox-integration.md +504 -0
- package/docs/design/github-app-permissions.md +264 -0
- package/docs/local-testing.md +428 -0
- package/docs/proposals/continuous-claude-integration.md +622 -0
- package/docs/proposals/custom-commands.md +368 -0
- package/docs/tasks/global-skills-system.tasks.md +230 -0
- package/docs/tasks/webhook-integrations.tasks.md +184 -0
- package/docs/tasks/workspace-capabilities.tasks.md +121 -0
- package/docs/testing/RESILIENCY-TEST-PLAN-2026-01-01.md +366 -0
- package/package.json +16 -7
- package/scripts/cloud-setup.sh +96 -0
- package/scripts/manual-qa.sh +293 -0
- package/scripts/postinstall.js +60 -0
- package/scripts/run-cloud-qa.sh +220 -0
- package/scripts/test-cli-auth/Dockerfile +44 -0
- package/scripts/test-cli-auth/Dockerfile.real +79 -0
- package/scripts/test-cli-auth/README.md +286 -0
- package/scripts/test-cli-auth/ci-test-real-clis.ts +251 -0
- package/scripts/test-cli-auth/ci-test-runner.ts +263 -0
- package/scripts/test-cli-auth/mock-cli.sh +147 -0
- package/scripts/test-cli-auth/package.json +14 -0
- package/scripts/test-cli-auth/test-oauth-flow.ts +220 -0
- package/scripts/test-pty-input-auto.js +222 -0
- package/scripts/test-pty-input.js +150 -0
- package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-a5acc2831d094776.js +0 -1
- package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +0 -1
- package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +0 -1
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 â H5aWG0udPB4iOUIl_gytz}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 â H5aWG0udPB4iOUIl_gytz}/_ssgManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js â 117-b100311aff8d5c61.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js â 648-a13d3c2b1be45466.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js â page-a4973f3e3c82fb67.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/pricing/{page-d80e03a5297f95b6.js â page-4d72d5a5d8a9b618.js} +0 -0
- /package/docs/{CHANGELOG.md â archive/CHANGELOG.md} +0 -0
- /package/docs/{CLI-SIMPLIFICATION-COMPLETE.md â archive/CLI-SIMPLIFICATION-COMPLETE.md} +0 -0
- /package/docs/{DESIGN_BRIDGE_STAFFING.md â archive/DESIGN_BRIDGE_STAFFING.md} +0 -0
- /package/docs/{DESIGN_V2.md â archive/DESIGN_V2.md} +0 -0
- /package/docs/{MONETIZATION.md â archive/MONETIZATION.md} +0 -0
- /package/docs/{PROPOSAL-trajectories.md â archive/PROPOSAL-trajectories.md} +0 -0
- /package/docs/{SCALING_ANALYSIS.md â archive/SCALING_ANALYSIS.md} +0 -0
- /package/docs/{TESTING_PRESENCE_FEATURES.md â archive/TESTING_PRESENCE_FEATURES.md} +0 -0
- /package/docs/{TMUX_IMPLEMENTATION_NOTES.md â archive/TMUX_IMPLEMENTATION_NOTES.md} +0 -0
- /package/docs/{TMUX_IMPROVEMENTS.md â archive/TMUX_IMPROVEMENTS.md} +0 -0
- /package/docs/{dashboard-v2-plan.md â archive/dashboard-v2-plan.md} +0 -0
- /package/docs/{removable-code-analysis.md â archive/removable-code-analysis.md} +0 -0
- /package/docs/{competitive-analysis-mcp-agent-mail.md â competitive/MCP_AGENT_MAIL.md} +0 -0
|
@@ -16,7 +16,20 @@ Your message here.>>>
|
|
|
16
16
|
Broadcast to all agents.>>>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
**CRITICAL:** Always close multi-line messages with `>>>`
|
|
19
|
+
**CRITICAL:** Always close multi-line messages with `>>>` after the very last character.
|
|
20
|
+
|
|
21
|
+
**WARNING:** Do NOT put blank lines before `>>>` - it must immediately follow your content:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
# CORRECT - >>> immediately after content
|
|
25
|
+
->relay:Agent <<<Your message here.>>>
|
|
26
|
+
|
|
27
|
+
# WRONG - blank line before >>> breaks parsing
|
|
28
|
+
->relay:Agent <<<
|
|
29
|
+
Your message here.
|
|
30
|
+
|
|
31
|
+
>>>
|
|
32
|
+
```
|
|
20
33
|
|
|
21
34
|
## Communication Protocol
|
|
22
35
|
|
|
@@ -27,8 +40,6 @@ Broadcast to all agents.>>>
|
|
|
27
40
|
ACK: Brief description of task received>>>
|
|
28
41
|
```
|
|
29
42
|
|
|
30
|
-
Then proceed with your work. This confirms message delivery and lets the sender know you're on it.
|
|
31
|
-
|
|
32
43
|
**Report completion** - When done, send a completion message:
|
|
33
44
|
|
|
34
45
|
```
|
|
@@ -62,8 +73,6 @@ Response to the group message.>>>
|
|
|
62
73
|
Response to the group message.>>>
|
|
63
74
|
```
|
|
64
75
|
|
|
65
|
-
This ensures your response appears in the same channel as the original message.
|
|
66
|
-
|
|
67
76
|
If truncated, read full message:
|
|
68
77
|
```bash
|
|
69
78
|
agent-relay read abc123
|
|
@@ -74,13 +83,26 @@ agent-relay read abc123
|
|
|
74
83
|
Spawn workers to delegate tasks:
|
|
75
84
|
|
|
76
85
|
```
|
|
77
|
-
|
|
86
|
+
# Short tasks - single line with quotes
|
|
87
|
+
->relay:spawn WorkerName claude "short task description"
|
|
88
|
+
|
|
89
|
+
# Long tasks - use fenced format (recommended)
|
|
90
|
+
->relay:spawn WorkerName claude <<<
|
|
91
|
+
Implement the authentication module.
|
|
92
|
+
Requirements:
|
|
93
|
+
- JWT tokens with refresh
|
|
94
|
+
- Password hashing with bcrypt
|
|
95
|
+
- Rate limiting on login endpoint>>>
|
|
96
|
+
|
|
97
|
+
# Release when done
|
|
78
98
|
->relay:release WorkerName
|
|
79
99
|
```
|
|
80
100
|
|
|
101
|
+
**Use fenced format for tasks longer than ~50 characters** to avoid truncation from terminal line wrapping.
|
|
102
|
+
|
|
81
103
|
## Threads
|
|
82
104
|
|
|
83
|
-
Use threads to group related messages together
|
|
105
|
+
Use threads to group related messages together:
|
|
84
106
|
|
|
85
107
|
```
|
|
86
108
|
->relay:AgentName [thread:topic-name] <<<
|
|
@@ -91,25 +113,20 @@ Your message here.>>>
|
|
|
91
113
|
- Working on a specific issue (e.g., `[thread:agent-relay-299]`)
|
|
92
114
|
- Back-and-forth discussions with another agent
|
|
93
115
|
- Code review conversations
|
|
94
|
-
- Any multi-message topic you want grouped
|
|
95
|
-
|
|
96
|
-
**Examples:**
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
->relay:Protocol [thread:auth-feature] <<<
|
|
100
|
-
How should we handle token refresh?>>>
|
|
101
116
|
|
|
102
|
-
|
|
103
|
-
Use a 401 interceptor that auto-refreshes.>>>
|
|
117
|
+
## Status Updates
|
|
104
118
|
|
|
105
|
-
|
|
106
|
-
Please review src/auth/*.ts>>>
|
|
119
|
+
**Send status updates to your lead, NOT broadcast:**
|
|
107
120
|
|
|
108
|
-
->relay:Developer [thread:pr-123] <<<
|
|
109
|
-
LGTM, approved!>>>
|
|
110
121
|
```
|
|
122
|
+
# Correct - status to lead only
|
|
123
|
+
->relay:Lead <<<
|
|
124
|
+
STATUS: Working on auth module>>>
|
|
111
125
|
|
|
112
|
-
|
|
126
|
+
# Wrong - don't broadcast status to everyone
|
|
127
|
+
->relay:* <<<
|
|
128
|
+
STATUS: Working on auth module>>>
|
|
129
|
+
```
|
|
113
130
|
|
|
114
131
|
## Common Patterns
|
|
115
132
|
|
|
@@ -117,7 +134,7 @@ Thread messages appear grouped in the dashboard with reply counts.
|
|
|
117
134
|
->relay:Lead <<<
|
|
118
135
|
ACK: Starting /api/register implementation>>>
|
|
119
136
|
|
|
120
|
-
->relay
|
|
137
|
+
->relay:Lead <<<
|
|
121
138
|
STATUS: Working on auth module>>>
|
|
122
139
|
|
|
123
140
|
->relay:Lead <<<
|
|
@@ -133,36 +150,25 @@ REVIEW: Please check src/auth/*.ts>>>
|
|
|
133
150
|
QUESTION: JWT or sessions?>>>
|
|
134
151
|
```
|
|
135
152
|
|
|
136
|
-
##
|
|
137
|
-
|
|
138
|
-
When running in bridge mode (multiple projects connected), use `project:agent` format:
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
->relay:frontend:Designer <<<
|
|
142
|
-
Please update the login UI for the new auth flow>>>
|
|
143
|
-
|
|
144
|
-
->relay:backend:lead <<<
|
|
145
|
-
API question - should we use REST or GraphQL?>>>
|
|
153
|
+
## Rules
|
|
146
154
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
155
|
+
- Pattern must be at line start (whitespace OK)
|
|
156
|
+
- Escape with `\->relay:` to output literally
|
|
157
|
+
- Check daemon status: `agent-relay status`
|
|
150
158
|
|
|
151
|
-
|
|
159
|
+
## Writing Examples (For Documentation)
|
|
152
160
|
|
|
153
|
-
**
|
|
154
|
-
- `->relay:project:lead` - Message the lead agent of that project
|
|
155
|
-
- `->relay:project:*` - Broadcast to all agents in that project
|
|
156
|
-
- `->relay:*:*` - Broadcast to ALL agents in ALL projects
|
|
161
|
+
When showing examples of relay syntax in documentation or explanations, **escape the markers** so they don't get interpreted as actual messages:
|
|
157
162
|
|
|
158
|
-
**Cross-project threads:**
|
|
159
163
|
```
|
|
160
|
-
|
|
161
|
-
|
|
164
|
+
# Escape the opening marker
|
|
165
|
+
\->relay:AgentName \<<<
|
|
166
|
+
Example content here.\>>>
|
|
162
167
|
```
|
|
163
168
|
|
|
164
|
-
|
|
169
|
+
**What to escape:**
|
|
170
|
+
- `\->relay:` - Prevents the pattern from being detected as a real message
|
|
171
|
+
- `\<<<` - Prevents the fenced block from being parsed
|
|
172
|
+
- `\>>>` - Prevents the block from being closed
|
|
165
173
|
|
|
166
|
-
|
|
167
|
-
- Escape with `\->relay:` to output literally
|
|
168
|
-
- Check daemon status: `agent-relay status`
|
|
174
|
+
This ensures your examples are displayed literally rather than sent as messages.
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
# Agent Relay: Executive Summary
|
|
2
|
+
|
|
3
|
+
> Real-time autonomous agent-to-agent communication without modifying the agents themselves.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What Is Agent Relay?
|
|
8
|
+
|
|
9
|
+
Agent Relay enables AI coding assistants (Claude, Codex, Gemini) running in separate terminals to **discover each other and communicate autonomously** - without any code changes to the AI systems.
|
|
10
|
+
|
|
11
|
+
**Key differentiator:** agent-relay is a **composable messaging layer**, not a monolithic solution. It does one thing exceptionally well (<5ms real-time messaging) and integrates with best-of-breed tools for memory, UI, and workflows.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
15
|
+
â â
|
|
16
|
+
â Terminal 1 Terminal 2 Terminal 3 â
|
|
17
|
+
â âââââââââââ âââââââââââ âââââââââââ â
|
|
18
|
+
â â Alice ââââââââââââââśâ Bob âââââââââââââââ Carol â â
|
|
19
|
+
â â (Claude)âââââââââââââââ (Codex) ââââââââââââââśâ(Gemini) â â
|
|
20
|
+
â âââââââââââ âââââââââââ âââââââââââ â
|
|
21
|
+
â â â â â
|
|
22
|
+
â âââââââââââââââââââââââââźââââââââââââââââââââââââ â
|
|
23
|
+
â â â
|
|
24
|
+
â âââââââââââââźââââââââââââ â
|
|
25
|
+
â â Relay Daemon â â
|
|
26
|
+
â â (Message Routing) â â
|
|
27
|
+
â âââââââââââââââââââââââââ â
|
|
28
|
+
â â
|
|
29
|
+
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## The Core Insight
|
|
35
|
+
|
|
36
|
+
**Agents already produce text.** By watching for a simple pattern in their output, we can extract communication intent:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Agent Output: "I'll ask Bob for help. ->relay:Bob Can you review auth.ts?"
|
|
40
|
+
â˛
|
|
41
|
+
â
|
|
42
|
+
Relay captures this, routes to Bob
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
No API integration. No agent modification. Just pattern matching on stdout.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## How It Works (30-Second Version)
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
53
|
+
â â
|
|
54
|
+
â 1. WRAP 2. CAPTURE 3. ROUTE â
|
|
55
|
+
â ââââââââ âââââââââ âââââââ â
|
|
56
|
+
â â
|
|
57
|
+
â agent-relay Background Daemon â
|
|
58
|
+
â -n Alice claude ââââś polling ââââś finds routes ââââś â
|
|
59
|
+
â captures ->relay: message â
|
|
60
|
+
â Agent runs in output Bob... to Bob â
|
|
61
|
+
â tmux session â
|
|
62
|
+
â â
|
|
63
|
+
â â
|
|
64
|
+
â 4. DELIVER 5. INJECT 6. RESPOND â
|
|
65
|
+
â âââââââââ ââââââââ âââââââââ â
|
|
66
|
+
â â
|
|
67
|
+
â Bob's wrapper Types into Bob's agent â
|
|
68
|
+
â receives ââââś Bob's ââââś processes ââââś â
|
|
69
|
+
â message terminal as input â
|
|
70
|
+
â â
|
|
71
|
+
â "Relay message Can reply with â
|
|
72
|
+
â from Alice: ->relay:Alice â
|
|
73
|
+
â Can you..." â
|
|
74
|
+
â â
|
|
75
|
+
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Quick Start
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Terminal 1: Start the daemon
|
|
84
|
+
agent-relay up
|
|
85
|
+
|
|
86
|
+
# Terminal 2: Start first agent
|
|
87
|
+
agent-relay -n Alice claude
|
|
88
|
+
|
|
89
|
+
# Terminal 3: Start second agent
|
|
90
|
+
agent-relay -n Bob claude
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Alice can now send: `->relay:Bob Can you help with the auth module?`
|
|
94
|
+
|
|
95
|
+
Bob receives: `Relay message from Alice [abc123]: Can you help with the auth module?`
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## System Architecture
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
103
|
+
â AGENT RELAY SYSTEM â
|
|
104
|
+
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
|
|
105
|
+
â â
|
|
106
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
107
|
+
â â CLI Layer (Entry Point) â â
|
|
108
|
+
â â â â
|
|
109
|
+
â â agent-relay up Start daemon + dashboard â â
|
|
110
|
+
â â agent-relay down Stop daemon â â
|
|
111
|
+
â â agent-relay -n X Wrap agent with name X â â
|
|
112
|
+
â â agent-relay status Check daemon status â â
|
|
113
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
114
|
+
â â â
|
|
115
|
+
â âź â
|
|
116
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
117
|
+
â â Wrapper Layer (Per Agent) â â
|
|
118
|
+
â â â â
|
|
119
|
+
â â âââââââââââââââ âââââââââââââââ âââââââââââââââ â â
|
|
120
|
+
â â âTmuxWrapper â âOutputParser â âRelayClient â â â
|
|
121
|
+
â â â â â â â â â â
|
|
122
|
+
â â â⢠Runs agent â â⢠->relay: â â⢠Socket I/O â â â
|
|
123
|
+
â â â in tmux â â patterns â â⢠Reconnect â â â
|
|
124
|
+
â â â⢠Captures â â⢠ANSI strip â â⢠Handshake â â â
|
|
125
|
+
â â â output â â⢠Dedup â â â â â
|
|
126
|
+
â â â⢠Injects â â â â â â â
|
|
127
|
+
â â â messages â â â â â â â
|
|
128
|
+
â â âââââââââââââââ âââââââââââââââ âââââââââââââââ â â
|
|
129
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
130
|
+
â â â
|
|
131
|
+
â Unix Domain Socket â
|
|
132
|
+
â â â
|
|
133
|
+
â âź â
|
|
134
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
135
|
+
â â Daemon Layer (Central) â â
|
|
136
|
+
â â â â
|
|
137
|
+
â â âââââââââââââââ âââââââââââââââ âââââââââââââââ â â
|
|
138
|
+
â â âServer â âConnection â âRouter â â â
|
|
139
|
+
â â â â â â â â â â
|
|
140
|
+
â â â⢠Lifecycle â â⢠State M/C â â⢠Agent map â â â
|
|
141
|
+
â â â⢠Socket â â⢠Handshake â â⢠Routing â â â
|
|
142
|
+
â â â⢠PID file â â⢠Heartbeat â â⢠Broadcast â â â
|
|
143
|
+
â â âââââââââââââââ âââââââââââââââ âââââââââââââââ â â
|
|
144
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
145
|
+
â â â
|
|
146
|
+
â âź â
|
|
147
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
148
|
+
â â Storage Layer (SQLite) â â
|
|
149
|
+
â â â â
|
|
150
|
+
â â ⢠Message persistence ⢠Query by sender/recipient â â
|
|
151
|
+
â â ⢠WAL mode for concurrency ⢠Full message history â â
|
|
152
|
+
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
|
|
153
|
+
â â
|
|
154
|
+
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Message Flow Diagram
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
Alice (Claude) Daemon Bob (Codex)
|
|
163
|
+
â â â
|
|
164
|
+
â Agent outputs: â â
|
|
165
|
+
â "->relay:Bob review auth" â â
|
|
166
|
+
â â â
|
|
167
|
+
âââââââââââââââââââââââââââââââ⤠â
|
|
168
|
+
â TmuxWrapper captures â â
|
|
169
|
+
â OutputParser extracts â â
|
|
170
|
+
â RelayClient sends SEND â â
|
|
171
|
+
âââââââââââââââââââââââââââââââśâ â
|
|
172
|
+
â â â
|
|
173
|
+
â â Router looks up "Bob" â
|
|
174
|
+
â â Creates DELIVER envelope â
|
|
175
|
+
â â Persists to SQLite â
|
|
176
|
+
â â â
|
|
177
|
+
â âââââââââââââââââââââââââââââââśâ
|
|
178
|
+
â â â
|
|
179
|
+
â â RelayClient receives â
|
|
180
|
+
â â TmuxWrapper waits idle â
|
|
181
|
+
â â Injects via send-keys â
|
|
182
|
+
â â â
|
|
183
|
+
â â âââââââââââââââââ¤
|
|
184
|
+
â â â Bob sees: â
|
|
185
|
+
â â â "Relay msg â
|
|
186
|
+
â â â from Alice: â
|
|
187
|
+
â â â review auth" â
|
|
188
|
+
â â âââââââââââââââââ¤
|
|
189
|
+
â â â
|
|
190
|
+
â â Bob can respond: â
|
|
191
|
+
â â "->relay:Alice Done!" â
|
|
192
|
+
â â â
|
|
193
|
+
â ââââââââââââââââââââââââââââââââ¤
|
|
194
|
+
âââââââââââââââââââââââââââââââ⤠â
|
|
195
|
+
â â â
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Protocol Overview
|
|
201
|
+
|
|
202
|
+
### Wire Format
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
ââââââââââââââââââŹâââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
206
|
+
â Length (4B) â JSON Payload (UTF-8) â
|
|
207
|
+
â Big-endian â Up to 1 MiB â
|
|
208
|
+
ââââââââââââââââââ´âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Message Types
|
|
212
|
+
|
|
213
|
+
| Type | Direction | Purpose |
|
|
214
|
+
|------|-----------|---------|
|
|
215
|
+
| `HELLO` | Client â Daemon | Identify agent |
|
|
216
|
+
| `WELCOME` | Daemon â Client | Confirm session |
|
|
217
|
+
| `SEND` | Client â Daemon | Send message |
|
|
218
|
+
| `DELIVER` | Daemon â Client | Receive message |
|
|
219
|
+
| `PING/PONG` | Both | Heartbeat |
|
|
220
|
+
| `BYE` | Both | Disconnect |
|
|
221
|
+
|
|
222
|
+
### Envelope Structure
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"v": 1,
|
|
227
|
+
"type": "SEND",
|
|
228
|
+
"id": "uuid-here",
|
|
229
|
+
"ts": 1703001234567,
|
|
230
|
+
"to": "Bob",
|
|
231
|
+
"payload": {
|
|
232
|
+
"kind": "message",
|
|
233
|
+
"body": "Can you review auth.ts?"
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## State Machines
|
|
241
|
+
|
|
242
|
+
### Connection States (Daemon-side)
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
CONNECTING âââś HANDSHAKING âââś ACTIVE âââś CLOSING âââś CLOSED
|
|
246
|
+
â â
|
|
247
|
+
ââââ ERROR ââââ
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Client States (Wrapper-side)
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
DISCONNECTED âââś CONNECTING âââś HANDSHAKING âââś READY
|
|
254
|
+
Ⲡâ
|
|
255
|
+
â â
|
|
256
|
+
âââââââââââââ BACKOFF âââââââââââââââââââââââ
|
|
257
|
+
(auto-reconnect)
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Communication Patterns
|
|
263
|
+
|
|
264
|
+
### Direct Message
|
|
265
|
+
```
|
|
266
|
+
->relay:Bob Please review the authentication module
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Broadcast
|
|
270
|
+
```
|
|
271
|
+
->relay:* I've completed the database migration - all tests passing
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Structured (Block Format)
|
|
275
|
+
```
|
|
276
|
+
[[RELAY]]{"to":"Bob","type":"action","body":"Run integration tests","data":{"priority":"high"}}[[/RELAY]]
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Common Conventions
|
|
280
|
+
```
|
|
281
|
+
->relay:* STATUS: Starting work on auth module
|
|
282
|
+
->relay:* DONE: Auth module complete
|
|
283
|
+
->relay:Reviewer REVIEW: Please check src/auth/*.ts
|
|
284
|
+
->relay:Architect QUESTION: Should we use JWT or sessions?
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Key Design Decisions
|
|
290
|
+
|
|
291
|
+
| Decision | Why |
|
|
292
|
+
|----------|-----|
|
|
293
|
+
| **Output parsing** | Works with any CLI agent, no modifications needed |
|
|
294
|
+
| **Tmux wrapper** | Mature terminal emulation, users can detach/reattach |
|
|
295
|
+
| **Unix sockets** | No network exposure, filesystem permissions for security |
|
|
296
|
+
| **Message injection** | Agents treat messages as natural user input |
|
|
297
|
+
| **SQLite storage** | Zero config, single file, good enough for local use |
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Limitations (Transparency)
|
|
302
|
+
|
|
303
|
+
| Area | Limitation |
|
|
304
|
+
|------|------------|
|
|
305
|
+
| **Security** | No authentication between agents (local trust assumed) |
|
|
306
|
+
| **Reliability** | Messages can be lost if agent is busy outputting |
|
|
307
|
+
| **Timing** | 200ms polling latency, 1.5s idle wait before injection |
|
|
308
|
+
| **Platform** | Windows requires WSL (tmux dependency) |
|
|
309
|
+
| **Scale** | ~50 concurrent agents, ~100 msg/sec |
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## File Structure
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
agent-relay/
|
|
317
|
+
âââ src/
|
|
318
|
+
â âââ cli/index.ts # CLI entry point
|
|
319
|
+
â âââ daemon/
|
|
320
|
+
â â âââ server.ts # Daemon server
|
|
321
|
+
â â âââ connection.ts # Connection state machine
|
|
322
|
+
â â âââ router.ts # Message routing
|
|
323
|
+
â âââ wrapper/
|
|
324
|
+
â â âââ tmux-wrapper.ts # Tmux session management
|
|
325
|
+
â â âââ client.ts # Daemon client
|
|
326
|
+
â â âââ parser.ts # ->relay: pattern matching
|
|
327
|
+
â âââ protocol/
|
|
328
|
+
â â âââ types.ts # Message types
|
|
329
|
+
â â âââ framing.ts # Wire format
|
|
330
|
+
â âââ storage/
|
|
331
|
+
â âââ sqlite-adapter.ts # Message persistence
|
|
332
|
+
âââ ARCHITECTURE.md # Detailed technical docs
|
|
333
|
+
âââ EXECUTIVE_SUMMARY.md # This document
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Storage Locations
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
/tmp/agent-relay/{project-hash}/
|
|
342
|
+
âââ relay.sock # Unix domain socket
|
|
343
|
+
âââ relay.sock.pid # Daemon PID
|
|
344
|
+
âââ messages.sqlite # Message history
|
|
345
|
+
âââ agents.json # Connected agents
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## See Also
|
|
351
|
+
|
|
352
|
+
- **[ARCHITECTURE.md](./ARCHITECTURE.md)** - Complete technical deep-dive
|
|
353
|
+
- **[README.md](./README.md)** - Quick start guide
|
|
354
|
+
- **[docs/COMPETITIVE_ANALYSIS.md](./docs/COMPETITIVE_ANALYSIS.md)** - Comparison with 16 multi-agent tools
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
*Agent Relay v1.0.7*
|