agent-relay 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. package/README.md +130 -158
  2. package/bin/relay-pty +0 -0
  3. package/bin/relay-pty-darwin-arm64 +0 -0
  4. package/bin/relay-pty-darwin-x64 +0 -0
  5. package/bin/relay-pty-linux-x64 +0 -0
  6. package/deploy/workspace/entrypoint.sh +9 -0
  7. package/dist/bridge/spawner.d.ts +4 -4
  8. package/dist/bridge/spawner.js +58 -92
  9. package/dist/cli/index.d.ts +8 -6
  10. package/dist/cli/index.js +282 -47
  11. package/dist/cloud/api/daemons.js +13 -32
  12. package/dist/cloud/api/onboarding.js +2 -4
  13. package/dist/cloud/api/providers.js +6 -0
  14. package/dist/cloud/config.d.ts +1 -0
  15. package/dist/cloud/config.js +2 -0
  16. package/dist/cloud/db/bulk-ingest.d.ts +2 -1
  17. package/dist/cloud/db/drizzle.d.ts +21 -26
  18. package/dist/cloud/db/drizzle.js +87 -100
  19. package/dist/cloud/db/index.d.ts +6 -5
  20. package/dist/cloud/db/index.js +9 -8
  21. package/dist/cloud/db/schema.d.ts +1049 -1076
  22. package/dist/cloud/db/schema.js +59 -71
  23. package/dist/cloud/server.js +854 -18
  24. package/dist/cloud/services/persistence.d.ts +15 -15
  25. package/dist/cloud/services/persistence.js +14 -14
  26. package/dist/daemon/agent-manager.d.ts +6 -5
  27. package/dist/daemon/agent-manager.js +12 -8
  28. package/dist/daemon/channel-membership-store.d.ts +48 -0
  29. package/dist/daemon/channel-membership-store.js +149 -0
  30. package/dist/daemon/cloud-sync.d.ts +2 -0
  31. package/dist/daemon/cloud-sync.js +4 -0
  32. package/dist/daemon/connection.js +17 -9
  33. package/dist/daemon/router.d.ts +37 -0
  34. package/dist/daemon/router.js +318 -79
  35. package/dist/daemon/server.d.ts +15 -0
  36. package/dist/daemon/server.js +141 -3
  37. package/dist/dashboard/out/404.html +1 -0
  38. package/dist/dashboard/out/_next/static/IxxVRv94L1w3ReRGAiI-k/_buildManifest.js +1 -0
  39. package/dist/dashboard/out/_next/static/IxxVRv94L1w3ReRGAiI-k/_ssgManifest.js +1 -0
  40. package/dist/dashboard/out/_next/static/chunks/116-eacf84a131b80db9.js +1 -0
  41. package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +2 -0
  42. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
  43. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +9 -0
  44. package/dist/dashboard/out/_next/static/chunks/64-87ab9cd6bcf2f737.js +1 -0
  45. package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +1 -0
  46. package/dist/dashboard/out/_next/static/chunks/766-aa7c8c9900ff5f53.js +1 -0
  47. package/dist/dashboard/out/_next/static/chunks/83-4f08122d4e7e79a6.js +1 -0
  48. package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +1 -0
  49. package/dist/dashboard/out/_next/static/chunks/891-a024fbe4b619cf6f.js +1 -0
  50. package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +1 -0
  51. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-f746f29e01fffc43.js +1 -0
  52. package/dist/dashboard/out/_next/static/chunks/app/app/page-ffad986adfcc8b31.js +1 -0
  53. package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-cfeb437f08a12ed9.js +1 -0
  54. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-03ac6f35a6654ea6.js +1 -0
  55. package/dist/dashboard/out/_next/static/chunks/app/history/page-240f91e8b06ba8ac.js +1 -0
  56. package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
  57. package/dist/dashboard/out/_next/static/chunks/app/login/page-6ec54eee75877971.js +1 -0
  58. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-82938ab8fcf44694.js +1 -0
  59. package/dist/dashboard/out/_next/static/chunks/app/page-671037943b2f2e43.js +1 -0
  60. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-0efa024c28ba4597.js +1 -0
  61. package/dist/dashboard/out/_next/static/chunks/app/providers/page-57cbd738c6a73859.js +1 -0
  62. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-5ab0854472b402b0.js +1 -0
  63. package/dist/dashboard/out/_next/static/chunks/app/signup/page-18a4665665f6be11.js +1 -0
  64. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
  65. package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +1 -0
  66. package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +1 -0
  67. package/dist/dashboard/out/_next/static/chunks/main-5a40a5ae29646e1b.js +1 -0
  68. package/dist/dashboard/out/_next/static/chunks/main-app-6e8e8d3ef4e0192a.js +1 -0
  69. package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +1 -0
  70. package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +1 -0
  71. package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  72. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
  73. package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +1 -0
  74. package/dist/dashboard/out/_next/static/css/8f9ed310f454e5a5.css +1 -0
  75. package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
  76. package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
  77. package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
  78. package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
  79. package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
  80. package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
  81. package/dist/dashboard/out/alt-logos/logo.svg +38 -0
  82. package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
  83. package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
  84. package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
  85. package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
  86. package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
  87. package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
  88. package/dist/dashboard/out/app/onboarding.html +1 -0
  89. package/dist/dashboard/out/app/onboarding.txt +7 -0
  90. package/dist/dashboard/out/app.html +1 -0
  91. package/dist/dashboard/out/app.txt +7 -0
  92. package/dist/dashboard/out/apple-icon.png +0 -0
  93. package/dist/dashboard/out/cloud/link.html +1 -0
  94. package/dist/dashboard/out/cloud/link.txt +7 -0
  95. package/dist/dashboard/out/connect-repos.html +1 -0
  96. package/dist/dashboard/out/connect-repos.txt +7 -0
  97. package/dist/dashboard/out/history.html +1 -0
  98. package/dist/dashboard/out/history.txt +7 -0
  99. package/dist/dashboard/out/index.html +1 -0
  100. package/dist/dashboard/out/index.txt +7 -0
  101. package/dist/dashboard/out/login.html +5 -0
  102. package/dist/dashboard/out/login.txt +7 -0
  103. package/dist/dashboard/out/metrics.html +1 -0
  104. package/dist/dashboard/out/metrics.txt +7 -0
  105. package/dist/dashboard/out/pricing.html +13 -0
  106. package/dist/dashboard/out/pricing.txt +7 -0
  107. package/dist/dashboard/out/providers/setup/claude.html +1 -0
  108. package/dist/dashboard/out/providers/setup/claude.txt +8 -0
  109. package/dist/dashboard/out/providers/setup/codex.html +1 -0
  110. package/dist/dashboard/out/providers/setup/codex.txt +8 -0
  111. package/dist/dashboard/out/providers.html +1 -0
  112. package/dist/dashboard/out/providers.txt +7 -0
  113. package/dist/dashboard/out/signup.html +6 -0
  114. package/dist/dashboard/out/signup.txt +7 -0
  115. package/dist/dashboard-server/metrics.d.ts +105 -0
  116. package/dist/dashboard-server/metrics.js +193 -0
  117. package/dist/dashboard-server/needs-attention.d.ts +24 -0
  118. package/dist/dashboard-server/needs-attention.js +78 -0
  119. package/dist/dashboard-server/server.d.ts +15 -0
  120. package/dist/dashboard-server/server.js +4753 -0
  121. package/dist/dashboard-server/start.d.ts +6 -0
  122. package/dist/dashboard-server/start.js +13 -0
  123. package/dist/dashboard-server/user-bridge.d.ts +132 -0
  124. package/dist/dashboard-server/user-bridge.js +317 -0
  125. package/dist/protocol/channels.d.ts +14 -8
  126. package/dist/protocol/channels.js +1 -1
  127. package/dist/protocol/index.d.ts +1 -0
  128. package/dist/protocol/index.js +1 -0
  129. package/dist/protocol/relay-pty-schemas.d.ts +209 -0
  130. package/dist/protocol/relay-pty-schemas.js +60 -0
  131. package/dist/wrapper/auth-detection.js +8 -1
  132. package/dist/wrapper/base-wrapper.d.ts +11 -1
  133. package/dist/wrapper/base-wrapper.js +67 -6
  134. package/dist/wrapper/client.d.ts +49 -1
  135. package/dist/wrapper/client.js +167 -0
  136. package/dist/wrapper/parser.d.ts +0 -4
  137. package/dist/wrapper/parser.js +38 -10
  138. package/dist/wrapper/pty-wrapper.d.ts +12 -1
  139. package/dist/wrapper/pty-wrapper.js +104 -5
  140. package/dist/wrapper/relay-pty-orchestrator.d.ts +270 -0
  141. package/dist/wrapper/relay-pty-orchestrator.js +970 -0
  142. package/dist/wrapper/shared.d.ts +1 -1
  143. package/dist/wrapper/shared.js +14 -4
  144. package/dist/wrapper/tmux-wrapper.d.ts +13 -1
  145. package/dist/wrapper/tmux-wrapper.js +143 -29
  146. package/package.json +9 -4
  147. package/scripts/postinstall.js +101 -11
  148. package/.trajectories/active/traj_3yx9dy148mge.json +0 -42
  149. package/.trajectories/agent-relay-322-324.md +0 -17
  150. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.json +0 -49
  151. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.md +0 -31
  152. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.json +0 -125
  153. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.md +0 -62
  154. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +0 -65
  155. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +0 -37
  156. package/.trajectories/completed/2026-01/traj_1g7yx6qtg4ai.json +0 -49
  157. package/.trajectories/completed/2026-01/traj_1g7yx6qtg4ai.md +0 -31
  158. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +0 -65
  159. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +0 -37
  160. package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +0 -49
  161. package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +0 -31
  162. package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +0 -113
  163. package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +0 -57
  164. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +0 -53
  165. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +0 -32
  166. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.json +0 -49
  167. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.md +0 -31
  168. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +0 -26
  169. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +0 -6
  170. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +0 -47
  171. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +0 -32
  172. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +0 -53
  173. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +0 -32
  174. package/.trajectories/completed/2026-01/traj_4qwd4zmhfwp4.json +0 -49
  175. package/.trajectories/completed/2026-01/traj_4qwd4zmhfwp4.md +0 -31
  176. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.json +0 -77
  177. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.md +0 -42
  178. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +0 -59
  179. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +0 -33
  180. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +0 -53
  181. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +0 -32
  182. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +0 -48
  183. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +0 -24
  184. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.json +0 -77
  185. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.md +0 -42
  186. package/.trajectories/completed/2026-01/traj_6unwwmgyj5sq.json +0 -109
  187. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.json +0 -77
  188. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.md +0 -42
  189. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +0 -209
  190. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +0 -97
  191. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.json +0 -66
  192. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.md +0 -36
  193. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +0 -48
  194. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +0 -24
  195. package/.trajectories/completed/2026-01/traj_a0tqx8biw9c4.json +0 -49
  196. package/.trajectories/completed/2026-01/traj_a0tqx8biw9c4.md +0 -31
  197. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +0 -49
  198. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +0 -23
  199. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.json +0 -40
  200. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.md +0 -22
  201. package/.trajectories/completed/2026-01/traj_ax8uungxz2qh.json +0 -66
  202. package/.trajectories/completed/2026-01/traj_ax8uungxz2qh.md +0 -36
  203. package/.trajectories/completed/2026-01/traj_c9izbh2snpzf.json +0 -49
  204. package/.trajectories/completed/2026-01/traj_c9izbh2snpzf.md +0 -31
  205. package/.trajectories/completed/2026-01/traj_cpn70dw066nt.json +0 -65
  206. package/.trajectories/completed/2026-01/traj_cpn70dw066nt.md +0 -37
  207. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +0 -53
  208. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +0 -32
  209. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +0 -49
  210. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +0 -31
  211. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +0 -26
  212. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +0 -6
  213. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.json +0 -121
  214. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.md +0 -29
  215. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +0 -59
  216. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +0 -37
  217. package/.trajectories/completed/2026-01/traj_erglv2f8t9eh.json +0 -36
  218. package/.trajectories/completed/2026-01/traj_erglv2f8t9eh.md +0 -21
  219. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.json +0 -53
  220. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.md +0 -32
  221. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.json +0 -101
  222. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.md +0 -52
  223. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +0 -77
  224. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +0 -42
  225. package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +0 -53
  226. package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +0 -32
  227. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +0 -25
  228. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +0 -15
  229. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +0 -101
  230. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +0 -44
  231. package/.trajectories/completed/2026-01/traj_he75f24d1xfm.json +0 -101
  232. package/.trajectories/completed/2026-01/traj_he75f24d1xfm.md +0 -52
  233. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.json +0 -49
  234. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.md +0 -31
  235. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.json +0 -65
  236. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.md +0 -37
  237. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +0 -22
  238. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +0 -5
  239. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +0 -53
  240. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +0 -32
  241. package/.trajectories/completed/2026-01/traj_lgtodco7dp1n.json +0 -61
  242. package/.trajectories/completed/2026-01/traj_lgtodco7dp1n.md +0 -36
  243. package/.trajectories/completed/2026-01/traj_lq450ly148uw.json +0 -49
  244. package/.trajectories/completed/2026-01/traj_lq450ly148uw.md +0 -31
  245. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +0 -25
  246. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +0 -15
  247. package/.trajectories/completed/2026-01/traj_multi_server_arch.md +0 -101
  248. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +0 -53
  249. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +0 -32
  250. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +0 -53
  251. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +0 -32
  252. package/.trajectories/completed/2026-01/traj_oszg9flv74pk.json +0 -73
  253. package/.trajectories/completed/2026-01/traj_oszg9flv74pk.md +0 -41
  254. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +0 -48
  255. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +0 -24
  256. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +0 -53
  257. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +0 -32
  258. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.json +0 -27
  259. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.md +0 -14
  260. package/.trajectories/completed/2026-01/traj_pulomd3y8cvj.json +0 -77
  261. package/.trajectories/completed/2026-01/traj_pulomd3y8cvj.md +0 -42
  262. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +0 -77
  263. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +0 -42
  264. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +0 -53
  265. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +0 -32
  266. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +0 -83
  267. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +0 -47
  268. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +0 -59
  269. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +0 -37
  270. package/.trajectories/completed/2026-01/traj_rsavt0jipi3c.json +0 -109
  271. package/.trajectories/completed/2026-01/traj_rsavt0jipi3c.md +0 -56
  272. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +0 -48
  273. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +0 -16
  274. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +0 -59
  275. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +0 -37
  276. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +0 -53
  277. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +0 -32
  278. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +0 -84
  279. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +0 -109
  280. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +0 -53
  281. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +0 -32
  282. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.json +0 -53
  283. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.md +0 -32
  284. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.json +0 -186
  285. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.md +0 -86
  286. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.json +0 -77
  287. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.md +0 -42
  288. package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +0 -71
  289. package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +0 -42
  290. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.json +0 -89
  291. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.md +0 -47
  292. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +0 -53
  293. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +0 -32
  294. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +0 -20
  295. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +0 -6
  296. package/.trajectories/completed/2026-01/traj_x721m1j9rzup.json +0 -113
  297. package/.trajectories/completed/2026-01/traj_x721m1j9rzup.md +0 -57
  298. package/.trajectories/completed/2026-01/traj_xjqvmep5ed3h.json +0 -61
  299. package/.trajectories/completed/2026-01/traj_xjqvmep5ed3h.md +0 -36
  300. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +0 -175
  301. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +0 -82
  302. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.json +0 -65
  303. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.md +0 -37
  304. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.json +0 -49
  305. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.md +0 -31
  306. package/.trajectories/completed/2026-01/traj_y7n6hfbf7dmg.json +0 -49
  307. package/.trajectories/completed/2026-01/traj_y7n6hfbf7dmg.md +0 -31
  308. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +0 -47
  309. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +0 -32
  310. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +0 -59
  311. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +0 -37
  312. package/.trajectories/completed/2026-01/traj_yvfkwnkdiso2.json +0 -49
  313. package/.trajectories/completed/2026-01/traj_yvfkwnkdiso2.md +0 -31
  314. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +0 -53
  315. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +0 -32
  316. package/.trajectories/consolidate-settings-panel.md +0 -24
  317. package/.trajectories/gh-cli-user-token.md +0 -26
  318. package/.trajectories/index.json +0 -607
@@ -1,71 +0,0 @@
1
- {
2
- "id": "traj_v87hypnongqx",
3
- "version": 1,
4
- "task": {
5
- "title": "Switch from GitHub OAuth to GitHub App for repo access",
6
- "source": {
7
- "system": "plain",
8
- "id": "agent-relay-324"
9
- }
10
- },
11
- "status": "completed",
12
- "startedAt": "2026-01-02T21:18:58.532Z",
13
- "agents": [],
14
- "chapters": [
15
- {
16
- "id": "chap_c8rox7ozlh2b",
17
- "title": "Work",
18
- "agentName": "default",
19
- "startedAt": "2026-01-02T21:28:18.247Z",
20
- "events": [
21
- {
22
- "ts": 1767389298248,
23
- "type": "decision",
24
- "content": "Parser fix already implemented: Parser fix already implemented",
25
- "raw": {
26
- "question": "Parser fix already implemented",
27
- "chosen": "Parser fix already implemented",
28
- "alternatives": [],
29
- "reasoning": "Verified PLACEHOLDER_TARGETS set and isPlaceholderTarget() function are in place with 4 call sites. All 136 tests pass."
30
- },
31
- "significance": "high"
32
- },
33
- {
34
- "ts": 1767390851116,
35
- "type": "decision",
36
- "content": "Implemented GitHub App directly instead of using Nango: Implemented GitHub App directly instead of using Nango",
37
- "raw": {
38
- "question": "Implemented GitHub App directly instead of using Nango",
39
- "chosen": "Implemented GitHub App directly instead of using Nango",
40
- "alternatives": [],
41
- "reasoning": "Existing codebase uses direct GitHub API calls, keeping implementation consistent avoids adding new dependencies"
42
- },
43
- "significance": "high"
44
- },
45
- {
46
- "ts": 1767390857285,
47
- "type": "decision",
48
- "content": "Implemented native GitHub App auth instead of Nango integration: Implemented native GitHub App auth instead of Nango integration",
49
- "raw": {
50
- "question": "Implemented native GitHub App auth instead of Nango integration",
51
- "chosen": "Implemented native GitHub App auth instead of Nango integration",
52
- "alternatives": [],
53
- "reasoning": "The codebase already had foundation for GitHub App JWT/tokens. Using native implementation avoids external dependency and aligns with existing patterns."
54
- },
55
- "significance": "high"
56
- }
57
- ],
58
- "endedAt": "2026-01-02T21:55:20.552Z"
59
- }
60
- ],
61
- "commits": [],
62
- "filesChanged": [],
63
- "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
64
- "tags": [],
65
- "completedAt": "2026-01-02T21:55:20.552Z",
66
- "retrospective": {
67
- "summary": "Implemented GitHub App API routes and config for agent-relay-324",
68
- "approach": "Standard approach",
69
- "confidence": 0.85
70
- }
71
- }
@@ -1,42 +0,0 @@
1
- # Trajectory: Switch from GitHub OAuth to GitHub App for repo access
2
-
3
- > **Status:** ✅ Completed
4
- > **Task:** agent-relay-324
5
- > **Confidence:** 85%
6
- > **Started:** January 2, 2026 at 10:18 PM
7
- > **Completed:** January 2, 2026 at 10:55 PM
8
-
9
- ---
10
-
11
- ## Summary
12
-
13
- Implemented GitHub App API routes and config for agent-relay-324
14
-
15
- **Approach:** Standard approach
16
-
17
- ---
18
-
19
- ## Key Decisions
20
-
21
- ### Parser fix already implemented
22
- - **Chose:** Parser fix already implemented
23
- - **Reasoning:** Verified PLACEHOLDER_TARGETS set and isPlaceholderTarget() function are in place with 4 call sites. All 136 tests pass.
24
-
25
- ### Implemented GitHub App directly instead of using Nango
26
- - **Chose:** Implemented GitHub App directly instead of using Nango
27
- - **Reasoning:** Existing codebase uses direct GitHub API calls, keeping implementation consistent avoids adding new dependencies
28
-
29
- ### Implemented native GitHub App auth instead of Nango integration
30
- - **Chose:** Implemented native GitHub App auth instead of Nango integration
31
- - **Reasoning:** The codebase already had foundation for GitHub App JWT/tokens. Using native implementation avoids external dependency and aligns with existing patterns.
32
-
33
- ---
34
-
35
- ## Chapters
36
-
37
- ### 1. Work
38
- *Agent: default*
39
-
40
- - Parser fix already implemented: Parser fix already implemented
41
- - Implemented GitHub App directly instead of using Nango: Implemented GitHub App directly instead of using Nango
42
- - Implemented native GitHub App auth instead of Nango integration: Implemented native GitHub App auth instead of Nango integration
@@ -1,89 +0,0 @@
1
- {
2
- "id": "traj_v9dkdoxylyid",
3
- "version": 1,
4
- "task": {
5
- "title": "Implement first-class user messaging with channels and DMs",
6
- "source": {
7
- "system": "plain",
8
- "id": "user-messaging-feature"
9
- }
10
- },
11
- "status": "completed",
12
- "startedAt": "2026-01-06T17:11:57.504Z",
13
- "agents": [
14
- {
15
- "name": "default",
16
- "role": "lead",
17
- "joinedAt": "2026-01-06T17:12:09.617Z"
18
- }
19
- ],
20
- "chapters": [
21
- {
22
- "id": "chap_u095g4higo8q",
23
- "title": "Work",
24
- "agentName": "default",
25
- "startedAt": "2026-01-06T17:12:09.617Z",
26
- "events": [
27
- {
28
- "ts": 1767719529619,
29
- "type": "decision",
30
- "content": "Chose unified relay daemon approach over WebSocket-only: Chose unified relay daemon approach over WebSocket-only",
31
- "raw": {
32
- "question": "Chose unified relay daemon approach over WebSocket-only",
33
- "chosen": "Chose unified relay daemon approach over WebSocket-only",
34
- "alternatives": [],
35
- "reasoning": "Enables consistent message routing for both users and agents, supports future features like message persistence and cross-project messaging"
36
- },
37
- "significance": "high"
38
- },
39
- {
40
- "ts": 1767719541811,
41
- "type": "decision",
42
- "content": "Added EntityType to protocol: Added EntityType to protocol",
43
- "raw": {
44
- "question": "Added EntityType to protocol",
45
- "chosen": "Added EntityType to protocol",
46
- "alternatives": [],
47
- "reasoning": "Distinguishes 'user' (human) from 'agent' (AI) entities for proper routing and UI display"
48
- },
49
- "significance": "high"
50
- },
51
- {
52
- "ts": 1767719549146,
53
- "type": "decision",
54
- "content": "DM channels use 'dm:alice:bob' naming convention with sorted names: DM channels use 'dm:alice:bob' naming convention with sorted names",
55
- "raw": {
56
- "question": "DM channels use 'dm:alice:bob' naming convention with sorted names",
57
- "chosen": "DM channels use 'dm:alice:bob' naming convention with sorted names",
58
- "alternatives": [],
59
- "reasoning": "Ensures consistent channel naming regardless of who initiates the DM"
60
- },
61
- "significance": "high"
62
- },
63
- {
64
- "ts": 1767719563124,
65
- "type": "decision",
66
- "content": "Created UserBridge to bridge WebSocket users to relay daemon: Created UserBridge to bridge WebSocket users to relay daemon",
67
- "raw": {
68
- "question": "Created UserBridge to bridge WebSocket users to relay daemon",
69
- "chosen": "Created UserBridge to bridge WebSocket users to relay daemon",
70
- "alternatives": [],
71
- "reasoning": "Clean separation of concerns - dashboard server handles WebSocket, UserBridge creates relay client per user for unified messaging"
72
- },
73
- "significance": "high"
74
- }
75
- ],
76
- "endedAt": "2026-01-06T17:12:56.919Z"
77
- }
78
- ],
79
- "commits": [],
80
- "filesChanged": [],
81
- "projectId": "/home/user/relay",
82
- "tags": [],
83
- "completedAt": "2026-01-06T17:12:56.919Z",
84
- "retrospective": {
85
- "summary": "Implemented first-class user messaging: EntityType protocol extension, channel join/leave/message routing in daemon, UserBridge for dashboard-relay integration, REST API endpoints, and React components (useChannels hook, ChannelSidebar, ChannelChat). All 1030 tests passing.",
86
- "approach": "Standard approach",
87
- "confidence": 0.85
88
- }
89
- }
@@ -1,47 +0,0 @@
1
- # Trajectory: Implement first-class user messaging with channels and DMs
2
-
3
- > **Status:** ✅ Completed
4
- > **Task:** user-messaging-feature
5
- > **Confidence:** 85%
6
- > **Started:** January 6, 2026 at 05:11 PM
7
- > **Completed:** January 6, 2026 at 05:12 PM
8
-
9
- ---
10
-
11
- ## Summary
12
-
13
- Implemented first-class user messaging: EntityType protocol extension, channel join/leave/message routing in daemon, UserBridge for dashboard-relay integration, REST API endpoints, and React components (useChannels hook, ChannelSidebar, ChannelChat). All 1030 tests passing.
14
-
15
- **Approach:** Standard approach
16
-
17
- ---
18
-
19
- ## Key Decisions
20
-
21
- ### Chose unified relay daemon approach over WebSocket-only
22
- - **Chose:** Chose unified relay daemon approach over WebSocket-only
23
- - **Reasoning:** Enables consistent message routing for both users and agents, supports future features like message persistence and cross-project messaging
24
-
25
- ### Added EntityType to protocol
26
- - **Chose:** Added EntityType to protocol
27
- - **Reasoning:** Distinguishes 'user' (human) from 'agent' (AI) entities for proper routing and UI display
28
-
29
- ### DM channels use 'dm:alice:bob' naming convention with sorted names
30
- - **Chose:** DM channels use 'dm:alice:bob' naming convention with sorted names
31
- - **Reasoning:** Ensures consistent channel naming regardless of who initiates the DM
32
-
33
- ### Created UserBridge to bridge WebSocket users to relay daemon
34
- - **Chose:** Created UserBridge to bridge WebSocket users to relay daemon
35
- - **Reasoning:** Clean separation of concerns - dashboard server handles WebSocket, UserBridge creates relay client per user for unified messaging
36
-
37
- ---
38
-
39
- ## Chapters
40
-
41
- ### 1. Work
42
- *Agent: default*
43
-
44
- - Chose unified relay daemon approach over WebSocket-only: Chose unified relay daemon approach over WebSocket-only
45
- - Added EntityType to protocol: Added EntityType to protocol
46
- - DM channels use 'dm:alice:bob' naming convention with sorted names: DM channels use 'dm:alice:bob' naming convention with sorted names
47
- - Created UserBridge to bridge WebSocket users to relay daemon: Created UserBridge to bridge WebSocket users to relay daemon
@@ -1,53 +0,0 @@
1
- {
2
- "id": "traj_wkp2fgzdyinb",
3
- "version": 1,
4
- "task": {
5
- "title": "Fix continuity parser to handle markdown content",
6
- "source": {
7
- "system": "plain",
8
- "id": "relay-continuity-parser"
9
- }
10
- },
11
- "status": "completed",
12
- "startedAt": "2026-01-03T15:03:22.148Z",
13
- "agents": [
14
- {
15
- "name": "Fixer",
16
- "role": "lead",
17
- "joinedAt": "2026-01-03T15:03:22.149Z"
18
- }
19
- ],
20
- "chapters": [
21
- {
22
- "id": "chap_6oeflvp9ydfs",
23
- "title": "Work",
24
- "agentName": "default",
25
- "startedAt": "2026-01-03T15:08:15.586Z",
26
- "events": [
27
- {
28
- "ts": 1767452895587,
29
- "type": "decision",
30
- "content": "Increased WebSocket log history from 200 to 5000 lines: Increased WebSocket log history from 200 to 5000 lines",
31
- "raw": {
32
- "question": "Increased WebSocket log history from 200 to 5000 lines",
33
- "chosen": "Increased WebSocket log history from 200 to 5000 lines",
34
- "alternatives": [],
35
- "reasoning": "Root cause: server.ts line 1632 only sent 200 lines on WebSocket connect. xterm scrollback (10000) and pty buffer (10000) were fine. Fixed by increasing getWorkerOutput limit to 5000 (half of max buffer)."
36
- },
37
- "significance": "high"
38
- }
39
- ],
40
- "endedAt": "2026-01-03T15:09:03.169Z"
41
- }
42
- ],
43
- "commits": [],
44
- "filesChanged": [],
45
- "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
46
- "tags": [],
47
- "completedAt": "2026-01-03T15:09:03.169Z",
48
- "retrospective": {
49
- "summary": "Fixed XTermLogViewer scrollback by increasing WebSocket initial history from 200 to 5000 lines in server.ts:1632",
50
- "approach": "Standard approach",
51
- "confidence": 0.95
52
- }
53
- }
@@ -1,32 +0,0 @@
1
- # Trajectory: Fix continuity parser to handle markdown content
2
-
3
- > **Status:** ✅ Completed
4
- > **Task:** relay-continuity-parser
5
- > **Confidence:** 95%
6
- > **Started:** January 3, 2026 at 04:03 PM
7
- > **Completed:** January 3, 2026 at 04:09 PM
8
-
9
- ---
10
-
11
- ## Summary
12
-
13
- Fixed XTermLogViewer scrollback by increasing WebSocket initial history from 200 to 5000 lines in server.ts:1632
14
-
15
- **Approach:** Standard approach
16
-
17
- ---
18
-
19
- ## Key Decisions
20
-
21
- ### Increased WebSocket log history from 200 to 5000 lines
22
- - **Chose:** Increased WebSocket log history from 200 to 5000 lines
23
- - **Reasoning:** Root cause: server.ts line 1632 only sent 200 lines on WebSocket connect. xterm scrollback (10000) and pty buffer (10000) were fine. Fixed by increasing getWorkerOutput limit to 5000 (half of max buffer).
24
-
25
- ---
26
-
27
- ## Chapters
28
-
29
- ### 1. Work
30
- *Agent: default*
31
-
32
- - Increased WebSocket log history from 200 to 5000 lines: Increased WebSocket log history from 200 to 5000 lines
@@ -1,20 +0,0 @@
1
- {
2
- "id": "traj_x14t8w8rn7xg",
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": "abandoned",
12
- "startedAt": "2026-01-03T13:36:06.506Z",
13
- "agents": [],
14
- "chapters": [],
15
- "commits": [],
16
- "filesChanged": [],
17
- "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
18
- "tags": [],
19
- "completedAt": "2026-01-03T13:36:55.892Z"
20
- }
@@ -1,6 +0,0 @@
1
- # Trajectory: Fix trajectory agents array population
2
-
3
- > **Status:** ❌ Abandoned
4
- > **Task:** agent-relay-452
5
- > **Started:** January 3, 2026 at 02:36 PM
6
- > **Completed:** January 3, 2026 at 02:36 PM
@@ -1,113 +0,0 @@
1
- {
2
- "id": "traj_x721m1j9rzup",
3
- "version": 1,
4
- "task": {
5
- "title": "Phase 1-3 socket baseline architecture and performance optimizations",
6
- "source": {
7
- "system": "plain",
8
- "id": "PR-126"
9
- }
10
- },
11
- "status": "completed",
12
- "startedAt": "2026-01-10T03:55:14.837Z",
13
- "agents": [
14
- {
15
- "name": "default",
16
- "role": "lead",
17
- "joinedAt": "2026-01-10T03:55:27.056Z"
18
- }
19
- ],
20
- "chapters": [
21
- {
22
- "id": "chap_vzcfw6401kdd",
23
- "title": "Work",
24
- "agentName": "default",
25
- "startedAt": "2026-01-10T03:55:27.056Z",
26
- "events": [
27
- {
28
- "ts": 1768017327057,
29
- "type": "decision",
30
- "content": "Phase 1: Per-connection write queues with backpressure: Phase 1: Per-connection write queues with backpressure",
31
- "raw": {
32
- "question": "Phase 1: Per-connection write queues with backpressure",
33
- "chosen": "Phase 1: Per-connection write queues with backpressure",
34
- "alternatives": [],
35
- "reasoning": "Prevents blocking on slow consumers. Configurable high/low water marks (1500/500) with max queue of 2000. Socket drain handling for memory efficiency."
36
- },
37
- "significance": "high"
38
- },
39
- {
40
- "ts": 1768017328441,
41
- "type": "decision",
42
- "content": "Phase 1: Batched SQLite writes: Phase 1: Batched SQLite writes",
43
- "raw": {
44
- "question": "Phase 1: Batched SQLite writes",
45
- "chosen": "Phase 1: Batched SQLite writes",
46
- "alternatives": [],
47
- "reasoning": "Reduces I/O overhead with configurable batch size (50), time-based flush (100ms), and memory-based flush (1MB). WAL mode for concurrent reads."
48
- },
49
- "significance": "high"
50
- },
51
- {
52
- "ts": 1768017329501,
53
- "type": "decision",
54
- "content": "Phase 1: Token bucket rate limiter: Phase 1: Token bucket rate limiter",
55
- "raw": {
56
- "question": "Phase 1: Token bucket rate limiter",
57
- "chosen": "Phase 1: Token bucket rate limiter",
58
- "alternatives": [],
59
- "reasoning": "Generous defaults (500 msg/sec sustained, 1000 burst) to avoid blocking legitimate agent communication while protecting against runaway agents."
60
- },
61
- "significance": "high"
62
- },
63
- {
64
- "ts": 1768017340999,
65
- "type": "decision",
66
- "content": "Phase 2: Optimized cloud sync queue: Phase 2: Optimized cloud sync queue",
67
- "raw": {
68
- "question": "Phase 2: Optimized cloud sync queue",
69
- "chosen": "Phase 2: Optimized cloud sync queue",
70
- "alternatives": [],
71
- "reasoning": "Adaptive batching with gzip compression for payloads >1KB. Disk spillover for offline resilience with retry/exponential backoff. UUID-based filenames to avoid collisions."
72
- },
73
- "significance": "high"
74
- },
75
- {
76
- "ts": 1768017342349,
77
- "type": "decision",
78
- "content": "Phase 3: Bulk ingest with raw SQL: Phase 3: Bulk ingest with raw SQL",
79
- "raw": {
80
- "question": "Phase 3: Bulk ingest with raw SQL",
81
- "chosen": "Phase 3: Bulk ingest with raw SQL",
82
- "alternatives": [],
83
- "reasoning": "Multi-row INSERT for medium batches, streaming COPY via staging table for large batches (>1000 rows). ON CONFLICT DO NOTHING for deduplication. Chunk processing for memory efficiency."
84
- },
85
- "significance": "high"
86
- },
87
- {
88
- "ts": 1768017343858,
89
- "type": "decision",
90
- "content": "Comprehensive test coverage for PR review: Comprehensive test coverage for PR review",
91
- "raw": {
92
- "question": "Comprehensive test coverage for PR review",
93
- "chosen": "Comprehensive test coverage for PR review",
94
- "alternatives": [],
95
- "reasoning": "Added 73 new tests covering batched-sqlite-adapter, sync-queue, rate-limiter, connection backpressure, and bulk-ingest to address Copilot review comments."
96
- },
97
- "significance": "high"
98
- }
99
- ],
100
- "endedAt": "2026-01-10T03:55:52.216Z"
101
- }
102
- ],
103
- "commits": [],
104
- "filesChanged": [],
105
- "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
106
- "tags": [],
107
- "completedAt": "2026-01-10T03:55:52.216Z",
108
- "retrospective": {
109
- "summary": "Implemented 3-phase socket baseline architecture: Phase 1 (write queues, batched SQLite, rate limiting), Phase 2 (cloud sync queue with compression/spillover), Phase 3 (bulk ingest with raw SQL). Added 73 tests addressing all PR review comments. All 1197 tests pass, build successful.",
110
- "approach": "Standard approach",
111
- "confidence": 0.9
112
- }
113
- }
@@ -1,57 +0,0 @@
1
- # Trajectory: Phase 1-3 socket baseline architecture and performance optimizations
2
-
3
- > **Status:** ✅ Completed
4
- > **Task:** PR-126
5
- > **Confidence:** 90%
6
- > **Started:** January 10, 2026 at 12:55 AM
7
- > **Completed:** January 10, 2026 at 12:55 AM
8
-
9
- ---
10
-
11
- ## Summary
12
-
13
- Implemented 3-phase socket baseline architecture: Phase 1 (write queues, batched SQLite, rate limiting), Phase 2 (cloud sync queue with compression/spillover), Phase 3 (bulk ingest with raw SQL). Added 73 tests addressing all PR review comments. All 1197 tests pass, build successful.
14
-
15
- **Approach:** Standard approach
16
-
17
- ---
18
-
19
- ## Key Decisions
20
-
21
- ### Phase 1: Per-connection write queues with backpressure
22
- - **Chose:** Phase 1: Per-connection write queues with backpressure
23
- - **Reasoning:** Prevents blocking on slow consumers. Configurable high/low water marks (1500/500) with max queue of 2000. Socket drain handling for memory efficiency.
24
-
25
- ### Phase 1: Batched SQLite writes
26
- - **Chose:** Phase 1: Batched SQLite writes
27
- - **Reasoning:** Reduces I/O overhead with configurable batch size (50), time-based flush (100ms), and memory-based flush (1MB). WAL mode for concurrent reads.
28
-
29
- ### Phase 1: Token bucket rate limiter
30
- - **Chose:** Phase 1: Token bucket rate limiter
31
- - **Reasoning:** Generous defaults (500 msg/sec sustained, 1000 burst) to avoid blocking legitimate agent communication while protecting against runaway agents.
32
-
33
- ### Phase 2: Optimized cloud sync queue
34
- - **Chose:** Phase 2: Optimized cloud sync queue
35
- - **Reasoning:** Adaptive batching with gzip compression for payloads >1KB. Disk spillover for offline resilience with retry/exponential backoff. UUID-based filenames to avoid collisions.
36
-
37
- ### Phase 3: Bulk ingest with raw SQL
38
- - **Chose:** Phase 3: Bulk ingest with raw SQL
39
- - **Reasoning:** Multi-row INSERT for medium batches, streaming COPY via staging table for large batches (>1000 rows). ON CONFLICT DO NOTHING for deduplication. Chunk processing for memory efficiency.
40
-
41
- ### Comprehensive test coverage for PR review
42
- - **Chose:** Comprehensive test coverage for PR review
43
- - **Reasoning:** Added 73 new tests covering batched-sqlite-adapter, sync-queue, rate-limiter, connection backpressure, and bulk-ingest to address Copilot review comments.
44
-
45
- ---
46
-
47
- ## Chapters
48
-
49
- ### 1. Work
50
- *Agent: default*
51
-
52
- - Phase 1: Per-connection write queues with backpressure: Phase 1: Per-connection write queues with backpressure
53
- - Phase 1: Batched SQLite writes: Phase 1: Batched SQLite writes
54
- - Phase 1: Token bucket rate limiter: Phase 1: Token bucket rate limiter
55
- - Phase 2: Optimized cloud sync queue: Phase 2: Optimized cloud sync queue
56
- - Phase 3: Bulk ingest with raw SQL: Phase 3: Bulk ingest with raw SQL
57
- - Comprehensive test coverage for PR review: Comprehensive test coverage for PR review
@@ -1,61 +0,0 @@
1
- {
2
- "id": "traj_xjqvmep5ed3h",
3
- "version": 1,
4
- "task": {
5
- "title": "Fix update-workspaces GitHub Action job"
6
- },
7
- "status": "completed",
8
- "startedAt": "2026-01-08T09:02:08.758Z",
9
- "agents": [
10
- {
11
- "name": "khaliqgant",
12
- "role": "lead",
13
- "joinedAt": "2026-01-08T09:02:08.759Z"
14
- }
15
- ],
16
- "chapters": [
17
- {
18
- "id": "chap_idiabu3o77zd",
19
- "title": "Work",
20
- "agentName": "default",
21
- "startedAt": "2026-01-08T09:02:14.052Z",
22
- "events": [
23
- {
24
- "ts": 1767862934052,
25
- "type": "decision",
26
- "content": "Changed job condition from success() to explicit needs check: Changed job condition from success() to explicit needs check",
27
- "raw": {
28
- "question": "Changed job condition from success() to explicit needs check",
29
- "chosen": "Changed job condition from success() to explicit needs check",
30
- "alternatives": [],
31
- "reasoning": "success() checks entire dependency chain including build-base which is often skipped. Changed to always() + needs.build-and-push.result == 'success' to only check direct dependency"
32
- },
33
- "significance": "high"
34
- },
35
- {
36
- "ts": 1767862939841,
37
- "type": "decision",
38
- "content": "Changed skipRestart from true to false: Changed skipRestart from true to false",
39
- "raw": {
40
- "question": "Changed skipRestart from true to false",
41
- "chosen": "Changed skipRestart from true to false",
42
- "alternatives": [],
43
- "reasoning": "With skipRestart:true, running workspaces without active agents would only update config but not restart. Since no agents = no work to disrupt, should restart immediately to apply new image"
44
- },
45
- "significance": "high"
46
- }
47
- ],
48
- "endedAt": "2026-01-08T09:02:24.262Z"
49
- }
50
- ],
51
- "commits": [],
52
- "filesChanged": [],
53
- "projectId": "/Users/khaliqgant/Projects/agent-workforce/relay",
54
- "tags": [],
55
- "completedAt": "2026-01-08T09:02:24.262Z",
56
- "retrospective": {
57
- "summary": "Fixed update-workspaces job: 1) Changed condition to check direct dependency result instead of success() which fails on skipped upstream jobs 2) Set skipRestart:false so idle workspaces restart immediately",
58
- "approach": "Standard approach",
59
- "confidence": 0.85
60
- }
61
- }
@@ -1,36 +0,0 @@
1
- # Trajectory: Fix update-workspaces GitHub Action job
2
-
3
- > **Status:** ✅ Completed
4
- > **Confidence:** 85%
5
- > **Started:** January 8, 2026 at 10:02 AM
6
- > **Completed:** January 8, 2026 at 10:02 AM
7
-
8
- ---
9
-
10
- ## Summary
11
-
12
- Fixed update-workspaces job: 1) Changed condition to check direct dependency result instead of success() which fails on skipped upstream jobs 2) Set skipRestart:false so idle workspaces restart immediately
13
-
14
- **Approach:** Standard approach
15
-
16
- ---
17
-
18
- ## Key Decisions
19
-
20
- ### Changed job condition from success() to explicit needs check
21
- - **Chose:** Changed job condition from success() to explicit needs check
22
- - **Reasoning:** success() checks entire dependency chain including build-base which is often skipped. Changed to always() + needs.build-and-push.result == 'success' to only check direct dependency
23
-
24
- ### Changed skipRestart from true to false
25
- - **Chose:** Changed skipRestart from true to false
26
- - **Reasoning:** With skipRestart:true, running workspaces without active agents would only update config but not restart. Since no agents = no work to disrupt, should restart immediately to apply new image
27
-
28
- ---
29
-
30
- ## Chapters
31
-
32
- ### 1. Work
33
- *Agent: default*
34
-
35
- - Changed job condition from success() to explicit needs check: Changed job condition from success() to explicit needs check
36
- - Changed skipRestart from true to false: Changed skipRestart from true to false