agent-relay 1.2.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/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/cli/index.js +218 -1
- package/dist/cloud/api/billing.js +30 -9
- 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/git.js +24 -3
- package/dist/cloud/api/onboarding.js +15 -2
- package/dist/cloud/api/repos.d.ts +1 -0
- package/dist/cloud/api/repos.js +186 -0
- package/dist/cloud/api/webhooks.d.ts +1 -0
- package/dist/cloud/api/webhooks.js +149 -0
- package/dist/cloud/api/workspaces.js +97 -6
- package/dist/cloud/billing/plans.js +19 -19
- package/dist/cloud/provisioner/index.d.ts +32 -0
- package/dist/cloud/provisioner/index.js +362 -21
- package/dist/cloud/server.js +6 -1
- package/dist/cloud/services/nango.d.ts +60 -0
- package/dist/cloud/services/nango.js +153 -0
- package/dist/cloud/services/planLimits.d.ts +22 -0
- package/dist/cloud/services/planLimits.js +58 -5
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -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-56a8b4616a90dc43.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-3eac37ea6f5dd153.js → page-c22d080201cbd9fb.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/{page-1081dd190a331a91.js → page-67a3e98d9a43a6ed.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/{page-daf87e86f783f980.js → page-77e9c65420a06cfb.js} +1 -1
- 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-fee4ed1709070bcd.js → page-68d34f50baa8ab6b.js} +1 -1
- 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-97850e03d723ea8c.js → main-ed4e1fb6f29c34cf.js} +1 -1
- 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 -1
- package/dist/dashboard/out/app.txt +2 -2
- package/dist/dashboard/out/connect-repos.html +1 -1
- package/dist/dashboard/out/connect-repos.txt +2 -2
- 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 +2 -2
- package/dist/dashboard/out/login.txt +2 -2
- 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 -1
- package/dist/dashboard/out/providers.txt +2 -2
- package/dist/dashboard/out/signup.html +2 -2
- package/dist/dashboard/out/signup.txt +2 -2
- package/package.json +2 -11
- 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/cli-pty-runner.d.ts.map +0 -1
- package/dist/cloud/api/cli-pty-runner.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/generic-webhooks.d.ts.map +0 -1
- package/dist/cloud/api/generic-webhooks.js.map +0 -1
- package/dist/cloud/api/git.d.ts.map +0 -1
- package/dist/cloud/api/git.js.map +0 -1
- package/dist/cloud/api/github-app.d.ts.map +0 -1
- package/dist/cloud/api/github-app.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/monitoring.d.ts.map +0 -1
- package/dist/cloud/api/monitoring.js.map +0 -1
- package/dist/cloud/api/nango-auth.d.ts.map +0 -1
- package/dist/cloud/api/nango-auth.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/policy.d.ts.map +0 -1
- package/dist/cloud/api/policy.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/test-helpers.d.ts.map +0 -1
- package/dist/cloud/api/test-helpers.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/webhooks.d.ts.map +0 -1
- package/dist/cloud/api/webhooks.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/auto-scaler.d.ts.map +0 -1
- package/dist/cloud/services/auto-scaler.js.map +0 -1
- package/dist/cloud/services/capacity-manager.d.ts.map +0 -1
- package/dist/cloud/services/capacity-manager.js.map +0 -1
- package/dist/cloud/services/ci-agent-spawner.d.ts.map +0 -1
- package/dist/cloud/services/ci-agent-spawner.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/index.d.ts.map +0 -1
- package/dist/cloud/services/index.js.map +0 -1
- package/dist/cloud/services/mention-handler.d.ts.map +0 -1
- package/dist/cloud/services/mention-handler.js.map +0 -1
- package/dist/cloud/services/nango.d.ts.map +0 -1
- package/dist/cloud/services/nango.js.map +0 -1
- package/dist/cloud/services/persistence.d.ts.map +0 -1
- package/dist/cloud/services/persistence.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/services/scaling-orchestrator.d.ts.map +0 -1
- package/dist/cloud/services/scaling-orchestrator.js.map +0 -1
- package/dist/cloud/services/scaling-policy.d.ts.map +0 -1
- package/dist/cloud/services/scaling-policy.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/cloud/webhooks/index.d.ts.map +0 -1
- package/dist/cloud/webhooks/index.js.map +0 -1
- package/dist/cloud/webhooks/parsers/github.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/github.js.map +0 -1
- package/dist/cloud/webhooks/parsers/index.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/index.js.map +0 -1
- package/dist/cloud/webhooks/parsers/linear.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/linear.js.map +0 -1
- package/dist/cloud/webhooks/parsers/slack.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/slack.js.map +0 -1
- package/dist/cloud/webhooks/responders/github.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/github.js.map +0 -1
- package/dist/cloud/webhooks/responders/index.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/index.js.map +0 -1
- package/dist/cloud/webhooks/responders/linear.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/linear.js.map +0 -1
- package/dist/cloud/webhooks/responders/slack.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/slack.js.map +0 -1
- package/dist/cloud/webhooks/router.d.ts.map +0 -1
- package/dist/cloud/webhooks/router.js.map +0 -1
- package/dist/cloud/webhooks/rules-engine.d.ts.map +0 -1
- package/dist/cloud/webhooks/rules-engine.js.map +0 -1
- package/dist/cloud/webhooks/types.d.ts.map +0 -1
- package/dist/cloud/webhooks/types.js.map +0 -1
- package/dist/continuity/formatter.d.ts.map +0 -1
- package/dist/continuity/formatter.js.map +0 -1
- package/dist/continuity/handoff-store.d.ts.map +0 -1
- package/dist/continuity/handoff-store.js.map +0 -1
- package/dist/continuity/index.d.ts.map +0 -1
- package/dist/continuity/index.js.map +0 -1
- package/dist/continuity/ledger-store.d.ts.map +0 -1
- package/dist/continuity/ledger-store.js.map +0 -1
- package/dist/continuity/manager.d.ts.map +0 -1
- package/dist/continuity/manager.js.map +0 -1
- package/dist/continuity/parser.d.ts.map +0 -1
- package/dist/continuity/parser.js.map +0 -1
- package/dist/continuity/types.d.ts.map +0 -1
- package/dist/continuity/types.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/cli-auth.d.ts.map +0 -1
- package/dist/daemon/cli-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/services/browser-testing.d.ts.map +0 -1
- package/dist/daemon/services/browser-testing.js.map +0 -1
- package/dist/daemon/services/container-spawner.d.ts.map +0 -1
- package/dist/daemon/services/container-spawner.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/480-2d4111711d4e473c.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/766-c3a14283c88d815b.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/page-7120be68bea622f3.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-dc2e3a1a22478efc.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-4d72d5a5d8a9b618.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-b68a681526eb145e.js +0 -1
- package/dist/dashboard/out/_next/static/css/411ce23ffeae9f76.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/emitter.d.ts.map +0 -1
- package/dist/hooks/emitter.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/registry.d.ts.map +0 -1
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/trajectory-hooks.d.ts.map +0 -1
- package/dist/hooks/trajectory-hooks.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/memory/adapters/index.d.ts.map +0 -1
- package/dist/memory/adapters/index.js.map +0 -1
- package/dist/memory/adapters/inmemory.d.ts.map +0 -1
- package/dist/memory/adapters/inmemory.js.map +0 -1
- package/dist/memory/adapters/supermemory.d.ts.map +0 -1
- package/dist/memory/adapters/supermemory.js.map +0 -1
- package/dist/memory/factory.d.ts.map +0 -1
- package/dist/memory/factory.js.map +0 -1
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/memory-hooks.d.ts.map +0 -1
- package/dist/memory/memory-hooks.js.map +0 -1
- package/dist/memory/service.d.ts.map +0 -1
- package/dist/memory/service.js.map +0 -1
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/memory/types.js.map +0 -1
- package/dist/policy/agent-policy.d.ts.map +0 -1
- package/dist/policy/agent-policy.js.map +0 -1
- package/dist/policy/cloud-policy-fetcher.d.ts.map +0 -1
- package/dist/policy/cloud-policy-fetcher.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/crash-insights.d.ts.map +0 -1
- package/dist/resiliency/crash-insights.js.map +0 -1
- package/dist/resiliency/gossip-health.d.ts.map +0 -1
- package/dist/resiliency/gossip-health.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/leader-watchdog.d.ts.map +0 -1
- package/dist/resiliency/leader-watchdog.js.map +0 -1
- package/dist/resiliency/logger.d.ts.map +0 -1
- package/dist/resiliency/logger.js.map +0 -1
- package/dist/resiliency/memory-monitor.d.ts.map +0 -1
- package/dist/resiliency/memory-monitor.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/stateless-lead.d.ts.map +0 -1
- package/dist/resiliency/stateless-lead.js.map +0 -1
- package/dist/resiliency/supervisor.d.ts.map +0 -1
- package/dist/resiliency/supervisor.js.map +0 -1
- package/dist/shared/cli-auth-config.d.ts.map +0 -1
- package/dist/shared/cli-auth-config.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/trajectory/config.d.ts.map +0 -1
- package/dist/trajectory/config.js.map +0 -1
- package/dist/trajectory/index.d.ts.map +0 -1
- package/dist/trajectory/index.js.map +0 -1
- package/dist/trajectory/integration.d.ts.map +0 -1
- package/dist/trajectory/integration.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/shared.d.ts.map +0 -1
- package/dist/wrapper/shared.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/CLOUD-ARCHITECTURE.md +0 -804
- package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
- package/docs/CONTRIBUTING.md +0 -151
- package/docs/HOOKS_API.md +0 -394
- package/docs/INTEGRATION-GUIDE.md +0 -926
- package/docs/PROTOCOL.md +0 -325
- package/docs/WRAPPER_EVENTS.md +0 -358
- package/docs/agent-policy-snippet.md +0 -40
- package/docs/agent-relay-protocol.md +0 -238
- package/docs/agent-relay-snippet.md +0 -174
- package/docs/archive/CHANGELOG.md +0 -11
- package/docs/archive/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
- package/docs/archive/DESIGN_BRIDGE_STAFFING.md +0 -878
- package/docs/archive/DESIGN_V2.md +0 -1079
- package/docs/archive/EXECUTIVE_SUMMARY.md +0 -358
- package/docs/archive/MONETIZATION.md +0 -1679
- package/docs/archive/PROPOSAL-trajectories.md +0 -1582
- package/docs/archive/ROADMAP.md +0 -329
- package/docs/archive/SCALING_ANALYSIS.md +0 -280
- package/docs/archive/TESTING_PRESENCE_FEATURES.md +0 -327
- package/docs/archive/TMUX_IMPLEMENTATION_NOTES.md +0 -364
- package/docs/archive/TMUX_IMPROVEMENTS.md +0 -968
- package/docs/archive/dashboard-v2-plan.md +0 -179
- package/docs/archive/removable-code-analysis.md +0 -24
- package/docs/competitive/GASTOWN.md +0 -451
- package/docs/competitive/MCP_AGENT_MAIL.md +0 -389
- package/docs/competitive/OVERVIEW.md +0 -898
- package/docs/competitive/README.md +0 -34
- package/docs/competitive/TMUX_ORCHESTRATOR.md +0 -605
- package/docs/dashboard.png +0 -0
- package/docs/design/ci-failure-webhooks.md +0 -812
- package/docs/design/comprehensive-integrations.md +0 -238
- package/docs/design/e2b-sandbox-integration.md +0 -504
- package/docs/design/github-app-permissions.md +0 -264
- package/docs/guides/CLOUD.md +0 -236
- package/docs/guides/LOCAL.md +0 -535
- package/docs/guides/SELF-HOSTED.md +0 -494
- package/docs/local-testing.md +0 -428
- package/docs/proposals/continuous-claude-integration.md +0 -622
- package/docs/proposals/custom-commands.md +0 -368
- package/docs/proposals/shadow-as-subagent.md +0 -765
- package/docs/proposals/slack-bot-integration.md +0 -1457
- package/docs/tasks/global-skills-system.tasks.md +0 -230
- package/docs/tasks/webhook-integrations.tasks.md +0 -184
- package/docs/tasks/workspace-capabilities.tasks.md +0 -121
- package/docs/testing/RESILIENCY-TEST-PLAN-2026-01-01.md +0 -366
- package/scripts/cloud-setup.sh +0 -96
- 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/manual-qa.sh +0 -293
- package/scripts/run-cloud-qa.sh +0 -220
- package/scripts/test-cli-auth/Dockerfile +0 -44
- package/scripts/test-cli-auth/Dockerfile.real +0 -79
- package/scripts/test-cli-auth/README.md +0 -286
- package/scripts/test-cli-auth/ci-test-real-clis.ts +0 -251
- package/scripts/test-cli-auth/ci-test-runner.ts +0 -263
- package/scripts/test-cli-auth/mock-cli.sh +0 -147
- package/scripts/test-cli-auth/package.json +0 -14
- package/scripts/test-cli-auth/test-oauth-flow.ts +0 -220
- package/scripts/test-pty-input-auto.js +0 -222
- package/scripts/test-pty-input.js +0 -150
- package/scripts/tictactoe-setup.sh +0 -181
- /package/dist/dashboard/out/_next/static/chunks/{117-b100311aff8d5c61.js → 117-f7b8ab0809342e77.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-a13d3c2b1be45466.js → 648-5cc6e1921389a58a.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{724-73c1ee5f60abe860.js → 724-2dae7627550ab88f.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-a4973f3e3c82fb67.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/{H5aWG0udPB4iOUIl_gytz → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{H5aWG0udPB4iOUIl_gytz → wPgKJtcOmTFLpUncDg16A}/_ssgManifest.js +0 -0
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
# Dashboard V2 Architecture Plan
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Migrate from vanilla TypeScript to Next.js with enhanced fleet control capabilities.
|
|
6
|
-
Inspired by AI Maestro's hierarchical naming and color coding system.
|
|
7
|
-
|
|
8
|
-
## Key Features
|
|
9
|
-
|
|
10
|
-
### 1. Fleet Overview
|
|
11
|
-
- Multi-server visualization with expandable project cards
|
|
12
|
-
- Agent cards with real-time status indicators
|
|
13
|
-
- Hierarchical grouping based on agent naming (e.g., `backend-api`, `frontend-ui`)
|
|
14
|
-
|
|
15
|
-
### 2. Agent Status Cards
|
|
16
|
-
- Color-coded by project/role hierarchy
|
|
17
|
-
- Status badge (online/offline/busy)
|
|
18
|
-
- Unread message indicator (red dot, iPhone-style)
|
|
19
|
-
- Current task summary from [[SUMMARY]] blocks
|
|
20
|
-
- Quick actions: message, spawn similar, view trajectory
|
|
21
|
-
|
|
22
|
-
### 3. Task Assignment UI
|
|
23
|
-
- Drag-and-drop task assignment to agents
|
|
24
|
-
- Integration with beads task system
|
|
25
|
-
- Visual dependency graph
|
|
26
|
-
- Priority indicators (P1-P4 color coding)
|
|
27
|
-
|
|
28
|
-
### 4. Trajectory Viewer
|
|
29
|
-
- Timeline visualization of agent decisions
|
|
30
|
-
- Expandable decision nodes
|
|
31
|
-
- Context diff viewer
|
|
32
|
-
- Replay capability
|
|
33
|
-
|
|
34
|
-
### 5. Decision Queue
|
|
35
|
-
- Pending decisions requiring human input
|
|
36
|
-
- Priority-sorted list
|
|
37
|
-
- One-click approve/reject
|
|
38
|
-
- Bulk actions
|
|
39
|
-
|
|
40
|
-
## Color Coding System
|
|
41
|
-
|
|
42
|
-
### Hierarchical Colors (from agent name prefix)
|
|
43
|
-
```
|
|
44
|
-
backend-* → Blue (#1264a3)
|
|
45
|
-
frontend-* → Purple (#7c3aed)
|
|
46
|
-
infra-* → Orange (#ea580c)
|
|
47
|
-
lead-* → Green (#2bac76)
|
|
48
|
-
test-* → Teal (#0d9488)
|
|
49
|
-
(default) → Gray (#6b7280)
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Status Colors
|
|
53
|
-
```
|
|
54
|
-
online → Green dot
|
|
55
|
-
offline → Gray dot
|
|
56
|
-
busy → Yellow dot
|
|
57
|
-
error → Red dot
|
|
58
|
-
attention → Red badge overlay
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Tech Stack
|
|
62
|
-
|
|
63
|
-
### Frontend
|
|
64
|
-
- Next.js 14 (App Router)
|
|
65
|
-
- React Server Components where applicable
|
|
66
|
-
- Tailwind CSS for styling
|
|
67
|
-
- Framer Motion for animations
|
|
68
|
-
- React Query for data fetching
|
|
69
|
-
- WebSocket for real-time updates
|
|
70
|
-
|
|
71
|
-
### State Management
|
|
72
|
-
- Zustand for client state
|
|
73
|
-
- React Query for server state
|
|
74
|
-
- WebSocket context for real-time
|
|
75
|
-
|
|
76
|
-
## Directory Structure
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
src/dashboard-v2/
|
|
80
|
-
├── app/
|
|
81
|
-
│ ├── layout.tsx
|
|
82
|
-
│ ├── page.tsx # Main dashboard
|
|
83
|
-
│ ├── fleet/
|
|
84
|
-
│ │ └── page.tsx # Fleet overview
|
|
85
|
-
│ ├── agent/[name]/
|
|
86
|
-
│ │ └── page.tsx # Agent detail view
|
|
87
|
-
│ ├── trajectory/
|
|
88
|
-
│ │ └── page.tsx # Trajectory viewer
|
|
89
|
-
│ └── decisions/
|
|
90
|
-
│ └── page.tsx # Decision queue
|
|
91
|
-
├── components/
|
|
92
|
-
│ ├── layout/
|
|
93
|
-
│ │ ├── Sidebar.tsx
|
|
94
|
-
│ │ ├── Header.tsx
|
|
95
|
-
│ │ └── CommandPalette.tsx
|
|
96
|
-
│ ├── agents/
|
|
97
|
-
│ │ ├── AgentCard.tsx
|
|
98
|
-
│ │ ├── AgentList.tsx
|
|
99
|
-
│ │ └── AgentStatus.tsx
|
|
100
|
-
│ ├── fleet/
|
|
101
|
-
│ │ ├── FleetOverview.tsx
|
|
102
|
-
│ │ ├── ProjectCard.tsx
|
|
103
|
-
│ │ └── ServerStatus.tsx
|
|
104
|
-
│ ├── messages/
|
|
105
|
-
│ │ ├── MessageList.tsx
|
|
106
|
-
│ │ ├── MessageComposer.tsx
|
|
107
|
-
│ │ └── ThreadPanel.tsx
|
|
108
|
-
│ ├── tasks/
|
|
109
|
-
│ │ ├── TaskBoard.tsx
|
|
110
|
-
│ │ ├── TaskCard.tsx
|
|
111
|
-
│ │ └── TaskAssignment.tsx
|
|
112
|
-
│ ├── trajectory/
|
|
113
|
-
│ │ ├── Timeline.tsx
|
|
114
|
-
│ │ ├── DecisionNode.tsx
|
|
115
|
-
│ │ └── ContextDiff.tsx
|
|
116
|
-
│ └── decisions/
|
|
117
|
-
│ ├── DecisionQueue.tsx
|
|
118
|
-
│ └── DecisionCard.tsx
|
|
119
|
-
├── hooks/
|
|
120
|
-
│ ├── useWebSocket.ts
|
|
121
|
-
│ ├── useAgents.ts
|
|
122
|
-
│ ├── useMessages.ts
|
|
123
|
-
│ └── useFleet.ts
|
|
124
|
-
├── lib/
|
|
125
|
-
│ ├── api.ts
|
|
126
|
-
│ ├── colors.ts # Color coding logic
|
|
127
|
-
│ └── hierarchy.ts # Agent name parsing
|
|
128
|
-
└── types/
|
|
129
|
-
└── index.ts
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## API Endpoints Needed
|
|
133
|
-
|
|
134
|
-
### Existing (keep)
|
|
135
|
-
- `GET /ws` - WebSocket for real-time updates
|
|
136
|
-
- `POST /api/send` - Send message
|
|
137
|
-
- `POST /api/spawn` - Spawn agent
|
|
138
|
-
- `GET /api/spawned` - List spawned agents
|
|
139
|
-
- `DELETE /api/spawned/:name` - Release agent
|
|
140
|
-
|
|
141
|
-
### New (for v2)
|
|
142
|
-
- `GET /api/trajectory/:agent` - Agent decision history
|
|
143
|
-
- `GET /api/decisions` - Pending decisions queue
|
|
144
|
-
- `POST /api/decisions/:id/resolve` - Resolve a decision
|
|
145
|
-
- `GET /api/tasks` - Beads integration for task list
|
|
146
|
-
- `POST /api/tasks/:id/assign` - Assign task to agent
|
|
147
|
-
|
|
148
|
-
## Implementation Phases
|
|
149
|
-
|
|
150
|
-
### Phase 1: Foundation (Current Sprint)
|
|
151
|
-
- [ ] Set up Next.js project structure
|
|
152
|
-
- [ ] Implement color coding system
|
|
153
|
-
- [ ] Create basic layout components
|
|
154
|
-
- [ ] Port existing WebSocket logic
|
|
155
|
-
|
|
156
|
-
### Phase 2: Core Features
|
|
157
|
-
- [ ] Agent cards with hierarchy grouping
|
|
158
|
-
- [ ] Enhanced message view
|
|
159
|
-
- [ ] Fleet overview page
|
|
160
|
-
- [ ] Real-time status updates
|
|
161
|
-
|
|
162
|
-
### Phase 3: Advanced Features
|
|
163
|
-
- [ ] Trajectory viewer
|
|
164
|
-
- [ ] Decision queue
|
|
165
|
-
- [ ] Task assignment UI
|
|
166
|
-
- [ ] Beads integration
|
|
167
|
-
|
|
168
|
-
### Phase 4: Polish
|
|
169
|
-
- [ ] Animations and transitions
|
|
170
|
-
- [ ] Keyboard shortcuts
|
|
171
|
-
- [ ] Mobile responsiveness
|
|
172
|
-
- [ ] Performance optimization
|
|
173
|
-
|
|
174
|
-
## Migration Strategy
|
|
175
|
-
|
|
176
|
-
1. Build v2 alongside existing dashboard
|
|
177
|
-
2. New route: `/v2` or separate port during development
|
|
178
|
-
3. Feature parity checkpoint before switching
|
|
179
|
-
4. Gradual rollout with feature flags
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Removable Code Analysis
|
|
2
|
-
|
|
3
|
-
Requested: identify code/assets likely safe to remove (unused, legacy, or duplicates).
|
|
4
|
-
|
|
5
|
-
## Candidates
|
|
6
|
-
1) `run-dashboard.js`
|
|
7
|
-
- Purpose: helper to start dashboard from built `dist/dashboard/server.js`.
|
|
8
|
-
- Evidence: Dashboard now exposed via CLI subcommand `dashboard` in `src/cli/index.ts`. No `rg` references to `run-dashboard.js`. Redundant helper.
|
|
9
|
-
|
|
10
|
-
2) `scripts/games/*` and `scripts/tictactoe-setup.sh`
|
|
11
|
-
- Purpose: old demo/game scripts (hearts/tictactoe).
|
|
12
|
-
- Evidence: Not referenced by CLI commands or docs (checked with `rg`). Pure examples; removable if demos not needed.
|
|
13
|
-
|
|
14
|
-
3) `src/hooks/check-inbox.sh`
|
|
15
|
-
- Purpose: legacy hook example for Claude stop-event inbox check.
|
|
16
|
-
- Evidence: Replaced by compiled hook in `dist/hooks/inbox-check/*` and TypeScript sources in `src/hooks/inbox-check/*`. No other references via `rg`, so redundant.
|
|
17
|
-
|
|
18
|
-
4) `coverage/` directory
|
|
19
|
-
- Purpose: test coverage artifacts.
|
|
20
|
-
- Evidence: Generated output; not source. Safe to delete/regenerate.
|
|
21
|
-
|
|
22
|
-
5) `TOMORROW.md`
|
|
23
|
-
- Purpose: session notes / planning doc.
|
|
24
|
-
- Evidence: Not used by runtime or tests; optional to keep for historical notes only.
|
|
@@ -1,451 +0,0 @@
|
|
|
1
|
-
# Gastown vs Agent Relay: Deep Architectural Analysis
|
|
2
|
-
|
|
3
|
-
A comprehensive comparison of two multi-agent orchestration systems for Claude Code.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Executive Summary
|
|
8
|
-
|
|
9
|
-
| Dimension | Gastown | Agent Relay |
|
|
10
|
-
|-----------|---------|-------------|
|
|
11
|
-
| **Primary Language** | Go (99.6%) | TypeScript/Node.js |
|
|
12
|
-
| **Core Philosophy** | Work-centric orchestration ("hooks + molecules") | Communication-centric ("real-time messaging") |
|
|
13
|
-
| **State Management** | Git-backed persistent (Beads) | SQLite ephemeral + optional cloud |
|
|
14
|
-
| **Agent Lifecycle** | Managed (polecats spawn/die) | User-managed (wrapper only) |
|
|
15
|
-
| **Scaling Target** | 20-30 agents | ~50 agents |
|
|
16
|
-
| **Complexity** | High (38 internal packages) | Moderate (6 architectural layers) |
|
|
17
|
-
| **Workflow System** | Formulas → Molecules (TOML-based) | None (pure messaging) |
|
|
18
|
-
| **Cross-Project** | Federation with HOP protocol | Bridge mode with socket connections |
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## 1. Architectural Philosophy
|
|
23
|
-
|
|
24
|
-
### Gastown: "The Steam Engine Model"
|
|
25
|
-
|
|
26
|
-
Gastown treats multi-agent coordination as an **industrial workflow problem**. The core metaphor is a steam engine where:
|
|
27
|
-
|
|
28
|
-
- **Hooks** are pistons that hold work
|
|
29
|
-
- **Agents** are workers that execute when work appears
|
|
30
|
-
- **The Propulsion Principle**: "If you find something on your hook, YOU RUN IT"
|
|
31
|
-
|
|
32
|
-
This creates a **push-based, autonomous execution model** where agents don't wait for confirmation—they execute immediately upon receiving work. The system prioritizes:
|
|
33
|
-
|
|
34
|
-
1. **Work persistence over agent persistence** - Work survives agent crashes
|
|
35
|
-
2. **Accountability** - Git-backed ledger tracks who did what
|
|
36
|
-
3. **Reproducibility** - Formulas define repeatable workflows
|
|
37
|
-
|
|
38
|
-
### Agent Relay: "The Postal Service Model"
|
|
39
|
-
|
|
40
|
-
Agent Relay treats multi-agent coordination as a **communication problem**. The core insight is that AI agents already produce text output, so:
|
|
41
|
-
|
|
42
|
-
- **Output parsing** extracts intent from `->relay:` patterns
|
|
43
|
-
- **Message routing** delivers messages between agents
|
|
44
|
-
- **Terminal injection** presents messages as user input
|
|
45
|
-
|
|
46
|
-
This creates a **peer-to-peer, message-passing model** where agents communicate freely. The system prioritizes:
|
|
47
|
-
|
|
48
|
-
1. **Zero agent modification** - Works with any CLI-based AI
|
|
49
|
-
2. **Transparency** - Users see `->relay:` commands in output
|
|
50
|
-
3. **Simplicity** - Just messaging, nothing else
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## 2. Component Architecture
|
|
55
|
-
|
|
56
|
-
### Gastown's Role Hierarchy
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
60
|
-
│ TOWN │
|
|
61
|
-
├─────────────────────────────────────────────────────────────┤
|
|
62
|
-
│ Mayor (Global Coordinator) │
|
|
63
|
-
│ └── Deacon (Background Daemon) │
|
|
64
|
-
│ └── Dog (Infrastructure Helpers) │
|
|
65
|
-
├─────────────────────────────────────────────────────────────┤
|
|
66
|
-
│ RIG (Per-Project) │
|
|
67
|
-
│ ├── Witness (Lifecycle Monitor) │
|
|
68
|
-
│ ├── Refinery (Merge Queue Processor) │
|
|
69
|
-
│ └── Polecats (Ephemeral Workers) │
|
|
70
|
-
│ └── Each with own git worktree │
|
|
71
|
-
├─────────────────────────────────────────────────────────────┤
|
|
72
|
-
│ CREW (Persistent Workers) │
|
|
73
|
-
│ └── User-managed, long-lived, exploratory work │
|
|
74
|
-
└─────────────────────────────────────────────────────────────┘
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
**38 internal packages** organized by domain:
|
|
78
|
-
- **Core**: boot, config, daemon, session
|
|
79
|
-
- **Communication**: mail, mq, protocol, feed
|
|
80
|
-
- **Development**: git, tmux, tui, workspace
|
|
81
|
-
- **Workflow**: formula, molecules, checkpoint
|
|
82
|
-
- **Specialized**: claude, beads, swarm, refinery
|
|
83
|
-
|
|
84
|
-
### Agent Relay's Layer Model
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
88
|
-
│ Layer 6: Dashboard (Web UI monitoring) │
|
|
89
|
-
├─────────────────────────────────────────────────────────────┤
|
|
90
|
-
│ Layer 5: Storage (SQLite persistence) │
|
|
91
|
-
├─────────────────────────────────────────────────────────────┤
|
|
92
|
-
│ Layer 4: Protocol (Wire format, envelopes) │
|
|
93
|
-
├─────────────────────────────────────────────────────────────┤
|
|
94
|
-
│ Layer 3: Daemon (Message broker, routing) │
|
|
95
|
-
├─────────────────────────────────────────────────────────────┤
|
|
96
|
-
│ Layer 2: Wrapper (Tmux, parsing, injection) │
|
|
97
|
-
├─────────────────────────────────────────────────────────────┤
|
|
98
|
-
│ Layer 1: CLI (User interface) │
|
|
99
|
-
└─────────────────────────────────────────────────────────────┘
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**~15 source files** with clear responsibilities:
|
|
103
|
-
- CLI entry → TmuxWrapper → OutputParser → RelayClient → Daemon → Router
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## 3. Work & State Management
|
|
108
|
-
|
|
109
|
-
### Gastown: MEOW (Molecular Expression Of Work)
|
|
110
|
-
|
|
111
|
-
Gastown introduces a sophisticated work lifecycle:
|
|
112
|
-
|
|
113
|
-
```
|
|
114
|
-
Formula (TOML) → Protomolecule → Molecule → Wisp
|
|
115
|
-
"Ice-9" "Solid" "Liquid" "Vapor"
|
|
116
|
-
(Template) (Frozen template) (Active workflow) (Ephemeral)
|
|
117
|
-
|
|
118
|
-
Operations:
|
|
119
|
-
cook: Formula → Protomolecule
|
|
120
|
-
pour: Protomolecule → Molecule
|
|
121
|
-
wisp: Create ephemeral work
|
|
122
|
-
squash: Compress completed molecule to digest
|
|
123
|
-
burn: Discard wisp
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**Formulas define multi-step workflows** in TOML:
|
|
127
|
-
- Steps with dependencies
|
|
128
|
-
- Crash recovery points
|
|
129
|
-
- Reproducible execution paths
|
|
130
|
-
|
|
131
|
-
**Beads provides git-backed persistence**:
|
|
132
|
-
- Issues stored in `.beads/beads.jsonl`
|
|
133
|
-
- Complete audit trail
|
|
134
|
-
- Survives agent restarts
|
|
135
|
-
|
|
136
|
-
### Agent Relay: Message Persistence
|
|
137
|
-
|
|
138
|
-
Agent Relay has simpler state:
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
Message → SQLite → Agents.json (for dashboard)
|
|
142
|
-
↓
|
|
143
|
-
SessionStorage
|
|
144
|
-
↓
|
|
145
|
-
AgentSummaries (optional)
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
**Messages are ephemeral by default**:
|
|
149
|
-
- SQLite stores history for querying
|
|
150
|
-
- No built-in workflow state
|
|
151
|
-
- Sessions track agent lifecycle
|
|
152
|
-
|
|
153
|
-
**Optional cloud sync** for cross-machine:
|
|
154
|
-
- Remote agent discovery
|
|
155
|
-
- Cross-machine message routing
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## 4. Communication Protocols
|
|
160
|
-
|
|
161
|
-
### Gastown Mail Protocol
|
|
162
|
-
|
|
163
|
-
Structured message types for specific purposes:
|
|
164
|
-
|
|
165
|
-
| Message Type | Purpose |
|
|
166
|
-
|--------------|---------|
|
|
167
|
-
| `POLECAT_DONE` | Worker signals completion |
|
|
168
|
-
| `MERGE_READY` | Work ready for integration |
|
|
169
|
-
| `MERGED` / `MERGE_FAILED` | Merge outcomes |
|
|
170
|
-
| `REWORK_REQUEST` | Conflict resolution needed |
|
|
171
|
-
| `WITNESS_PING` | Health monitoring |
|
|
172
|
-
| `HELP` | Escalation request |
|
|
173
|
-
| `HANDOFF` | Session continuity |
|
|
174
|
-
|
|
175
|
-
**Format**: Uppercase type prefixes, key-value pairs, markdown sections.
|
|
176
|
-
|
|
177
|
-
**Addressing**: `<rig>/<role>` for routing clarity.
|
|
178
|
-
|
|
179
|
-
### Agent Relay Protocol
|
|
180
|
-
|
|
181
|
-
General-purpose envelope system:
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
interface Envelope<T> {
|
|
185
|
-
v: number; // Protocol version
|
|
186
|
-
type: MessageType; // HELLO, SEND, DELIVER, etc.
|
|
187
|
-
id: string; // UUID
|
|
188
|
-
ts: number; // Timestamp
|
|
189
|
-
from?: string; // Sender
|
|
190
|
-
to?: string | '*'; // Recipient or broadcast
|
|
191
|
-
topic?: string; // Optional channel
|
|
192
|
-
payload: T; // Message content
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Message Types**: HELLO, WELCOME, SEND, DELIVER, ACK, NACK, PING, PONG, SUBSCRIBE, etc.
|
|
197
|
-
|
|
198
|
-
**Addressing**: Agent names directly, `*` for broadcast, topics for pub/sub.
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
## 5. Agent Lifecycle
|
|
203
|
-
|
|
204
|
-
### Gastown: Managed Agents
|
|
205
|
-
|
|
206
|
-
**Polecats** (ephemeral workers):
|
|
207
|
-
- Spawned by Witness when work appears
|
|
208
|
-
- Each gets own git worktree
|
|
209
|
-
- Automatically cleaned up when done
|
|
210
|
-
- Supervised for stuck/failed states
|
|
211
|
-
|
|
212
|
-
**Crew** (persistent workers):
|
|
213
|
-
- User-managed Claude instances
|
|
214
|
-
- Long-lived for exploratory work
|
|
215
|
-
- Own personal repository clones
|
|
216
|
-
|
|
217
|
-
**Full Stack Mode** with daemon:
|
|
218
|
-
- `gt start` launches supervision
|
|
219
|
-
- Automatic spawning based on work queue
|
|
220
|
-
- Health monitoring and escalation
|
|
221
|
-
|
|
222
|
-
### Agent Relay: Wrapped Agents
|
|
223
|
-
|
|
224
|
-
**TmuxWrapper** wraps any CLI:
|
|
225
|
-
- User starts agents manually
|
|
226
|
-
- Wrapper provides messaging layer
|
|
227
|
-
- Agent lifecycle is user's responsibility
|
|
228
|
-
|
|
229
|
-
**Bridge Mode** for orchestration:
|
|
230
|
-
- Architect agent coordinates multiple projects
|
|
231
|
-
- Can spawn/release workers
|
|
232
|
-
- But spawning is delegated, not managed
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
## 6. Cross-Project Coordination
|
|
237
|
-
|
|
238
|
-
### Gastown: Federation
|
|
239
|
-
|
|
240
|
-
**HOP Protocol** for distributed references:
|
|
241
|
-
```
|
|
242
|
-
hop://entity/chain/rig/issue-id
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
**Three-level entity model**:
|
|
246
|
-
1. Entities (persons/organizations)
|
|
247
|
-
2. Chains (workspaces per entity)
|
|
248
|
-
3. Work units (issues, tasks)
|
|
249
|
-
|
|
250
|
-
**Features**:
|
|
251
|
-
- Cross-workspace queries
|
|
252
|
-
- Agent provenance via git metadata
|
|
253
|
-
- Aggregation across relationships
|
|
254
|
-
- "Monorepo-like visibility" with autonomy
|
|
255
|
-
|
|
256
|
-
### Agent Relay: Bridge Mode
|
|
257
|
-
|
|
258
|
-
**MultiProjectClient** connects multiple daemons:
|
|
259
|
-
```typescript
|
|
260
|
-
// Connect to project daemons via Unix sockets
|
|
261
|
-
agent-relay bridge ~/auth ~/frontend ~/api
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**Addressing**:
|
|
265
|
-
```
|
|
266
|
-
->relay:projectId:agent # Specific agent in project
|
|
267
|
-
->relay:*:lead # All project leads
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
**Features**:
|
|
271
|
-
- Architect agent perspective
|
|
272
|
-
- Cross-project broadcasts
|
|
273
|
-
- Spawn/release workers
|
|
274
|
-
- But simpler than federation
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## 7. Pros & Cons
|
|
279
|
-
|
|
280
|
-
### Gastown
|
|
281
|
-
|
|
282
|
-
**Pros**:
|
|
283
|
-
1. **Crash-resistant** - Work persists on hooks, survives restarts
|
|
284
|
-
2. **Reproducible workflows** - Formulas define exact steps
|
|
285
|
-
3. **Git-integrated** - Full audit trail, provenance tracking
|
|
286
|
-
4. **Sophisticated scaling** - Designed for 20-30 agents comfortably
|
|
287
|
-
5. **Merge queue** - Built-in code integration workflow
|
|
288
|
-
6. **Federation** - True distributed coordination
|
|
289
|
-
|
|
290
|
-
**Cons**:
|
|
291
|
-
1. **Complexity** - 38 packages, steep learning curve
|
|
292
|
-
2. **Go-only** - Harder to extend for Node.js projects
|
|
293
|
-
3. **Opinionated** - Requires adopting Beads for issue tracking
|
|
294
|
-
4. **Setup overhead** - More infrastructure to run
|
|
295
|
-
|
|
296
|
-
### Agent Relay
|
|
297
|
-
|
|
298
|
-
**Pros**:
|
|
299
|
-
1. **Simplicity** - 6 layers, easy to understand
|
|
300
|
-
2. **Universal** - Works with any CLI agent unmodified
|
|
301
|
-
3. **Transparent** - Users see all communication
|
|
302
|
-
4. **TypeScript** - Easy to extend for web projects
|
|
303
|
-
5. **Low overhead** - Just messaging, minimal infrastructure
|
|
304
|
-
6. **Dashboard** - Built-in real-time monitoring UI
|
|
305
|
-
|
|
306
|
-
**Cons**:
|
|
307
|
-
1. **No workflow system** - Pure messaging, no task orchestration
|
|
308
|
-
2. **Ephemeral by default** - Work state not persistent
|
|
309
|
-
3. **Fragile parsing** - Output parsing can miss messages
|
|
310
|
-
4. **No merge queue** - Code integration is external
|
|
311
|
-
5. **Simple scaling** - Less sophisticated than Gastown
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## 8. Key Learnings for Relay
|
|
316
|
-
|
|
317
|
-
### Ideas to Adopt
|
|
318
|
-
|
|
319
|
-
1. **Propulsion Principle**
|
|
320
|
-
- Agents should act immediately on received work
|
|
321
|
-
- Don't wait for confirmation if work is clearly assigned
|
|
322
|
-
- Could add `ack_required` flag for critical messages
|
|
323
|
-
|
|
324
|
-
2. **Persistent Work Hooks**
|
|
325
|
-
- Consider file-based "hook" per agent that survives restarts
|
|
326
|
-
- Agent checks hook on startup, continues pending work
|
|
327
|
-
- Already have inbox files—could extend to work assignments
|
|
328
|
-
|
|
329
|
-
3. **Formulas/Workflows**
|
|
330
|
-
- Could add simple TOML/YAML workflow definitions
|
|
331
|
-
- Multi-step task templates with dependency tracking
|
|
332
|
-
- Not as complex as molecules, but structured
|
|
333
|
-
|
|
334
|
-
4. **Git Integration for Provenance**
|
|
335
|
-
- Track agent actions in git metadata
|
|
336
|
-
- `GIT_AUTHOR_NAME="relay/Alice"` for attribution
|
|
337
|
-
- Audit trail for who did what
|
|
338
|
-
|
|
339
|
-
5. **Health Monitoring**
|
|
340
|
-
- Heartbeat escalation like WITNESS_PING
|
|
341
|
-
- Auto-detect stuck agents
|
|
342
|
-
- Surface to dashboard with alerts
|
|
343
|
-
|
|
344
|
-
6. **Merge Queue Concept**
|
|
345
|
-
- Not necessarily a full refinery
|
|
346
|
-
- But workflow for "work complete, ready for integration"
|
|
347
|
-
- Could trigger CI/CD or human review
|
|
348
|
-
|
|
349
|
-
### Ideas to Evaluate
|
|
350
|
-
|
|
351
|
-
1. **Beads Integration**
|
|
352
|
-
- Relay already mentions Beads compatibility
|
|
353
|
-
- Could formalize the integration
|
|
354
|
-
- Use Beads as task queue, Relay as communication
|
|
355
|
-
|
|
356
|
-
2. **Federation Model**
|
|
357
|
-
- HOP-style URIs could standardize cross-project addressing
|
|
358
|
-
- More discoverable than current bridge mode
|
|
359
|
-
- But adds complexity
|
|
360
|
-
|
|
361
|
-
3. **Worker Types (Polecat vs Crew)**
|
|
362
|
-
- Distinguish ephemeral workers from persistent leads
|
|
363
|
-
- Different lifecycle management
|
|
364
|
-
- Could improve spawn/release semantics
|
|
365
|
-
|
|
366
|
-
---
|
|
367
|
-
|
|
368
|
-
## 9. Architectural Recommendations
|
|
369
|
-
|
|
370
|
-
### Short-term Improvements
|
|
371
|
-
|
|
372
|
-
1. **Add Work Persistence Layer**
|
|
373
|
-
```typescript
|
|
374
|
-
// Agent hook file that survives restarts
|
|
375
|
-
interface AgentHook {
|
|
376
|
-
agentName: string;
|
|
377
|
-
pendingWork: WorkItem[];
|
|
378
|
-
lastCheckpoint: number;
|
|
379
|
-
}
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
2. **Implement Activity Escalation**
|
|
383
|
-
- If agent idle for X minutes with pending work → alert
|
|
384
|
-
- Dashboard shows "stuck" indicator
|
|
385
|
-
- Optional auto-notification to leads
|
|
386
|
-
|
|
387
|
-
3. **Structured Message Types**
|
|
388
|
-
- Add message kinds beyond generic `message`
|
|
389
|
-
- `TASK_ASSIGNED`, `WORK_COMPLETE`, `BLOCKED`, `HELP_NEEDED`
|
|
390
|
-
- Enables workflow-aware routing
|
|
391
|
-
|
|
392
|
-
### Medium-term Improvements
|
|
393
|
-
|
|
394
|
-
1. **Simple Workflow Templates**
|
|
395
|
-
```yaml
|
|
396
|
-
# .relay/workflows/review.yaml
|
|
397
|
-
name: code-review
|
|
398
|
-
steps:
|
|
399
|
-
- assignee: Reviewer
|
|
400
|
-
action: review_code
|
|
401
|
-
on_complete: merge
|
|
402
|
-
- assignee: Lead
|
|
403
|
-
action: approve_merge
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
2. **Beads Integration Mode**
|
|
407
|
-
- Read tasks from `.beads/beads.jsonl`
|
|
408
|
-
- Update status via relay messages
|
|
409
|
-
- Single source of truth for work
|
|
410
|
-
|
|
411
|
-
3. **Federation Lite**
|
|
412
|
-
- Standardized project discovery
|
|
413
|
-
- Cross-project agent registry
|
|
414
|
-
- Simpler than HOP but interoperable
|
|
415
|
-
|
|
416
|
-
---
|
|
417
|
-
|
|
418
|
-
## 10. Conclusion
|
|
419
|
-
|
|
420
|
-
Gastown and Agent Relay solve the multi-agent coordination problem from different angles:
|
|
421
|
-
|
|
422
|
-
- **Gastown** is a **work orchestration system** that happens to include messaging
|
|
423
|
-
- **Agent Relay** is a **messaging system** that enables coordination
|
|
424
|
-
|
|
425
|
-
Both are valid approaches. The right choice depends on:
|
|
426
|
-
|
|
427
|
-
| If you need... | Choose... |
|
|
428
|
-
|----------------|-----------|
|
|
429
|
-
| Reproducible workflows | Gastown |
|
|
430
|
-
| Any-CLI compatibility | Agent Relay |
|
|
431
|
-
| Git-backed audit trail | Gastown |
|
|
432
|
-
| Quick prototyping | Agent Relay |
|
|
433
|
-
| Automatic agent lifecycle | Gastown |
|
|
434
|
-
| Minimal infrastructure | Agent Relay |
|
|
435
|
-
| Multi-org federation | Gastown |
|
|
436
|
-
| Real-time dashboard | Agent Relay |
|
|
437
|
-
|
|
438
|
-
**For Agent Relay specifically**, the key learnings are:
|
|
439
|
-
|
|
440
|
-
1. **Add work persistence** - Don't lose assignments on restart
|
|
441
|
-
2. **Consider workflow templates** - Simple YAML for multi-step tasks
|
|
442
|
-
3. **Improve escalation** - Detect and surface stuck agents
|
|
443
|
-
4. **Standardize message types** - Enable workflow-aware behavior
|
|
444
|
-
5. **Explore Beads integration** - Leverage existing task tracking
|
|
445
|
-
|
|
446
|
-
The systems could potentially be complementary: use Gastown for work orchestration and Relay for real-time communication between agents managed by Gas Town.
|
|
447
|
-
|
|
448
|
-
---
|
|
449
|
-
|
|
450
|
-
*Analysis generated 2026-01-02*
|
|
451
|
-
*Based on Gastown repository (github.com/steveyegge/gastown) and Agent Relay source code*
|