agent-relay 1.1.0 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/.gitattributes +3 -0
  2. package/.nvmrc +1 -0
  3. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
  4. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
  5. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
  6. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
  7. package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
  8. package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
  9. package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
  10. package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
  11. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
  12. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
  13. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
  14. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
  15. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
  16. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
  17. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
  18. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
  19. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
  20. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
  21. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
  22. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
  23. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
  24. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
  25. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
  26. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
  27. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
  28. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
  29. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
  30. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
  31. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
  32. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
  33. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
  34. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
  35. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
  36. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
  37. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
  38. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
  39. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
  40. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
  41. package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
  42. package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
  43. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
  44. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
  45. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
  46. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
  47. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
  48. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
  49. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
  50. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
  51. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
  52. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
  53. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
  54. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
  55. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
  56. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
  57. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
  58. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
  59. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
  60. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
  61. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
  62. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
  63. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
  64. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
  65. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
  66. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
  67. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
  68. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
  69. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
  70. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
  71. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
  72. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
  73. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
  74. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
  75. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
  76. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
  77. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
  78. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
  79. package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
  80. package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
  81. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
  82. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
  83. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
  84. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
  85. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
  86. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
  87. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
  88. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
  89. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
  90. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
  91. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
  92. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
  93. package/.trajectories/index.json +314 -0
  94. package/ARCHITECTURE.md +1245 -0
  95. package/README.md +1 -1
  96. package/TESTING.md +278 -0
  97. package/deploy/init-db.sql +5 -0
  98. package/deploy/scripts/setup-fly-workspaces.sh +69 -0
  99. package/deploy/scripts/setup-railway.sh +75 -0
  100. package/deploy/workspace/entrypoint-browser.sh +118 -0
  101. package/deploy/workspace/entrypoint.sh +348 -0
  102. package/deploy/workspace/git-credential-relay +111 -0
  103. package/dist/bridge/spawner.d.ts +53 -0
  104. package/dist/bridge/spawner.js +203 -19
  105. package/dist/bridge/types.d.ts +12 -0
  106. package/dist/cli/index.js +618 -5
  107. package/dist/cloud/api/auth.d.ts +3 -2
  108. package/dist/cloud/api/auth.js +10 -98
  109. package/dist/cloud/api/billing.js +30 -9
  110. package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
  111. package/dist/cloud/api/cli-pty-runner.js +119 -0
  112. package/dist/cloud/api/codex-auth-helper.d.ts +15 -0
  113. package/dist/cloud/api/codex-auth-helper.js +100 -0
  114. package/dist/cloud/api/generic-webhooks.d.ts +8 -0
  115. package/dist/cloud/api/generic-webhooks.js +129 -0
  116. package/dist/cloud/api/git.d.ts +8 -0
  117. package/dist/cloud/api/git.js +152 -0
  118. package/dist/cloud/api/github-app.d.ts +11 -0
  119. package/dist/cloud/api/github-app.js +189 -0
  120. package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
  121. package/dist/cloud/api/middleware/planLimits.js +39 -1
  122. package/dist/cloud/api/monitoring.d.ts +11 -0
  123. package/dist/cloud/api/monitoring.js +578 -0
  124. package/dist/cloud/api/nango-auth.d.ts +9 -0
  125. package/dist/cloud/api/nango-auth.js +377 -0
  126. package/dist/cloud/api/onboarding.d.ts +8 -1
  127. package/dist/cloud/api/onboarding.js +313 -119
  128. package/dist/cloud/api/policy.d.ts +8 -0
  129. package/dist/cloud/api/policy.js +229 -0
  130. package/dist/cloud/api/providers.js +114 -42
  131. package/dist/cloud/api/repos.d.ts +1 -0
  132. package/dist/cloud/api/repos.js +186 -0
  133. package/dist/cloud/api/test-helpers.d.ts +10 -0
  134. package/dist/cloud/api/test-helpers.js +575 -0
  135. package/dist/cloud/api/webhooks.d.ts +8 -0
  136. package/dist/cloud/api/webhooks.js +645 -0
  137. package/dist/cloud/api/workspaces.js +320 -12
  138. package/dist/cloud/billing/plans.js +32 -19
  139. package/dist/cloud/billing/types.d.ts +9 -3
  140. package/dist/cloud/config.d.ts +9 -2
  141. package/dist/cloud/config.js +13 -4
  142. package/dist/cloud/db/drizzle.d.ts +84 -1
  143. package/dist/cloud/db/drizzle.js +470 -0
  144. package/dist/cloud/db/index.d.ts +9 -4
  145. package/dist/cloud/db/index.js +11 -3
  146. package/dist/cloud/db/schema.d.ts +3283 -556
  147. package/dist/cloud/db/schema.js +314 -1
  148. package/dist/cloud/index.d.ts +1 -0
  149. package/dist/cloud/index.js +2 -0
  150. package/dist/cloud/provisioner/index.d.ts +56 -0
  151. package/dist/cloud/provisioner/index.js +676 -34
  152. package/dist/cloud/server.d.ts +1 -0
  153. package/dist/cloud/server.js +362 -13
  154. package/dist/cloud/services/auto-scaler.d.ts +152 -0
  155. package/dist/cloud/services/auto-scaler.js +439 -0
  156. package/dist/cloud/services/capacity-manager.d.ts +148 -0
  157. package/dist/cloud/services/capacity-manager.js +449 -0
  158. package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
  159. package/dist/cloud/services/ci-agent-spawner.js +373 -0
  160. package/dist/cloud/services/index.d.ts +12 -0
  161. package/dist/cloud/services/index.js +15 -0
  162. package/dist/cloud/services/mention-handler.d.ts +65 -0
  163. package/dist/cloud/services/mention-handler.js +405 -0
  164. package/dist/cloud/services/nango.d.ts +186 -0
  165. package/dist/cloud/services/nango.js +344 -0
  166. package/dist/cloud/services/persistence.d.ts +131 -0
  167. package/dist/cloud/services/persistence.js +200 -0
  168. package/dist/cloud/services/planLimits.d.ts +37 -0
  169. package/dist/cloud/services/planLimits.js +86 -5
  170. package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
  171. package/dist/cloud/services/scaling-orchestrator.js +502 -0
  172. package/dist/cloud/services/scaling-policy.d.ts +121 -0
  173. package/dist/cloud/services/scaling-policy.js +415 -0
  174. package/dist/cloud/vault/index.js +1 -1
  175. package/dist/cloud/webhooks/index.d.ts +24 -0
  176. package/dist/cloud/webhooks/index.js +29 -0
  177. package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
  178. package/dist/cloud/webhooks/parsers/github.js +234 -0
  179. package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
  180. package/dist/cloud/webhooks/parsers/index.js +30 -0
  181. package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
  182. package/dist/cloud/webhooks/parsers/linear.js +258 -0
  183. package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
  184. package/dist/cloud/webhooks/parsers/slack.js +214 -0
  185. package/dist/cloud/webhooks/responders/github.d.ts +8 -0
  186. package/dist/cloud/webhooks/responders/github.js +73 -0
  187. package/dist/cloud/webhooks/responders/index.d.ts +23 -0
  188. package/dist/cloud/webhooks/responders/index.js +30 -0
  189. package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
  190. package/dist/cloud/webhooks/responders/linear.js +149 -0
  191. package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
  192. package/dist/cloud/webhooks/responders/slack.js +178 -0
  193. package/dist/cloud/webhooks/router.d.ts +25 -0
  194. package/dist/cloud/webhooks/router.js +504 -0
  195. package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
  196. package/dist/cloud/webhooks/rules-engine.js +287 -0
  197. package/dist/cloud/webhooks/types.d.ts +186 -0
  198. package/dist/cloud/webhooks/types.js +8 -0
  199. package/dist/continuity/formatter.d.ts +51 -0
  200. package/dist/continuity/formatter.js +313 -0
  201. package/dist/continuity/handoff-store.d.ts +67 -0
  202. package/dist/continuity/handoff-store.js +472 -0
  203. package/dist/continuity/index.d.ts +45 -0
  204. package/dist/continuity/index.js +48 -0
  205. package/dist/continuity/ledger-store.d.ts +110 -0
  206. package/dist/continuity/ledger-store.js +500 -0
  207. package/dist/continuity/manager.d.ts +178 -0
  208. package/dist/continuity/manager.js +562 -0
  209. package/dist/continuity/parser.d.ts +76 -0
  210. package/dist/continuity/parser.js +579 -0
  211. package/dist/continuity/types.d.ts +180 -0
  212. package/dist/continuity/types.js +9 -0
  213. package/dist/daemon/agent-manager.d.ts +27 -0
  214. package/dist/daemon/agent-manager.js +107 -6
  215. package/dist/daemon/agent-registry.d.ts +32 -0
  216. package/dist/daemon/agent-registry.js +42 -2
  217. package/dist/daemon/api.d.ts +12 -0
  218. package/dist/daemon/api.js +131 -2
  219. package/dist/daemon/cli-auth.d.ts +67 -0
  220. package/dist/daemon/cli-auth.js +537 -0
  221. package/dist/daemon/cloud-sync.js +9 -7
  222. package/dist/daemon/orchestrator.js +30 -0
  223. package/dist/daemon/router.d.ts +5 -0
  224. package/dist/daemon/router.js +78 -26
  225. package/dist/daemon/server.d.ts +5 -0
  226. package/dist/daemon/server.js +9 -1
  227. package/dist/daemon/services/browser-testing.d.ts +88 -0
  228. package/dist/daemon/services/browser-testing.js +244 -0
  229. package/dist/daemon/services/container-spawner.d.ts +135 -0
  230. package/dist/daemon/services/container-spawner.js +313 -0
  231. package/dist/daemon/types.d.ts +5 -1
  232. package/dist/dashboard/out/404.html +1 -1
  233. package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
  234. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
  235. package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -0
  236. package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +9 -0
  237. package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +1 -0
  238. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +1 -0
  239. package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +1 -0
  240. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +1 -0
  241. package/dist/dashboard/out/_next/static/chunks/app/history/{page-b6edd4dde8d08194.js → page-abb9ab2d329f56e9.js} +1 -1
  242. package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
  243. package/dist/dashboard/out/_next/static/chunks/app/login/page-c22d080201cbd9fb.js +1 -0
  244. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +1 -0
  245. package/dist/dashboard/out/_next/static/chunks/app/page-77e9c65420a06cfb.js +1 -0
  246. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +1 -0
  247. package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +1 -0
  248. package/dist/dashboard/out/_next/static/chunks/app/signup/page-68d34f50baa8ab6b.js +1 -0
  249. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
  250. package/dist/dashboard/out/_next/static/chunks/{main-app-5d692157a8eb1fd9.js → main-app-6e8e8d3ef4e0192a.js} +1 -1
  251. package/dist/dashboard/out/_next/static/chunks/{main-c2f423b9c9f4591b.js → main-ed4e1fb6f29c34cf.js} +1 -1
  252. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
  253. package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
  254. package/dist/dashboard/out/_next/static/css/7c3ae9e8617d42a5.css +1 -0
  255. package/dist/dashboard/out/app/onboarding.html +1 -0
  256. package/dist/dashboard/out/app/onboarding.txt +7 -0
  257. package/dist/dashboard/out/app.html +1 -14
  258. package/dist/dashboard/out/app.txt +2 -2
  259. package/dist/dashboard/out/connect-repos.html +1 -0
  260. package/dist/dashboard/out/connect-repos.txt +7 -0
  261. package/dist/dashboard/out/history.html +1 -1
  262. package/dist/dashboard/out/history.txt +2 -2
  263. package/dist/dashboard/out/index.html +1 -1
  264. package/dist/dashboard/out/index.txt +2 -2
  265. package/dist/dashboard/out/login.html +6 -0
  266. package/dist/dashboard/out/login.txt +7 -0
  267. package/dist/dashboard/out/metrics.html +1 -1
  268. package/dist/dashboard/out/metrics.txt +2 -2
  269. package/dist/dashboard/out/pricing.html +3 -3
  270. package/dist/dashboard/out/pricing.txt +2 -2
  271. package/dist/dashboard/out/providers.html +1 -0
  272. package/dist/dashboard/out/providers.txt +7 -0
  273. package/dist/dashboard/out/signup.html +6 -0
  274. package/dist/dashboard/out/signup.txt +7 -0
  275. package/dist/dashboard-server/server.js +1308 -8
  276. package/dist/hooks/emitter.d.ts +40 -0
  277. package/dist/hooks/emitter.js +63 -0
  278. package/dist/hooks/index.d.ts +3 -0
  279. package/dist/hooks/index.js +3 -0
  280. package/dist/hooks/registry.d.ts +173 -0
  281. package/dist/hooks/registry.js +476 -0
  282. package/dist/hooks/trajectory-hooks.d.ts +52 -0
  283. package/dist/hooks/trajectory-hooks.js +183 -0
  284. package/dist/hooks/types.d.ts +141 -0
  285. package/dist/index.d.ts +2 -0
  286. package/dist/index.js +3 -0
  287. package/dist/memory/adapters/index.d.ts +8 -0
  288. package/dist/memory/adapters/index.js +8 -0
  289. package/dist/memory/adapters/inmemory.d.ts +59 -0
  290. package/dist/memory/adapters/inmemory.js +195 -0
  291. package/dist/memory/adapters/supermemory.d.ts +71 -0
  292. package/dist/memory/adapters/supermemory.js +338 -0
  293. package/dist/memory/factory.d.ts +48 -0
  294. package/dist/memory/factory.js +143 -0
  295. package/dist/memory/index.d.ts +32 -0
  296. package/dist/memory/index.js +32 -0
  297. package/dist/memory/memory-hooks.d.ts +60 -0
  298. package/dist/memory/memory-hooks.js +313 -0
  299. package/dist/memory/service.d.ts +49 -0
  300. package/dist/memory/service.js +146 -0
  301. package/dist/memory/types.d.ts +195 -0
  302. package/dist/memory/types.js +8 -0
  303. package/dist/policy/agent-policy.d.ts +225 -0
  304. package/dist/policy/agent-policy.js +665 -0
  305. package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
  306. package/dist/policy/cloud-policy-fetcher.js +64 -0
  307. package/dist/resiliency/crash-insights.d.ts +156 -0
  308. package/dist/resiliency/crash-insights.js +492 -0
  309. package/dist/resiliency/gossip-health.d.ts +137 -0
  310. package/dist/resiliency/gossip-health.js +241 -0
  311. package/dist/resiliency/index.d.ts +5 -0
  312. package/dist/resiliency/index.js +5 -0
  313. package/dist/resiliency/leader-watchdog.d.ts +109 -0
  314. package/dist/resiliency/leader-watchdog.js +189 -0
  315. package/dist/resiliency/memory-monitor.d.ts +172 -0
  316. package/dist/resiliency/memory-monitor.js +593 -0
  317. package/dist/resiliency/stateless-lead.d.ts +149 -0
  318. package/dist/resiliency/stateless-lead.js +308 -0
  319. package/dist/resiliency/supervisor.d.ts +38 -0
  320. package/dist/resiliency/supervisor.js +122 -0
  321. package/dist/shared/cli-auth-config.d.ts +91 -0
  322. package/dist/shared/cli-auth-config.js +264 -0
  323. package/dist/storage/adapter.d.ts +1 -1
  324. package/dist/trajectory/config.d.ts +84 -0
  325. package/dist/trajectory/config.js +163 -0
  326. package/dist/trajectory/index.d.ts +8 -0
  327. package/dist/trajectory/index.js +8 -0
  328. package/dist/trajectory/integration.d.ts +292 -0
  329. package/dist/trajectory/integration.js +834 -0
  330. package/dist/utils/logger.js +1 -1
  331. package/dist/utils/project-namespace.d.ts +24 -0
  332. package/dist/utils/project-namespace.js +84 -0
  333. package/dist/wrapper/parser.d.ts +10 -0
  334. package/dist/wrapper/parser.js +100 -33
  335. package/dist/wrapper/pty-wrapper.d.ts +197 -16
  336. package/dist/wrapper/pty-wrapper.js +943 -106
  337. package/dist/wrapper/shared.d.ts +165 -0
  338. package/dist/wrapper/shared.js +270 -0
  339. package/dist/wrapper/tmux-wrapper.d.ts +73 -11
  340. package/dist/wrapper/tmux-wrapper.js +541 -120
  341. package/package.json +16 -16
  342. package/scripts/postinstall.js +60 -0
  343. package/test-push.txt +1 -0
  344. package/bin/tmux +0 -0
  345. package/dist/bridge/config.d.ts.map +0 -1
  346. package/dist/bridge/config.js.map +0 -1
  347. package/dist/bridge/index.d.ts.map +0 -1
  348. package/dist/bridge/index.js.map +0 -1
  349. package/dist/bridge/multi-project-client.d.ts.map +0 -1
  350. package/dist/bridge/multi-project-client.js.map +0 -1
  351. package/dist/bridge/shadow-cli.d.ts.map +0 -1
  352. package/dist/bridge/shadow-cli.js.map +0 -1
  353. package/dist/bridge/shadow-config.d.ts.map +0 -1
  354. package/dist/bridge/shadow-config.js.map +0 -1
  355. package/dist/bridge/spawner.d.ts.map +0 -1
  356. package/dist/bridge/spawner.js.map +0 -1
  357. package/dist/bridge/teams-config.d.ts.map +0 -1
  358. package/dist/bridge/teams-config.js.map +0 -1
  359. package/dist/bridge/types.d.ts.map +0 -1
  360. package/dist/bridge/types.js.map +0 -1
  361. package/dist/bridge/utils.d.ts.map +0 -1
  362. package/dist/bridge/utils.js.map +0 -1
  363. package/dist/cli/index.d.ts.map +0 -1
  364. package/dist/cli/index.js.map +0 -1
  365. package/dist/cloud/api/auth.d.ts.map +0 -1
  366. package/dist/cloud/api/auth.js.map +0 -1
  367. package/dist/cloud/api/billing.d.ts.map +0 -1
  368. package/dist/cloud/api/billing.js.map +0 -1
  369. package/dist/cloud/api/coordinators.d.ts.map +0 -1
  370. package/dist/cloud/api/coordinators.js.map +0 -1
  371. package/dist/cloud/api/daemons.d.ts.map +0 -1
  372. package/dist/cloud/api/daemons.js.map +0 -1
  373. package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
  374. package/dist/cloud/api/middleware/planLimits.js.map +0 -1
  375. package/dist/cloud/api/onboarding.d.ts.map +0 -1
  376. package/dist/cloud/api/onboarding.js.map +0 -1
  377. package/dist/cloud/api/providers.d.ts.map +0 -1
  378. package/dist/cloud/api/providers.js.map +0 -1
  379. package/dist/cloud/api/repos.d.ts.map +0 -1
  380. package/dist/cloud/api/repos.js.map +0 -1
  381. package/dist/cloud/api/teams.d.ts.map +0 -1
  382. package/dist/cloud/api/teams.js.map +0 -1
  383. package/dist/cloud/api/usage.d.ts.map +0 -1
  384. package/dist/cloud/api/usage.js.map +0 -1
  385. package/dist/cloud/api/workspaces.d.ts.map +0 -1
  386. package/dist/cloud/api/workspaces.js.map +0 -1
  387. package/dist/cloud/billing/index.d.ts.map +0 -1
  388. package/dist/cloud/billing/index.js.map +0 -1
  389. package/dist/cloud/billing/plans.d.ts.map +0 -1
  390. package/dist/cloud/billing/plans.js.map +0 -1
  391. package/dist/cloud/billing/service.d.ts.map +0 -1
  392. package/dist/cloud/billing/service.js.map +0 -1
  393. package/dist/cloud/billing/types.d.ts.map +0 -1
  394. package/dist/cloud/billing/types.js.map +0 -1
  395. package/dist/cloud/config.d.ts.map +0 -1
  396. package/dist/cloud/config.js.map +0 -1
  397. package/dist/cloud/db/drizzle.d.ts.map +0 -1
  398. package/dist/cloud/db/drizzle.js.map +0 -1
  399. package/dist/cloud/db/index.d.ts.map +0 -1
  400. package/dist/cloud/db/index.js.map +0 -1
  401. package/dist/cloud/db/schema.d.ts.map +0 -1
  402. package/dist/cloud/db/schema.js.map +0 -1
  403. package/dist/cloud/index.d.ts.map +0 -1
  404. package/dist/cloud/index.js.map +0 -1
  405. package/dist/cloud/provisioner/index.d.ts.map +0 -1
  406. package/dist/cloud/provisioner/index.js.map +0 -1
  407. package/dist/cloud/server.d.ts.map +0 -1
  408. package/dist/cloud/server.js.map +0 -1
  409. package/dist/cloud/services/coordinator.d.ts.map +0 -1
  410. package/dist/cloud/services/coordinator.js.map +0 -1
  411. package/dist/cloud/services/planLimits.d.ts.map +0 -1
  412. package/dist/cloud/services/planLimits.js.map +0 -1
  413. package/dist/cloud/vault/index.d.ts.map +0 -1
  414. package/dist/cloud/vault/index.js.map +0 -1
  415. package/dist/daemon/agent-manager.d.ts.map +0 -1
  416. package/dist/daemon/agent-manager.js.map +0 -1
  417. package/dist/daemon/agent-registry.d.ts.map +0 -1
  418. package/dist/daemon/agent-registry.js.map +0 -1
  419. package/dist/daemon/api.d.ts.map +0 -1
  420. package/dist/daemon/api.js.map +0 -1
  421. package/dist/daemon/auth.d.ts.map +0 -1
  422. package/dist/daemon/auth.js.map +0 -1
  423. package/dist/daemon/cloud-sync.d.ts.map +0 -1
  424. package/dist/daemon/cloud-sync.js.map +0 -1
  425. package/dist/daemon/connection.d.ts.map +0 -1
  426. package/dist/daemon/connection.js.map +0 -1
  427. package/dist/daemon/index.d.ts.map +0 -1
  428. package/dist/daemon/index.js.map +0 -1
  429. package/dist/daemon/orchestrator.d.ts.map +0 -1
  430. package/dist/daemon/orchestrator.js.map +0 -1
  431. package/dist/daemon/registry.d.ts.map +0 -1
  432. package/dist/daemon/registry.js.map +0 -1
  433. package/dist/daemon/router.d.ts.map +0 -1
  434. package/dist/daemon/router.js.map +0 -1
  435. package/dist/daemon/server.d.ts.map +0 -1
  436. package/dist/daemon/server.js.map +0 -1
  437. package/dist/daemon/types.d.ts.map +0 -1
  438. package/dist/daemon/types.js.map +0 -1
  439. package/dist/daemon/workspace-manager.d.ts.map +0 -1
  440. package/dist/daemon/workspace-manager.js.map +0 -1
  441. package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +0 -1
  442. package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +0 -1
  443. package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +0 -1
  444. package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +0 -1
  445. package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +0 -1
  446. package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
  447. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +0 -1
  448. package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +0 -1
  449. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +0 -1
  450. package/dist/dashboard/out/_next/static/chunks/webpack-a5acc2831d094776.js +0 -1
  451. package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +0 -1
  452. package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +0 -1
  453. package/dist/dashboard-server/metrics.d.ts.map +0 -1
  454. package/dist/dashboard-server/metrics.js.map +0 -1
  455. package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
  456. package/dist/dashboard-server/needs-attention.js.map +0 -1
  457. package/dist/dashboard-server/server.d.ts.map +0 -1
  458. package/dist/dashboard-server/server.js.map +0 -1
  459. package/dist/dashboard-server/start.d.ts.map +0 -1
  460. package/dist/dashboard-server/start.js.map +0 -1
  461. package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
  462. package/dist/hooks/inbox-check/hook.js.map +0 -1
  463. package/dist/hooks/inbox-check/index.d.ts.map +0 -1
  464. package/dist/hooks/inbox-check/index.js.map +0 -1
  465. package/dist/hooks/inbox-check/types.d.ts.map +0 -1
  466. package/dist/hooks/inbox-check/types.js.map +0 -1
  467. package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
  468. package/dist/hooks/inbox-check/utils.js.map +0 -1
  469. package/dist/hooks/index.d.ts.map +0 -1
  470. package/dist/hooks/index.js.map +0 -1
  471. package/dist/hooks/types.d.ts.map +0 -1
  472. package/dist/hooks/types.js.map +0 -1
  473. package/dist/index.d.ts.map +0 -1
  474. package/dist/index.js.map +0 -1
  475. package/dist/protocol/framing.d.ts.map +0 -1
  476. package/dist/protocol/framing.js.map +0 -1
  477. package/dist/protocol/index.d.ts.map +0 -1
  478. package/dist/protocol/index.js.map +0 -1
  479. package/dist/protocol/types.d.ts.map +0 -1
  480. package/dist/protocol/types.js.map +0 -1
  481. package/dist/resiliency/context-persistence.d.ts.map +0 -1
  482. package/dist/resiliency/context-persistence.js.map +0 -1
  483. package/dist/resiliency/health-monitor.d.ts.map +0 -1
  484. package/dist/resiliency/health-monitor.js.map +0 -1
  485. package/dist/resiliency/index.d.ts.map +0 -1
  486. package/dist/resiliency/index.js.map +0 -1
  487. package/dist/resiliency/logger.d.ts.map +0 -1
  488. package/dist/resiliency/logger.js.map +0 -1
  489. package/dist/resiliency/metrics.d.ts.map +0 -1
  490. package/dist/resiliency/metrics.js.map +0 -1
  491. package/dist/resiliency/provider-context.d.ts.map +0 -1
  492. package/dist/resiliency/provider-context.js.map +0 -1
  493. package/dist/resiliency/supervisor.d.ts.map +0 -1
  494. package/dist/resiliency/supervisor.js.map +0 -1
  495. package/dist/state/agent-state.d.ts.map +0 -1
  496. package/dist/state/agent-state.js.map +0 -1
  497. package/dist/storage/adapter.d.ts.map +0 -1
  498. package/dist/storage/adapter.js.map +0 -1
  499. package/dist/storage/sqlite-adapter.d.ts.map +0 -1
  500. package/dist/storage/sqlite-adapter.js.map +0 -1
  501. package/dist/utils/agent-config.d.ts.map +0 -1
  502. package/dist/utils/agent-config.js.map +0 -1
  503. package/dist/utils/command-resolver.d.ts.map +0 -1
  504. package/dist/utils/command-resolver.js.map +0 -1
  505. package/dist/utils/index.d.ts.map +0 -1
  506. package/dist/utils/index.js.map +0 -1
  507. package/dist/utils/logger.d.ts.map +0 -1
  508. package/dist/utils/logger.js.map +0 -1
  509. package/dist/utils/name-generator.d.ts.map +0 -1
  510. package/dist/utils/name-generator.js.map +0 -1
  511. package/dist/utils/project-namespace.d.ts.map +0 -1
  512. package/dist/utils/project-namespace.js.map +0 -1
  513. package/dist/utils/tmux-resolver.d.ts.map +0 -1
  514. package/dist/utils/tmux-resolver.js.map +0 -1
  515. package/dist/utils/update-checker.d.ts.map +0 -1
  516. package/dist/utils/update-checker.js.map +0 -1
  517. package/dist/wrapper/client.d.ts.map +0 -1
  518. package/dist/wrapper/client.js.map +0 -1
  519. package/dist/wrapper/inbox.d.ts.map +0 -1
  520. package/dist/wrapper/inbox.js.map +0 -1
  521. package/dist/wrapper/index.d.ts.map +0 -1
  522. package/dist/wrapper/index.js.map +0 -1
  523. package/dist/wrapper/parser.d.ts.map +0 -1
  524. package/dist/wrapper/parser.js.map +0 -1
  525. package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
  526. package/dist/wrapper/pty-wrapper.js.map +0 -1
  527. package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
  528. package/dist/wrapper/tmux-wrapper.js.map +0 -1
  529. package/docs/AGENTS.md +0 -513
  530. package/docs/ARCHITECTURE_DECISIONS.md +0 -175
  531. package/docs/CHANGELOG.md +0 -11
  532. package/docs/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
  533. package/docs/CLOUD-ARCHITECTURE.md +0 -652
  534. package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
  535. package/docs/COMPETITIVE_ANALYSIS.md +0 -897
  536. package/docs/CONTRIBUTING.md +0 -151
  537. package/docs/DESIGN_BRIDGE_STAFFING.md +0 -878
  538. package/docs/DESIGN_V2.md +0 -1079
  539. package/docs/INTEGRATION-GUIDE.md +0 -926
  540. package/docs/MONETIZATION.md +0 -1679
  541. package/docs/PROPOSAL-trajectories.md +0 -1582
  542. package/docs/PROTOCOL.md +0 -325
  543. package/docs/SCALING_ANALYSIS.md +0 -280
  544. package/docs/TESTING_PRESENCE_FEATURES.md +0 -327
  545. package/docs/TMUX_IMPLEMENTATION_NOTES.md +0 -364
  546. package/docs/TMUX_IMPROVEMENTS.md +0 -968
  547. package/docs/agent-relay-snippet.md +0 -168
  548. package/docs/competitive-analysis-mcp-agent-mail.md +0 -389
  549. package/docs/dashboard-v2-plan.md +0 -179
  550. package/docs/guides/CLOUD.md +0 -236
  551. package/docs/guides/LOCAL.md +0 -535
  552. package/docs/guides/SELF-HOSTED.md +0 -494
  553. package/docs/proposals/shadow-as-subagent.md +0 -765
  554. package/docs/proposals/slack-bot-integration.md +0 -1457
  555. package/docs/removable-code-analysis.md +0 -24
  556. package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
  557. package/scripts/dev/dev-team-setup.sh +0 -431
  558. package/scripts/e2e-test.sh +0 -119
  559. package/scripts/games/game-protocol.md +0 -79
  560. package/scripts/games/hearts-setup.sh +0 -264
  561. package/scripts/tictactoe-setup.sh +0 -181
  562. /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-f7b8ab0809342e77.js} +0 -0
  563. /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-5cc6e1921389a58a.js} +0 -0
  564. /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js → page-53b8a69f76db17d0.js} +0 -0
  565. /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
  566. /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
  567. /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_ssgManifest.js +0 -0
package/.gitattributes ADDED
@@ -0,0 +1,3 @@
1
+
2
+ # Use bd merge for beads JSONL files
3
+ .beads/issues.jsonl merge=beads
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ v22.0.0
@@ -0,0 +1,65 @@
1
+ {
2
+ "id": "traj_1dviorhnkcb5",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Use uuid() instead of Math.random() for message IDs",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-417"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T15:25:32.815Z",
13
+ "agents": [
14
+ {
15
+ "name": "Backend",
16
+ "role": "lead",
17
+ "joinedAt": "2026-01-03T15:25:32.816Z"
18
+ }
19
+ ],
20
+ "chapters": [
21
+ {
22
+ "id": "chap_hchfr9klzbb0",
23
+ "title": "Work",
24
+ "agentName": "default",
25
+ "startedAt": "2026-01-03T15:25:38.791Z",
26
+ "events": [
27
+ {
28
+ "ts": 1767453938793,
29
+ "type": "decision",
30
+ "content": "TrajectoryViewer already wired up but needs UX improvements: TrajectoryViewer already wired up but needs UX improvements",
31
+ "raw": {
32
+ "question": "TrajectoryViewer already wired up but needs UX improvements",
33
+ "chosen": "TrajectoryViewer already wired up but needs UX improvements",
34
+ "alternatives": [],
35
+ "reasoning": "Component was connected in recent commits, but user reported: too small, not browsable, no back navigation"
36
+ },
37
+ "significance": "high"
38
+ },
39
+ {
40
+ "ts": 1767453941057,
41
+ "type": "decision",
42
+ "content": "Used existing uuid library pattern from codebase: Used existing uuid library pattern from codebase",
43
+ "raw": {
44
+ "question": "Used existing uuid library pattern from codebase",
45
+ "chosen": "Used existing uuid library pattern from codebase",
46
+ "alternatives": [],
47
+ "reasoning": "Already imported as 'v4 as uuid' in router.ts, connection.ts, agent-registry.ts - maintaining consistency"
48
+ },
49
+ "significance": "high"
50
+ }
51
+ ],
52
+ "endedAt": "2026-01-03T15:25:42.319Z"
53
+ }
54
+ ],
55
+ "commits": [],
56
+ "filesChanged": [],
57
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
58
+ "tags": [],
59
+ "completedAt": "2026-01-03T15:25:42.319Z",
60
+ "retrospective": {
61
+ "summary": "Replaced Math.random().toString(36).slice(2) with uuid() in daemon/server.ts:284 for cross-machine message IDs. Added uuid import. Build verified.",
62
+ "approach": "Standard approach",
63
+ "confidence": 0.95
64
+ }
65
+ }
@@ -0,0 +1,37 @@
1
+ # Trajectory: Use uuid() instead of Math.random() for message IDs
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** agent-relay-417
5
+ > **Confidence:** 95%
6
+ > **Started:** January 3, 2026 at 04:25 PM
7
+ > **Completed:** January 3, 2026 at 04:25 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Replaced Math.random().toString(36).slice(2) with uuid() in daemon/server.ts:284 for cross-machine message IDs. Added uuid import. Build verified.
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### TrajectoryViewer already wired up but needs UX improvements
22
+ - **Chose:** TrajectoryViewer already wired up but needs UX improvements
23
+ - **Reasoning:** Component was connected in recent commits, but user reported: too small, not browsable, no back navigation
24
+
25
+ ### Used existing uuid library pattern from codebase
26
+ - **Chose:** Used existing uuid library pattern from codebase
27
+ - **Reasoning:** Already imported as 'v4 as uuid' in router.ts, connection.ts, agent-registry.ts - maintaining consistency
28
+
29
+ ---
30
+
31
+ ## Chapters
32
+
33
+ ### 1. Work
34
+ *Agent: default*
35
+
36
+ - TrajectoryViewer already wired up but needs UX improvements: TrajectoryViewer already wired up but needs UX improvements
37
+ - Used existing uuid library pattern from codebase: Used existing uuid library pattern from codebase
@@ -0,0 +1,65 @@
1
+ {
2
+ "id": "traj_1k5if5snst2e",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Fix 404 errors on auth endpoints",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "api-auth-session-404"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T19:55:20.964Z",
13
+ "agents": [
14
+ {
15
+ "name": "Backend",
16
+ "role": "lead",
17
+ "joinedAt": "2026-01-03T19:55:20.965Z"
18
+ }
19
+ ],
20
+ "chapters": [
21
+ {
22
+ "id": "chap_baircdnx9e02",
23
+ "title": "Work",
24
+ "agentName": "default",
25
+ "startedAt": "2026-01-03T21:14:10.404Z",
26
+ "events": [
27
+ {
28
+ "ts": 1767474850405,
29
+ "type": "decision",
30
+ "content": "Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking: Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking",
31
+ "raw": {
32
+ "question": "Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking",
33
+ "chosen": "Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking",
34
+ "alternatives": [],
35
+ "reasoning": "Using Nango Proxy instead of direct token fetches provides automatic token refresh and cleaner code. Database schema was missing nango_connection_id, incoming_connection_id, and pending_installation_request columns needed for the two-connection OAuth pattern."
36
+ },
37
+ "significance": "high"
38
+ },
39
+ {
40
+ "ts": 1767474871478,
41
+ "type": "decision",
42
+ "content": "Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch: Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch",
43
+ "raw": {
44
+ "question": "Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch",
45
+ "chosen": "Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch",
46
+ "alternatives": [],
47
+ "reasoning": "Browser popup blockers require window.open() to be called synchronously within the user's click event handler. Awaiting the session token first broke the gesture chain. Solution: open popup immediately (shows loading), then fetch token async, then set token to enable the UI."
48
+ },
49
+ "significance": "high"
50
+ }
51
+ ],
52
+ "endedAt": "2026-01-03T21:14:38.934Z"
53
+ }
54
+ ],
55
+ "commits": [],
56
+ "filesChanged": [],
57
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
58
+ "tags": [],
59
+ "completedAt": "2026-01-03T21:14:38.934Z",
60
+ "retrospective": {
61
+ "summary": "Fixed Nango OAuth popup blocker issue in login and signup pages by reordering operations to open popup synchronously before async token fetch",
62
+ "approach": "Standard approach",
63
+ "confidence": 0.9
64
+ }
65
+ }
@@ -0,0 +1,37 @@
1
+ # Trajectory: Fix 404 errors on auth endpoints
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** api-auth-session-404
5
+ > **Confidence:** 90%
6
+ > **Started:** January 3, 2026 at 08:55 PM
7
+ > **Completed:** January 3, 2026 at 10:14 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Fixed Nango OAuth popup blocker issue in login and signup pages by reordering operations to open popup synchronously before async token fetch
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking
22
+ - **Chose:** Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking
23
+ - **Reasoning:** Using Nango Proxy instead of direct token fetches provides automatic token refresh and cleaner code. Database schema was missing nango_connection_id, incoming_connection_id, and pending_installation_request columns needed for the two-connection OAuth pattern.
24
+
25
+ ### Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch
26
+ - **Chose:** Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch
27
+ - **Reasoning:** Browser popup blockers require window.open() to be called synchronously within the user's click event handler. Awaiting the session token first broke the gesture chain. Solution: open popup immediately (shows loading), then fetch token async, then set token to enable the UI.
28
+
29
+ ---
30
+
31
+ ## Chapters
32
+
33
+ ### 1. Work
34
+ *Agent: default*
35
+
36
+ - Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking: Fixed Nango integration: updated to use Nango Proxy for GitHub API calls, fixed popup blocking in OAuth flow, added missing database columns for user connection tracking
37
+ - Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch: Fixed popup:blocked_by_browser error by opening Nango Connect UI synchronously before async session fetch
@@ -0,0 +1,49 @@
1
+ {
2
+ "id": "traj_1rp3rges5811",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Improve trajectory viewer design"
6
+ },
7
+ "status": "completed",
8
+ "startedAt": "2026-01-03T14:09:55.255Z",
9
+ "agents": [
10
+ {
11
+ "name": "LogFixer",
12
+ "role": "lead",
13
+ "joinedAt": "2026-01-03T14:09:55.255Z"
14
+ }
15
+ ],
16
+ "chapters": [
17
+ {
18
+ "id": "chap_qy4e6s6q9rw2",
19
+ "title": "Work",
20
+ "agentName": "default",
21
+ "startedAt": "2026-01-03T14:09:58.790Z",
22
+ "events": [
23
+ {
24
+ "ts": 1767449398791,
25
+ "type": "decision",
26
+ "content": "Hide TrajectoryViewer action when no onStepClick provided: Hide TrajectoryViewer action when no onStepClick provided",
27
+ "raw": {
28
+ "question": "Hide TrajectoryViewer action when no onStepClick provided",
29
+ "chosen": "Hide TrajectoryViewer action when no onStepClick provided",
30
+ "alternatives": [],
31
+ "reasoning": "Prevents empty expanded panes and removes dead View Details button when parent has no detail handler"
32
+ },
33
+ "significance": "high"
34
+ }
35
+ ],
36
+ "endedAt": "2026-01-03T14:10:29.755Z"
37
+ }
38
+ ],
39
+ "commits": [],
40
+ "filesChanged": [],
41
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
42
+ "tags": [],
43
+ "completedAt": "2026-01-03T14:10:29.755Z",
44
+ "retrospective": {
45
+ "summary": "Trimmed TrajectoryViewer detail UX: hide View Details button when no handler, only render detail panel when content exists; rebuilt dashboard and reran targeted vitest.",
46
+ "approach": "Standard approach",
47
+ "confidence": 0.78
48
+ }
49
+ }
@@ -0,0 +1,31 @@
1
+ # Trajectory: Improve trajectory viewer design
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Confidence:** 78%
5
+ > **Started:** January 3, 2026 at 03:09 PM
6
+ > **Completed:** January 3, 2026 at 03:10 PM
7
+
8
+ ---
9
+
10
+ ## Summary
11
+
12
+ Trimmed TrajectoryViewer detail UX: hide View Details button when no handler, only render detail panel when content exists; rebuilt dashboard and reran targeted vitest.
13
+
14
+ **Approach:** Standard approach
15
+
16
+ ---
17
+
18
+ ## Key Decisions
19
+
20
+ ### Hide TrajectoryViewer action when no onStepClick provided
21
+ - **Chose:** Hide TrajectoryViewer action when no onStepClick provided
22
+ - **Reasoning:** Prevents empty expanded panes and removes dead View Details button when parent has no detail handler
23
+
24
+ ---
25
+
26
+ ## Chapters
27
+
28
+ ### 1. Work
29
+ *Agent: default*
30
+
31
+ - Hide TrajectoryViewer action when no onStepClick provided: Hide TrajectoryViewer action when no onStepClick provided
@@ -0,0 +1,113 @@
1
+ {
2
+ "id": "traj_22bhyulruouw",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Lead agent coordination - responsive nav fix and team assignments",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-457"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-05T19:45:50.807Z",
13
+ "agents": [
14
+ {
15
+ "name": "Lead",
16
+ "role": "lead",
17
+ "joinedAt": "2026-01-05T19:45:50.808Z"
18
+ }
19
+ ],
20
+ "chapters": [
21
+ {
22
+ "id": "chap_aqd40zd682kf",
23
+ "title": "Work",
24
+ "agentName": "default",
25
+ "startedAt": "2026-01-05T19:52:06.440Z",
26
+ "events": [
27
+ {
28
+ "ts": 1767642726441,
29
+ "type": "decision",
30
+ "content": "Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis: Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis",
31
+ "raw": {
32
+ "question": "Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis",
33
+ "chosen": "Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis",
34
+ "alternatives": [],
35
+ "reasoning": "P1 bug blocking mobile users - provided line numbers and fix approach for Header.tsx"
36
+ },
37
+ "significance": "high"
38
+ },
39
+ {
40
+ "ts": 1767643225079,
41
+ "type": "decision",
42
+ "content": "Assigned onboarding route task (agent-relay-456) to Frontend: Assigned onboarding route task (agent-relay-456) to Frontend",
43
+ "raw": {
44
+ "question": "Assigned onboarding route task (agent-relay-456) to Frontend",
45
+ "chosen": "Assigned onboarding route task (agent-relay-456) to Frontend",
46
+ "alternatives": [],
47
+ "reasoning": "P3 frontend task - cleaner separation of workspace selection and onboarding flows"
48
+ },
49
+ "significance": "high"
50
+ },
51
+ {
52
+ "ts": 1767643436615,
53
+ "type": "decision",
54
+ "content": "Coordinated parallel work between Frontend and Billing: Coordinated parallel work between Frontend and Billing",
55
+ "raw": {
56
+ "question": "Coordinated parallel work between Frontend and Billing",
57
+ "chosen": "Coordinated parallel work between Frontend and Billing",
58
+ "alternatives": [],
59
+ "reasoning": "Verified no file conflicts - Frontend in react-components, Billing in cloud/billing and cloud/services"
60
+ },
61
+ "significance": "high"
62
+ },
63
+ {
64
+ "ts": 1767643545171,
65
+ "type": "decision",
66
+ "content": "Implementing webhook handler to sync user plan: Implementing webhook handler to sync user plan",
67
+ "raw": {
68
+ "question": "Implementing webhook handler to sync user plan",
69
+ "chosen": "Implementing webhook handler to sync user plan",
70
+ "alternatives": [],
71
+ "reasoning": "Webhook currently logs but doesn't update database. Need to update users.plan field when subscription created/updated."
72
+ },
73
+ "significance": "high"
74
+ },
75
+ {
76
+ "ts": 1767643671803,
77
+ "type": "decision",
78
+ "content": "Webhook handler implemented to update user plan: Webhook handler implemented to update user plan",
79
+ "raw": {
80
+ "question": "Webhook handler implemented to update user plan",
81
+ "chosen": "Webhook handler implemented to update user plan",
82
+ "alternatives": [],
83
+ "reasoning": "When Stripe subscription is created/updated/canceled, the webhook now updates users.plan in database. This completes the backend portion of the upgrade flow."
84
+ },
85
+ "significance": "high"
86
+ },
87
+ {
88
+ "ts": 1767643818368,
89
+ "type": "decision",
90
+ "content": "Implemented billing success/cancel pages: Implemented billing success/cancel pages",
91
+ "raw": {
92
+ "question": "Implemented billing success/cancel pages",
93
+ "chosen": "Implemented billing success/cancel pages",
94
+ "alternatives": [],
95
+ "reasoning": "Created BillingResult component that shows success confirmation after Stripe checkout (with plan features) or friendly cancel message. Added URL path detection in App.tsx to render these on /billing/success and /billing/canceled routes."
96
+ },
97
+ "significance": "high"
98
+ }
99
+ ],
100
+ "endedAt": "2026-01-05T20:10:25.523Z"
101
+ }
102
+ ],
103
+ "commits": [],
104
+ "filesChanged": [],
105
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
106
+ "tags": [],
107
+ "completedAt": "2026-01-05T20:10:25.523Z",
108
+ "retrospective": {
109
+ "summary": "Implemented complete upgrade flow: webhook updates user plan on Stripe events, success/cancel pages show after checkout",
110
+ "approach": "Standard approach",
111
+ "confidence": 0.85
112
+ }
113
+ }
@@ -0,0 +1,57 @@
1
+ # Trajectory: Lead agent coordination - responsive nav fix and team assignments
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** agent-relay-457
5
+ > **Confidence:** 85%
6
+ > **Started:** January 5, 2026 at 08:45 PM
7
+ > **Completed:** January 5, 2026 at 09:10 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Implemented complete upgrade flow: webhook updates user plan on Stripe events, success/cancel pages show after checkout
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis
22
+ - **Chose:** Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis
23
+ - **Reasoning:** P1 bug blocking mobile users - provided line numbers and fix approach for Header.tsx
24
+
25
+ ### Assigned onboarding route task (agent-relay-456) to Frontend
26
+ - **Chose:** Assigned onboarding route task (agent-relay-456) to Frontend
27
+ - **Reasoning:** P3 frontend task - cleaner separation of workspace selection and onboarding flows
28
+
29
+ ### Coordinated parallel work between Frontend and Billing
30
+ - **Chose:** Coordinated parallel work between Frontend and Billing
31
+ - **Reasoning:** Verified no file conflicts - Frontend in react-components, Billing in cloud/billing and cloud/services
32
+
33
+ ### Implementing webhook handler to sync user plan
34
+ - **Chose:** Implementing webhook handler to sync user plan
35
+ - **Reasoning:** Webhook currently logs but doesn't update database. Need to update users.plan field when subscription created/updated.
36
+
37
+ ### Webhook handler implemented to update user plan
38
+ - **Chose:** Webhook handler implemented to update user plan
39
+ - **Reasoning:** When Stripe subscription is created/updated/canceled, the webhook now updates users.plan in database. This completes the backend portion of the upgrade flow.
40
+
41
+ ### Implemented billing success/cancel pages
42
+ - **Chose:** Implemented billing success/cancel pages
43
+ - **Reasoning:** Created BillingResult component that shows success confirmation after Stripe checkout (with plan features) or friendly cancel message. Added URL path detection in App.tsx to render these on /billing/success and /billing/canceled routes.
44
+
45
+ ---
46
+
47
+ ## Chapters
48
+
49
+ ### 1. Work
50
+ *Agent: default*
51
+
52
+ - Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis: Assigned responsive nav bug (agent-relay-457) to Frontend with complete file analysis
53
+ - Assigned onboarding route task (agent-relay-456) to Frontend: Assigned onboarding route task (agent-relay-456) to Frontend
54
+ - Coordinated parallel work between Frontend and Billing: Coordinated parallel work between Frontend and Billing
55
+ - Implementing webhook handler to sync user plan: Implementing webhook handler to sync user plan
56
+ - Webhook handler implemented to update user plan: Webhook handler implemented to update user plan
57
+ - Implemented billing success/cancel pages: Implemented billing success/cancel pages
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "traj_2dao7ddgnta0",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Replace console.log with structured logger in agent-registry.ts and cloud-sync.ts",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-418,agent-relay-419"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T14:48:09.986Z",
13
+ "agents": [
14
+ {
15
+ "name": "Cleanup",
16
+ "role": "lead",
17
+ "joinedAt": "2026-01-03T14:48:09.987Z"
18
+ }
19
+ ],
20
+ "chapters": [
21
+ {
22
+ "id": "chap_eyma80k7rlxb",
23
+ "title": "Work",
24
+ "agentName": "default",
25
+ "startedAt": "2026-01-03T14:55:34.999Z",
26
+ "events": [
27
+ {
28
+ "ts": 1767452135002,
29
+ "type": "decision",
30
+ "content": "Removed dead LogViewer code after xterm.js migration: Removed dead LogViewer code after xterm.js migration",
31
+ "raw": {
32
+ "question": "Removed dead LogViewer code after xterm.js migration",
33
+ "chosen": "Removed dead LogViewer code after xterm.js migration",
34
+ "alternatives": [],
35
+ "reasoning": "Legacy panel mode replaced by XTermLogViewer, InlineLogViewer was unused"
36
+ },
37
+ "significance": "high"
38
+ }
39
+ ],
40
+ "endedAt": "2026-01-03T14:56:16.425Z"
41
+ }
42
+ ],
43
+ "commits": [],
44
+ "filesChanged": [],
45
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
46
+ "tags": [],
47
+ "completedAt": "2026-01-03T14:56:16.425Z",
48
+ "retrospective": {
49
+ "summary": "Completed logger migration and LogViewer dead code cleanup",
50
+ "approach": "Standard approach",
51
+ "confidence": 0.9
52
+ }
53
+ }
@@ -0,0 +1,32 @@
1
+ # Trajectory: Replace console.log with structured logger in agent-registry.ts and cloud-sync.ts
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** agent-relay-418,agent-relay-419
5
+ > **Confidence:** 90%
6
+ > **Started:** January 3, 2026 at 03:48 PM
7
+ > **Completed:** January 3, 2026 at 03:56 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Completed logger migration and LogViewer dead code cleanup
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Removed dead LogViewer code after xterm.js migration
22
+ - **Chose:** Removed dead LogViewer code after xterm.js migration
23
+ - **Reasoning:** Legacy panel mode replaced by XTermLogViewer, InlineLogViewer was unused
24
+
25
+ ---
26
+
27
+ ## Chapters
28
+
29
+ ### 1. Work
30
+ *Agent: default*
31
+
32
+ - Removed dead LogViewer code after xterm.js migration: Removed dead LogViewer code after xterm.js migration
@@ -0,0 +1,26 @@
1
+ {
2
+ "id": "traj_3t0440mjeunc",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Wire up TrajectoryViewer component in dashboard",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-310"
9
+ }
10
+ },
11
+ "status": "abandoned",
12
+ "startedAt": "2026-01-03T15:24:03.823Z",
13
+ "agents": [
14
+ {
15
+ "name": "Frontend",
16
+ "role": "lead",
17
+ "joinedAt": "2026-01-03T15:24:03.824Z"
18
+ }
19
+ ],
20
+ "chapters": [],
21
+ "commits": [],
22
+ "filesChanged": [],
23
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
24
+ "tags": [],
25
+ "completedAt": "2026-01-03T15:25:25.534Z"
26
+ }
@@ -0,0 +1,6 @@
1
+ # Trajectory: Wire up TrajectoryViewer component in dashboard
2
+
3
+ > **Status:** ❌ Abandoned
4
+ > **Task:** agent-relay-310
5
+ > **Started:** January 3, 2026 at 04:24 PM
6
+ > **Completed:** January 3, 2026 at 04:25 PM
@@ -0,0 +1,47 @@
1
+ {
2
+ "id": "traj_45x9494d9xnr",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "agent-relay-442 - test coverage for vault and billing",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-442"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T12:01:40.457Z",
13
+ "agents": [],
14
+ "chapters": [
15
+ {
16
+ "id": "chap_wceezu47szey",
17
+ "title": "Work",
18
+ "agentName": "default",
19
+ "startedAt": "2026-01-03T12:01:45.447Z",
20
+ "events": [
21
+ {
22
+ "ts": 1767441705449,
23
+ "type": "decision",
24
+ "content": "Added vault encryption and billing Stripe test suites: Added vault encryption and billing Stripe test suites",
25
+ "raw": {
26
+ "question": "Added vault encryption and billing Stripe test suites",
27
+ "chosen": "Added vault encryption and billing Stripe test suites",
28
+ "alternatives": [],
29
+ "reasoning": "Security-sensitive modules needed coverage for storage and payments"
30
+ },
31
+ "significance": "high"
32
+ }
33
+ ],
34
+ "endedAt": "2026-01-03T12:02:10.085Z"
35
+ }
36
+ ],
37
+ "commits": [],
38
+ "filesChanged": [],
39
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
40
+ "tags": [],
41
+ "completedAt": "2026-01-03T12:02:10.085Z",
42
+ "retrospective": {
43
+ "summary": "Added vault and billing test suites; vitest passing",
44
+ "approach": "Standard approach",
45
+ "confidence": 0.86
46
+ }
47
+ }
@@ -0,0 +1,32 @@
1
+ # Trajectory: agent-relay-442 - test coverage for vault and billing
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** agent-relay-442
5
+ > **Confidence:** 86%
6
+ > **Started:** January 3, 2026 at 01:01 PM
7
+ > **Completed:** January 3, 2026 at 01:02 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Added vault and billing test suites; vitest passing
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Added vault encryption and billing Stripe test suites
22
+ - **Chose:** Added vault encryption and billing Stripe test suites
23
+ - **Reasoning:** Security-sensitive modules needed coverage for storage and payments
24
+
25
+ ---
26
+
27
+ ## Chapters
28
+
29
+ ### 1. Work
30
+ *Agent: default*
31
+
32
+ - Added vault encryption and billing Stripe test suites: Added vault encryption and billing Stripe test suites