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
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
# Gastown vs Agent Relay: Deep Architectural Analysis
|
|
2
|
+
|
|
3
|
+
A comprehensive comparison of two multi-agent orchestration systems for Claude Code.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Executive Summary
|
|
8
|
+
|
|
9
|
+
| Dimension | Gastown | Agent Relay |
|
|
10
|
+
|-----------|---------|-------------|
|
|
11
|
+
| **Primary Language** | Go (99.6%) | TypeScript/Node.js |
|
|
12
|
+
| **Core Philosophy** | Work-centric orchestration ("hooks + molecules") | Communication-centric ("real-time messaging") |
|
|
13
|
+
| **State Management** | Git-backed persistent (Beads) | SQLite ephemeral + optional cloud |
|
|
14
|
+
| **Agent Lifecycle** | Managed (polecats spawn/die) | User-managed (wrapper only) |
|
|
15
|
+
| **Scaling Target** | 20-30 agents | ~50 agents |
|
|
16
|
+
| **Complexity** | High (38 internal packages) | Moderate (6 architectural layers) |
|
|
17
|
+
| **Workflow System** | Formulas → Molecules (TOML-based) | None (pure messaging) |
|
|
18
|
+
| **Cross-Project** | Federation with HOP protocol | Bridge mode with socket connections |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. Architectural Philosophy
|
|
23
|
+
|
|
24
|
+
### Gastown: "The Steam Engine Model"
|
|
25
|
+
|
|
26
|
+
Gastown treats multi-agent coordination as an **industrial workflow problem**. The core metaphor is a steam engine where:
|
|
27
|
+
|
|
28
|
+
- **Hooks** are pistons that hold work
|
|
29
|
+
- **Agents** are workers that execute when work appears
|
|
30
|
+
- **The Propulsion Principle**: "If you find something on your hook, YOU RUN IT"
|
|
31
|
+
|
|
32
|
+
This creates a **push-based, autonomous execution model** where agents don't wait for confirmation—they execute immediately upon receiving work. The system prioritizes:
|
|
33
|
+
|
|
34
|
+
1. **Work persistence over agent persistence** - Work survives agent crashes
|
|
35
|
+
2. **Accountability** - Git-backed ledger tracks who did what
|
|
36
|
+
3. **Reproducibility** - Formulas define repeatable workflows
|
|
37
|
+
|
|
38
|
+
### Agent Relay: "The Postal Service Model"
|
|
39
|
+
|
|
40
|
+
Agent Relay treats multi-agent coordination as a **communication problem**. The core insight is that AI agents already produce text output, so:
|
|
41
|
+
|
|
42
|
+
- **Output parsing** extracts intent from `->relay:` patterns
|
|
43
|
+
- **Message routing** delivers messages between agents
|
|
44
|
+
- **Terminal injection** presents messages as user input
|
|
45
|
+
|
|
46
|
+
This creates a **peer-to-peer, message-passing model** where agents communicate freely. The system prioritizes:
|
|
47
|
+
|
|
48
|
+
1. **Zero agent modification** - Works with any CLI-based AI
|
|
49
|
+
2. **Transparency** - Users see `->relay:` commands in output
|
|
50
|
+
3. **Simplicity** - Just messaging, nothing else
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. Component Architecture
|
|
55
|
+
|
|
56
|
+
### Gastown's Role Hierarchy
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
60
|
+
│ TOWN │
|
|
61
|
+
├─────────────────────────────────────────────────────────────┤
|
|
62
|
+
│ Mayor (Global Coordinator) │
|
|
63
|
+
│ └── Deacon (Background Daemon) │
|
|
64
|
+
│ └── Dog (Infrastructure Helpers) │
|
|
65
|
+
├─────────────────────────────────────────────────────────────┤
|
|
66
|
+
│ RIG (Per-Project) │
|
|
67
|
+
│ ├── Witness (Lifecycle Monitor) │
|
|
68
|
+
│ ├── Refinery (Merge Queue Processor) │
|
|
69
|
+
│ └── Polecats (Ephemeral Workers) │
|
|
70
|
+
│ └── Each with own git worktree │
|
|
71
|
+
├─────────────────────────────────────────────────────────────┤
|
|
72
|
+
│ CREW (Persistent Workers) │
|
|
73
|
+
│ └── User-managed, long-lived, exploratory work │
|
|
74
|
+
└─────────────────────────────────────────────────────────────┘
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**38 internal packages** organized by domain:
|
|
78
|
+
- **Core**: boot, config, daemon, session
|
|
79
|
+
- **Communication**: mail, mq, protocol, feed
|
|
80
|
+
- **Development**: git, tmux, tui, workspace
|
|
81
|
+
- **Workflow**: formula, molecules, checkpoint
|
|
82
|
+
- **Specialized**: claude, beads, swarm, refinery
|
|
83
|
+
|
|
84
|
+
### Agent Relay's Layer Model
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
88
|
+
│ Layer 6: Dashboard (Web UI monitoring) │
|
|
89
|
+
├─────────────────────────────────────────────────────────────┤
|
|
90
|
+
│ Layer 5: Storage (SQLite persistence) │
|
|
91
|
+
├─────────────────────────────────────────────────────────────┤
|
|
92
|
+
│ Layer 4: Protocol (Wire format, envelopes) │
|
|
93
|
+
├─────────────────────────────────────────────────────────────┤
|
|
94
|
+
│ Layer 3: Daemon (Message broker, routing) │
|
|
95
|
+
├─────────────────────────────────────────────────────────────┤
|
|
96
|
+
│ Layer 2: Wrapper (Tmux, parsing, injection) │
|
|
97
|
+
├─────────────────────────────────────────────────────────────┤
|
|
98
|
+
│ Layer 1: CLI (User interface) │
|
|
99
|
+
└─────────────────────────────────────────────────────────────┘
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**~15 source files** with clear responsibilities:
|
|
103
|
+
- CLI entry → TmuxWrapper → OutputParser → RelayClient → Daemon → Router
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 3. Work & State Management
|
|
108
|
+
|
|
109
|
+
### Gastown: MEOW (Molecular Expression Of Work)
|
|
110
|
+
|
|
111
|
+
Gastown introduces a sophisticated work lifecycle:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Formula (TOML) → Protomolecule → Molecule → Wisp
|
|
115
|
+
"Ice-9" "Solid" "Liquid" "Vapor"
|
|
116
|
+
(Template) (Frozen template) (Active workflow) (Ephemeral)
|
|
117
|
+
|
|
118
|
+
Operations:
|
|
119
|
+
cook: Formula → Protomolecule
|
|
120
|
+
pour: Protomolecule → Molecule
|
|
121
|
+
wisp: Create ephemeral work
|
|
122
|
+
squash: Compress completed molecule to digest
|
|
123
|
+
burn: Discard wisp
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Formulas define multi-step workflows** in TOML:
|
|
127
|
+
- Steps with dependencies
|
|
128
|
+
- Crash recovery points
|
|
129
|
+
- Reproducible execution paths
|
|
130
|
+
|
|
131
|
+
**Beads provides git-backed persistence**:
|
|
132
|
+
- Issues stored in `.beads/beads.jsonl`
|
|
133
|
+
- Complete audit trail
|
|
134
|
+
- Survives agent restarts
|
|
135
|
+
|
|
136
|
+
### Agent Relay: Message Persistence
|
|
137
|
+
|
|
138
|
+
Agent Relay has simpler state:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Message → SQLite → Agents.json (for dashboard)
|
|
142
|
+
↓
|
|
143
|
+
SessionStorage
|
|
144
|
+
↓
|
|
145
|
+
AgentSummaries (optional)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Messages are ephemeral by default**:
|
|
149
|
+
- SQLite stores history for querying
|
|
150
|
+
- No built-in workflow state
|
|
151
|
+
- Sessions track agent lifecycle
|
|
152
|
+
|
|
153
|
+
**Optional cloud sync** for cross-machine:
|
|
154
|
+
- Remote agent discovery
|
|
155
|
+
- Cross-machine message routing
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 4. Communication Protocols
|
|
160
|
+
|
|
161
|
+
### Gastown Mail Protocol
|
|
162
|
+
|
|
163
|
+
Structured message types for specific purposes:
|
|
164
|
+
|
|
165
|
+
| Message Type | Purpose |
|
|
166
|
+
|--------------|---------|
|
|
167
|
+
| `POLECAT_DONE` | Worker signals completion |
|
|
168
|
+
| `MERGE_READY` | Work ready for integration |
|
|
169
|
+
| `MERGED` / `MERGE_FAILED` | Merge outcomes |
|
|
170
|
+
| `REWORK_REQUEST` | Conflict resolution needed |
|
|
171
|
+
| `WITNESS_PING` | Health monitoring |
|
|
172
|
+
| `HELP` | Escalation request |
|
|
173
|
+
| `HANDOFF` | Session continuity |
|
|
174
|
+
|
|
175
|
+
**Format**: Uppercase type prefixes, key-value pairs, markdown sections.
|
|
176
|
+
|
|
177
|
+
**Addressing**: `<rig>/<role>` for routing clarity.
|
|
178
|
+
|
|
179
|
+
### Agent Relay Protocol
|
|
180
|
+
|
|
181
|
+
General-purpose envelope system:
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
interface Envelope<T> {
|
|
185
|
+
v: number; // Protocol version
|
|
186
|
+
type: MessageType; // HELLO, SEND, DELIVER, etc.
|
|
187
|
+
id: string; // UUID
|
|
188
|
+
ts: number; // Timestamp
|
|
189
|
+
from?: string; // Sender
|
|
190
|
+
to?: string | '*'; // Recipient or broadcast
|
|
191
|
+
topic?: string; // Optional channel
|
|
192
|
+
payload: T; // Message content
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Message Types**: HELLO, WELCOME, SEND, DELIVER, ACK, NACK, PING, PONG, SUBSCRIBE, etc.
|
|
197
|
+
|
|
198
|
+
**Addressing**: Agent names directly, `*` for broadcast, topics for pub/sub.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 5. Agent Lifecycle
|
|
203
|
+
|
|
204
|
+
### Gastown: Managed Agents
|
|
205
|
+
|
|
206
|
+
**Polecats** (ephemeral workers):
|
|
207
|
+
- Spawned by Witness when work appears
|
|
208
|
+
- Each gets own git worktree
|
|
209
|
+
- Automatically cleaned up when done
|
|
210
|
+
- Supervised for stuck/failed states
|
|
211
|
+
|
|
212
|
+
**Crew** (persistent workers):
|
|
213
|
+
- User-managed Claude instances
|
|
214
|
+
- Long-lived for exploratory work
|
|
215
|
+
- Own personal repository clones
|
|
216
|
+
|
|
217
|
+
**Full Stack Mode** with daemon:
|
|
218
|
+
- `gt start` launches supervision
|
|
219
|
+
- Automatic spawning based on work queue
|
|
220
|
+
- Health monitoring and escalation
|
|
221
|
+
|
|
222
|
+
### Agent Relay: Wrapped Agents
|
|
223
|
+
|
|
224
|
+
**TmuxWrapper** wraps any CLI:
|
|
225
|
+
- User starts agents manually
|
|
226
|
+
- Wrapper provides messaging layer
|
|
227
|
+
- Agent lifecycle is user's responsibility
|
|
228
|
+
|
|
229
|
+
**Bridge Mode** for orchestration:
|
|
230
|
+
- Architect agent coordinates multiple projects
|
|
231
|
+
- Can spawn/release workers
|
|
232
|
+
- But spawning is delegated, not managed
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 6. Cross-Project Coordination
|
|
237
|
+
|
|
238
|
+
### Gastown: Federation
|
|
239
|
+
|
|
240
|
+
**HOP Protocol** for distributed references:
|
|
241
|
+
```
|
|
242
|
+
hop://entity/chain/rig/issue-id
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Three-level entity model**:
|
|
246
|
+
1. Entities (persons/organizations)
|
|
247
|
+
2. Chains (workspaces per entity)
|
|
248
|
+
3. Work units (issues, tasks)
|
|
249
|
+
|
|
250
|
+
**Features**:
|
|
251
|
+
- Cross-workspace queries
|
|
252
|
+
- Agent provenance via git metadata
|
|
253
|
+
- Aggregation across relationships
|
|
254
|
+
- "Monorepo-like visibility" with autonomy
|
|
255
|
+
|
|
256
|
+
### Agent Relay: Bridge Mode
|
|
257
|
+
|
|
258
|
+
**MultiProjectClient** connects multiple daemons:
|
|
259
|
+
```typescript
|
|
260
|
+
// Connect to project daemons via Unix sockets
|
|
261
|
+
agent-relay bridge ~/auth ~/frontend ~/api
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Addressing**:
|
|
265
|
+
```
|
|
266
|
+
->relay:projectId:agent # Specific agent in project
|
|
267
|
+
->relay:*:lead # All project leads
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Features**:
|
|
271
|
+
- Architect agent perspective
|
|
272
|
+
- Cross-project broadcasts
|
|
273
|
+
- Spawn/release workers
|
|
274
|
+
- But simpler than federation
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 7. Pros & Cons
|
|
279
|
+
|
|
280
|
+
### Gastown
|
|
281
|
+
|
|
282
|
+
**Pros**:
|
|
283
|
+
1. **Crash-resistant** - Work persists on hooks, survives restarts
|
|
284
|
+
2. **Reproducible workflows** - Formulas define exact steps
|
|
285
|
+
3. **Git-integrated** - Full audit trail, provenance tracking
|
|
286
|
+
4. **Sophisticated scaling** - Designed for 20-30 agents comfortably
|
|
287
|
+
5. **Merge queue** - Built-in code integration workflow
|
|
288
|
+
6. **Federation** - True distributed coordination
|
|
289
|
+
|
|
290
|
+
**Cons**:
|
|
291
|
+
1. **Complexity** - 38 packages, steep learning curve
|
|
292
|
+
2. **Go-only** - Harder to extend for Node.js projects
|
|
293
|
+
3. **Opinionated** - Requires adopting Beads for issue tracking
|
|
294
|
+
4. **Setup overhead** - More infrastructure to run
|
|
295
|
+
|
|
296
|
+
### Agent Relay
|
|
297
|
+
|
|
298
|
+
**Pros**:
|
|
299
|
+
1. **Simplicity** - 6 layers, easy to understand
|
|
300
|
+
2. **Universal** - Works with any CLI agent unmodified
|
|
301
|
+
3. **Transparent** - Users see all communication
|
|
302
|
+
4. **TypeScript** - Easy to extend for web projects
|
|
303
|
+
5. **Low overhead** - Just messaging, minimal infrastructure
|
|
304
|
+
6. **Dashboard** - Built-in real-time monitoring UI
|
|
305
|
+
|
|
306
|
+
**Cons**:
|
|
307
|
+
1. **No workflow system** - Pure messaging, no task orchestration
|
|
308
|
+
2. **Ephemeral by default** - Work state not persistent
|
|
309
|
+
3. **Fragile parsing** - Output parsing can miss messages
|
|
310
|
+
4. **No merge queue** - Code integration is external
|
|
311
|
+
5. **Simple scaling** - Less sophisticated than Gastown
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 8. Key Learnings for Relay
|
|
316
|
+
|
|
317
|
+
### Ideas to Adopt
|
|
318
|
+
|
|
319
|
+
1. **Propulsion Principle**
|
|
320
|
+
- Agents should act immediately on received work
|
|
321
|
+
- Don't wait for confirmation if work is clearly assigned
|
|
322
|
+
- Could add `ack_required` flag for critical messages
|
|
323
|
+
|
|
324
|
+
2. **Persistent Work Hooks**
|
|
325
|
+
- Consider file-based "hook" per agent that survives restarts
|
|
326
|
+
- Agent checks hook on startup, continues pending work
|
|
327
|
+
- Already have inbox files—could extend to work assignments
|
|
328
|
+
|
|
329
|
+
3. **Formulas/Workflows**
|
|
330
|
+
- Could add simple TOML/YAML workflow definitions
|
|
331
|
+
- Multi-step task templates with dependency tracking
|
|
332
|
+
- Not as complex as molecules, but structured
|
|
333
|
+
|
|
334
|
+
4. **Git Integration for Provenance**
|
|
335
|
+
- Track agent actions in git metadata
|
|
336
|
+
- `GIT_AUTHOR_NAME="relay/Alice"` for attribution
|
|
337
|
+
- Audit trail for who did what
|
|
338
|
+
|
|
339
|
+
5. **Health Monitoring**
|
|
340
|
+
- Heartbeat escalation like WITNESS_PING
|
|
341
|
+
- Auto-detect stuck agents
|
|
342
|
+
- Surface to dashboard with alerts
|
|
343
|
+
|
|
344
|
+
6. **Merge Queue Concept**
|
|
345
|
+
- Not necessarily a full refinery
|
|
346
|
+
- But workflow for "work complete, ready for integration"
|
|
347
|
+
- Could trigger CI/CD or human review
|
|
348
|
+
|
|
349
|
+
### Ideas to Evaluate
|
|
350
|
+
|
|
351
|
+
1. **Beads Integration**
|
|
352
|
+
- Relay already mentions Beads compatibility
|
|
353
|
+
- Could formalize the integration
|
|
354
|
+
- Use Beads as task queue, Relay as communication
|
|
355
|
+
|
|
356
|
+
2. **Federation Model**
|
|
357
|
+
- HOP-style URIs could standardize cross-project addressing
|
|
358
|
+
- More discoverable than current bridge mode
|
|
359
|
+
- But adds complexity
|
|
360
|
+
|
|
361
|
+
3. **Worker Types (Polecat vs Crew)**
|
|
362
|
+
- Distinguish ephemeral workers from persistent leads
|
|
363
|
+
- Different lifecycle management
|
|
364
|
+
- Could improve spawn/release semantics
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 9. Architectural Recommendations
|
|
369
|
+
|
|
370
|
+
### Short-term Improvements
|
|
371
|
+
|
|
372
|
+
1. **Add Work Persistence Layer**
|
|
373
|
+
```typescript
|
|
374
|
+
// Agent hook file that survives restarts
|
|
375
|
+
interface AgentHook {
|
|
376
|
+
agentName: string;
|
|
377
|
+
pendingWork: WorkItem[];
|
|
378
|
+
lastCheckpoint: number;
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
2. **Implement Activity Escalation**
|
|
383
|
+
- If agent idle for X minutes with pending work → alert
|
|
384
|
+
- Dashboard shows "stuck" indicator
|
|
385
|
+
- Optional auto-notification to leads
|
|
386
|
+
|
|
387
|
+
3. **Structured Message Types**
|
|
388
|
+
- Add message kinds beyond generic `message`
|
|
389
|
+
- `TASK_ASSIGNED`, `WORK_COMPLETE`, `BLOCKED`, `HELP_NEEDED`
|
|
390
|
+
- Enables workflow-aware routing
|
|
391
|
+
|
|
392
|
+
### Medium-term Improvements
|
|
393
|
+
|
|
394
|
+
1. **Simple Workflow Templates**
|
|
395
|
+
```yaml
|
|
396
|
+
# .relay/workflows/review.yaml
|
|
397
|
+
name: code-review
|
|
398
|
+
steps:
|
|
399
|
+
- assignee: Reviewer
|
|
400
|
+
action: review_code
|
|
401
|
+
on_complete: merge
|
|
402
|
+
- assignee: Lead
|
|
403
|
+
action: approve_merge
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
2. **Beads Integration Mode**
|
|
407
|
+
- Read tasks from `.beads/beads.jsonl`
|
|
408
|
+
- Update status via relay messages
|
|
409
|
+
- Single source of truth for work
|
|
410
|
+
|
|
411
|
+
3. **Federation Lite**
|
|
412
|
+
- Standardized project discovery
|
|
413
|
+
- Cross-project agent registry
|
|
414
|
+
- Simpler than HOP but interoperable
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## 10. Conclusion
|
|
419
|
+
|
|
420
|
+
Gastown and Agent Relay solve the multi-agent coordination problem from different angles:
|
|
421
|
+
|
|
422
|
+
- **Gastown** is a **work orchestration system** that happens to include messaging
|
|
423
|
+
- **Agent Relay** is a **messaging system** that enables coordination
|
|
424
|
+
|
|
425
|
+
Both are valid approaches. The right choice depends on:
|
|
426
|
+
|
|
427
|
+
| If you need... | Choose... |
|
|
428
|
+
|----------------|-----------|
|
|
429
|
+
| Reproducible workflows | Gastown |
|
|
430
|
+
| Any-CLI compatibility | Agent Relay |
|
|
431
|
+
| Git-backed audit trail | Gastown |
|
|
432
|
+
| Quick prototyping | Agent Relay |
|
|
433
|
+
| Automatic agent lifecycle | Gastown |
|
|
434
|
+
| Minimal infrastructure | Agent Relay |
|
|
435
|
+
| Multi-org federation | Gastown |
|
|
436
|
+
| Real-time dashboard | Agent Relay |
|
|
437
|
+
|
|
438
|
+
**For Agent Relay specifically**, the key learnings are:
|
|
439
|
+
|
|
440
|
+
1. **Add work persistence** - Don't lose assignments on restart
|
|
441
|
+
2. **Consider workflow templates** - Simple YAML for multi-step tasks
|
|
442
|
+
3. **Improve escalation** - Detect and surface stuck agents
|
|
443
|
+
4. **Standardize message types** - Enable workflow-aware behavior
|
|
444
|
+
5. **Explore Beads integration** - Leverage existing task tracking
|
|
445
|
+
|
|
446
|
+
The systems could potentially be complementary: use Gastown for work orchestration and Relay for real-time communication between agents managed by Gas Town.
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
*Analysis generated 2026-01-02*
|
|
451
|
+
*Based on Gastown repository (github.com/steveyegge/gastown) and Agent Relay source code*
|
|
@@ -19,6 +19,7 @@ This analysis evaluates 16 multi-agent orchestration tools against agent-relay.
|
|
|
19
19
|
| Tool | API Key? | Communication Type | Mechanism | Real-time? | Memory |
|
|
20
20
|
|------|----------|-------------------|-----------|------------|--------|
|
|
21
21
|
| **agent-relay** | No | Direct P2P | Unix socket | Yes | SQLite (pluggable) |
|
|
22
|
+
| Tmux-Orchestrator | No | Hierarchical | tmux send-keys | No (~500ms) | Git commits |
|
|
22
23
|
| Multiagent Chat | No | File + PTY push | Outbox → PTY write | Partial | JSONL chat log |
|
|
23
24
|
| AI Maestro | No (OAuth) | File + WebSocket | File-based queues | Partial | Built-in (code graph) |
|
|
24
25
|
| Toad | Yes | Protocol-based | ACP/A2A protocol | No | Minimal |
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Competitive Analysis
|
|
2
|
+
|
|
3
|
+
Architectural comparisons with alternative multi-agent coordination systems.
|
|
4
|
+
|
|
5
|
+
## Documents
|
|
6
|
+
|
|
7
|
+
| File | System | Focus |
|
|
8
|
+
|------|--------|-------|
|
|
9
|
+
| [OVERVIEW.md](./OVERVIEW.md) | Multiple | General landscape of agent orchestration tools |
|
|
10
|
+
| [GASTOWN.md](./GASTOWN.md) | Gastown | Deep dive into work-centric orchestration vs Relay's messaging approach |
|
|
11
|
+
| [MCP_AGENT_MAIL.md](./MCP_AGENT_MAIL.md) | MCP Agent Mail | Analysis of MCP-based agent communication |
|
|
12
|
+
| [TMUX_ORCHESTRATOR.md](./TMUX_ORCHESTRATOR.md) | Tmux-Orchestrator | Autonomous 24/7 agents with shell-based coordination |
|
|
13
|
+
|
|
14
|
+
## Key Differentiators
|
|
15
|
+
|
|
16
|
+
**Agent Relay's Position**: Communication-first, universal compatibility
|
|
17
|
+
|
|
18
|
+
| Feature | Agent Relay | Gastown | MCP Agent Mail | Tmux-Orchestrator |
|
|
19
|
+
|---------|-------------|---------|----------------|-------------------|
|
|
20
|
+
| Core model | Real-time messaging | Work orchestration | MCP tools | Autonomous scheduling |
|
|
21
|
+
| Agent compatibility | Any CLI | Claude Code only | MCP-capable | Claude Code |
|
|
22
|
+
| State persistence | Ephemeral + SQLite | Git-backed (Beads) | Varies | Git commits |
|
|
23
|
+
| Injection method | tmux/pty | tmux | MCP protocol | tmux send-keys |
|
|
24
|
+
| Learning curve | Low | High | Medium | Low |
|
|
25
|
+
|
|
26
|
+
## Takeaways Applied
|
|
27
|
+
|
|
28
|
+
From these analyses, we've implemented:
|
|
29
|
+
|
|
30
|
+
1. **Injection hardening** (from Gastown) - Verification + retry in PtyWrapper
|
|
31
|
+
2. **Stuck agent detection** (bead: agent-relay-gst1) - Dashboard monitoring
|
|
32
|
+
3. **Message delivery visibility** (bead: agent-relay-gst2) - ACK status in UI
|
|
33
|
+
|
|
34
|
+
See `.beads/issues.jsonl` for implementation tasks.
|