agent-relay 1.0.22 → 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/shadow-cli.d.ts +17 -0
- package/dist/bridge/shadow-cli.d.ts.map +1 -0
- package/dist/bridge/shadow-cli.js +75 -0
- package/dist/bridge/shadow-cli.js.map +1 -0
- package/dist/bridge/shadow-config.d.ts +87 -0
- package/dist/bridge/shadow-config.d.ts.map +1 -0
- package/dist/bridge/shadow-config.js +134 -0
- package/dist/bridge/shadow-config.js.map +1 -0
- package/dist/bridge/spawner.d.ts +68 -1
- package/dist/bridge/spawner.d.ts.map +1 -1
- package/dist/bridge/spawner.js +360 -16
- package/dist/bridge/spawner.js.map +1 -1
- package/dist/bridge/types.d.ts +67 -0
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/cli/index.js +1196 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/cloud/api/auth.d.ts +20 -0
- package/dist/cloud/api/auth.d.ts.map +1 -0
- package/dist/cloud/api/auth.js +128 -0
- package/dist/cloud/api/auth.js.map +1 -0
- package/dist/cloud/api/billing.d.ts +17 -0
- package/dist/cloud/api/billing.d.ts.map +1 -0
- package/dist/cloud/api/billing.js +353 -0
- package/dist/cloud/api/billing.js.map +1 -0
- 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/coordinators.d.ts +8 -0
- package/dist/cloud/api/coordinators.d.ts.map +1 -0
- package/dist/cloud/api/coordinators.js +347 -0
- package/dist/cloud/api/coordinators.js.map +1 -0
- package/dist/cloud/api/daemons.d.ts +12 -0
- package/dist/cloud/api/daemons.d.ts.map +1 -0
- package/dist/cloud/api/daemons.js +320 -0
- package/dist/cloud/api/daemons.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 +43 -0
- package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -0
- package/dist/cloud/api/middleware/planLimits.js +202 -0
- package/dist/cloud/api/middleware/planLimits.js.map +1 -0
- 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 +15 -0
- package/dist/cloud/api/onboarding.d.ts.map +1 -0
- package/dist/cloud/api/onboarding.js +588 -0
- package/dist/cloud/api/onboarding.js.map +1 -0
- 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.d.ts +7 -0
- package/dist/cloud/api/providers.d.ts.map +1 -0
- package/dist/cloud/api/providers.js +507 -0
- package/dist/cloud/api/providers.js.map +1 -0
- package/dist/cloud/api/repos.d.ts +7 -0
- package/dist/cloud/api/repos.d.ts.map +1 -0
- package/dist/cloud/api/repos.js +314 -0
- package/dist/cloud/api/repos.js.map +1 -0
- package/dist/cloud/api/teams.d.ts +7 -0
- package/dist/cloud/api/teams.d.ts.map +1 -0
- package/dist/cloud/api/teams.js +279 -0
- package/dist/cloud/api/teams.js.map +1 -0
- 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/usage.d.ts +7 -0
- package/dist/cloud/api/usage.d.ts.map +1 -0
- package/dist/cloud/api/usage.js +98 -0
- package/dist/cloud/api/usage.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.d.ts +7 -0
- package/dist/cloud/api/workspaces.d.ts.map +1 -0
- package/dist/cloud/api/workspaces.js +727 -0
- package/dist/cloud/api/workspaces.js.map +1 -0
- package/dist/cloud/billing/index.d.ts +9 -0
- package/dist/cloud/billing/index.d.ts.map +1 -0
- package/dist/cloud/billing/index.js +9 -0
- package/dist/cloud/billing/index.js.map +1 -0
- package/dist/cloud/billing/plans.d.ts +39 -0
- package/dist/cloud/billing/plans.d.ts.map +1 -0
- package/dist/cloud/billing/plans.js +245 -0
- package/dist/cloud/billing/plans.js.map +1 -0
- package/dist/cloud/billing/service.d.ts +80 -0
- package/dist/cloud/billing/service.d.ts.map +1 -0
- package/dist/cloud/billing/service.js +388 -0
- package/dist/cloud/billing/service.js.map +1 -0
- package/dist/cloud/billing/types.d.ts +141 -0
- package/dist/cloud/billing/types.d.ts.map +1 -0
- package/dist/cloud/billing/types.js +7 -0
- package/dist/cloud/billing/types.js.map +1 -0
- package/dist/cloud/config.d.ts +66 -0
- package/dist/cloud/config.d.ts.map +1 -0
- package/dist/cloud/config.js +92 -0
- package/dist/cloud/config.js.map +1 -0
- package/dist/cloud/db/drizzle.d.ts +215 -0
- package/dist/cloud/db/drizzle.d.ts.map +1 -0
- package/dist/cloud/db/drizzle.js +1083 -0
- package/dist/cloud/db/drizzle.js.map +1 -0
- package/dist/cloud/db/index.d.ts +35 -0
- package/dist/cloud/db/index.d.ts.map +1 -0
- package/dist/cloud/db/index.js +52 -0
- package/dist/cloud/db/index.js.map +1 -0
- package/dist/cloud/db/schema.d.ts +4519 -0
- package/dist/cloud/db/schema.d.ts.map +1 -0
- package/dist/cloud/db/schema.js +547 -0
- package/dist/cloud/db/schema.js.map +1 -0
- package/dist/cloud/index.d.ts +12 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +39 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/provisioner/index.d.ts +75 -0
- package/dist/cloud/provisioner/index.d.ts.map +1 -0
- package/dist/cloud/provisioner/index.js +977 -0
- package/dist/cloud/provisioner/index.js.map +1 -0
- package/dist/cloud/server.d.ts +17 -0
- package/dist/cloud/server.d.ts.map +1 -0
- package/dist/cloud/server.js +534 -0
- package/dist/cloud/server.js.map +1 -0
- 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/coordinator.d.ts +62 -0
- package/dist/cloud/services/coordinator.d.ts.map +1 -0
- package/dist/cloud/services/coordinator.js +389 -0
- package/dist/cloud/services/coordinator.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 +125 -0
- package/dist/cloud/services/planLimits.d.ts.map +1 -0
- package/dist/cloud/services/planLimits.js +282 -0
- package/dist/cloud/services/planLimits.js.map +1 -0
- 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.d.ts +76 -0
- package/dist/cloud/vault/index.d.ts.map +1 -0
- package/dist/cloud/vault/index.js +219 -0
- package/dist/cloud/vault/index.js.map +1 -0
- 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 +114 -0
- package/dist/daemon/agent-manager.d.ts.map +1 -0
- package/dist/daemon/agent-manager.js +513 -0
- package/dist/daemon/agent-manager.js.map +1 -0
- package/dist/daemon/agent-registry.d.ts +34 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -1
- package/dist/daemon/agent-registry.js +45 -2
- package/dist/daemon/agent-registry.js.map +1 -1
- package/dist/daemon/api.d.ts +81 -0
- package/dist/daemon/api.d.ts.map +1 -0
- package/dist/daemon/api.js +554 -0
- package/dist/daemon/api.js.map +1 -0
- 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 +101 -0
- package/dist/daemon/cloud-sync.d.ts.map +1 -0
- package/dist/daemon/cloud-sync.js +263 -0
- package/dist/daemon/cloud-sync.js.map +1 -0
- package/dist/daemon/index.d.ts +4 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +6 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/orchestrator.d.ts +155 -0
- package/dist/daemon/orchestrator.d.ts.map +1 -0
- package/dist/daemon/orchestrator.js +766 -0
- package/dist/daemon/orchestrator.js.map +1 -0
- package/dist/daemon/router.d.ts +29 -0
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +143 -21
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +42 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +199 -16
- 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 +131 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +6 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/daemon/workspace-manager.d.ts +75 -0
- package/dist/daemon/workspace-manager.d.ts.map +1 -0
- package/dist/daemon/workspace-manager.js +289 -0
- package/dist/daemon/workspace-manager.js.map +1 -0
- 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-56a8b4616a90dc43.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +1 -0
- 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/pricing/page-4d72d5a5d8a9b618.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-e0a1f53fe0617a63.js → main-97850e03d723ea8c.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-5d692157a8eb1fd9.js +1 -0
- 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/alt-logos/agent-relay-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
- package/dist/dashboard/out/alt-logos/logo.svg +38 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
- package/dist/dashboard/out/app.html +1 -0
- package/dist/dashboard/out/app.txt +7 -0
- 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 -0
- package/dist/dashboard/out/history.txt +7 -0
- 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 -515
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +13 -0
- package/dist/dashboard/out/pricing.txt +7 -0
- 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/metrics.d.ts.map +1 -1
- package/dist/dashboard-server/metrics.js +3 -2
- package/dist/dashboard-server/metrics.js.map +1 -1
- package/dist/dashboard-server/server.d.ts.map +1 -1
- package/dist/dashboard-server/server.js +2653 -130
- 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/protocol/types.d.ts +10 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/resiliency/context-persistence.d.ts +140 -0
- package/dist/resiliency/context-persistence.d.ts.map +1 -0
- package/dist/resiliency/context-persistence.js +397 -0
- package/dist/resiliency/context-persistence.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/health-monitor.d.ts +97 -0
- package/dist/resiliency/health-monitor.d.ts.map +1 -0
- package/dist/resiliency/health-monitor.js +291 -0
- package/dist/resiliency/health-monitor.js.map +1 -0
- package/dist/resiliency/index.d.ts +68 -0
- package/dist/resiliency/index.d.ts.map +1 -0
- package/dist/resiliency/index.js +68 -0
- package/dist/resiliency/index.js.map +1 -0
- 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/logger.d.ts +114 -0
- package/dist/resiliency/logger.d.ts.map +1 -0
- package/dist/resiliency/logger.js +250 -0
- package/dist/resiliency/logger.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/metrics.d.ts +115 -0
- package/dist/resiliency/metrics.d.ts.map +1 -0
- package/dist/resiliency/metrics.js +239 -0
- package/dist/resiliency/metrics.js.map +1 -0
- package/dist/resiliency/provider-context.d.ts +100 -0
- package/dist/resiliency/provider-context.d.ts.map +1 -0
- package/dist/resiliency/provider-context.js +360 -0
- package/dist/resiliency/provider-context.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 +147 -0
- package/dist/resiliency/supervisor.d.ts.map +1 -0
- package/dist/resiliency/supervisor.js +459 -0
- package/dist/resiliency/supervisor.js.map +1 -0
- 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 +3 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/adapter.js +12 -2
- package/dist/storage/adapter.js.map +1 -1
- package/dist/storage/sqlite-adapter.d.ts.map +1 -1
- package/dist/storage/sqlite-adapter.js +18 -14
- package/dist/storage/sqlite-adapter.js.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/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +84 -0
- package/dist/utils/logger.js.map +1 -0
- 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/client.d.ts +16 -1
- package/dist/wrapper/client.d.ts.map +1 -1
- package/dist/wrapper/client.js +32 -1
- package/dist/wrapper/client.js.map +1 -1
- package/dist/wrapper/parser.d.ts +13 -0
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +217 -47
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/pty-wrapper.d.ts +219 -17
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +1050 -104
- 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 +78 -11
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +567 -106
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/CLOUD-ARCHITECTURE.md +804 -0
- package/docs/CLOUD-ONBOARDING-DESIGN.md +1983 -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 +115 -6
- package/docs/archive/EXECUTIVE_SUMMARY.md +358 -0
- package/docs/archive/ROADMAP.md +329 -0
- package/docs/archive/TESTING_PRESENCE_FEATURES.md +327 -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/guides/CLOUD.md +236 -0
- package/docs/guides/LOCAL.md +535 -0
- package/docs/guides/SELF-HOSTED.md +494 -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/proposals/shadow-as-subagent.md +765 -0
- package/docs/proposals/slack-bot-integration.md +1457 -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 +45 -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/app/layout-c9d8c5d95e48c6bf.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-8aa9936bc6c771ab.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-4498be09a5157759.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-bae2e535de00de50.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-c81f7fd28659d64f.js +0 -1
- package/dist/dashboard/out/_next/static/css/50ed6996e3df7bdd.css +0 -1
- /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → H5aWG0udPB4iOUIl_gytz}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → H5aWG0udPB4iOUIl_gytz}/_ssgManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{117-3bef7b19f3e60751.js → 117-b100311aff8d5c61.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-6cf686106c891ad3.js → 648-a13d3c2b1be45466.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-8ff6572bc7c9bc61.js → page-a4973f3e3c82fb67.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-26bd8d656b496dba.js → fd9d1056-bf46c09eb57e019c.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/{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,36 @@ Your message here.>>>
|
|
|
16
16
|
Broadcast to all agents.>>>
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
**CRITICAL:** Always
|
|
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
|
+
```
|
|
33
|
+
|
|
34
|
+
## Communication Protocol
|
|
35
|
+
|
|
36
|
+
**ACK immediately** - When you receive a task, acknowledge it before starting work:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
->relay:Sender <<<
|
|
40
|
+
ACK: Brief description of task received>>>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Report completion** - When done, send a completion message:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
->relay:Sender <<<
|
|
47
|
+
DONE: Brief summary of what was completed>>>
|
|
48
|
+
```
|
|
20
49
|
|
|
21
50
|
## Receiving Messages
|
|
22
51
|
|
|
@@ -25,6 +54,25 @@ Messages appear as:
|
|
|
25
54
|
Relay message from Alice [abc123]: Message content here
|
|
26
55
|
```
|
|
27
56
|
|
|
57
|
+
### Channel Routing (Important!)
|
|
58
|
+
|
|
59
|
+
Messages from #general (broadcast channel) include a `[#general]` indicator:
|
|
60
|
+
```
|
|
61
|
+
Relay message from Alice [abc123] [#general]: Hello everyone!
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**When you see `[#general]`**: Reply to `*` (broadcast), NOT to the sender directly.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
# Correct - responds to #general channel
|
|
68
|
+
->relay:* <<<
|
|
69
|
+
Response to the group message.>>>
|
|
70
|
+
|
|
71
|
+
# Wrong - sends as DM to sender instead of to the channel
|
|
72
|
+
->relay:Alice <<<
|
|
73
|
+
Response to the group message.>>>
|
|
74
|
+
```
|
|
75
|
+
|
|
28
76
|
If truncated, read full message:
|
|
29
77
|
```bash
|
|
30
78
|
agent-relay read abc123
|
|
@@ -35,23 +83,67 @@ agent-relay read abc123
|
|
|
35
83
|
Spawn workers to delegate tasks:
|
|
36
84
|
|
|
37
85
|
```
|
|
38
|
-
|
|
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
|
|
39
98
|
->relay:release WorkerName
|
|
40
99
|
```
|
|
41
100
|
|
|
42
|
-
|
|
101
|
+
**Use fenced format for tasks longer than ~50 characters** to avoid truncation from terminal line wrapping.
|
|
102
|
+
|
|
103
|
+
## Threads
|
|
104
|
+
|
|
105
|
+
Use threads to group related messages together:
|
|
43
106
|
|
|
44
107
|
```
|
|
45
|
-
->relay
|
|
46
|
-
|
|
108
|
+
->relay:AgentName [thread:topic-name] <<<
|
|
109
|
+
Your message here.>>>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**When to use threads:**
|
|
113
|
+
- Working on a specific issue (e.g., `[thread:agent-relay-299]`)
|
|
114
|
+
- Back-and-forth discussions with another agent
|
|
115
|
+
- Code review conversations
|
|
47
116
|
|
|
117
|
+
## Status Updates
|
|
118
|
+
|
|
119
|
+
**Send status updates to your lead, NOT broadcast:**
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
# Correct - status to lead only
|
|
123
|
+
->relay:Lead <<<
|
|
124
|
+
STATUS: Working on auth module>>>
|
|
125
|
+
|
|
126
|
+
# Wrong - don't broadcast status to everyone
|
|
48
127
|
->relay:* <<<
|
|
128
|
+
STATUS: Working on auth module>>>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Common Patterns
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
->relay:Lead <<<
|
|
135
|
+
ACK: Starting /api/register implementation>>>
|
|
136
|
+
|
|
137
|
+
->relay:Lead <<<
|
|
138
|
+
STATUS: Working on auth module>>>
|
|
139
|
+
|
|
140
|
+
->relay:Lead <<<
|
|
49
141
|
DONE: Auth module complete>>>
|
|
50
142
|
|
|
51
143
|
->relay:Developer <<<
|
|
52
144
|
TASK: Implement /api/register>>>
|
|
53
145
|
|
|
54
|
-
->relay:Reviewer <<<
|
|
146
|
+
->relay:Reviewer [thread:code-review-auth] <<<
|
|
55
147
|
REVIEW: Please check src/auth/*.ts>>>
|
|
56
148
|
|
|
57
149
|
->relay:Architect <<<
|
|
@@ -63,3 +155,20 @@ QUESTION: JWT or sessions?>>>
|
|
|
63
155
|
- Pattern must be at line start (whitespace OK)
|
|
64
156
|
- Escape with `\->relay:` to output literally
|
|
65
157
|
- Check daemon status: `agent-relay status`
|
|
158
|
+
|
|
159
|
+
## Writing Examples (For Documentation)
|
|
160
|
+
|
|
161
|
+
When showing examples of relay syntax in documentation or explanations, **escape the markers** so they don't get interpreted as actual messages:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
# Escape the opening marker
|
|
165
|
+
\->relay:AgentName \<<<
|
|
166
|
+
Example content here.\>>>
|
|
167
|
+
```
|
|
168
|
+
|
|
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
|
|
173
|
+
|
|
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*
|