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
package/docs/AGENTS.md
DELETED
|
@@ -1,513 +0,0 @@
|
|
|
1
|
-
* Use the `bd` tool instead of markdown to coordinate all work and tasks.
|
|
2
|
-
* NEVER commit changes unless the user explicitly asks you to.
|
|
3
|
-
|
|
4
|
-
# Using bv as an AI sidecar
|
|
5
|
-
|
|
6
|
-
bv is a fast terminal UI for Beads projects (.beads/beads.jsonl). It renders lists/details and precomputes dependency metrics (PageRank, critical path, cycles, etc.) so you instantly see blockers and execution order. For agents, it's a graph sidecar: instead of parsing JSONL or risking hallucinated traversal, call the robot flags to get deterministic, dependency-aware outputs.
|
|
7
|
-
|
|
8
|
-
*IMPORTANT: As an agent, you must ONLY use bv with the robot flags, otherwise you'll get stuck in the interactive TUI that's intended for human usage only!*
|
|
9
|
-
|
|
10
|
-
- bv --robot-help — shows all AI-facing commands.
|
|
11
|
-
- bv --robot-insights — JSON graph metrics (PageRank, betweenness, HITS, critical path, cycles) with top-N summaries for quick triage.
|
|
12
|
-
- bv --robot-plan — JSON execution plan: parallel tracks, items per track, and unblocks lists showing what each item frees up.
|
|
13
|
-
- bv --robot-priority — JSON priority recommendations with reasoning and confidence.
|
|
14
|
-
- bv --robot-recipes — list recipes (default, actionable, blocked, etc.); apply via bv --recipe <name> to pre-filter/sort before other flags.
|
|
15
|
-
- bv --robot-diff --diff-since <commit|date> — JSON diff of issue changes, new/closed items, and cycles introduced/resolved.
|
|
16
|
-
|
|
17
|
-
Use these commands instead of hand-rolling graph logic; bv already computes the hard parts so agents can act safely and quickly.
|
|
18
|
-
|
|
19
|
-
## Integrating with Beads (dependency-aware task planning)
|
|
20
|
-
|
|
21
|
-
Beads provides a lightweight, dependency-aware issue database and a CLI (`bd`) for selecting "ready work," setting priorities, and tracking status. Project: [steveyegge/beads](https://github.com/steveyegge/beads)
|
|
22
|
-
|
|
23
|
-
Recommended conventions
|
|
24
|
-
- **Single source of truth**: Use **Beads** for task status/priority/dependencies.
|
|
25
|
-
- **Shared identifiers**: Use the Beads issue id (e.g., `bd-123`) as identifiers and prefix message subjects with `[bd-123]`.
|
|
26
|
-
|
|
27
|
-
Typical flow (agents)
|
|
28
|
-
1) **Pick ready work** (Beads)
|
|
29
|
-
- `bd ready --json` → choose one item (highest priority, no blockers)
|
|
30
|
-
2) **Announce start**
|
|
31
|
-
- Update status: `bd update <id> --status=in_progress`
|
|
32
|
-
3) **Work and update**
|
|
33
|
-
- Make progress on the task
|
|
34
|
-
4) **Complete**
|
|
35
|
-
- `bd close <id> --reason "Completed"` (Beads is status authority)
|
|
36
|
-
|
|
37
|
-
Pitfalls to avoid
|
|
38
|
-
- Don't create or manage tasks in markdown; treat Beads as the single task queue.
|
|
39
|
-
- Always include `bd-###` in commit messages for traceability.
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
# Agent Instructions for agent-relay
|
|
44
|
-
|
|
45
|
-
> **Copy this file to your project** to enable AI agents to communicate with each other using agent-relay.
|
|
46
|
-
|
|
47
|
-
## Overview
|
|
48
|
-
|
|
49
|
-
This project uses [agent-relay](https://github.com/khaliqgant/agent-relay) for real-time agent-to-agent messaging. There are two communication modes:
|
|
50
|
-
|
|
51
|
-
1. **Tmux Wrapper Mode (Recommended)** - Real-time messaging via Unix sockets with tmux session management
|
|
52
|
-
2. **File-Based Team Mode** - Asynchronous messaging via file system (simpler, more reliable)
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## Quick Start: Tmux Wrapper (Recommended)
|
|
57
|
-
|
|
58
|
-
Use the tmux wrapper for real-time messaging:
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
|
-
# Start daemon (dashboard starts automatically)
|
|
62
|
-
relay -f # foreground mode with dashboard
|
|
63
|
-
|
|
64
|
-
# Wrap your agent with tmux (real-time)
|
|
65
|
-
relay wrap -n PlayerX claude
|
|
66
|
-
relay wrap -n PlayerO claude
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Flags
|
|
70
|
-
- `-q, --quiet` - Disable debug logging
|
|
71
|
-
- `--no-dashboard` - Disable web dashboard
|
|
72
|
-
- `--stop` - Stop the daemon
|
|
73
|
-
- `--status` - Show daemon status
|
|
74
|
-
|
|
75
|
-
### Why tmux?
|
|
76
|
-
- Real terminal: you attach directly to tmux (no double PTY).
|
|
77
|
-
- Background capture/parse of `->relay:` without touching stdout.
|
|
78
|
-
- Reliable injection via `tmux send-keys`.
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Agent Role Auto-Detection
|
|
83
|
-
|
|
84
|
-
When you start an agent with `-n`, the name is matched against agent definitions in your project. If a matching agent file exists, the agent automatically assumes that role.
|
|
85
|
-
|
|
86
|
-
**Supported locations:**
|
|
87
|
-
- `.claude/agents/<name>.md` - Claude Code agents
|
|
88
|
-
- `.openagents/<name>.md` - OpenAgents format
|
|
89
|
-
|
|
90
|
-
### Example
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# If .claude/agents/lead.md exists:
|
|
94
|
-
relay wrap -n lead claude
|
|
95
|
-
# → Agent automatically assumes the Lead role defined in lead.md
|
|
96
|
-
|
|
97
|
-
# If .claude/agents/implementer.md exists:
|
|
98
|
-
relay wrap -n implementer claude
|
|
99
|
-
# → Agent assumes the Implementer role
|
|
100
|
-
|
|
101
|
-
# No matching file? Agent starts with default behavior
|
|
102
|
-
relay wrap -n CustomName claude
|
|
103
|
-
# → Standard agent, no role injection
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### How It Works
|
|
107
|
-
|
|
108
|
-
1. Agent name from `-n` flag is matched **case-insensitively**
|
|
109
|
-
2. System checks for `<project>/.claude/agents/<name>.md` or `<project>/.openagents/<name>.md`
|
|
110
|
-
3. If found, the agent definition is injected into the agent's initial context
|
|
111
|
-
4. Agent assumes the persona, instructions, and behaviors defined in the file
|
|
112
|
-
|
|
113
|
-
**Case insensitive matching:**
|
|
114
|
-
```bash
|
|
115
|
-
relay wrap -n Lead claude # matches lead.md
|
|
116
|
-
relay wrap -n LEAD claude # matches lead.md
|
|
117
|
-
relay wrap -n lead claude # matches lead.md
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Creating Role Agents
|
|
121
|
-
|
|
122
|
-
Create agent files for your team roles:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
.claude/agents/
|
|
126
|
-
├── lead.md # Coordinator, delegates work
|
|
127
|
-
├── implementer.md # Writes code, fixes bugs
|
|
128
|
-
├── designer.md # UI/UX, frontend work
|
|
129
|
-
└── reviewer.md # Code review, quality checks
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Each file follows the standard Claude agent format with frontmatter and instructions.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Team Communication
|
|
137
|
-
|
|
138
|
-
If you have an INSTRUCTIONS.md file in `/tmp/agent-relay-team/{YourName}/`, use these commands:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
# Check your inbox (non-blocking)
|
|
142
|
-
relay team check -n YourName --no-wait
|
|
143
|
-
|
|
144
|
-
# Send message to teammate
|
|
145
|
-
relay team send -n YourName -t RecipientName -m "Your message"
|
|
146
|
-
|
|
147
|
-
# Broadcast to all
|
|
148
|
-
relay team send -n YourName -t "*" -m "Your message"
|
|
149
|
-
|
|
150
|
-
# Team status
|
|
151
|
-
relay team status
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**Check your inbox periodically and broadcast status updates!**
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Quick Reference
|
|
159
|
-
|
|
160
|
-
### Sending Messages (Real-Time Mode)
|
|
161
|
-
|
|
162
|
-
**Always use the fenced format** for reliable message delivery:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
->relay:AgentName <<<
|
|
166
|
-
Your message here.>>>
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
```
|
|
170
|
-
->relay:* <<<
|
|
171
|
-
Broadcast to all agents.>>>
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**CRITICAL:** Always end with `>>>` at the end of the last line of content!
|
|
175
|
-
|
|
176
|
-
**Block format** (structured data):
|
|
177
|
-
```
|
|
178
|
-
[[RELAY]]{"to":"AgentName","type":"message","body":"Your message"}[[/RELAY]]
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### Receiving Messages
|
|
182
|
-
|
|
183
|
-
Messages appear in your terminal as:
|
|
184
|
-
```
|
|
185
|
-
Relay message from SenderName: Message content here
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Or in your inbox file as:
|
|
189
|
-
```markdown
|
|
190
|
-
## Message from SenderName | 2024-01-15T10:30:00Z
|
|
191
|
-
Message content here
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
---
|
|
195
|
-
|
|
196
|
-
## Mode 1: Tmux Wrapper (Real-Time) - RECOMMENDED
|
|
197
|
-
|
|
198
|
-
Use this when you're wrapped with `relay wrap`.
|
|
199
|
-
|
|
200
|
-
### CRITICAL: How to Send Messages
|
|
201
|
-
|
|
202
|
-
**You (the AI agent) must OUTPUT the ->relay pattern as part of your response.** Do not wait for user input. The pattern is detected from your terminal output. **Always use the fenced format.**
|
|
203
|
-
|
|
204
|
-
**Correct - Output this directly:**
|
|
205
|
-
```
|
|
206
|
-
->relay:PlayerO <<<
|
|
207
|
-
I've finished the API refactor. Ready for your review.>>>
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**Wrong - Don't use bash commands for real-time messaging:**
|
|
211
|
-
```bash
|
|
212
|
-
# This uses file-based inbox, NOT real-time socket delivery
|
|
213
|
-
relay team send -n MyName -t PlayerO -m "message"
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### Pattern Requirements
|
|
217
|
-
|
|
218
|
-
The `->relay:` pattern must appear on its own line. It can have common terminal/markdown prefixes:
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
->relay:AgentName <<< Works
|
|
222
|
-
->relay:AgentName <<< Works (leading whitespace OK)
|
|
223
|
-
> ->relay:AgentName <<< Works (input prompt OK)
|
|
224
|
-
$ ->relay:AgentName <<< Works (shell prompt OK)
|
|
225
|
-
- ->relay:AgentName <<< Works (list items OK)
|
|
226
|
-
Some text ->relay:AgentName <<< Won't work (not at line start)
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
### Examples
|
|
230
|
-
|
|
231
|
-
**Direct message:**
|
|
232
|
-
```
|
|
233
|
-
->relay:PlayerO <<<
|
|
234
|
-
Your turn! I played X at center.>>>
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
**Broadcast to all agents:**
|
|
238
|
-
```
|
|
239
|
-
->relay:* <<<
|
|
240
|
-
I've completed the authentication module. Ready for review.>>>
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**Structured data:**
|
|
244
|
-
```
|
|
245
|
-
[[RELAY]]
|
|
246
|
-
{"to": "PlayerO", "type": "action", "body": "Task completed", "data": {"files": ["auth.ts"]}}
|
|
247
|
-
[[/RELAY]]
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
### Receiving Messages
|
|
251
|
-
|
|
252
|
-
When another agent sends you a message, it appears in your terminal as:
|
|
253
|
-
```
|
|
254
|
-
Relay message from PlayerO: Their message content here
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
Respond by outputting another `->relay:` pattern.
|
|
258
|
-
|
|
259
|
-
### IMPORTANT: Handling Truncated Messages
|
|
260
|
-
|
|
261
|
-
**CRITICAL**: If a message appears cut off or incomplete, ALWAYS use the message ID to read the full content. Messages may be truncated even without showing `[TRUNCATED...]`.
|
|
262
|
-
|
|
263
|
-
Long messages (>500 chars) explicitly show:
|
|
264
|
-
```
|
|
265
|
-
Relay message from PlayerO [abc123def]: Beginning of message... [TRUNCATED - run "relay read abc123def" for full message]
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
But messages can also be cut off mid-sentence without the truncation marker:
|
|
269
|
-
```
|
|
270
|
-
Relay message from PlayerO [abc123def]: I've analyzed the issue. Here's what
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
**In either case**, run the read command with the message ID (the 8-character code in brackets):
|
|
274
|
-
```bash
|
|
275
|
-
relay read abc123def
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
This retrieves the complete message from the database.
|
|
279
|
-
|
|
280
|
-
**Rule**: If a message seems incomplete or ends abruptly, read the full message before responding.
|
|
281
|
-
|
|
282
|
-
### Escaping
|
|
283
|
-
|
|
284
|
-
To output literal `->relay:` without triggering the parser:
|
|
285
|
-
```
|
|
286
|
-
\->relay: This won't be sent as a message
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## Mode 2: File-Based Team Mode (Asynchronous)
|
|
292
|
-
|
|
293
|
-
Use this for scripts, automation, or when tmux wrapping isn't available.
|
|
294
|
-
|
|
295
|
-
### Setup a Team
|
|
296
|
-
|
|
297
|
-
```bash
|
|
298
|
-
# Create team from JSON config
|
|
299
|
-
relay team setup -f team-config.json
|
|
300
|
-
|
|
301
|
-
# Or use inline JSON
|
|
302
|
-
relay team setup -c '{"name":"myteam","agents":[{"name":"Dev","cli":"claude","role":"Developer"}]}'
|
|
303
|
-
|
|
304
|
-
# Start a team (setup + listen for messages)
|
|
305
|
-
relay team start -f team-config.json
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### Sending Messages
|
|
309
|
-
|
|
310
|
-
```bash
|
|
311
|
-
# Send to one agent
|
|
312
|
-
relay team send -n YourName -t RecipientName -m "Your message"
|
|
313
|
-
|
|
314
|
-
# Broadcast to all agents
|
|
315
|
-
relay team send -n YourName -t "*" -m "Broadcast message"
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
### Reading Messages
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
# Read inbox (non-blocking)
|
|
322
|
-
relay team check -n YourName --no-wait
|
|
323
|
-
|
|
324
|
-
# Wait for messages (blocking)
|
|
325
|
-
relay team check -n YourName
|
|
326
|
-
|
|
327
|
-
# Read and clear inbox
|
|
328
|
-
relay team check -n YourName --clear
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
### Message Format in Inbox
|
|
332
|
-
|
|
333
|
-
Messages in your inbox file look like:
|
|
334
|
-
```markdown
|
|
335
|
-
## Message from SenderName | 2024-01-15T10:30:00Z
|
|
336
|
-
The actual message content here.
|
|
337
|
-
|
|
338
|
-
## Message from AnotherAgent | 2024-01-15T10:31:00Z
|
|
339
|
-
Another message.
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
## Available Commands
|
|
345
|
-
|
|
346
|
-
Just 4 commands:
|
|
347
|
-
|
|
348
|
-
| Command | Description |
|
|
349
|
-
|---------|-------------|
|
|
350
|
-
| `relay` | Start daemon + dashboard (`--no-dashboard` to disable, `--stop`, `--status`) |
|
|
351
|
-
| `relay wrap` | Wrap agent CLI with relay messaging |
|
|
352
|
-
| `relay team` | Team operations (subcommands below) |
|
|
353
|
-
| `relay read` | Read full message by ID (for truncated messages) |
|
|
354
|
-
|
|
355
|
-
### Team Subcommands
|
|
356
|
-
|
|
357
|
-
| Subcommand | Description |
|
|
358
|
-
|------------|-------------|
|
|
359
|
-
| `relay team setup` | Create a team from JSON config |
|
|
360
|
-
| `relay team status` | Show team status with message counts |
|
|
361
|
-
| `relay team send` | Send message to teammate(s) |
|
|
362
|
-
| `relay team check` | Check your inbox |
|
|
363
|
-
| `relay team listen` | Watch inboxes and spawn agents on messages |
|
|
364
|
-
| `relay team start` | Start a team (setup + listen + spawn) |
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## Message Types
|
|
369
|
-
|
|
370
|
-
| Type | Use Case |
|
|
371
|
-
|------|----------|
|
|
372
|
-
| `message` | General communication (default) |
|
|
373
|
-
| `action` | Commands, task assignments |
|
|
374
|
-
| `state` | Status updates, progress reports |
|
|
375
|
-
| `thinking` | Share reasoning (for transparency) |
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
|
-
## Coordination Patterns
|
|
380
|
-
|
|
381
|
-
### Task Handoff
|
|
382
|
-
|
|
383
|
-
```
|
|
384
|
-
->relay:Developer <<<
|
|
385
|
-
TASK: Implement user registration endpoint
|
|
386
|
-
Requirements:
|
|
387
|
-
- POST /api/register
|
|
388
|
-
- Validate email format
|
|
389
|
-
- Hash password with bcrypt
|
|
390
|
-
- Return JWT token>>>
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
### Status Updates
|
|
394
|
-
|
|
395
|
-
```
|
|
396
|
-
->relay:* <<<
|
|
397
|
-
STATUS: Starting work on authentication module>>>
|
|
398
|
-
|
|
399
|
-
->relay:* <<<
|
|
400
|
-
DONE: Authentication module complete, ready for review>>>
|
|
401
|
-
|
|
402
|
-
->relay:Reviewer <<<
|
|
403
|
-
REVIEW: Please review src/auth/*.ts>>>
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
### Requesting Help
|
|
407
|
-
|
|
408
|
-
```
|
|
409
|
-
->relay:Architect <<<
|
|
410
|
-
QUESTION: Should we use JWT or session-based auth?>>>
|
|
411
|
-
|
|
412
|
-
->relay:* <<<
|
|
413
|
-
BLOCKED: Need database credentials to proceed>>>
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### Code Review Flow
|
|
417
|
-
|
|
418
|
-
```
|
|
419
|
-
# Developer requests review
|
|
420
|
-
->relay:Reviewer <<<
|
|
421
|
-
REVIEW: src/api/users.ts - Added pagination support>>>
|
|
422
|
-
|
|
423
|
-
# Reviewer provides feedback
|
|
424
|
-
->relay:Developer <<<
|
|
425
|
-
FEEDBACK: Line 45 - Consider using cursor-based pagination for better performance>>>
|
|
426
|
-
|
|
427
|
-
# Developer confirms fix
|
|
428
|
-
->relay:Reviewer <<<
|
|
429
|
-
FIXED: Updated to cursor-based pagination, please re-review>>>
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
---
|
|
433
|
-
|
|
434
|
-
## Spawning Agents
|
|
435
|
-
|
|
436
|
-
Any agent can spawn worker agents to delegate tasks. Workers run in separate tmux windows and can communicate via relay.
|
|
437
|
-
|
|
438
|
-
### Spawn a Worker
|
|
439
|
-
|
|
440
|
-
Output this pattern to spawn a new agent:
|
|
441
|
-
```
|
|
442
|
-
->relay:spawn WorkerName cli "task description"
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
**Examples:**
|
|
446
|
-
```
|
|
447
|
-
->relay:spawn Dev1 claude "Implement the login endpoint with JWT auth"
|
|
448
|
-
->relay:spawn Reviewer claude "Review the auth module in src/auth/"
|
|
449
|
-
->relay:spawn Tester claude "Write unit tests for the user service"
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
### Release a Worker
|
|
453
|
-
|
|
454
|
-
When a worker is done, release it:
|
|
455
|
-
```
|
|
456
|
-
->relay:release WorkerName
|
|
457
|
-
```
|
|
458
|
-
|
|
459
|
-
### How It Works
|
|
460
|
-
|
|
461
|
-
1. The spawn command creates a new tmux window
|
|
462
|
-
2. Launches `agent-relay -n WorkerName cli --dangerously-skip-permissions`
|
|
463
|
-
3. Waits for the agent to register with the daemon
|
|
464
|
-
4. Injects the task as the initial prompt
|
|
465
|
-
5. Worker can communicate back via `->relay:` patterns
|
|
466
|
-
|
|
467
|
-
### Best Practices
|
|
468
|
-
|
|
469
|
-
- Give workers specific, well-scoped tasks
|
|
470
|
-
- Use descriptive names that indicate the worker's purpose
|
|
471
|
-
- Release workers when they complete their tasks
|
|
472
|
-
- Workers can spawn their own workers if needed (nested spawning)
|
|
473
|
-
|
|
474
|
-
---
|
|
475
|
-
|
|
476
|
-
## Agent Naming
|
|
477
|
-
|
|
478
|
-
Agent names follow the AdjectiveNoun format:
|
|
479
|
-
- `BlueLake`, `GreenCastle`, `RedMountain`, `SwiftFalcon`
|
|
480
|
-
|
|
481
|
-
Names are auto-generated if not specified, or you can set your own with `-n`:
|
|
482
|
-
```bash
|
|
483
|
-
relay wrap -n MyCustomName claude
|
|
484
|
-
```
|
|
485
|
-
|
|
486
|
-
---
|
|
487
|
-
|
|
488
|
-
## Troubleshooting
|
|
489
|
-
|
|
490
|
-
| Issue | Solution |
|
|
491
|
-
|-------|----------|
|
|
492
|
-
| Messages not sending | Check daemon: `relay --status` |
|
|
493
|
-
| Inbox empty | Verify agent name and data directory |
|
|
494
|
-
| Socket not found | Start daemon: `relay -f` |
|
|
495
|
-
| Permission denied | Check data directory permissions |
|
|
496
|
-
|
|
497
|
-
### Check Daemon Status
|
|
498
|
-
```bash
|
|
499
|
-
relay --status
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
### Restart Daemon
|
|
503
|
-
```bash
|
|
504
|
-
relay --stop && relay -f
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
---
|
|
508
|
-
|
|
509
|
-
## More Information
|
|
510
|
-
|
|
511
|
-
- [Full Documentation](https://github.com/khaliqgant/agent-relay)
|
|
512
|
-
- [Protocol Specification](https://github.com/khaliqgant/agent-relay/blob/main/docs/PROTOCOL.md)
|
|
513
|
-
- [Examples](https://github.com/khaliqgant/agent-relay/tree/main/examples)
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
# Multi-Agent Coordination: Architecture Decisions
|
|
2
|
-
|
|
3
|
-
This document compares approaches to multi-agent coordination and explains when to use each.
|
|
4
|
-
|
|
5
|
-
## Two Approaches
|
|
6
|
-
|
|
7
|
-
### 1. Subagents (Hierarchical)
|
|
8
|
-
|
|
9
|
-
Spawn child agents from a parent, collect results, continue.
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌─────────┐
|
|
13
|
-
│ Parent │
|
|
14
|
-
└────┬────┘
|
|
15
|
-
│ spawn
|
|
16
|
-
┌───────┼───────┐
|
|
17
|
-
▼ ▼ ▼
|
|
18
|
-
┌───────┐┌───────┐┌───────┐
|
|
19
|
-
│ Child ││ Child ││ Child │
|
|
20
|
-
└───────┘└───────┘└───────┘
|
|
21
|
-
│ │ │
|
|
22
|
-
└───────┼───────┘
|
|
23
|
-
▼ return
|
|
24
|
-
┌─────────┐
|
|
25
|
-
│ Parent │
|
|
26
|
-
└─────────┘
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
**Characteristics:**
|
|
30
|
-
- Tree topology (parent orchestrates)
|
|
31
|
-
- Synchronous - parent waits for children
|
|
32
|
-
- Ephemeral - children die after returning
|
|
33
|
-
- State held by parent
|
|
34
|
-
- No peer-to-peer communication
|
|
35
|
-
|
|
36
|
-
### 2. Agent-Relay (Mesh)
|
|
37
|
-
|
|
38
|
-
Persistent agents communicate via message passing.
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
┌───────┐ ┌───────┐
|
|
42
|
-
│ Agent │◄───►│ Agent │
|
|
43
|
-
└───┬───┘ └───┬───┘
|
|
44
|
-
│ │
|
|
45
|
-
└──────┬──────┘
|
|
46
|
-
▼
|
|
47
|
-
┌─────────────┐
|
|
48
|
-
│ Daemon │ ← routes messages
|
|
49
|
-
│ (router) │ ← persists history
|
|
50
|
-
└─────────────┘
|
|
51
|
-
│
|
|
52
|
-
┌──────┴──────┐
|
|
53
|
-
▼ ▼
|
|
54
|
-
┌───────┐ ┌───────┐
|
|
55
|
-
│ Agent │◄───►│ Agent │
|
|
56
|
-
└───────┘ └───────┘
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**Characteristics:**
|
|
60
|
-
- Mesh topology (any-to-any)
|
|
61
|
-
- Asynchronous - fire and respond
|
|
62
|
-
- Persistent - agents live across tasks
|
|
63
|
-
- Distributed state + message log
|
|
64
|
-
- Direct peer communication
|
|
65
|
-
|
|
66
|
-
## Decision Matrix
|
|
67
|
-
|
|
68
|
-
| Requirement | Subagents | Agent-Relay |
|
|
69
|
-
|-------------|:---------:|:-----------:|
|
|
70
|
-
| Simple one-shot tasks | ✅ | ⚠️ overkill |
|
|
71
|
-
| Clear parent/child hierarchy | ✅ | ✅ |
|
|
72
|
-
| No infrastructure to manage | ✅ | ❌ |
|
|
73
|
-
| Agents debate/negotiate | ❌ | ✅ |
|
|
74
|
-
| Long-running agents | ❌ | ✅ |
|
|
75
|
-
| Mix different AI providers | ⚠️ limited | ✅ |
|
|
76
|
-
| Audit trail / replay | ❌ | ✅ |
|
|
77
|
-
| External observability | ❌ | ✅ |
|
|
78
|
-
| Horizontal scaling | ❌ | ✅ |
|
|
79
|
-
| Resume after crash | ❌ | ✅ |
|
|
80
|
-
|
|
81
|
-
## When to Use Subagents
|
|
82
|
-
|
|
83
|
-
Choose subagents when:
|
|
84
|
-
|
|
85
|
-
1. **Tasks are independent** - Fan out, collect, aggregate
|
|
86
|
-
2. **Hierarchy is natural** - One coordinator, many workers
|
|
87
|
-
3. **No persistence needed** - Results matter, not the conversation
|
|
88
|
-
4. **Same provider** - All agents are Claude (or same SDK)
|
|
89
|
-
5. **Simplicity wins** - Fewer moving parts
|
|
90
|
-
|
|
91
|
-
**Example use cases:**
|
|
92
|
-
- Parallel code analysis (security, perf, style)
|
|
93
|
-
- Research tasks with multiple queries
|
|
94
|
-
- Map-reduce style workloads
|
|
95
|
-
- One-time batch processing
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
// Subagent pattern
|
|
99
|
-
const [security, perf, style] = await Promise.all([
|
|
100
|
-
analyzeSecurityAgent(code),
|
|
101
|
-
analyzePerfAgent(code),
|
|
102
|
-
analyzeStyleAgent(code),
|
|
103
|
-
]);
|
|
104
|
-
return summarize(security, perf, style);
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## When to Use Agent-Relay
|
|
108
|
-
|
|
109
|
-
Choose agent-relay when:
|
|
110
|
-
|
|
111
|
-
1. **Agents need to discuss** - Back-and-forth negotiation
|
|
112
|
-
2. **Persistence matters** - Audit, debug, replay conversations
|
|
113
|
-
3. **Mixed ecosystem** - Claude + Codex + Gemini + custom bots
|
|
114
|
-
4. **External integration** - Dashboard, Slack, webhooks
|
|
115
|
-
5. **Long-running sessions** - Agents stay alive, handle multiple tasks
|
|
116
|
-
6. **Decoupling** - Add/remove agents without code changes
|
|
117
|
-
|
|
118
|
-
**Example use cases:**
|
|
119
|
-
- Collaborative document editing
|
|
120
|
-
- Multi-agent game playing
|
|
121
|
-
- Continuous monitoring systems
|
|
122
|
-
- Team simulations with distinct personas
|
|
123
|
-
- Human-in-the-loop workflows
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
// Agent-relay pattern
|
|
127
|
-
const daemon = new Daemon({ socketPath, storagePath });
|
|
128
|
-
await daemon.start();
|
|
129
|
-
|
|
130
|
-
// Agents live independently, communicate async
|
|
131
|
-
const architect = new RelayClient({ name: 'Architect', socketPath });
|
|
132
|
-
const developer = new RelayClient({ name: 'Developer', socketPath });
|
|
133
|
-
const reviewer = new RelayClient({ name: 'Reviewer', socketPath });
|
|
134
|
-
|
|
135
|
-
// They message each other directly
|
|
136
|
-
architect.send({ to: 'Developer', body: 'Implement auth module' });
|
|
137
|
-
// Developer works, then...
|
|
138
|
-
developer.send({ to: 'Reviewer', body: 'Ready for review' });
|
|
139
|
-
// Reviewer responds to Developer directly
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Hybrid Approach
|
|
143
|
-
|
|
144
|
-
You can combine both:
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
┌─────────────────────────────────────┐
|
|
148
|
-
│ Orchestrator │
|
|
149
|
-
│ (agent-relay) │
|
|
150
|
-
└──────┬──────────────┬───────────────┘
|
|
151
|
-
│ │
|
|
152
|
-
▼ ▼
|
|
153
|
-
┌─────────────┐ ┌─────────────┐
|
|
154
|
-
│ Team Lead │ │ Team Lead │
|
|
155
|
-
│ (relay) │ │ (relay) │
|
|
156
|
-
└──────┬──────┘ └──────┬──────┘
|
|
157
|
-
│ │
|
|
158
|
-
┌───┴───┐ ┌───┴───┐
|
|
159
|
-
▼ ▼ ▼ ▼
|
|
160
|
-
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
|
|
161
|
-
│Sub 1│ │Sub 2│ │Sub 3│ │Sub 4│ ← subagents
|
|
162
|
-
└─────┘ └─────┘ └─────┘ └─────┘
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
- **Agent-relay** for cross-team coordination
|
|
166
|
-
- **Subagents** for parallelizable work within a team
|
|
167
|
-
|
|
168
|
-
## Summary
|
|
169
|
-
|
|
170
|
-
| Approach | Mental Model | Best For |
|
|
171
|
-
|----------|--------------|----------|
|
|
172
|
-
| Subagents | Function calls | Hierarchical, stateless, one-shot |
|
|
173
|
-
| Agent-Relay | Microservices | Mesh, persistent, observable |
|
|
174
|
-
|
|
175
|
-
**Rule of thumb:** Start with subagents. Move to agent-relay when you need persistence, observability, or peer-to-peer communication.
|
package/docs/CHANGELOG.md
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 0.1.0
|
|
4
|
-
|
|
5
|
-
Initial public release.
|
|
6
|
-
|
|
7
|
-
- Local daemon + client protocol for low-latency agent messaging (Unix domain sockets).
|
|
8
|
-
- `agent-relay wrap` for intercepting `->relay:AgentName ...` and `[[RELAY]]...[[/RELAY]]` messages.
|
|
9
|
-
- Inbox utilities (`inbox-write`, `inbox-poll`, etc.) for file-based coordination in shared workspaces.
|
|
10
|
-
- Built-in demos/games (e.g., tic-tac-toe) to validate turn-based coordination.
|
|
11
|
-
|