agent-relay 1.1.0 → 1.2.3
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/.gitattributes +3 -0
- package/.nvmrc +1 -0
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
- package/.trajectories/index.json +314 -0
- package/ARCHITECTURE.md +1245 -0
- package/README.md +1 -1
- package/TESTING.md +278 -0
- package/deploy/init-db.sql +5 -0
- package/deploy/scripts/setup-fly-workspaces.sh +69 -0
- package/deploy/scripts/setup-railway.sh +75 -0
- package/deploy/workspace/entrypoint-browser.sh +118 -0
- package/deploy/workspace/entrypoint.sh +348 -0
- package/deploy/workspace/git-credential-relay +111 -0
- package/dist/bridge/spawner.d.ts +53 -0
- package/dist/bridge/spawner.js +203 -19
- package/dist/bridge/types.d.ts +12 -0
- package/dist/cli/index.js +618 -5
- package/dist/cloud/api/auth.d.ts +3 -2
- package/dist/cloud/api/auth.js +10 -98
- package/dist/cloud/api/billing.js +30 -9
- package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
- package/dist/cloud/api/cli-pty-runner.js +119 -0
- package/dist/cloud/api/codex-auth-helper.d.ts +15 -0
- package/dist/cloud/api/codex-auth-helper.js +100 -0
- package/dist/cloud/api/generic-webhooks.d.ts +8 -0
- package/dist/cloud/api/generic-webhooks.js +129 -0
- package/dist/cloud/api/git.d.ts +8 -0
- package/dist/cloud/api/git.js +152 -0
- package/dist/cloud/api/github-app.d.ts +11 -0
- package/dist/cloud/api/github-app.js +189 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
- package/dist/cloud/api/middleware/planLimits.js +39 -1
- package/dist/cloud/api/monitoring.d.ts +11 -0
- package/dist/cloud/api/monitoring.js +578 -0
- package/dist/cloud/api/nango-auth.d.ts +9 -0
- package/dist/cloud/api/nango-auth.js +377 -0
- package/dist/cloud/api/onboarding.d.ts +8 -1
- package/dist/cloud/api/onboarding.js +313 -119
- package/dist/cloud/api/policy.d.ts +8 -0
- package/dist/cloud/api/policy.js +229 -0
- package/dist/cloud/api/providers.js +114 -42
- package/dist/cloud/api/repos.d.ts +1 -0
- package/dist/cloud/api/repos.js +186 -0
- package/dist/cloud/api/test-helpers.d.ts +10 -0
- package/dist/cloud/api/test-helpers.js +575 -0
- package/dist/cloud/api/webhooks.d.ts +8 -0
- package/dist/cloud/api/webhooks.js +645 -0
- package/dist/cloud/api/workspaces.js +320 -12
- package/dist/cloud/billing/plans.js +32 -19
- package/dist/cloud/billing/types.d.ts +9 -3
- package/dist/cloud/config.d.ts +9 -2
- package/dist/cloud/config.js +13 -4
- package/dist/cloud/db/drizzle.d.ts +84 -1
- package/dist/cloud/db/drizzle.js +470 -0
- package/dist/cloud/db/index.d.ts +9 -4
- package/dist/cloud/db/index.js +11 -3
- package/dist/cloud/db/schema.d.ts +3283 -556
- package/dist/cloud/db/schema.js +314 -1
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.js +2 -0
- package/dist/cloud/provisioner/index.d.ts +56 -0
- package/dist/cloud/provisioner/index.js +676 -34
- package/dist/cloud/server.d.ts +1 -0
- package/dist/cloud/server.js +362 -13
- package/dist/cloud/services/auto-scaler.d.ts +152 -0
- package/dist/cloud/services/auto-scaler.js +439 -0
- package/dist/cloud/services/capacity-manager.d.ts +148 -0
- package/dist/cloud/services/capacity-manager.js +449 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
- package/dist/cloud/services/ci-agent-spawner.js +373 -0
- package/dist/cloud/services/index.d.ts +12 -0
- package/dist/cloud/services/index.js +15 -0
- package/dist/cloud/services/mention-handler.d.ts +65 -0
- package/dist/cloud/services/mention-handler.js +405 -0
- package/dist/cloud/services/nango.d.ts +186 -0
- package/dist/cloud/services/nango.js +344 -0
- package/dist/cloud/services/persistence.d.ts +131 -0
- package/dist/cloud/services/persistence.js +200 -0
- package/dist/cloud/services/planLimits.d.ts +37 -0
- package/dist/cloud/services/planLimits.js +86 -5
- package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
- package/dist/cloud/services/scaling-orchestrator.js +502 -0
- package/dist/cloud/services/scaling-policy.d.ts +121 -0
- package/dist/cloud/services/scaling-policy.js +415 -0
- package/dist/cloud/vault/index.js +1 -1
- package/dist/cloud/webhooks/index.d.ts +24 -0
- package/dist/cloud/webhooks/index.js +29 -0
- package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
- package/dist/cloud/webhooks/parsers/github.js +234 -0
- package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
- package/dist/cloud/webhooks/parsers/index.js +30 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/linear.js +258 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/slack.js +214 -0
- package/dist/cloud/webhooks/responders/github.d.ts +8 -0
- package/dist/cloud/webhooks/responders/github.js +73 -0
- package/dist/cloud/webhooks/responders/index.d.ts +23 -0
- package/dist/cloud/webhooks/responders/index.js +30 -0
- package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
- package/dist/cloud/webhooks/responders/linear.js +149 -0
- package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
- package/dist/cloud/webhooks/responders/slack.js +178 -0
- package/dist/cloud/webhooks/router.d.ts +25 -0
- package/dist/cloud/webhooks/router.js +504 -0
- package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
- package/dist/cloud/webhooks/rules-engine.js +287 -0
- package/dist/cloud/webhooks/types.d.ts +186 -0
- package/dist/cloud/webhooks/types.js +8 -0
- package/dist/continuity/formatter.d.ts +51 -0
- package/dist/continuity/formatter.js +313 -0
- package/dist/continuity/handoff-store.d.ts +67 -0
- package/dist/continuity/handoff-store.js +472 -0
- package/dist/continuity/index.d.ts +45 -0
- package/dist/continuity/index.js +48 -0
- package/dist/continuity/ledger-store.d.ts +110 -0
- package/dist/continuity/ledger-store.js +500 -0
- package/dist/continuity/manager.d.ts +178 -0
- package/dist/continuity/manager.js +562 -0
- package/dist/continuity/parser.d.ts +76 -0
- package/dist/continuity/parser.js +579 -0
- package/dist/continuity/types.d.ts +180 -0
- package/dist/continuity/types.js +9 -0
- package/dist/daemon/agent-manager.d.ts +27 -0
- package/dist/daemon/agent-manager.js +107 -6
- package/dist/daemon/agent-registry.d.ts +32 -0
- package/dist/daemon/agent-registry.js +42 -2
- package/dist/daemon/api.d.ts +12 -0
- package/dist/daemon/api.js +131 -2
- package/dist/daemon/cli-auth.d.ts +67 -0
- package/dist/daemon/cli-auth.js +537 -0
- package/dist/daemon/cloud-sync.js +9 -7
- package/dist/daemon/orchestrator.js +30 -0
- package/dist/daemon/router.d.ts +5 -0
- package/dist/daemon/router.js +78 -26
- package/dist/daemon/server.d.ts +5 -0
- package/dist/daemon/server.js +9 -1
- package/dist/daemon/services/browser-testing.d.ts +88 -0
- package/dist/daemon/services/browser-testing.js +244 -0
- package/dist/daemon/services/container-spawner.d.ts +135 -0
- package/dist/daemon/services/container-spawner.js +313 -0
- package/dist/daemon/types.d.ts +5 -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/699-3b1cd6618a45d259.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +9 -0
- package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/{page-b6edd4dde8d08194.js → page-abb9ab2d329f56e9.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/login/page-c22d080201cbd9fb.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-77e9c65420a06cfb.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/signup/page-68d34f50baa8ab6b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
- package/dist/dashboard/out/_next/static/chunks/{main-app-5d692157a8eb1fd9.js → main-app-6e8e8d3ef4e0192a.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/{main-c2f423b9c9f4591b.js → main-ed4e1fb6f29c34cf.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/7c3ae9e8617d42a5.css +1 -0
- package/dist/dashboard/out/app/onboarding.html +1 -0
- package/dist/dashboard/out/app/onboarding.txt +7 -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 +3 -3
- 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.js +1308 -8
- package/dist/hooks/emitter.d.ts +40 -0
- package/dist/hooks/emitter.js +63 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/registry.d.ts +173 -0
- package/dist/hooks/registry.js +476 -0
- package/dist/hooks/trajectory-hooks.d.ts +52 -0
- package/dist/hooks/trajectory-hooks.js +183 -0
- package/dist/hooks/types.d.ts +141 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/memory/adapters/index.d.ts +8 -0
- package/dist/memory/adapters/index.js +8 -0
- package/dist/memory/adapters/inmemory.d.ts +59 -0
- package/dist/memory/adapters/inmemory.js +195 -0
- package/dist/memory/adapters/supermemory.d.ts +71 -0
- package/dist/memory/adapters/supermemory.js +338 -0
- package/dist/memory/factory.d.ts +48 -0
- package/dist/memory/factory.js +143 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.js +32 -0
- package/dist/memory/memory-hooks.d.ts +60 -0
- package/dist/memory/memory-hooks.js +313 -0
- package/dist/memory/service.d.ts +49 -0
- package/dist/memory/service.js +146 -0
- package/dist/memory/types.d.ts +195 -0
- package/dist/memory/types.js +8 -0
- package/dist/policy/agent-policy.d.ts +225 -0
- package/dist/policy/agent-policy.js +665 -0
- package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
- package/dist/policy/cloud-policy-fetcher.js +64 -0
- package/dist/resiliency/crash-insights.d.ts +156 -0
- package/dist/resiliency/crash-insights.js +492 -0
- package/dist/resiliency/gossip-health.d.ts +137 -0
- package/dist/resiliency/gossip-health.js +241 -0
- package/dist/resiliency/index.d.ts +5 -0
- package/dist/resiliency/index.js +5 -0
- package/dist/resiliency/leader-watchdog.d.ts +109 -0
- package/dist/resiliency/leader-watchdog.js +189 -0
- package/dist/resiliency/memory-monitor.d.ts +172 -0
- package/dist/resiliency/memory-monitor.js +593 -0
- package/dist/resiliency/stateless-lead.d.ts +149 -0
- package/dist/resiliency/stateless-lead.js +308 -0
- package/dist/resiliency/supervisor.d.ts +38 -0
- package/dist/resiliency/supervisor.js +122 -0
- package/dist/shared/cli-auth-config.d.ts +91 -0
- package/dist/shared/cli-auth-config.js +264 -0
- package/dist/storage/adapter.d.ts +1 -1
- package/dist/trajectory/config.d.ts +84 -0
- package/dist/trajectory/config.js +163 -0
- package/dist/trajectory/index.d.ts +8 -0
- package/dist/trajectory/index.js +8 -0
- package/dist/trajectory/integration.d.ts +292 -0
- package/dist/trajectory/integration.js +834 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/project-namespace.d.ts +24 -0
- package/dist/utils/project-namespace.js +84 -0
- package/dist/wrapper/parser.d.ts +10 -0
- package/dist/wrapper/parser.js +100 -33
- package/dist/wrapper/pty-wrapper.d.ts +197 -16
- package/dist/wrapper/pty-wrapper.js +943 -106
- package/dist/wrapper/shared.d.ts +165 -0
- package/dist/wrapper/shared.js +270 -0
- package/dist/wrapper/tmux-wrapper.d.ts +73 -11
- package/dist/wrapper/tmux-wrapper.js +541 -120
- package/package.json +16 -16
- package/scripts/postinstall.js +60 -0
- package/test-push.txt +1 -0
- package/bin/tmux +0 -0
- package/dist/bridge/config.d.ts.map +0 -1
- package/dist/bridge/config.js.map +0 -1
- package/dist/bridge/index.d.ts.map +0 -1
- package/dist/bridge/index.js.map +0 -1
- package/dist/bridge/multi-project-client.d.ts.map +0 -1
- package/dist/bridge/multi-project-client.js.map +0 -1
- package/dist/bridge/shadow-cli.d.ts.map +0 -1
- package/dist/bridge/shadow-cli.js.map +0 -1
- package/dist/bridge/shadow-config.d.ts.map +0 -1
- package/dist/bridge/shadow-config.js.map +0 -1
- package/dist/bridge/spawner.d.ts.map +0 -1
- package/dist/bridge/spawner.js.map +0 -1
- package/dist/bridge/teams-config.d.ts.map +0 -1
- package/dist/bridge/teams-config.js.map +0 -1
- package/dist/bridge/types.d.ts.map +0 -1
- package/dist/bridge/types.js.map +0 -1
- package/dist/bridge/utils.d.ts.map +0 -1
- package/dist/bridge/utils.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cloud/api/auth.d.ts.map +0 -1
- package/dist/cloud/api/auth.js.map +0 -1
- package/dist/cloud/api/billing.d.ts.map +0 -1
- package/dist/cloud/api/billing.js.map +0 -1
- package/dist/cloud/api/coordinators.d.ts.map +0 -1
- package/dist/cloud/api/coordinators.js.map +0 -1
- package/dist/cloud/api/daemons.d.ts.map +0 -1
- package/dist/cloud/api/daemons.js.map +0 -1
- package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
- package/dist/cloud/api/middleware/planLimits.js.map +0 -1
- package/dist/cloud/api/onboarding.d.ts.map +0 -1
- package/dist/cloud/api/onboarding.js.map +0 -1
- package/dist/cloud/api/providers.d.ts.map +0 -1
- package/dist/cloud/api/providers.js.map +0 -1
- package/dist/cloud/api/repos.d.ts.map +0 -1
- package/dist/cloud/api/repos.js.map +0 -1
- package/dist/cloud/api/teams.d.ts.map +0 -1
- package/dist/cloud/api/teams.js.map +0 -1
- package/dist/cloud/api/usage.d.ts.map +0 -1
- package/dist/cloud/api/usage.js.map +0 -1
- package/dist/cloud/api/workspaces.d.ts.map +0 -1
- package/dist/cloud/api/workspaces.js.map +0 -1
- package/dist/cloud/billing/index.d.ts.map +0 -1
- package/dist/cloud/billing/index.js.map +0 -1
- package/dist/cloud/billing/plans.d.ts.map +0 -1
- package/dist/cloud/billing/plans.js.map +0 -1
- package/dist/cloud/billing/service.d.ts.map +0 -1
- package/dist/cloud/billing/service.js.map +0 -1
- package/dist/cloud/billing/types.d.ts.map +0 -1
- package/dist/cloud/billing/types.js.map +0 -1
- package/dist/cloud/config.d.ts.map +0 -1
- package/dist/cloud/config.js.map +0 -1
- package/dist/cloud/db/drizzle.d.ts.map +0 -1
- package/dist/cloud/db/drizzle.js.map +0 -1
- package/dist/cloud/db/index.d.ts.map +0 -1
- package/dist/cloud/db/index.js.map +0 -1
- package/dist/cloud/db/schema.d.ts.map +0 -1
- package/dist/cloud/db/schema.js.map +0 -1
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js.map +0 -1
- package/dist/cloud/provisioner/index.d.ts.map +0 -1
- package/dist/cloud/provisioner/index.js.map +0 -1
- package/dist/cloud/server.d.ts.map +0 -1
- package/dist/cloud/server.js.map +0 -1
- package/dist/cloud/services/coordinator.d.ts.map +0 -1
- package/dist/cloud/services/coordinator.js.map +0 -1
- package/dist/cloud/services/planLimits.d.ts.map +0 -1
- package/dist/cloud/services/planLimits.js.map +0 -1
- package/dist/cloud/vault/index.d.ts.map +0 -1
- package/dist/cloud/vault/index.js.map +0 -1
- package/dist/daemon/agent-manager.d.ts.map +0 -1
- package/dist/daemon/agent-manager.js.map +0 -1
- package/dist/daemon/agent-registry.d.ts.map +0 -1
- package/dist/daemon/agent-registry.js.map +0 -1
- package/dist/daemon/api.d.ts.map +0 -1
- package/dist/daemon/api.js.map +0 -1
- package/dist/daemon/auth.d.ts.map +0 -1
- package/dist/daemon/auth.js.map +0 -1
- package/dist/daemon/cloud-sync.d.ts.map +0 -1
- package/dist/daemon/cloud-sync.js.map +0 -1
- package/dist/daemon/connection.d.ts.map +0 -1
- package/dist/daemon/connection.js.map +0 -1
- package/dist/daemon/index.d.ts.map +0 -1
- package/dist/daemon/index.js.map +0 -1
- package/dist/daemon/orchestrator.d.ts.map +0 -1
- package/dist/daemon/orchestrator.js.map +0 -1
- package/dist/daemon/registry.d.ts.map +0 -1
- package/dist/daemon/registry.js.map +0 -1
- package/dist/daemon/router.d.ts.map +0 -1
- package/dist/daemon/router.js.map +0 -1
- package/dist/daemon/server.d.ts.map +0 -1
- package/dist/daemon/server.js.map +0 -1
- package/dist/daemon/types.d.ts.map +0 -1
- package/dist/daemon/types.js.map +0 -1
- package/dist/daemon/workspace-manager.d.ts.map +0 -1
- package/dist/daemon/workspace-manager.js.map +0 -1
- 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/layout-2433bb48965f4333.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/app/pricing/page-d80e03a5297f95b6.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-server/metrics.d.ts.map +0 -1
- package/dist/dashboard-server/metrics.js.map +0 -1
- package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
- package/dist/dashboard-server/needs-attention.js.map +0 -1
- package/dist/dashboard-server/server.d.ts.map +0 -1
- package/dist/dashboard-server/server.js.map +0 -1
- package/dist/dashboard-server/start.d.ts.map +0 -1
- package/dist/dashboard-server/start.js.map +0 -1
- package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
- package/dist/hooks/inbox-check/hook.js.map +0 -1
- package/dist/hooks/inbox-check/index.d.ts.map +0 -1
- package/dist/hooks/inbox-check/index.js.map +0 -1
- package/dist/hooks/inbox-check/types.d.ts.map +0 -1
- package/dist/hooks/inbox-check/types.js.map +0 -1
- package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
- package/dist/hooks/inbox-check/utils.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/protocol/framing.d.ts.map +0 -1
- package/dist/protocol/framing.js.map +0 -1
- package/dist/protocol/index.d.ts.map +0 -1
- package/dist/protocol/index.js.map +0 -1
- package/dist/protocol/types.d.ts.map +0 -1
- package/dist/protocol/types.js.map +0 -1
- package/dist/resiliency/context-persistence.d.ts.map +0 -1
- package/dist/resiliency/context-persistence.js.map +0 -1
- package/dist/resiliency/health-monitor.d.ts.map +0 -1
- package/dist/resiliency/health-monitor.js.map +0 -1
- package/dist/resiliency/index.d.ts.map +0 -1
- package/dist/resiliency/index.js.map +0 -1
- package/dist/resiliency/logger.d.ts.map +0 -1
- package/dist/resiliency/logger.js.map +0 -1
- package/dist/resiliency/metrics.d.ts.map +0 -1
- package/dist/resiliency/metrics.js.map +0 -1
- package/dist/resiliency/provider-context.d.ts.map +0 -1
- package/dist/resiliency/provider-context.js.map +0 -1
- package/dist/resiliency/supervisor.d.ts.map +0 -1
- package/dist/resiliency/supervisor.js.map +0 -1
- package/dist/state/agent-state.d.ts.map +0 -1
- package/dist/state/agent-state.js.map +0 -1
- package/dist/storage/adapter.d.ts.map +0 -1
- package/dist/storage/adapter.js.map +0 -1
- package/dist/storage/sqlite-adapter.d.ts.map +0 -1
- package/dist/storage/sqlite-adapter.js.map +0 -1
- package/dist/utils/agent-config.d.ts.map +0 -1
- package/dist/utils/agent-config.js.map +0 -1
- package/dist/utils/command-resolver.d.ts.map +0 -1
- package/dist/utils/command-resolver.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/name-generator.d.ts.map +0 -1
- package/dist/utils/name-generator.js.map +0 -1
- package/dist/utils/project-namespace.d.ts.map +0 -1
- package/dist/utils/project-namespace.js.map +0 -1
- package/dist/utils/tmux-resolver.d.ts.map +0 -1
- package/dist/utils/tmux-resolver.js.map +0 -1
- package/dist/utils/update-checker.d.ts.map +0 -1
- package/dist/utils/update-checker.js.map +0 -1
- package/dist/wrapper/client.d.ts.map +0 -1
- package/dist/wrapper/client.js.map +0 -1
- package/dist/wrapper/inbox.d.ts.map +0 -1
- package/dist/wrapper/inbox.js.map +0 -1
- package/dist/wrapper/index.d.ts.map +0 -1
- package/dist/wrapper/index.js.map +0 -1
- package/dist/wrapper/parser.d.ts.map +0 -1
- package/dist/wrapper/parser.js.map +0 -1
- package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
- package/dist/wrapper/pty-wrapper.js.map +0 -1
- package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
- package/dist/wrapper/tmux-wrapper.js.map +0 -1
- package/docs/AGENTS.md +0 -513
- package/docs/ARCHITECTURE_DECISIONS.md +0 -175
- package/docs/CHANGELOG.md +0 -11
- package/docs/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
- package/docs/CLOUD-ARCHITECTURE.md +0 -652
- package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
- package/docs/COMPETITIVE_ANALYSIS.md +0 -897
- package/docs/CONTRIBUTING.md +0 -151
- package/docs/DESIGN_BRIDGE_STAFFING.md +0 -878
- package/docs/DESIGN_V2.md +0 -1079
- package/docs/INTEGRATION-GUIDE.md +0 -926
- package/docs/MONETIZATION.md +0 -1679
- package/docs/PROPOSAL-trajectories.md +0 -1582
- package/docs/PROTOCOL.md +0 -325
- package/docs/SCALING_ANALYSIS.md +0 -280
- package/docs/TESTING_PRESENCE_FEATURES.md +0 -327
- package/docs/TMUX_IMPLEMENTATION_NOTES.md +0 -364
- package/docs/TMUX_IMPROVEMENTS.md +0 -968
- package/docs/agent-relay-snippet.md +0 -168
- package/docs/competitive-analysis-mcp-agent-mail.md +0 -389
- package/docs/dashboard-v2-plan.md +0 -179
- package/docs/guides/CLOUD.md +0 -236
- package/docs/guides/LOCAL.md +0 -535
- package/docs/guides/SELF-HOSTED.md +0 -494
- package/docs/proposals/shadow-as-subagent.md +0 -765
- package/docs/proposals/slack-bot-integration.md +0 -1457
- package/docs/removable-code-analysis.md +0 -24
- package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
- package/scripts/dev/dev-team-setup.sh +0 -431
- package/scripts/e2e-test.sh +0 -119
- package/scripts/games/game-protocol.md +0 -79
- package/scripts/games/hearts-setup.sh +0 -264
- package/scripts/tictactoe-setup.sh +0 -181
- /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-f7b8ab0809342e77.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-5cc6e1921389a58a.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js → page-53b8a69f76db17d0.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_ssgManifest.js +0 -0
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
# Agent Relay
|
|
2
|
-
|
|
3
|
-
Real-time agent-to-agent messaging. Output `->relay:` patterns to communicate.
|
|
4
|
-
|
|
5
|
-
## Sending Messages
|
|
6
|
-
|
|
7
|
-
**Always use the fenced format** for reliable message delivery:
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
->relay:AgentName <<<
|
|
11
|
-
Your message here.>>>
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
->relay:* <<<
|
|
16
|
-
Broadcast to all agents.>>>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
**CRITICAL:** Always close multi-line messages with `>>>` on its own line!
|
|
20
|
-
|
|
21
|
-
## Communication Protocol
|
|
22
|
-
|
|
23
|
-
**ACK immediately** - When you receive a task, acknowledge it before starting work:
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
->relay:Sender <<<
|
|
27
|
-
ACK: Brief description of task received>>>
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Then proceed with your work. This confirms message delivery and lets the sender know you're on it.
|
|
31
|
-
|
|
32
|
-
**Report completion** - When done, send a completion message:
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
->relay:Sender <<<
|
|
36
|
-
DONE: Brief summary of what was completed>>>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Receiving Messages
|
|
40
|
-
|
|
41
|
-
Messages appear as:
|
|
42
|
-
```
|
|
43
|
-
Relay message from Alice [abc123]: Message content here
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Channel Routing (Important!)
|
|
47
|
-
|
|
48
|
-
Messages from #general (broadcast channel) include a `[#general]` indicator:
|
|
49
|
-
```
|
|
50
|
-
Relay message from Alice [abc123] [#general]: Hello everyone!
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**When you see `[#general]`**: Reply to `*` (broadcast), NOT to the sender directly.
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
# Correct - responds to #general channel
|
|
57
|
-
->relay:* <<<
|
|
58
|
-
Response to the group message.>>>
|
|
59
|
-
|
|
60
|
-
# Wrong - sends as DM to sender instead of to the channel
|
|
61
|
-
->relay:Alice <<<
|
|
62
|
-
Response to the group message.>>>
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
This ensures your response appears in the same channel as the original message.
|
|
66
|
-
|
|
67
|
-
If truncated, read full message:
|
|
68
|
-
```bash
|
|
69
|
-
agent-relay read abc123
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Spawning Agents
|
|
73
|
-
|
|
74
|
-
Spawn workers to delegate tasks:
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
->relay:spawn WorkerName claude "task description"
|
|
78
|
-
->relay:release WorkerName
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Threads
|
|
82
|
-
|
|
83
|
-
Use threads to group related messages together. Thread syntax:
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
->relay:AgentName [thread:topic-name] <<<
|
|
87
|
-
Your message here.>>>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
**When to use threads:**
|
|
91
|
-
- Working on a specific issue (e.g., `[thread:agent-relay-299]`)
|
|
92
|
-
- Back-and-forth discussions with another agent
|
|
93
|
-
- Code review conversations
|
|
94
|
-
- Any multi-message topic you want grouped
|
|
95
|
-
|
|
96
|
-
**Examples:**
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
->relay:Protocol [thread:auth-feature] <<<
|
|
100
|
-
How should we handle token refresh?>>>
|
|
101
|
-
|
|
102
|
-
->relay:Frontend [thread:auth-feature] <<<
|
|
103
|
-
Use a 401 interceptor that auto-refreshes.>>>
|
|
104
|
-
|
|
105
|
-
->relay:Reviewer [thread:pr-123] <<<
|
|
106
|
-
Please review src/auth/*.ts>>>
|
|
107
|
-
|
|
108
|
-
->relay:Developer [thread:pr-123] <<<
|
|
109
|
-
LGTM, approved!>>>
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Thread messages appear grouped in the dashboard with reply counts.
|
|
113
|
-
|
|
114
|
-
## Common Patterns
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
->relay:Lead <<<
|
|
118
|
-
ACK: Starting /api/register implementation>>>
|
|
119
|
-
|
|
120
|
-
->relay:* <<<
|
|
121
|
-
STATUS: Working on auth module>>>
|
|
122
|
-
|
|
123
|
-
->relay:Lead <<<
|
|
124
|
-
DONE: Auth module complete>>>
|
|
125
|
-
|
|
126
|
-
->relay:Developer <<<
|
|
127
|
-
TASK: Implement /api/register>>>
|
|
128
|
-
|
|
129
|
-
->relay:Reviewer [thread:code-review-auth] <<<
|
|
130
|
-
REVIEW: Please check src/auth/*.ts>>>
|
|
131
|
-
|
|
132
|
-
->relay:Architect <<<
|
|
133
|
-
QUESTION: JWT or sessions?>>>
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## Cross-Project Messaging
|
|
137
|
-
|
|
138
|
-
When running in bridge mode (multiple projects connected), use `project:agent` format:
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
->relay:frontend:Designer <<<
|
|
142
|
-
Please update the login UI for the new auth flow>>>
|
|
143
|
-
|
|
144
|
-
->relay:backend:lead <<<
|
|
145
|
-
API question - should we use REST or GraphQL?>>>
|
|
146
|
-
|
|
147
|
-
->relay:shared-lib:* <<<
|
|
148
|
-
New utility functions available, please pull latest>>>
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**Format:** `->relay:project-id:agent-name`
|
|
152
|
-
|
|
153
|
-
**Special targets:**
|
|
154
|
-
- `->relay:project:lead` - Message the lead agent of that project
|
|
155
|
-
- `->relay:project:*` - Broadcast to all agents in that project
|
|
156
|
-
- `->relay:*:*` - Broadcast to ALL agents in ALL projects
|
|
157
|
-
|
|
158
|
-
**Cross-project threads:**
|
|
159
|
-
```
|
|
160
|
-
->relay:frontend:Designer [thread:auth-feature] <<<
|
|
161
|
-
UI mockups ready for review>>>
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## Rules
|
|
165
|
-
|
|
166
|
-
- Pattern must be at line start (whitespace OK)
|
|
167
|
-
- Escape with `\->relay:` to output literally
|
|
168
|
-
- Check daemon status: `agent-relay status`
|
|
@@ -1,389 +0,0 @@
|
|
|
1
|
-
# Competitive Analysis: mcp_agent_mail vs agent-relay
|
|
2
|
-
|
|
3
|
-
## Executive Summary
|
|
4
|
-
|
|
5
|
-
| Aspect | mcp_agent_mail | agent-relay |
|
|
6
|
-
|--------|----------------|-------------|
|
|
7
|
-
| **Architecture** | MCP HTTP Server (FastAPI) | PTY Wrapper + Unix Socket |
|
|
8
|
-
| **Protocol** | MCP JSON-RPC over HTTP | Custom binary framing over Unix socket |
|
|
9
|
-
| **Storage** | SQLite + Git archive | SQLite + file-based inbox |
|
|
10
|
-
| **Latency** | ~50-200ms (HTTP overhead) | <5ms (local IPC) |
|
|
11
|
-
| **Complexity** | ~15,000+ lines Python | ~7,000 lines TypeScript |
|
|
12
|
-
| **Agent Integration** | Requires MCP client SDK | Zero-config (pattern detection) |
|
|
13
|
-
| **Persistence** | Git-backed audit trail | SQLite messages table |
|
|
14
|
-
| **Scale Target** | 5-50+ agents, multi-project | 5-10 agents, single project |
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Architecture Comparison
|
|
19
|
-
|
|
20
|
-
### mcp_agent_mail: MCP-First Design
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
24
|
-
│ Agent Clients (FastMCP) │
|
|
25
|
-
│ Claude Code, Codex, Gemini CLI, etc. │
|
|
26
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
27
|
-
│ HTTP JSON-RPC (MCP Protocol)
|
|
28
|
-
┌────────────────────────────▼────────────────────────────────┐
|
|
29
|
-
│ FastAPI Transport Layer │
|
|
30
|
-
│ ├─ Bearer Token / JWT / RBAC │
|
|
31
|
-
│ ├─ Rate Limiting (token bucket) │
|
|
32
|
-
│ └─ Middleware Stack │
|
|
33
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
34
|
-
│
|
|
35
|
-
┌────────────────────────────▼────────────────────────────────┐
|
|
36
|
-
│ FastMCP Application Layer │
|
|
37
|
-
│ ├─ 40+ Tools (messaging, identity, reservations) │
|
|
38
|
-
│ ├─ 20+ Resources (agents, messages, threads) │
|
|
39
|
-
│ └─ Macros (workflow shortcuts) │
|
|
40
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
41
|
-
│
|
|
42
|
-
┌────────────────────┼────────────────────┐
|
|
43
|
-
│ │ │
|
|
44
|
-
┌────▼────────┐ ┌────▼────────┐ ┌────▼────────┐
|
|
45
|
-
│ SQLite │ │ Git Archive │ │ Locks │
|
|
46
|
-
│ (async) │ │ (global) │ │ (LRU) │
|
|
47
|
-
└─────────────┘ └─────────────┘ └─────────────┘
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Pros:**
|
|
51
|
-
- Standards-based (MCP protocol)
|
|
52
|
-
- Rich feature set (40+ tools)
|
|
53
|
-
- Git-backed audit trail
|
|
54
|
-
- Cross-project messaging
|
|
55
|
-
- Product grouping for large fleets
|
|
56
|
-
- File reservation system with enforcement
|
|
57
|
-
- Contact/permission system
|
|
58
|
-
|
|
59
|
-
**Cons:**
|
|
60
|
-
- HTTP overhead (~50-200ms per call)
|
|
61
|
-
- Requires MCP client integration
|
|
62
|
-
- Complex setup (Python venv, dependencies)
|
|
63
|
-
- Heavy resource footprint
|
|
64
|
-
- Overkill for simple use cases
|
|
65
|
-
|
|
66
|
-
### agent-relay: PTY-First Design
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
70
|
-
│ User Terminal │
|
|
71
|
-
│ (attached to tmux session) │
|
|
72
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
73
|
-
│ tmux attach
|
|
74
|
-
┌────────────────────────────▼────────────────────────────────┐
|
|
75
|
-
│ Tmux Session │
|
|
76
|
-
│ ├─ Agent Process (claude, codex, gemini) │
|
|
77
|
-
│ ├─ Silent Polling (capture-pane @ 200ms) │
|
|
78
|
-
│ ├─ Pattern Detection (->relay:) │
|
|
79
|
-
│ └─ Message Injection (send-keys) │
|
|
80
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
81
|
-
│ Unix Socket IPC
|
|
82
|
-
┌────────────────────────────▼────────────────────────────────┐
|
|
83
|
-
│ Daemon (Router) │
|
|
84
|
-
│ ├─ Connection State Machine │
|
|
85
|
-
│ ├─ Message Routing (direct + broadcast) │
|
|
86
|
-
│ ├─ SQLite Persistence │
|
|
87
|
-
│ └─ Dashboard (WebSocket) │
|
|
88
|
-
└─────────────────────────────────────────────────────────────┘
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
**Pros:**
|
|
92
|
-
- Ultra-low latency (<5ms)
|
|
93
|
-
- Zero-config (no SDK needed)
|
|
94
|
-
- Works with ANY agent (pattern-based)
|
|
95
|
-
- Lightweight (~7k lines)
|
|
96
|
-
- Transparent to user (real terminal)
|
|
97
|
-
- Simple mental model
|
|
98
|
-
|
|
99
|
-
**Cons:**
|
|
100
|
-
- Single project scope
|
|
101
|
-
- No persistent audit trail (Git)
|
|
102
|
-
- No file reservation system
|
|
103
|
-
- No cross-project messaging
|
|
104
|
-
- Polling overhead (CPU)
|
|
105
|
-
- Limited security model
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Feature-by-Feature Comparison
|
|
110
|
-
|
|
111
|
-
### 1. Message Sending
|
|
112
|
-
|
|
113
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
114
|
-
|---------|----------------|-------------|
|
|
115
|
-
| **API** | `send_message()` tool call | `->relay:Name message` pattern |
|
|
116
|
-
| **Broadcast** | `to=["*"]` | `->relay:*` |
|
|
117
|
-
| **Attachments** | Yes (images, files) | No |
|
|
118
|
-
| **Threading** | Yes (`thread_id`) | No |
|
|
119
|
-
| **Markdown** | Full GFM support | Plain text |
|
|
120
|
-
| **Images** | Auto-convert to WebP, inline | Not supported |
|
|
121
|
-
|
|
122
|
-
**Winner: mcp_agent_mail** - Rich message format with attachments and threading.
|
|
123
|
-
|
|
124
|
-
### 2. Agent Discovery
|
|
125
|
-
|
|
126
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
127
|
-
|---------|----------------|-------------|
|
|
128
|
-
| **Registration** | Explicit `register_agent()` | Auto on HELLO handshake |
|
|
129
|
-
| **Directory** | `resource://agents/{project}` | `agents.json` file |
|
|
130
|
-
| **Metadata** | Program, model, task, capabilities | Name only |
|
|
131
|
-
| **Cross-project** | Contact request system | Not supported |
|
|
132
|
-
|
|
133
|
-
**Winner: mcp_agent_mail** - Richer agent metadata and cross-project discovery.
|
|
134
|
-
|
|
135
|
-
### 3. Message Persistence
|
|
136
|
-
|
|
137
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
138
|
-
|---------|----------------|-------------|
|
|
139
|
-
| **Primary** | SQLite (async, WAL mode) | SQLite |
|
|
140
|
-
| **Backup** | Git archive (audit trail) | None |
|
|
141
|
-
| **Search** | FTS (full-text search) | Basic queries |
|
|
142
|
-
| **History** | Permanent | Session-based |
|
|
143
|
-
|
|
144
|
-
**Winner: mcp_agent_mail** - Git-backed audit trail is powerful for compliance.
|
|
145
|
-
|
|
146
|
-
### 4. Security
|
|
147
|
-
|
|
148
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
149
|
-
|---------|----------------|-------------|
|
|
150
|
-
| **Auth** | Bearer token, JWT, RBAC | Unix socket permissions |
|
|
151
|
-
| **Rate Limiting** | Token bucket (memory/Redis) | None |
|
|
152
|
-
| **Contact Policy** | open/auto/contacts_only/block_all | None |
|
|
153
|
-
| **Encryption** | TLS (transport) | None (local only) |
|
|
154
|
-
|
|
155
|
-
**Winner: mcp_agent_mail** - Production-grade security model.
|
|
156
|
-
|
|
157
|
-
### 5. File Coordination
|
|
158
|
-
|
|
159
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
160
|
-
|---------|----------------|-------------|
|
|
161
|
-
| **Reservations** | Yes (exclusive/shared, TTL) | No |
|
|
162
|
-
| **Enforcement** | Pre-commit hooks | None |
|
|
163
|
-
| **Build Slots** | Yes (long-running tasks) | No |
|
|
164
|
-
| **Conflict Detection** | Advisory + block mode | None |
|
|
165
|
-
|
|
166
|
-
**Winner: mcp_agent_mail** - Critical for multi-agent file editing.
|
|
167
|
-
|
|
168
|
-
### 6. Latency & Performance
|
|
169
|
-
|
|
170
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
171
|
-
|---------|----------------|-------------|
|
|
172
|
-
| **Message Latency** | ~50-200ms | <5ms |
|
|
173
|
-
| **Connection** | HTTP (stateless) | Unix socket (persistent) |
|
|
174
|
-
| **Overhead** | JSON-RPC parsing | Binary framing |
|
|
175
|
-
| **Memory** | Higher (Python, FastAPI) | Lower (Node.js) |
|
|
176
|
-
|
|
177
|
-
**Winner: agent-relay** - 10-40x faster message delivery.
|
|
178
|
-
|
|
179
|
-
### 7. Developer Experience
|
|
180
|
-
|
|
181
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
182
|
-
|---------|----------------|-------------|
|
|
183
|
-
| **Setup** | Python venv, pip install, .env | npm install, single binary |
|
|
184
|
-
| **Integration** | MCP client required | Pattern in stdout |
|
|
185
|
-
| **Learning Curve** | Steep (40+ tools) | Minimal (->relay:) |
|
|
186
|
-
| **Debugging** | Structured logging, metrics | Dashboard + logs |
|
|
187
|
-
|
|
188
|
-
**Winner: agent-relay** - Much simpler to get started.
|
|
189
|
-
|
|
190
|
-
### 8. Observability
|
|
191
|
-
|
|
192
|
-
| Feature | mcp_agent_mail | agent-relay |
|
|
193
|
-
|---------|----------------|-------------|
|
|
194
|
-
| **Metrics** | Tool call counts, latency, errors | Basic connection status |
|
|
195
|
-
| **Resources** | 20+ queryable resources | agents.json |
|
|
196
|
-
| **Logging** | Structured (structlog + rich) | Console output |
|
|
197
|
-
| **Dashboard** | None (resources only) | Web UI with live updates |
|
|
198
|
-
|
|
199
|
-
**Mixed** - mcp_agent_mail has richer metrics, agent-relay has visual dashboard.
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## Key Insights & Learnings
|
|
204
|
-
|
|
205
|
-
### What mcp_agent_mail Does Better
|
|
206
|
-
|
|
207
|
-
1. **Git-Backed Audit Trail**
|
|
208
|
-
- Every message committed to Git
|
|
209
|
-
- Full history, diff-able, recoverable
|
|
210
|
-
- Compliance-friendly
|
|
211
|
-
|
|
212
|
-
2. **File Reservation System**
|
|
213
|
-
- Advisory locks with TTL
|
|
214
|
-
- Pre-commit hook enforcement
|
|
215
|
-
- Build slots for long tasks
|
|
216
|
-
- Critical for preventing conflicts
|
|
217
|
-
|
|
218
|
-
3. **Cross-Project Messaging**
|
|
219
|
-
- Contact request system
|
|
220
|
-
- Product grouping
|
|
221
|
-
- Multi-repo coordination
|
|
222
|
-
|
|
223
|
-
4. **Rich Message Format**
|
|
224
|
-
- Attachments (images, files)
|
|
225
|
-
- Threading (thread_id)
|
|
226
|
-
- Full GFM markdown
|
|
227
|
-
- Auto image processing
|
|
228
|
-
|
|
229
|
-
5. **Security Model**
|
|
230
|
-
- JWT + RBAC
|
|
231
|
-
- Rate limiting
|
|
232
|
-
- Contact policies
|
|
233
|
-
- Per-agent capabilities
|
|
234
|
-
|
|
235
|
-
6. **Agent Metadata**
|
|
236
|
-
- Program, model, task description
|
|
237
|
-
- Capabilities tracking
|
|
238
|
-
- Last active timestamps
|
|
239
|
-
|
|
240
|
-
### What agent-relay Does Better
|
|
241
|
-
|
|
242
|
-
1. **Zero Configuration**
|
|
243
|
-
- No SDK needed
|
|
244
|
-
- Works with any agent
|
|
245
|
-
- Pattern-based detection
|
|
246
|
-
|
|
247
|
-
2. **Ultra-Low Latency**
|
|
248
|
-
- <5ms vs 50-200ms
|
|
249
|
-
- Unix socket IPC
|
|
250
|
-
- Binary framing
|
|
251
|
-
|
|
252
|
-
3. **Transparent UX**
|
|
253
|
-
- User stays in real terminal
|
|
254
|
-
- No proxy/wrapper visible
|
|
255
|
-
- Native tmux experience
|
|
256
|
-
|
|
257
|
-
4. **Simplicity**
|
|
258
|
-
- ~7k lines vs ~15k+ lines
|
|
259
|
-
- Single mental model
|
|
260
|
-
- Easy to understand
|
|
261
|
-
|
|
262
|
-
5. **Visual Dashboard**
|
|
263
|
-
- Real-time agent status
|
|
264
|
-
- Message history
|
|
265
|
-
- WebSocket updates
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## Recommended Improvements for agent-relay
|
|
270
|
-
|
|
271
|
-
### High Priority
|
|
272
|
-
|
|
273
|
-
1. **Add File Reservation System** (from mcp_agent_mail)
|
|
274
|
-
- Advisory locks with TTL
|
|
275
|
-
- `->relay:lock src/**/*.ts` pattern
|
|
276
|
-
- Pre-commit hook integration
|
|
277
|
-
- Critical for multi-agent file editing
|
|
278
|
-
|
|
279
|
-
2. **Add Message Threading**
|
|
280
|
-
- `->relay:Bob [thread:feature-123] message`
|
|
281
|
-
- Group related messages
|
|
282
|
-
- Better context tracking
|
|
283
|
-
|
|
284
|
-
3. **Add Git Audit Trail**
|
|
285
|
-
- Optional commit of messages to repo
|
|
286
|
-
- `.agent-relay/messages/` directory
|
|
287
|
-
- Recoverable history
|
|
288
|
-
|
|
289
|
-
4. **Add Agent Metadata**
|
|
290
|
-
- Track program, model, task
|
|
291
|
-
- Store in agents.json
|
|
292
|
-
- Better agent discovery
|
|
293
|
-
|
|
294
|
-
### Medium Priority
|
|
295
|
-
|
|
296
|
-
5. **Add Message Attachments**
|
|
297
|
-
- `->relay:Bob [attach:path/to/file]`
|
|
298
|
-
- Inline small files
|
|
299
|
-
- Reference large files
|
|
300
|
-
|
|
301
|
-
6. **Add Cross-Project Messaging**
|
|
302
|
-
- `->relay:Bob@other-project message`
|
|
303
|
-
- Contact request system
|
|
304
|
-
- Product grouping
|
|
305
|
-
|
|
306
|
-
7. **Add Rate Limiting**
|
|
307
|
-
- Prevent message flooding
|
|
308
|
-
- Per-agent limits
|
|
309
|
-
- Backpressure handling
|
|
310
|
-
|
|
311
|
-
8. **Add Message Search**
|
|
312
|
-
- FTS on stored messages
|
|
313
|
-
- `agent-relay search "query"`
|
|
314
|
-
- Filter by agent, time, topic
|
|
315
|
-
|
|
316
|
-
### Lower Priority
|
|
317
|
-
|
|
318
|
-
9. **Add Security Model**
|
|
319
|
-
- Optional authentication
|
|
320
|
-
- Agent capabilities
|
|
321
|
-
- Contact policies
|
|
322
|
-
|
|
323
|
-
10. **Add Workflow Macros**
|
|
324
|
-
- `->relay:macro:start-session`
|
|
325
|
-
- Bundle common patterns
|
|
326
|
-
- Reduce boilerplate
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## Architecture Recommendations
|
|
331
|
-
|
|
332
|
-
### Hybrid Approach
|
|
333
|
-
|
|
334
|
-
Consider a **hybrid architecture** that combines the best of both:
|
|
335
|
-
|
|
336
|
-
```
|
|
337
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
338
|
-
│ User Terminal │
|
|
339
|
-
│ (attached to tmux session) │
|
|
340
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
341
|
-
│
|
|
342
|
-
┌────────────────────────────▼────────────────────────────────┐
|
|
343
|
-
│ PTY Wrapper (fast path) │
|
|
344
|
-
│ ├─ Pattern Detection (->relay:) │
|
|
345
|
-
│ ├─ Message Injection │
|
|
346
|
-
│ └─ Direct daemon IPC (<5ms) │
|
|
347
|
-
└────────────────────────────┬────────────────────────────────┘
|
|
348
|
-
│
|
|
349
|
-
┌────────────────────────────▼────────────────────────────────┐
|
|
350
|
-
│ Enhanced Daemon │
|
|
351
|
-
│ ├─ Message Router (existing) │
|
|
352
|
-
│ ├─ File Reservation Manager (NEW) │
|
|
353
|
-
│ ├─ Git Archive Writer (NEW, optional) │
|
|
354
|
-
│ ├─ Agent Metadata Store (NEW) │
|
|
355
|
-
│ └─ SQLite + FTS (enhanced) │
|
|
356
|
-
└─────────────────────────────────────────────────────────────┘
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### Key Design Principles
|
|
360
|
-
|
|
361
|
-
1. **Keep Zero-Config Core** - Pattern-based detection is the killer feature
|
|
362
|
-
2. **Add Opt-In Features** - File locks, Git archive as flags
|
|
363
|
-
3. **Maintain Low Latency** - Don't add HTTP layer
|
|
364
|
-
4. **Progressive Enhancement** - Simple default, powerful when needed
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## Conclusion
|
|
369
|
-
|
|
370
|
-
**mcp_agent_mail** is a feature-rich, production-grade system designed for enterprise-scale multi-agent coordination. It excels at security, compliance, and cross-project workflows.
|
|
371
|
-
|
|
372
|
-
**agent-relay** is an elegantly simple, ultra-fast system designed for rapid prototyping and real-time collaboration. It excels at developer experience and low latency.
|
|
373
|
-
|
|
374
|
-
The ideal path forward for agent-relay is to **selectively adopt** the most valuable features from mcp_agent_mail (file reservations, threading, Git audit) while **preserving** its core strengths (zero-config, low latency, simplicity).
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
## Action Items
|
|
379
|
-
|
|
380
|
-
| Priority | Item | Effort | Impact |
|
|
381
|
-
|----------|------|--------|--------|
|
|
382
|
-
| P0 | Add file reservation system | Medium | High |
|
|
383
|
-
| P0 | Add message threading | Low | Medium |
|
|
384
|
-
| P1 | Add Git audit trail (optional) | Medium | High |
|
|
385
|
-
| P1 | Add agent metadata | Low | Medium |
|
|
386
|
-
| P2 | Add message attachments | Medium | Medium |
|
|
387
|
-
| P2 | Add cross-project messaging | High | Medium |
|
|
388
|
-
| P3 | Add rate limiting | Low | Low |
|
|
389
|
-
| P3 | Add message search (FTS) | Medium | Medium |
|