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.
Files changed (567) hide show
  1. package/.gitattributes +3 -0
  2. package/.nvmrc +1 -0
  3. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
  4. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
  5. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
  6. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
  7. package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
  8. package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
  9. package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
  10. package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
  11. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
  12. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
  13. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
  14. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
  15. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
  16. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
  17. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
  18. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
  19. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
  20. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
  21. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
  22. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
  23. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
  24. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
  25. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
  26. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
  27. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
  28. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
  29. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
  30. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
  31. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
  32. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
  33. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
  34. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
  35. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
  36. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
  37. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
  38. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
  39. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
  40. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
  41. package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
  42. package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
  43. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
  44. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
  45. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
  46. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
  47. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
  48. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
  49. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
  50. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
  51. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
  52. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
  53. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
  54. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
  55. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
  56. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
  57. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
  58. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
  59. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
  60. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
  61. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
  62. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
  63. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
  64. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
  65. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
  66. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
  67. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
  68. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
  69. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
  70. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
  71. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
  72. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
  73. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
  74. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
  75. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
  76. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
  77. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
  78. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
  79. package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
  80. package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
  81. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
  82. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
  83. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
  84. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
  85. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
  86. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
  87. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
  88. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
  89. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
  90. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
  91. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
  92. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
  93. package/.trajectories/index.json +314 -0
  94. package/ARCHITECTURE.md +1245 -0
  95. package/README.md +1 -1
  96. package/TESTING.md +278 -0
  97. package/deploy/init-db.sql +5 -0
  98. package/deploy/scripts/setup-fly-workspaces.sh +69 -0
  99. package/deploy/scripts/setup-railway.sh +75 -0
  100. package/deploy/workspace/entrypoint-browser.sh +118 -0
  101. package/deploy/workspace/entrypoint.sh +348 -0
  102. package/deploy/workspace/git-credential-relay +111 -0
  103. package/dist/bridge/spawner.d.ts +53 -0
  104. package/dist/bridge/spawner.js +203 -19
  105. package/dist/bridge/types.d.ts +12 -0
  106. package/dist/cli/index.js +618 -5
  107. package/dist/cloud/api/auth.d.ts +3 -2
  108. package/dist/cloud/api/auth.js +10 -98
  109. package/dist/cloud/api/billing.js +30 -9
  110. package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
  111. package/dist/cloud/api/cli-pty-runner.js +119 -0
  112. package/dist/cloud/api/codex-auth-helper.d.ts +15 -0
  113. package/dist/cloud/api/codex-auth-helper.js +100 -0
  114. package/dist/cloud/api/generic-webhooks.d.ts +8 -0
  115. package/dist/cloud/api/generic-webhooks.js +129 -0
  116. package/dist/cloud/api/git.d.ts +8 -0
  117. package/dist/cloud/api/git.js +152 -0
  118. package/dist/cloud/api/github-app.d.ts +11 -0
  119. package/dist/cloud/api/github-app.js +189 -0
  120. package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
  121. package/dist/cloud/api/middleware/planLimits.js +39 -1
  122. package/dist/cloud/api/monitoring.d.ts +11 -0
  123. package/dist/cloud/api/monitoring.js +578 -0
  124. package/dist/cloud/api/nango-auth.d.ts +9 -0
  125. package/dist/cloud/api/nango-auth.js +377 -0
  126. package/dist/cloud/api/onboarding.d.ts +8 -1
  127. package/dist/cloud/api/onboarding.js +313 -119
  128. package/dist/cloud/api/policy.d.ts +8 -0
  129. package/dist/cloud/api/policy.js +229 -0
  130. package/dist/cloud/api/providers.js +114 -42
  131. package/dist/cloud/api/repos.d.ts +1 -0
  132. package/dist/cloud/api/repos.js +186 -0
  133. package/dist/cloud/api/test-helpers.d.ts +10 -0
  134. package/dist/cloud/api/test-helpers.js +575 -0
  135. package/dist/cloud/api/webhooks.d.ts +8 -0
  136. package/dist/cloud/api/webhooks.js +645 -0
  137. package/dist/cloud/api/workspaces.js +320 -12
  138. package/dist/cloud/billing/plans.js +32 -19
  139. package/dist/cloud/billing/types.d.ts +9 -3
  140. package/dist/cloud/config.d.ts +9 -2
  141. package/dist/cloud/config.js +13 -4
  142. package/dist/cloud/db/drizzle.d.ts +84 -1
  143. package/dist/cloud/db/drizzle.js +470 -0
  144. package/dist/cloud/db/index.d.ts +9 -4
  145. package/dist/cloud/db/index.js +11 -3
  146. package/dist/cloud/db/schema.d.ts +3283 -556
  147. package/dist/cloud/db/schema.js +314 -1
  148. package/dist/cloud/index.d.ts +1 -0
  149. package/dist/cloud/index.js +2 -0
  150. package/dist/cloud/provisioner/index.d.ts +56 -0
  151. package/dist/cloud/provisioner/index.js +676 -34
  152. package/dist/cloud/server.d.ts +1 -0
  153. package/dist/cloud/server.js +362 -13
  154. package/dist/cloud/services/auto-scaler.d.ts +152 -0
  155. package/dist/cloud/services/auto-scaler.js +439 -0
  156. package/dist/cloud/services/capacity-manager.d.ts +148 -0
  157. package/dist/cloud/services/capacity-manager.js +449 -0
  158. package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
  159. package/dist/cloud/services/ci-agent-spawner.js +373 -0
  160. package/dist/cloud/services/index.d.ts +12 -0
  161. package/dist/cloud/services/index.js +15 -0
  162. package/dist/cloud/services/mention-handler.d.ts +65 -0
  163. package/dist/cloud/services/mention-handler.js +405 -0
  164. package/dist/cloud/services/nango.d.ts +186 -0
  165. package/dist/cloud/services/nango.js +344 -0
  166. package/dist/cloud/services/persistence.d.ts +131 -0
  167. package/dist/cloud/services/persistence.js +200 -0
  168. package/dist/cloud/services/planLimits.d.ts +37 -0
  169. package/dist/cloud/services/planLimits.js +86 -5
  170. package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
  171. package/dist/cloud/services/scaling-orchestrator.js +502 -0
  172. package/dist/cloud/services/scaling-policy.d.ts +121 -0
  173. package/dist/cloud/services/scaling-policy.js +415 -0
  174. package/dist/cloud/vault/index.js +1 -1
  175. package/dist/cloud/webhooks/index.d.ts +24 -0
  176. package/dist/cloud/webhooks/index.js +29 -0
  177. package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
  178. package/dist/cloud/webhooks/parsers/github.js +234 -0
  179. package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
  180. package/dist/cloud/webhooks/parsers/index.js +30 -0
  181. package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
  182. package/dist/cloud/webhooks/parsers/linear.js +258 -0
  183. package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
  184. package/dist/cloud/webhooks/parsers/slack.js +214 -0
  185. package/dist/cloud/webhooks/responders/github.d.ts +8 -0
  186. package/dist/cloud/webhooks/responders/github.js +73 -0
  187. package/dist/cloud/webhooks/responders/index.d.ts +23 -0
  188. package/dist/cloud/webhooks/responders/index.js +30 -0
  189. package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
  190. package/dist/cloud/webhooks/responders/linear.js +149 -0
  191. package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
  192. package/dist/cloud/webhooks/responders/slack.js +178 -0
  193. package/dist/cloud/webhooks/router.d.ts +25 -0
  194. package/dist/cloud/webhooks/router.js +504 -0
  195. package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
  196. package/dist/cloud/webhooks/rules-engine.js +287 -0
  197. package/dist/cloud/webhooks/types.d.ts +186 -0
  198. package/dist/cloud/webhooks/types.js +8 -0
  199. package/dist/continuity/formatter.d.ts +51 -0
  200. package/dist/continuity/formatter.js +313 -0
  201. package/dist/continuity/handoff-store.d.ts +67 -0
  202. package/dist/continuity/handoff-store.js +472 -0
  203. package/dist/continuity/index.d.ts +45 -0
  204. package/dist/continuity/index.js +48 -0
  205. package/dist/continuity/ledger-store.d.ts +110 -0
  206. package/dist/continuity/ledger-store.js +500 -0
  207. package/dist/continuity/manager.d.ts +178 -0
  208. package/dist/continuity/manager.js +562 -0
  209. package/dist/continuity/parser.d.ts +76 -0
  210. package/dist/continuity/parser.js +579 -0
  211. package/dist/continuity/types.d.ts +180 -0
  212. package/dist/continuity/types.js +9 -0
  213. package/dist/daemon/agent-manager.d.ts +27 -0
  214. package/dist/daemon/agent-manager.js +107 -6
  215. package/dist/daemon/agent-registry.d.ts +32 -0
  216. package/dist/daemon/agent-registry.js +42 -2
  217. package/dist/daemon/api.d.ts +12 -0
  218. package/dist/daemon/api.js +131 -2
  219. package/dist/daemon/cli-auth.d.ts +67 -0
  220. package/dist/daemon/cli-auth.js +537 -0
  221. package/dist/daemon/cloud-sync.js +9 -7
  222. package/dist/daemon/orchestrator.js +30 -0
  223. package/dist/daemon/router.d.ts +5 -0
  224. package/dist/daemon/router.js +78 -26
  225. package/dist/daemon/server.d.ts +5 -0
  226. package/dist/daemon/server.js +9 -1
  227. package/dist/daemon/services/browser-testing.d.ts +88 -0
  228. package/dist/daemon/services/browser-testing.js +244 -0
  229. package/dist/daemon/services/container-spawner.d.ts +135 -0
  230. package/dist/daemon/services/container-spawner.js +313 -0
  231. package/dist/daemon/types.d.ts +5 -1
  232. package/dist/dashboard/out/404.html +1 -1
  233. package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
  234. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
  235. package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -0
  236. package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +9 -0
  237. package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +1 -0
  238. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +1 -0
  239. package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +1 -0
  240. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +1 -0
  241. package/dist/dashboard/out/_next/static/chunks/app/history/{page-b6edd4dde8d08194.js → page-abb9ab2d329f56e9.js} +1 -1
  242. package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
  243. package/dist/dashboard/out/_next/static/chunks/app/login/page-c22d080201cbd9fb.js +1 -0
  244. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +1 -0
  245. package/dist/dashboard/out/_next/static/chunks/app/page-77e9c65420a06cfb.js +1 -0
  246. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +1 -0
  247. package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +1 -0
  248. package/dist/dashboard/out/_next/static/chunks/app/signup/page-68d34f50baa8ab6b.js +1 -0
  249. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
  250. package/dist/dashboard/out/_next/static/chunks/{main-app-5d692157a8eb1fd9.js → main-app-6e8e8d3ef4e0192a.js} +1 -1
  251. package/dist/dashboard/out/_next/static/chunks/{main-c2f423b9c9f4591b.js → main-ed4e1fb6f29c34cf.js} +1 -1
  252. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
  253. package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
  254. package/dist/dashboard/out/_next/static/css/7c3ae9e8617d42a5.css +1 -0
  255. package/dist/dashboard/out/app/onboarding.html +1 -0
  256. package/dist/dashboard/out/app/onboarding.txt +7 -0
  257. package/dist/dashboard/out/app.html +1 -14
  258. package/dist/dashboard/out/app.txt +2 -2
  259. package/dist/dashboard/out/connect-repos.html +1 -0
  260. package/dist/dashboard/out/connect-repos.txt +7 -0
  261. package/dist/dashboard/out/history.html +1 -1
  262. package/dist/dashboard/out/history.txt +2 -2
  263. package/dist/dashboard/out/index.html +1 -1
  264. package/dist/dashboard/out/index.txt +2 -2
  265. package/dist/dashboard/out/login.html +6 -0
  266. package/dist/dashboard/out/login.txt +7 -0
  267. package/dist/dashboard/out/metrics.html +1 -1
  268. package/dist/dashboard/out/metrics.txt +2 -2
  269. package/dist/dashboard/out/pricing.html +3 -3
  270. package/dist/dashboard/out/pricing.txt +2 -2
  271. package/dist/dashboard/out/providers.html +1 -0
  272. package/dist/dashboard/out/providers.txt +7 -0
  273. package/dist/dashboard/out/signup.html +6 -0
  274. package/dist/dashboard/out/signup.txt +7 -0
  275. package/dist/dashboard-server/server.js +1308 -8
  276. package/dist/hooks/emitter.d.ts +40 -0
  277. package/dist/hooks/emitter.js +63 -0
  278. package/dist/hooks/index.d.ts +3 -0
  279. package/dist/hooks/index.js +3 -0
  280. package/dist/hooks/registry.d.ts +173 -0
  281. package/dist/hooks/registry.js +476 -0
  282. package/dist/hooks/trajectory-hooks.d.ts +52 -0
  283. package/dist/hooks/trajectory-hooks.js +183 -0
  284. package/dist/hooks/types.d.ts +141 -0
  285. package/dist/index.d.ts +2 -0
  286. package/dist/index.js +3 -0
  287. package/dist/memory/adapters/index.d.ts +8 -0
  288. package/dist/memory/adapters/index.js +8 -0
  289. package/dist/memory/adapters/inmemory.d.ts +59 -0
  290. package/dist/memory/adapters/inmemory.js +195 -0
  291. package/dist/memory/adapters/supermemory.d.ts +71 -0
  292. package/dist/memory/adapters/supermemory.js +338 -0
  293. package/dist/memory/factory.d.ts +48 -0
  294. package/dist/memory/factory.js +143 -0
  295. package/dist/memory/index.d.ts +32 -0
  296. package/dist/memory/index.js +32 -0
  297. package/dist/memory/memory-hooks.d.ts +60 -0
  298. package/dist/memory/memory-hooks.js +313 -0
  299. package/dist/memory/service.d.ts +49 -0
  300. package/dist/memory/service.js +146 -0
  301. package/dist/memory/types.d.ts +195 -0
  302. package/dist/memory/types.js +8 -0
  303. package/dist/policy/agent-policy.d.ts +225 -0
  304. package/dist/policy/agent-policy.js +665 -0
  305. package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
  306. package/dist/policy/cloud-policy-fetcher.js +64 -0
  307. package/dist/resiliency/crash-insights.d.ts +156 -0
  308. package/dist/resiliency/crash-insights.js +492 -0
  309. package/dist/resiliency/gossip-health.d.ts +137 -0
  310. package/dist/resiliency/gossip-health.js +241 -0
  311. package/dist/resiliency/index.d.ts +5 -0
  312. package/dist/resiliency/index.js +5 -0
  313. package/dist/resiliency/leader-watchdog.d.ts +109 -0
  314. package/dist/resiliency/leader-watchdog.js +189 -0
  315. package/dist/resiliency/memory-monitor.d.ts +172 -0
  316. package/dist/resiliency/memory-monitor.js +593 -0
  317. package/dist/resiliency/stateless-lead.d.ts +149 -0
  318. package/dist/resiliency/stateless-lead.js +308 -0
  319. package/dist/resiliency/supervisor.d.ts +38 -0
  320. package/dist/resiliency/supervisor.js +122 -0
  321. package/dist/shared/cli-auth-config.d.ts +91 -0
  322. package/dist/shared/cli-auth-config.js +264 -0
  323. package/dist/storage/adapter.d.ts +1 -1
  324. package/dist/trajectory/config.d.ts +84 -0
  325. package/dist/trajectory/config.js +163 -0
  326. package/dist/trajectory/index.d.ts +8 -0
  327. package/dist/trajectory/index.js +8 -0
  328. package/dist/trajectory/integration.d.ts +292 -0
  329. package/dist/trajectory/integration.js +834 -0
  330. package/dist/utils/logger.js +1 -1
  331. package/dist/utils/project-namespace.d.ts +24 -0
  332. package/dist/utils/project-namespace.js +84 -0
  333. package/dist/wrapper/parser.d.ts +10 -0
  334. package/dist/wrapper/parser.js +100 -33
  335. package/dist/wrapper/pty-wrapper.d.ts +197 -16
  336. package/dist/wrapper/pty-wrapper.js +943 -106
  337. package/dist/wrapper/shared.d.ts +165 -0
  338. package/dist/wrapper/shared.js +270 -0
  339. package/dist/wrapper/tmux-wrapper.d.ts +73 -11
  340. package/dist/wrapper/tmux-wrapper.js +541 -120
  341. package/package.json +16 -16
  342. package/scripts/postinstall.js +60 -0
  343. package/test-push.txt +1 -0
  344. package/bin/tmux +0 -0
  345. package/dist/bridge/config.d.ts.map +0 -1
  346. package/dist/bridge/config.js.map +0 -1
  347. package/dist/bridge/index.d.ts.map +0 -1
  348. package/dist/bridge/index.js.map +0 -1
  349. package/dist/bridge/multi-project-client.d.ts.map +0 -1
  350. package/dist/bridge/multi-project-client.js.map +0 -1
  351. package/dist/bridge/shadow-cli.d.ts.map +0 -1
  352. package/dist/bridge/shadow-cli.js.map +0 -1
  353. package/dist/bridge/shadow-config.d.ts.map +0 -1
  354. package/dist/bridge/shadow-config.js.map +0 -1
  355. package/dist/bridge/spawner.d.ts.map +0 -1
  356. package/dist/bridge/spawner.js.map +0 -1
  357. package/dist/bridge/teams-config.d.ts.map +0 -1
  358. package/dist/bridge/teams-config.js.map +0 -1
  359. package/dist/bridge/types.d.ts.map +0 -1
  360. package/dist/bridge/types.js.map +0 -1
  361. package/dist/bridge/utils.d.ts.map +0 -1
  362. package/dist/bridge/utils.js.map +0 -1
  363. package/dist/cli/index.d.ts.map +0 -1
  364. package/dist/cli/index.js.map +0 -1
  365. package/dist/cloud/api/auth.d.ts.map +0 -1
  366. package/dist/cloud/api/auth.js.map +0 -1
  367. package/dist/cloud/api/billing.d.ts.map +0 -1
  368. package/dist/cloud/api/billing.js.map +0 -1
  369. package/dist/cloud/api/coordinators.d.ts.map +0 -1
  370. package/dist/cloud/api/coordinators.js.map +0 -1
  371. package/dist/cloud/api/daemons.d.ts.map +0 -1
  372. package/dist/cloud/api/daemons.js.map +0 -1
  373. package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
  374. package/dist/cloud/api/middleware/planLimits.js.map +0 -1
  375. package/dist/cloud/api/onboarding.d.ts.map +0 -1
  376. package/dist/cloud/api/onboarding.js.map +0 -1
  377. package/dist/cloud/api/providers.d.ts.map +0 -1
  378. package/dist/cloud/api/providers.js.map +0 -1
  379. package/dist/cloud/api/repos.d.ts.map +0 -1
  380. package/dist/cloud/api/repos.js.map +0 -1
  381. package/dist/cloud/api/teams.d.ts.map +0 -1
  382. package/dist/cloud/api/teams.js.map +0 -1
  383. package/dist/cloud/api/usage.d.ts.map +0 -1
  384. package/dist/cloud/api/usage.js.map +0 -1
  385. package/dist/cloud/api/workspaces.d.ts.map +0 -1
  386. package/dist/cloud/api/workspaces.js.map +0 -1
  387. package/dist/cloud/billing/index.d.ts.map +0 -1
  388. package/dist/cloud/billing/index.js.map +0 -1
  389. package/dist/cloud/billing/plans.d.ts.map +0 -1
  390. package/dist/cloud/billing/plans.js.map +0 -1
  391. package/dist/cloud/billing/service.d.ts.map +0 -1
  392. package/dist/cloud/billing/service.js.map +0 -1
  393. package/dist/cloud/billing/types.d.ts.map +0 -1
  394. package/dist/cloud/billing/types.js.map +0 -1
  395. package/dist/cloud/config.d.ts.map +0 -1
  396. package/dist/cloud/config.js.map +0 -1
  397. package/dist/cloud/db/drizzle.d.ts.map +0 -1
  398. package/dist/cloud/db/drizzle.js.map +0 -1
  399. package/dist/cloud/db/index.d.ts.map +0 -1
  400. package/dist/cloud/db/index.js.map +0 -1
  401. package/dist/cloud/db/schema.d.ts.map +0 -1
  402. package/dist/cloud/db/schema.js.map +0 -1
  403. package/dist/cloud/index.d.ts.map +0 -1
  404. package/dist/cloud/index.js.map +0 -1
  405. package/dist/cloud/provisioner/index.d.ts.map +0 -1
  406. package/dist/cloud/provisioner/index.js.map +0 -1
  407. package/dist/cloud/server.d.ts.map +0 -1
  408. package/dist/cloud/server.js.map +0 -1
  409. package/dist/cloud/services/coordinator.d.ts.map +0 -1
  410. package/dist/cloud/services/coordinator.js.map +0 -1
  411. package/dist/cloud/services/planLimits.d.ts.map +0 -1
  412. package/dist/cloud/services/planLimits.js.map +0 -1
  413. package/dist/cloud/vault/index.d.ts.map +0 -1
  414. package/dist/cloud/vault/index.js.map +0 -1
  415. package/dist/daemon/agent-manager.d.ts.map +0 -1
  416. package/dist/daemon/agent-manager.js.map +0 -1
  417. package/dist/daemon/agent-registry.d.ts.map +0 -1
  418. package/dist/daemon/agent-registry.js.map +0 -1
  419. package/dist/daemon/api.d.ts.map +0 -1
  420. package/dist/daemon/api.js.map +0 -1
  421. package/dist/daemon/auth.d.ts.map +0 -1
  422. package/dist/daemon/auth.js.map +0 -1
  423. package/dist/daemon/cloud-sync.d.ts.map +0 -1
  424. package/dist/daemon/cloud-sync.js.map +0 -1
  425. package/dist/daemon/connection.d.ts.map +0 -1
  426. package/dist/daemon/connection.js.map +0 -1
  427. package/dist/daemon/index.d.ts.map +0 -1
  428. package/dist/daemon/index.js.map +0 -1
  429. package/dist/daemon/orchestrator.d.ts.map +0 -1
  430. package/dist/daemon/orchestrator.js.map +0 -1
  431. package/dist/daemon/registry.d.ts.map +0 -1
  432. package/dist/daemon/registry.js.map +0 -1
  433. package/dist/daemon/router.d.ts.map +0 -1
  434. package/dist/daemon/router.js.map +0 -1
  435. package/dist/daemon/server.d.ts.map +0 -1
  436. package/dist/daemon/server.js.map +0 -1
  437. package/dist/daemon/types.d.ts.map +0 -1
  438. package/dist/daemon/types.js.map +0 -1
  439. package/dist/daemon/workspace-manager.d.ts.map +0 -1
  440. package/dist/daemon/workspace-manager.js.map +0 -1
  441. package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +0 -1
  442. package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +0 -1
  443. package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +0 -1
  444. package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +0 -1
  445. package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +0 -1
  446. package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
  447. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +0 -1
  448. package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +0 -1
  449. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +0 -1
  450. package/dist/dashboard/out/_next/static/chunks/webpack-a5acc2831d094776.js +0 -1
  451. package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +0 -1
  452. package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +0 -1
  453. package/dist/dashboard-server/metrics.d.ts.map +0 -1
  454. package/dist/dashboard-server/metrics.js.map +0 -1
  455. package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
  456. package/dist/dashboard-server/needs-attention.js.map +0 -1
  457. package/dist/dashboard-server/server.d.ts.map +0 -1
  458. package/dist/dashboard-server/server.js.map +0 -1
  459. package/dist/dashboard-server/start.d.ts.map +0 -1
  460. package/dist/dashboard-server/start.js.map +0 -1
  461. package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
  462. package/dist/hooks/inbox-check/hook.js.map +0 -1
  463. package/dist/hooks/inbox-check/index.d.ts.map +0 -1
  464. package/dist/hooks/inbox-check/index.js.map +0 -1
  465. package/dist/hooks/inbox-check/types.d.ts.map +0 -1
  466. package/dist/hooks/inbox-check/types.js.map +0 -1
  467. package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
  468. package/dist/hooks/inbox-check/utils.js.map +0 -1
  469. package/dist/hooks/index.d.ts.map +0 -1
  470. package/dist/hooks/index.js.map +0 -1
  471. package/dist/hooks/types.d.ts.map +0 -1
  472. package/dist/hooks/types.js.map +0 -1
  473. package/dist/index.d.ts.map +0 -1
  474. package/dist/index.js.map +0 -1
  475. package/dist/protocol/framing.d.ts.map +0 -1
  476. package/dist/protocol/framing.js.map +0 -1
  477. package/dist/protocol/index.d.ts.map +0 -1
  478. package/dist/protocol/index.js.map +0 -1
  479. package/dist/protocol/types.d.ts.map +0 -1
  480. package/dist/protocol/types.js.map +0 -1
  481. package/dist/resiliency/context-persistence.d.ts.map +0 -1
  482. package/dist/resiliency/context-persistence.js.map +0 -1
  483. package/dist/resiliency/health-monitor.d.ts.map +0 -1
  484. package/dist/resiliency/health-monitor.js.map +0 -1
  485. package/dist/resiliency/index.d.ts.map +0 -1
  486. package/dist/resiliency/index.js.map +0 -1
  487. package/dist/resiliency/logger.d.ts.map +0 -1
  488. package/dist/resiliency/logger.js.map +0 -1
  489. package/dist/resiliency/metrics.d.ts.map +0 -1
  490. package/dist/resiliency/metrics.js.map +0 -1
  491. package/dist/resiliency/provider-context.d.ts.map +0 -1
  492. package/dist/resiliency/provider-context.js.map +0 -1
  493. package/dist/resiliency/supervisor.d.ts.map +0 -1
  494. package/dist/resiliency/supervisor.js.map +0 -1
  495. package/dist/state/agent-state.d.ts.map +0 -1
  496. package/dist/state/agent-state.js.map +0 -1
  497. package/dist/storage/adapter.d.ts.map +0 -1
  498. package/dist/storage/adapter.js.map +0 -1
  499. package/dist/storage/sqlite-adapter.d.ts.map +0 -1
  500. package/dist/storage/sqlite-adapter.js.map +0 -1
  501. package/dist/utils/agent-config.d.ts.map +0 -1
  502. package/dist/utils/agent-config.js.map +0 -1
  503. package/dist/utils/command-resolver.d.ts.map +0 -1
  504. package/dist/utils/command-resolver.js.map +0 -1
  505. package/dist/utils/index.d.ts.map +0 -1
  506. package/dist/utils/index.js.map +0 -1
  507. package/dist/utils/logger.d.ts.map +0 -1
  508. package/dist/utils/logger.js.map +0 -1
  509. package/dist/utils/name-generator.d.ts.map +0 -1
  510. package/dist/utils/name-generator.js.map +0 -1
  511. package/dist/utils/project-namespace.d.ts.map +0 -1
  512. package/dist/utils/project-namespace.js.map +0 -1
  513. package/dist/utils/tmux-resolver.d.ts.map +0 -1
  514. package/dist/utils/tmux-resolver.js.map +0 -1
  515. package/dist/utils/update-checker.d.ts.map +0 -1
  516. package/dist/utils/update-checker.js.map +0 -1
  517. package/dist/wrapper/client.d.ts.map +0 -1
  518. package/dist/wrapper/client.js.map +0 -1
  519. package/dist/wrapper/inbox.d.ts.map +0 -1
  520. package/dist/wrapper/inbox.js.map +0 -1
  521. package/dist/wrapper/index.d.ts.map +0 -1
  522. package/dist/wrapper/index.js.map +0 -1
  523. package/dist/wrapper/parser.d.ts.map +0 -1
  524. package/dist/wrapper/parser.js.map +0 -1
  525. package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
  526. package/dist/wrapper/pty-wrapper.js.map +0 -1
  527. package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
  528. package/dist/wrapper/tmux-wrapper.js.map +0 -1
  529. package/docs/AGENTS.md +0 -513
  530. package/docs/ARCHITECTURE_DECISIONS.md +0 -175
  531. package/docs/CHANGELOG.md +0 -11
  532. package/docs/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
  533. package/docs/CLOUD-ARCHITECTURE.md +0 -652
  534. package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
  535. package/docs/COMPETITIVE_ANALYSIS.md +0 -897
  536. package/docs/CONTRIBUTING.md +0 -151
  537. package/docs/DESIGN_BRIDGE_STAFFING.md +0 -878
  538. package/docs/DESIGN_V2.md +0 -1079
  539. package/docs/INTEGRATION-GUIDE.md +0 -926
  540. package/docs/MONETIZATION.md +0 -1679
  541. package/docs/PROPOSAL-trajectories.md +0 -1582
  542. package/docs/PROTOCOL.md +0 -325
  543. package/docs/SCALING_ANALYSIS.md +0 -280
  544. package/docs/TESTING_PRESENCE_FEATURES.md +0 -327
  545. package/docs/TMUX_IMPLEMENTATION_NOTES.md +0 -364
  546. package/docs/TMUX_IMPROVEMENTS.md +0 -968
  547. package/docs/agent-relay-snippet.md +0 -168
  548. package/docs/competitive-analysis-mcp-agent-mail.md +0 -389
  549. package/docs/dashboard-v2-plan.md +0 -179
  550. package/docs/guides/CLOUD.md +0 -236
  551. package/docs/guides/LOCAL.md +0 -535
  552. package/docs/guides/SELF-HOSTED.md +0 -494
  553. package/docs/proposals/shadow-as-subagent.md +0 -765
  554. package/docs/proposals/slack-bot-integration.md +0 -1457
  555. package/docs/removable-code-analysis.md +0 -24
  556. package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
  557. package/scripts/dev/dev-team-setup.sh +0 -431
  558. package/scripts/e2e-test.sh +0 -119
  559. package/scripts/games/game-protocol.md +0 -79
  560. package/scripts/games/hearts-setup.sh +0 -264
  561. package/scripts/tictactoe-setup.sh +0 -181
  562. /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-f7b8ab0809342e77.js} +0 -0
  563. /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-5cc6e1921389a58a.js} +0 -0
  564. /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js → page-53b8a69f76db17d0.js} +0 -0
  565. /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
  566. /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
  567. /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
-