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
@@ -16,7 +16,20 @@ Your message here.>>>
16
16
  Broadcast to all agents.>>>
17
17
  ```
18
18
 
19
- **CRITICAL:** Always close multi-line messages with `>>>` on its own line!
19
+ **CRITICAL:** Always close multi-line messages with `>>>` after the very last character.
20
+
21
+ **WARNING:** Do NOT put blank lines before `>>>` - it must immediately follow your content:
22
+
23
+ ```
24
+ # CORRECT - >>> immediately after content
25
+ ->relay:Agent <<<Your message here.>>>
26
+
27
+ # WRONG - blank line before >>> breaks parsing
28
+ ->relay:Agent <<<
29
+ Your message here.
30
+
31
+ >>>
32
+ ```
20
33
 
21
34
  ## Communication Protocol
22
35
 
@@ -27,8 +40,6 @@ Broadcast to all agents.>>>
27
40
  ACK: Brief description of task received>>>
28
41
  ```
29
42
 
30
- Then proceed with your work. This confirms message delivery and lets the sender know you're on it.
31
-
32
43
  **Report completion** - When done, send a completion message:
33
44
 
34
45
  ```
@@ -62,8 +73,6 @@ Response to the group message.>>>
62
73
  Response to the group message.>>>
63
74
  ```
64
75
 
65
- This ensures your response appears in the same channel as the original message.
66
-
67
76
  If truncated, read full message:
68
77
  ```bash
69
78
  agent-relay read abc123
@@ -74,13 +83,26 @@ agent-relay read abc123
74
83
  Spawn workers to delegate tasks:
75
84
 
76
85
  ```
77
- ->relay:spawn WorkerName claude "task description"
86
+ # Short tasks - single line with quotes
87
+ ->relay:spawn WorkerName claude "short task description"
88
+
89
+ # Long tasks - use fenced format (recommended)
90
+ ->relay:spawn WorkerName claude <<<
91
+ Implement the authentication module.
92
+ Requirements:
93
+ - JWT tokens with refresh
94
+ - Password hashing with bcrypt
95
+ - Rate limiting on login endpoint>>>
96
+
97
+ # Release when done
78
98
  ->relay:release WorkerName
79
99
  ```
80
100
 
101
+ **Use fenced format for tasks longer than ~50 characters** to avoid truncation from terminal line wrapping.
102
+
81
103
  ## Threads
82
104
 
83
- Use threads to group related messages together. Thread syntax:
105
+ Use threads to group related messages together:
84
106
 
85
107
  ```
86
108
  ->relay:AgentName [thread:topic-name] <<<
@@ -91,25 +113,20 @@ Your message here.>>>
91
113
  - Working on a specific issue (e.g., `[thread:agent-relay-299]`)
92
114
  - Back-and-forth discussions with another agent
93
115
  - Code review conversations
94
- - Any multi-message topic you want grouped
95
-
96
- **Examples:**
97
-
98
- ```
99
- ->relay:Protocol [thread:auth-feature] <<<
100
- How should we handle token refresh?>>>
101
116
 
102
- ->relay:Frontend [thread:auth-feature] <<<
103
- Use a 401 interceptor that auto-refreshes.>>>
117
+ ## Status Updates
104
118
 
105
- ->relay:Reviewer [thread:pr-123] <<<
106
- Please review src/auth/*.ts>>>
119
+ **Send status updates to your lead, NOT broadcast:**
107
120
 
108
- ->relay:Developer [thread:pr-123] <<<
109
- LGTM, approved!>>>
110
121
  ```
122
+ # Correct - status to lead only
123
+ ->relay:Lead <<<
124
+ STATUS: Working on auth module>>>
111
125
 
112
- Thread messages appear grouped in the dashboard with reply counts.
126
+ # Wrong - don't broadcast status to everyone
127
+ ->relay:* <<<
128
+ STATUS: Working on auth module>>>
129
+ ```
113
130
 
114
131
  ## Common Patterns
115
132
 
@@ -117,7 +134,7 @@ Thread messages appear grouped in the dashboard with reply counts.
117
134
  ->relay:Lead <<<
118
135
  ACK: Starting /api/register implementation>>>
119
136
 
120
- ->relay:* <<<
137
+ ->relay:Lead <<<
121
138
  STATUS: Working on auth module>>>
122
139
 
123
140
  ->relay:Lead <<<
@@ -133,36 +150,25 @@ REVIEW: Please check src/auth/*.ts>>>
133
150
  QUESTION: JWT or sessions?>>>
134
151
  ```
135
152
 
136
- ## Cross-Project Messaging
137
-
138
- When running in bridge mode (multiple projects connected), use `project:agent` format:
139
-
140
- ```
141
- ->relay:frontend:Designer <<<
142
- Please update the login UI for the new auth flow>>>
143
-
144
- ->relay:backend:lead <<<
145
- API question - should we use REST or GraphQL?>>>
153
+ ## Rules
146
154
 
147
- ->relay:shared-lib:* <<<
148
- New utility functions available, please pull latest>>>
149
- ```
155
+ - Pattern must be at line start (whitespace OK)
156
+ - Escape with `\->relay:` to output literally
157
+ - Check daemon status: `agent-relay status`
150
158
 
151
- **Format:** `->relay:project-id:agent-name`
159
+ ## Writing Examples (For Documentation)
152
160
 
153
- **Special targets:**
154
- - `->relay:project:lead` - Message the lead agent of that project
155
- - `->relay:project:*` - Broadcast to all agents in that project
156
- - `->relay:*:*` - Broadcast to ALL agents in ALL projects
161
+ When showing examples of relay syntax in documentation or explanations, **escape the markers** so they don't get interpreted as actual messages:
157
162
 
158
- **Cross-project threads:**
159
163
  ```
160
- ->relay:frontend:Designer [thread:auth-feature] <<<
161
- UI mockups ready for review>>>
164
+ # Escape the opening marker
165
+ \->relay:AgentName \<<<
166
+ Example content here.\>>>
162
167
  ```
163
168
 
164
- ## Rules
169
+ **What to escape:**
170
+ - `\->relay:` - Prevents the pattern from being detected as a real message
171
+ - `\<<<` - Prevents the fenced block from being parsed
172
+ - `\>>>` - Prevents the block from being closed
165
173
 
166
- - Pattern must be at line start (whitespace OK)
167
- - Escape with `\->relay:` to output literally
168
- - Check daemon status: `agent-relay status`
174
+ This ensures your examples are displayed literally rather than sent as messages.
@@ -0,0 +1,358 @@
1
+ # Agent Relay: Executive Summary
2
+
3
+ > Real-time autonomous agent-to-agent communication without modifying the agents themselves.
4
+
5
+ ---
6
+
7
+ ## What Is Agent Relay?
8
+
9
+ Agent Relay enables AI coding assistants (Claude, Codex, Gemini) running in separate terminals to **discover each other and communicate autonomously** - without any code changes to the AI systems.
10
+
11
+ **Key differentiator:** agent-relay is a **composable messaging layer**, not a monolithic solution. It does one thing exceptionally well (<5ms real-time messaging) and integrates with best-of-breed tools for memory, UI, and workflows.
12
+
13
+ ```
14
+ ┌─────────────────────────────────────────────────────────────────────────┐
15
+ │ │
16
+ │ Terminal 1 Terminal 2 Terminal 3 │
17
+ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
18
+ │ │ Alice │────────────▶│ Bob │◀────────────│ Carol │ │
19
+ │ │ (Claude)│◀────────────│ (Codex) │────────────▶│(Gemini) │ │
20
+ │ └─────────┘ └─────────┘ └─────────┘ │
21
+ │ │ │ │ │
22
+ │ └───────────────────────┼───────────────────────┘ │
23
+ │ │ │
24
+ │ ┌───────────▼───────────┐ │
25
+ │ │ Relay Daemon │ │
26
+ │ │ (Message Routing) │ │
27
+ │ └───────────────────────┘ │
28
+ │ │
29
+ └─────────────────────────────────────────────────────────────────────────┘
30
+ ```
31
+
32
+ ---
33
+
34
+ ## The Core Insight
35
+
36
+ **Agents already produce text.** By watching for a simple pattern in their output, we can extract communication intent:
37
+
38
+ ```
39
+ Agent Output: "I'll ask Bob for help. ->relay:Bob Can you review auth.ts?"
40
+ ▲
41
+ │
42
+ Relay captures this, routes to Bob
43
+ ```
44
+
45
+ No API integration. No agent modification. Just pattern matching on stdout.
46
+
47
+ ---
48
+
49
+ ## How It Works (30-Second Version)
50
+
51
+ ```
52
+ ┌──────────────────────────────────────────────────────────────────────────┐
53
+ │ │
54
+ │ 1. WRAP 2. CAPTURE 3. ROUTE │
55
+ │ ════════ ═════════ ═══════ │
56
+ │ │
57
+ │ agent-relay Background Daemon │
58
+ │ -n Alice claude ───▶ polling ───▶ finds routes ───▶ │
59
+ │ captures ->relay: message │
60
+ │ Agent runs in output Bob... to Bob │
61
+ │ tmux session │
62
+ │ │
63
+ │ │
64
+ │ 4. DELIVER 5. INJECT 6. RESPOND │
65
+ │ ═════════ ════════ ═════════ │
66
+ │ │
67
+ │ Bob's wrapper Types into Bob's agent │
68
+ │ receives ───▶ Bob's ───▶ processes ───▶ │
69
+ │ message terminal as input │
70
+ │ │
71
+ │ "Relay message Can reply with │
72
+ │ from Alice: ->relay:Alice │
73
+ │ Can you..." │
74
+ │ │
75
+ └──────────────────────────────────────────────────────────────────────────┘
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Quick Start
81
+
82
+ ```bash
83
+ # Terminal 1: Start the daemon
84
+ agent-relay up
85
+
86
+ # Terminal 2: Start first agent
87
+ agent-relay -n Alice claude
88
+
89
+ # Terminal 3: Start second agent
90
+ agent-relay -n Bob claude
91
+ ```
92
+
93
+ Alice can now send: `->relay:Bob Can you help with the auth module?`
94
+
95
+ Bob receives: `Relay message from Alice [abc123]: Can you help with the auth module?`
96
+
97
+ ---
98
+
99
+ ## System Architecture
100
+
101
+ ```
102
+ ┌─────────────────────────────────────────────────────────────────────────┐
103
+ │ AGENT RELAY SYSTEM │
104
+ ├─────────────────────────────────────────────────────────────────────────┤
105
+ │ │
106
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
107
+ │ │ CLI Layer (Entry Point) │ │
108
+ │ │ │ │
109
+ │ │ agent-relay up Start daemon + dashboard │ │
110
+ │ │ agent-relay down Stop daemon │ │
111
+ │ │ agent-relay -n X Wrap agent with name X │ │
112
+ │ │ agent-relay status Check daemon status │ │
113
+ │ └─────────────────────────────────────────────────────────────────┘ │
114
+ │ │ │
115
+ │ ▼ │
116
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
117
+ │ │ Wrapper Layer (Per Agent) │ │
118
+ │ │ │ │
119
+ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
120
+ │ │ │TmuxWrapper │ │OutputParser │ │RelayClient │ │ │
121
+ │ │ │ │ │ │ │ │ │ │
122
+ │ │ │• Runs agent │ │• ->relay: │ │• Socket I/O │ │ │
123
+ │ │ │ in tmux │ │ patterns │ │• Reconnect │ │ │
124
+ │ │ │• Captures │ │• ANSI strip │ │• Handshake │ │ │
125
+ │ │ │ output │ │• Dedup │ │ │ │ │
126
+ │ │ │• Injects │ │ │ │ │ │ │
127
+ │ │ │ messages │ │ │ │ │ │ │
128
+ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
129
+ │ └─────────────────────────────────────────────────────────────────┘ │
130
+ │ │ │
131
+ │ Unix Domain Socket │
132
+ │ │ │
133
+ │ ▼ │
134
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
135
+ │ │ Daemon Layer (Central) │ │
136
+ │ │ │ │
137
+ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
138
+ │ │ │Server │ │Connection │ │Router │ │ │
139
+ │ │ │ │ │ │ │ │ │ │
140
+ │ │ │• Lifecycle │ │• State M/C │ │• Agent map │ │ │
141
+ │ │ │• Socket │ │• Handshake │ │• Routing │ │ │
142
+ │ │ │• PID file │ │• Heartbeat │ │• Broadcast │ │ │
143
+ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
144
+ │ └─────────────────────────────────────────────────────────────────┘ │
145
+ │ │ │
146
+ │ ▼ │
147
+ │ ┌─────────────────────────────────────────────────────────────────┐ │
148
+ │ │ Storage Layer (SQLite) │ │
149
+ │ │ │ │
150
+ │ │ • Message persistence • Query by sender/recipient │ │
151
+ │ │ • WAL mode for concurrency • Full message history │ │
152
+ │ └─────────────────────────────────────────────────────────────────┘ │
153
+ │ │
154
+ └─────────────────────────────────────────────────────────────────────────┘
155
+ ```
156
+
157
+ ---
158
+
159
+ ## Message Flow Diagram
160
+
161
+ ```
162
+ Alice (Claude) Daemon Bob (Codex)
163
+ │ │ │
164
+ │ Agent outputs: │ │
165
+ │ "->relay:Bob review auth" │ │
166
+ │ │ │
167
+ ├──────────────────────────────┤ │
168
+ │ TmuxWrapper captures │ │
169
+ │ OutputParser extracts │ │
170
+ │ RelayClient sends SEND │ │
171
+ ├─────────────────────────────▶│ │
172
+ │ │ │
173
+ │ │ Router looks up "Bob" │
174
+ │ │ Creates DELIVER envelope │
175
+ │ │ Persists to SQLite │
176
+ │ │ │
177
+ │ ├─────────────────────────────▶│
178
+ │ │ │
179
+ │ │ RelayClient receives │
180
+ │ │ TmuxWrapper waits idle │
181
+ │ │ Injects via send-keys │
182
+ │ │ │
183
+ │ │ ┌───────────────┤
184
+ │ │ │ Bob sees: │
185
+ │ │ │ "Relay msg │
186
+ │ │ │ from Alice: │
187
+ │ │ │ review auth" │
188
+ │ │ └───────────────┤
189
+ │ │ │
190
+ │ │ Bob can respond: │
191
+ │ │ "->relay:Alice Done!" │
192
+ │ │ │
193
+ │ │◀─────────────────────────────┤
194
+ │◀─────────────────────────────┤ │
195
+ │ │ │
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Protocol Overview
201
+
202
+ ### Wire Format
203
+
204
+ ```
205
+ ┌────────────────┬──────────────────────────────────────────────────────┐
206
+ │ Length (4B) │ JSON Payload (UTF-8) │
207
+ │ Big-endian │ Up to 1 MiB │
208
+ └────────────────┴──────────────────────────────────────────────────────┘
209
+ ```
210
+
211
+ ### Message Types
212
+
213
+ | Type | Direction | Purpose |
214
+ |------|-----------|---------|
215
+ | `HELLO` | Client → Daemon | Identify agent |
216
+ | `WELCOME` | Daemon → Client | Confirm session |
217
+ | `SEND` | Client → Daemon | Send message |
218
+ | `DELIVER` | Daemon → Client | Receive message |
219
+ | `PING/PONG` | Both | Heartbeat |
220
+ | `BYE` | Both | Disconnect |
221
+
222
+ ### Envelope Structure
223
+
224
+ ```json
225
+ {
226
+ "v": 1,
227
+ "type": "SEND",
228
+ "id": "uuid-here",
229
+ "ts": 1703001234567,
230
+ "to": "Bob",
231
+ "payload": {
232
+ "kind": "message",
233
+ "body": "Can you review auth.ts?"
234
+ }
235
+ }
236
+ ```
237
+
238
+ ---
239
+
240
+ ## State Machines
241
+
242
+ ### Connection States (Daemon-side)
243
+
244
+ ```
245
+ CONNECTING ──▶ HANDSHAKING ──▶ ACTIVE ──▶ CLOSING ──▶ CLOSED
246
+ │ │
247
+ └─── ERROR ───┘
248
+ ```
249
+
250
+ ### Client States (Wrapper-side)
251
+
252
+ ```
253
+ DISCONNECTED ──▶ CONNECTING ──▶ HANDSHAKING ──▶ READY
254
+ ▲ │
255
+ │ │
256
+ └──────────── BACKOFF ◀─────────────────────┘
257
+ (auto-reconnect)
258
+ ```
259
+
260
+ ---
261
+
262
+ ## Communication Patterns
263
+
264
+ ### Direct Message
265
+ ```
266
+ ->relay:Bob Please review the authentication module
267
+ ```
268
+
269
+ ### Broadcast
270
+ ```
271
+ ->relay:* I've completed the database migration - all tests passing
272
+ ```
273
+
274
+ ### Structured (Block Format)
275
+ ```
276
+ [[RELAY]]{"to":"Bob","type":"action","body":"Run integration tests","data":{"priority":"high"}}[[/RELAY]]
277
+ ```
278
+
279
+ ### Common Conventions
280
+ ```
281
+ ->relay:* STATUS: Starting work on auth module
282
+ ->relay:* DONE: Auth module complete
283
+ ->relay:Reviewer REVIEW: Please check src/auth/*.ts
284
+ ->relay:Architect QUESTION: Should we use JWT or sessions?
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Key Design Decisions
290
+
291
+ | Decision | Why |
292
+ |----------|-----|
293
+ | **Output parsing** | Works with any CLI agent, no modifications needed |
294
+ | **Tmux wrapper** | Mature terminal emulation, users can detach/reattach |
295
+ | **Unix sockets** | No network exposure, filesystem permissions for security |
296
+ | **Message injection** | Agents treat messages as natural user input |
297
+ | **SQLite storage** | Zero config, single file, good enough for local use |
298
+
299
+ ---
300
+
301
+ ## Limitations (Transparency)
302
+
303
+ | Area | Limitation |
304
+ |------|------------|
305
+ | **Security** | No authentication between agents (local trust assumed) |
306
+ | **Reliability** | Messages can be lost if agent is busy outputting |
307
+ | **Timing** | 200ms polling latency, 1.5s idle wait before injection |
308
+ | **Platform** | Windows requires WSL (tmux dependency) |
309
+ | **Scale** | ~50 concurrent agents, ~100 msg/sec |
310
+
311
+ ---
312
+
313
+ ## File Structure
314
+
315
+ ```
316
+ agent-relay/
317
+ ├── src/
318
+ │ ├── cli/index.ts # CLI entry point
319
+ │ ├── daemon/
320
+ │ │ ├── server.ts # Daemon server
321
+ │ │ ├── connection.ts # Connection state machine
322
+ │ │ └── router.ts # Message routing
323
+ │ ├── wrapper/
324
+ │ │ ├── tmux-wrapper.ts # Tmux session management
325
+ │ │ ├── client.ts # Daemon client
326
+ │ │ └── parser.ts # ->relay: pattern matching
327
+ │ ├── protocol/
328
+ │ │ ├── types.ts # Message types
329
+ │ │ └── framing.ts # Wire format
330
+ │ └── storage/
331
+ │ └── sqlite-adapter.ts # Message persistence
332
+ ├── ARCHITECTURE.md # Detailed technical docs
333
+ └── EXECUTIVE_SUMMARY.md # This document
334
+ ```
335
+
336
+ ---
337
+
338
+ ## Storage Locations
339
+
340
+ ```
341
+ /tmp/agent-relay/{project-hash}/
342
+ ├── relay.sock # Unix domain socket
343
+ ├── relay.sock.pid # Daemon PID
344
+ ├── messages.sqlite # Message history
345
+ └── agents.json # Connected agents
346
+ ```
347
+
348
+ ---
349
+
350
+ ## See Also
351
+
352
+ - **[ARCHITECTURE.md](./ARCHITECTURE.md)** - Complete technical deep-dive
353
+ - **[README.md](./README.md)** - Quick start guide
354
+ - **[docs/COMPETITIVE_ANALYSIS.md](./docs/COMPETITIVE_ANALYSIS.md)** - Comparison with 16 multi-agent tools
355
+
356
+ ---
357
+
358
+ *Agent Relay v1.0.7*