agent-relay 1.1.0 → 1.2.0

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