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
@@ -0,0 +1,175 @@
1
+ {
2
+ "id": "traj_xnwbznkvv8ua",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Backend developer session - waiting for Lead tasks"
6
+ },
7
+ "status": "completed",
8
+ "startedAt": "2026-01-03T11:26:14.776Z",
9
+ "agents": [],
10
+ "chapters": [
11
+ {
12
+ "id": "chap_yja8nbst4gdp",
13
+ "title": "Work",
14
+ "agentName": "default",
15
+ "startedAt": "2026-01-03T11:28:04.601Z",
16
+ "events": [
17
+ {
18
+ "ts": 1767439684602,
19
+ "type": "decision",
20
+ "content": "CORS fix already implemented in ae30e62: CORS fix already implemented in ae30e62",
21
+ "raw": {
22
+ "question": "CORS fix already implemented in ae30e62",
23
+ "chosen": "CORS fix already implemented in ae30e62",
24
+ "alternatives": [],
25
+ "reasoning": "Reviewed code: secure by default (empty config blocks cross-origin), configurable via allowedOrigins/env var, proper origin reflection instead of literal *, 403 blocking with logging, Vary header for caching"
26
+ },
27
+ "significance": "high"
28
+ },
29
+ {
30
+ "ts": 1767439798555,
31
+ "type": "decision",
32
+ "content": "Add allowSpawn config to PtyWrapper: Add allowSpawn config to PtyWrapper",
33
+ "raw": {
34
+ "question": "Add allowSpawn config to PtyWrapper",
35
+ "chosen": "Add allowSpawn config to PtyWrapper",
36
+ "alternatives": [],
37
+ "reasoning": "Spawned agents get dashboardPort which enables spawn commands. Fix by adding explicit allowSpawn flag that defaults to false for spawned workers."
38
+ },
39
+ "significance": "high"
40
+ },
41
+ {
42
+ "ts": 1767440059792,
43
+ "type": "decision",
44
+ "content": "Feature already implemented: Feature already implemented",
45
+ "raw": {
46
+ "question": "Feature already implemented",
47
+ "chosen": "Feature already implemented",
48
+ "alternatives": [],
49
+ "reasoning": "Found commit 5763cd2 that fully implemented agent-relay-gst2. All layers (router, storage, dashboard-server, frontend) have complete ACK status tracking."
50
+ },
51
+ "significance": "high"
52
+ },
53
+ {
54
+ "ts": 1767440112959,
55
+ "type": "decision",
56
+ "content": "Starting agent-relay-325: Starting agent-relay-325",
57
+ "raw": {
58
+ "question": "Starting agent-relay-325",
59
+ "chosen": "Starting agent-relay-325",
60
+ "alternatives": [],
61
+ "reasoning": "Moving from completed gst2 to new task: repo context indicator in header"
62
+ },
63
+ "significance": "high"
64
+ },
65
+ {
66
+ "ts": 1767440163310,
67
+ "type": "decision",
68
+ "content": "Stricter spawn command parsing: Stricter spawn command parsing",
69
+ "raw": {
70
+ "question": "Stricter spawn command parsing",
71
+ "chosen": "Stricter spawn command parsing",
72
+ "alternatives": [],
73
+ "reasoning": "Require: (1) command at line start, (2) PascalCase agent name, (3) known CLI type. Prevents matching documentation text."
74
+ },
75
+ "significance": "high"
76
+ },
77
+ {
78
+ "ts": 1767440403320,
79
+ "type": "decision",
80
+ "content": "Created RepoContextHeader component: Created RepoContextHeader component",
81
+ "raw": {
82
+ "question": "Created RepoContextHeader component",
83
+ "chosen": "Created RepoContextHeader component",
84
+ "alternatives": [],
85
+ "reasoning": "Implemented Slack-style repo context indicator with dropdown for quick project switching. Integrated into Header.tsx with proper callbacks."
86
+ },
87
+ "significance": "high"
88
+ },
89
+ {
90
+ "ts": 1767440895146,
91
+ "type": "decision",
92
+ "content": "Started agent-relay-442 to add tests for Vault and billing: Started agent-relay-442 to add tests for Vault and billing",
93
+ "raw": {
94
+ "question": "Started agent-relay-442 to add tests for Vault and billing",
95
+ "chosen": "Started agent-relay-442 to add tests for Vault and billing",
96
+ "alternatives": [],
97
+ "reasoning": ""
98
+ },
99
+ "significance": "high"
100
+ },
101
+ {
102
+ "ts": 1767441066609,
103
+ "type": "decision",
104
+ "content": "Fixed fleet agent double-counting: Fixed fleet agent double-counting",
105
+ "raw": {
106
+ "question": "Fixed fleet agent double-counting",
107
+ "chosen": "Fixed fleet agent double-counting",
108
+ "alternatives": [],
109
+ "reasoning": "Root cause: /api/fleet/servers counted agents from both local daemon AND bridge projects. When bridge is active, the same agents appear in both places. Fix: Only add local daemon entry when no bridge projects exist."
110
+ },
111
+ "significance": "high"
112
+ },
113
+ {
114
+ "ts": 1767441268669,
115
+ "type": "decision",
116
+ "content": "Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing: Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing",
117
+ "raw": {
118
+ "question": "Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing",
119
+ "chosen": "Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing",
120
+ "alternatives": [],
121
+ "reasoning": "Task agent-relay-445 required fixing spacing issues and extra characters in log output"
122
+ },
123
+ "significance": "high"
124
+ },
125
+ {
126
+ "ts": 1767441279487,
127
+ "type": "decision",
128
+ "content": "Added collapsible header with compact default view: Added collapsible header with compact default view",
129
+ "raw": {
130
+ "question": "Added collapsible header with compact default view",
131
+ "chosen": "Added collapsible header with compact default view",
132
+ "alternatives": [],
133
+ "reasoning": "Reduces visual noise in log panel, users can expand if needed"
134
+ },
135
+ "significance": "high"
136
+ },
137
+ {
138
+ "ts": 1767441281361,
139
+ "type": "decision",
140
+ "content": "Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines: Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines",
141
+ "raw": {
142
+ "question": "Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines",
143
+ "chosen": "Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines",
144
+ "alternatives": [],
145
+ "reasoning": "Denser log display shows more content, empty lines were cluttering the view"
146
+ },
147
+ "significance": "high"
148
+ },
149
+ {
150
+ "ts": 1767441283247,
151
+ "type": "decision",
152
+ "content": "Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering: Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering",
153
+ "raw": {
154
+ "question": "Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering",
155
+ "chosen": "Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering",
156
+ "alternatives": [],
157
+ "reasoning": "Codex output includes spinner animations that were being rendered as fragments"
158
+ },
159
+ "significance": "high"
160
+ }
161
+ ],
162
+ "endedAt": "2026-01-03T11:54:49.955Z"
163
+ }
164
+ ],
165
+ "commits": [],
166
+ "filesChanged": [],
167
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
168
+ "tags": [],
169
+ "completedAt": "2026-01-03T11:54:49.955Z",
170
+ "retrospective": {
171
+ "summary": "Fixed LogViewer panel: collapsible header (compact default), spacing improvements (reduced padding, empty line filtering), Codex parsing (enhanced ANSI stripping, spinner fragment filtering)",
172
+ "approach": "Standard approach",
173
+ "confidence": 0.9
174
+ }
175
+ }
@@ -0,0 +1,82 @@
1
+ # Trajectory: Backend developer session - waiting for Lead tasks
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Confidence:** 90%
5
+ > **Started:** January 3, 2026 at 12:26 PM
6
+ > **Completed:** January 3, 2026 at 12:54 PM
7
+
8
+ ---
9
+
10
+ ## Summary
11
+
12
+ Fixed LogViewer panel: collapsible header (compact default), spacing improvements (reduced padding, empty line filtering), Codex parsing (enhanced ANSI stripping, spinner fragment filtering)
13
+
14
+ **Approach:** Standard approach
15
+
16
+ ---
17
+
18
+ ## Key Decisions
19
+
20
+ ### CORS fix already implemented in ae30e62
21
+ - **Chose:** CORS fix already implemented in ae30e62
22
+ - **Reasoning:** Reviewed code: secure by default (empty config blocks cross-origin), configurable via allowedOrigins/env var, proper origin reflection instead of literal *, 403 blocking with logging, Vary header for caching
23
+
24
+ ### Add allowSpawn config to PtyWrapper
25
+ - **Chose:** Add allowSpawn config to PtyWrapper
26
+ - **Reasoning:** Spawned agents get dashboardPort which enables spawn commands. Fix by adding explicit allowSpawn flag that defaults to false for spawned workers.
27
+
28
+ ### Feature already implemented
29
+ - **Chose:** Feature already implemented
30
+ - **Reasoning:** Found commit 5763cd2 that fully implemented agent-relay-gst2. All layers (router, storage, dashboard-server, frontend) have complete ACK status tracking.
31
+
32
+ ### Starting agent-relay-325
33
+ - **Chose:** Starting agent-relay-325
34
+ - **Reasoning:** Moving from completed gst2 to new task: repo context indicator in header
35
+
36
+ ### Stricter spawn command parsing
37
+ - **Chose:** Stricter spawn command parsing
38
+ - **Reasoning:** Require: (1) command at line start, (2) PascalCase agent name, (3) known CLI type. Prevents matching documentation text.
39
+
40
+ ### Created RepoContextHeader component
41
+ - **Chose:** Created RepoContextHeader component
42
+ - **Reasoning:** Implemented Slack-style repo context indicator with dropdown for quick project switching. Integrated into Header.tsx with proper callbacks.
43
+
44
+ ### Fixed fleet agent double-counting
45
+ - **Chose:** Fixed fleet agent double-counting
46
+ - **Reasoning:** Root cause: /api/fleet/servers counted agents from both local daemon AND bridge projects. When bridge is active, the same agents appear in both places. Fix: Only add local daemon entry when no bridge projects exist.
47
+
48
+ ### Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing
49
+ - **Chose:** Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing
50
+ - **Reasoning:** Task agent-relay-445 required fixing spacing issues and extra characters in log output
51
+
52
+ ### Added collapsible header with compact default view
53
+ - **Chose:** Added collapsible header with compact default view
54
+ - **Reasoning:** Reduces visual noise in log panel, users can expand if needed
55
+
56
+ ### Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines
57
+ - **Chose:** Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines
58
+ - **Reasoning:** Denser log display shows more content, empty lines were cluttering the view
59
+
60
+ ### Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering
61
+ - **Chose:** Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering
62
+ - **Reasoning:** Codex output includes spinner animations that were being rendered as fragments
63
+
64
+ ---
65
+
66
+ ## Chapters
67
+
68
+ ### 1. Work
69
+ *Agent: default*
70
+
71
+ - CORS fix already implemented in ae30e62: CORS fix already implemented in ae30e62
72
+ - Add allowSpawn config to PtyWrapper: Add allowSpawn config to PtyWrapper
73
+ - Feature already implemented: Feature already implemented
74
+ - Starting agent-relay-325: Starting agent-relay-325
75
+ - Stricter spawn command parsing: Stricter spawn command parsing
76
+ - Created RepoContextHeader component: Created RepoContextHeader component
77
+ - Started agent-relay-442 to add tests for Vault and billing: Started agent-relay-442 to add tests for Vault and billing
78
+ - Fixed fleet agent double-counting: Fixed fleet agent double-counting
79
+ - Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing: Fixed LogViewer panel with three improvements: collapsible header, spacing reduction, and Codex parsing
80
+ - Added collapsible header with compact default view: Added collapsible header with compact default view
81
+ - Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines: Fixed spacing by reducing padding py-1 to py-0.5 and filtering empty lines
82
+ - Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering: Enhanced ANSI stripping for Codex parsing - added DCS, backspace, spinner fragment filtering
@@ -0,0 +1,47 @@
1
+ {
2
+ "id": "traj_ysjc8zaeqtd3",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Add recent repos quick access",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-327"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T13:31:22.891Z",
13
+ "agents": [],
14
+ "chapters": [
15
+ {
16
+ "id": "chap_0nd8brwg8jll",
17
+ "title": "Work",
18
+ "agentName": "default",
19
+ "startedAt": "2026-01-03T13:33:03.932Z",
20
+ "events": [
21
+ {
22
+ "ts": 1767447183933,
23
+ "type": "decision",
24
+ "content": "Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty: Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty",
25
+ "raw": {
26
+ "question": "Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty",
27
+ "chosen": "Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty",
28
+ "alternatives": [],
29
+ "reasoning": "Root cause: autoSave created handoff from ledger which was empty when agent didn't use ->continuity:save. Fix: use SESSION_END JSON content to populate handoff directly."
30
+ },
31
+ "significance": "high"
32
+ }
33
+ ],
34
+ "endedAt": "2026-01-03T13:33:18.061Z"
35
+ }
36
+ ],
37
+ "commits": [],
38
+ "filesChanged": [],
39
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
40
+ "tags": [],
41
+ "completedAt": "2026-01-03T13:33:18.061Z",
42
+ "retrospective": {
43
+ "summary": "Fixed empty continuity handoff files by passing SESSION_END JSON content to autoSave. Modified ContinuityManager.autoSave to accept optional sessionEndData and use it to populate handoff when ledger is empty. Updated both pty-wrapper.ts and tmux-wrapper.ts to store and pass sessionEndData.",
44
+ "approach": "Standard approach",
45
+ "confidence": 0.9
46
+ }
47
+ }
@@ -0,0 +1,32 @@
1
+ # Trajectory: Add recent repos quick access
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** agent-relay-327
5
+ > **Confidence:** 90%
6
+ > **Started:** January 3, 2026 at 02:31 PM
7
+ > **Completed:** January 3, 2026 at 02:33 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Fixed empty continuity handoff files by passing SESSION_END JSON content to autoSave. Modified ContinuityManager.autoSave to accept optional sessionEndData and use it to populate handoff when ledger is empty. Updated both pty-wrapper.ts and tmux-wrapper.ts to store and pass sessionEndData.
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty
22
+ - **Chose:** Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty
23
+ - **Reasoning:** Root cause: autoSave created handoff from ledger which was empty when agent didn't use ->continuity:save. Fix: use SESSION_END JSON content to populate handoff directly.
24
+
25
+ ---
26
+
27
+ ## Chapters
28
+
29
+ ### 1. Work
30
+ *Agent: default*
31
+
32
+ - Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty: Modified autoSave to accept SESSION_END data and create handoff from it when ledger is empty
@@ -0,0 +1,59 @@
1
+ {
2
+ "id": "traj_yvdadtvdgnz3",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Full cloud e2e flow review",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "cloud-review"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T19:17:32.797Z",
13
+ "agents": [],
14
+ "chapters": [
15
+ {
16
+ "id": "chap_vjlhnvwxq9eo",
17
+ "title": "Work",
18
+ "agentName": "default",
19
+ "startedAt": "2026-01-03T19:21:54.982Z",
20
+ "events": [
21
+ {
22
+ "ts": 1767468114983,
23
+ "type": "decision",
24
+ "content": "Multi-repo spawning uses workspace root, not specific repo: Multi-repo spawning uses workspace root, not specific repo",
25
+ "raw": {
26
+ "question": "Multi-repo spawning uses workspace root, not specific repo",
27
+ "chosen": "Multi-repo spawning uses workspace root, not specific repo",
28
+ "alternatives": [],
29
+ "reasoning": "When agents spawn, cwd is /workspace (where all repos live), not /workspace/repo-name. This is acceptable for MVP - tasks can specify which repo to work on, and agents can cd into the right directory."
30
+ },
31
+ "significance": "high"
32
+ },
33
+ {
34
+ "ts": 1767468129191,
35
+ "type": "decision",
36
+ "content": "Repo sync limited to 100 repos: Repo sync limited to 100 repos",
37
+ "raw": {
38
+ "question": "Repo sync limited to 100 repos",
39
+ "chosen": "Repo sync limited to 100 repos",
40
+ "alternatives": [],
41
+ "reasoning": "listGithubAppRepos only fetches first 100 repos from GitHub API. This is a known limitation - users with >100 repos won't see all of them. Acceptable for MVP, can add pagination later."
42
+ },
43
+ "significance": "high"
44
+ }
45
+ ],
46
+ "endedAt": "2026-01-03T19:22:22.762Z"
47
+ }
48
+ ],
49
+ "commits": [],
50
+ "filesChanged": [],
51
+ "projectId": "/home/user/relay",
52
+ "tags": [],
53
+ "completedAt": "2026-01-03T19:22:22.762Z",
54
+ "retrospective": {
55
+ "summary": "Full cloud e2e flow review complete. Flow is viable for MVP with minor limitations: 100 repo max, multi-repo spawns to workspace root. Key pieces verified: Nango OAuth, GitHub App tokens, vault credentials, workspace provisioning, entrypoint cloning, credential file creation, spawn mechanism.",
56
+ "approach": "Standard approach",
57
+ "confidence": 0.85
58
+ }
59
+ }
@@ -0,0 +1,37 @@
1
+ # Trajectory: Full cloud e2e flow review
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** cloud-review
5
+ > **Confidence:** 85%
6
+ > **Started:** January 3, 2026 at 07:17 PM
7
+ > **Completed:** January 3, 2026 at 07:22 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Full cloud e2e flow review complete. Flow is viable for MVP with minor limitations: 100 repo max, multi-repo spawns to workspace root. Key pieces verified: Nango OAuth, GitHub App tokens, vault credentials, workspace provisioning, entrypoint cloning, credential file creation, spawn mechanism.
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Multi-repo spawning uses workspace root, not specific repo
22
+ - **Chose:** Multi-repo spawning uses workspace root, not specific repo
23
+ - **Reasoning:** When agents spawn, cwd is /workspace (where all repos live), not /workspace/repo-name. This is acceptable for MVP - tasks can specify which repo to work on, and agents can cd into the right directory.
24
+
25
+ ### Repo sync limited to 100 repos
26
+ - **Chose:** Repo sync limited to 100 repos
27
+ - **Reasoning:** listGithubAppRepos only fetches first 100 repos from GitHub API. This is a known limitation - users with >100 repos won't see all of them. Acceptable for MVP, can add pagination later.
28
+
29
+ ---
30
+
31
+ ## Chapters
32
+
33
+ ### 1. Work
34
+ *Agent: default*
35
+
36
+ - Multi-repo spawning uses workspace root, not specific repo: Multi-repo spawning uses workspace root, not specific repo
37
+ - Repo sync limited to 100 repos: Repo sync limited to 100 repos
@@ -0,0 +1,53 @@
1
+ {
2
+ "id": "traj_z0vcw1wrzide",
3
+ "version": 1,
4
+ "task": {
5
+ "title": "Fix trajectory agents array population",
6
+ "source": {
7
+ "system": "plain",
8
+ "id": "agent-relay-452"
9
+ }
10
+ },
11
+ "status": "completed",
12
+ "startedAt": "2026-01-03T13:37:00.860Z",
13
+ "agents": [
14
+ {
15
+ "name": "CodexAgent",
16
+ "role": "lead",
17
+ "joinedAt": "2026-01-03T13:37:00.861Z"
18
+ }
19
+ ],
20
+ "chapters": [
21
+ {
22
+ "id": "chap_a5lre0y29y5x",
23
+ "title": "Work",
24
+ "agentName": "default",
25
+ "startedAt": "2026-01-03T13:37:45.874Z",
26
+ "events": [
27
+ {
28
+ "ts": 1767447465875,
29
+ "type": "decision",
30
+ "content": "Patched trail start to record initiating agent: Patched trail start to record initiating agent",
31
+ "raw": {
32
+ "question": "Patched trail start to record initiating agent",
33
+ "chosen": "Patched trail start to record initiating agent",
34
+ "alternatives": [],
35
+ "reasoning": "Agents array was empty; added agent capture and regression test"
36
+ },
37
+ "significance": "high"
38
+ }
39
+ ],
40
+ "endedAt": "2026-01-03T13:38:16.320Z"
41
+ }
42
+ ],
43
+ "commits": [],
44
+ "filesChanged": [],
45
+ "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
46
+ "tags": [],
47
+ "completedAt": "2026-01-03T13:38:16.320Z",
48
+ "retrospective": {
49
+ "summary": "Patched trail start to record initiating agent and added regression test + postinstall patch",
50
+ "approach": "Standard approach",
51
+ "confidence": 0.89
52
+ }
53
+ }
@@ -0,0 +1,32 @@
1
+ # Trajectory: Fix trajectory agents array population
2
+
3
+ > **Status:** ✅ Completed
4
+ > **Task:** agent-relay-452
5
+ > **Confidence:** 89%
6
+ > **Started:** January 3, 2026 at 02:37 PM
7
+ > **Completed:** January 3, 2026 at 02:38 PM
8
+
9
+ ---
10
+
11
+ ## Summary
12
+
13
+ Patched trail start to record initiating agent and added regression test + postinstall patch
14
+
15
+ **Approach:** Standard approach
16
+
17
+ ---
18
+
19
+ ## Key Decisions
20
+
21
+ ### Patched trail start to record initiating agent
22
+ - **Chose:** Patched trail start to record initiating agent
23
+ - **Reasoning:** Agents array was empty; added agent capture and regression test
24
+
25
+ ---
26
+
27
+ ## Chapters
28
+
29
+ ### 1. Work
30
+ *Agent: default*
31
+
32
+ - Patched trail start to record initiating agent: Patched trail start to record initiating agent