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.
- package/README.md +130 -158
- package/bin/relay-pty +0 -0
- package/bin/relay-pty-darwin-arm64 +0 -0
- package/bin/relay-pty-darwin-x64 +0 -0
- package/bin/relay-pty-linux-x64 +0 -0
- package/deploy/workspace/entrypoint.sh +9 -0
- package/dist/bridge/spawner.d.ts +4 -4
- package/dist/bridge/spawner.js +58 -92
- package/dist/cli/index.d.ts +8 -6
- package/dist/cli/index.js +282 -47
- package/dist/cloud/api/daemons.js +13 -32
- package/dist/cloud/api/onboarding.js +2 -4
- package/dist/cloud/api/providers.js +6 -0
- package/dist/cloud/config.d.ts +1 -0
- package/dist/cloud/config.js +2 -0
- package/dist/cloud/db/bulk-ingest.d.ts +2 -1
- package/dist/cloud/db/drizzle.d.ts +21 -26
- package/dist/cloud/db/drizzle.js +87 -100
- package/dist/cloud/db/index.d.ts +6 -5
- package/dist/cloud/db/index.js +9 -8
- package/dist/cloud/db/schema.d.ts +1049 -1076
- package/dist/cloud/db/schema.js +59 -71
- package/dist/cloud/server.js +854 -18
- package/dist/cloud/services/persistence.d.ts +15 -15
- package/dist/cloud/services/persistence.js +14 -14
- package/dist/daemon/agent-manager.d.ts +6 -5
- package/dist/daemon/agent-manager.js +12 -8
- package/dist/daemon/channel-membership-store.d.ts +48 -0
- package/dist/daemon/channel-membership-store.js +149 -0
- package/dist/daemon/cloud-sync.d.ts +2 -0
- package/dist/daemon/cloud-sync.js +4 -0
- package/dist/daemon/connection.js +17 -9
- package/dist/daemon/router.d.ts +37 -0
- package/dist/daemon/router.js +318 -79
- package/dist/daemon/server.d.ts +15 -0
- package/dist/daemon/server.js +141 -3
- package/dist/dashboard/out/404.html +1 -0
- package/dist/dashboard/out/_next/static/IxxVRv94L1w3ReRGAiI-k/_buildManifest.js +1 -0
- package/dist/dashboard/out/_next/static/IxxVRv94L1w3ReRGAiI-k/_ssgManifest.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/116-eacf84a131b80db9.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +2 -0
- package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +9 -0
- package/dist/dashboard/out/_next/static/chunks/64-87ab9cd6bcf2f737.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/766-aa7c8c9900ff5f53.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/83-4f08122d4e7e79a6.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/891-a024fbe4b619cf6f.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-f746f29e01fffc43.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-ffad986adfcc8b31.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-cfeb437f08a12ed9.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-03ac6f35a6654ea6.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/page-240f91e8b06ba8ac.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/login/page-6ec54eee75877971.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-82938ab8fcf44694.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-671037943b2f2e43.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-0efa024c28ba4597.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-57cbd738c6a73859.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-5ab0854472b402b0.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/signup/page-18a4665665f6be11.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
- package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/main-5a40a5ae29646e1b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/main-app-6e8e8d3ef4e0192a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
- package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +1 -0
- package/dist/dashboard/out/_next/static/css/8f9ed310f454e5a5.css +1 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
- package/dist/dashboard/out/alt-logos/logo.svg +38 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
- package/dist/dashboard/out/app/onboarding.html +1 -0
- package/dist/dashboard/out/app/onboarding.txt +7 -0
- package/dist/dashboard/out/app.html +1 -0
- package/dist/dashboard/out/app.txt +7 -0
- package/dist/dashboard/out/apple-icon.png +0 -0
- package/dist/dashboard/out/cloud/link.html +1 -0
- package/dist/dashboard/out/cloud/link.txt +7 -0
- package/dist/dashboard/out/connect-repos.html +1 -0
- package/dist/dashboard/out/connect-repos.txt +7 -0
- package/dist/dashboard/out/history.html +1 -0
- package/dist/dashboard/out/history.txt +7 -0
- package/dist/dashboard/out/index.html +1 -0
- package/dist/dashboard/out/index.txt +7 -0
- package/dist/dashboard/out/login.html +5 -0
- package/dist/dashboard/out/login.txt +7 -0
- package/dist/dashboard/out/metrics.html +1 -0
- package/dist/dashboard/out/metrics.txt +7 -0
- package/dist/dashboard/out/pricing.html +13 -0
- package/dist/dashboard/out/pricing.txt +7 -0
- package/dist/dashboard/out/providers/setup/claude.html +1 -0
- package/dist/dashboard/out/providers/setup/claude.txt +8 -0
- package/dist/dashboard/out/providers/setup/codex.html +1 -0
- package/dist/dashboard/out/providers/setup/codex.txt +8 -0
- package/dist/dashboard/out/providers.html +1 -0
- package/dist/dashboard/out/providers.txt +7 -0
- package/dist/dashboard/out/signup.html +6 -0
- package/dist/dashboard/out/signup.txt +7 -0
- package/dist/dashboard-server/metrics.d.ts +105 -0
- package/dist/dashboard-server/metrics.js +193 -0
- package/dist/dashboard-server/needs-attention.d.ts +24 -0
- package/dist/dashboard-server/needs-attention.js +78 -0
- package/dist/dashboard-server/server.d.ts +15 -0
- package/dist/dashboard-server/server.js +4753 -0
- package/dist/dashboard-server/start.d.ts +6 -0
- package/dist/dashboard-server/start.js +13 -0
- package/dist/dashboard-server/user-bridge.d.ts +132 -0
- package/dist/dashboard-server/user-bridge.js +317 -0
- package/dist/protocol/channels.d.ts +14 -8
- package/dist/protocol/channels.js +1 -1
- package/dist/protocol/index.d.ts +1 -0
- package/dist/protocol/index.js +1 -0
- package/dist/protocol/relay-pty-schemas.d.ts +209 -0
- package/dist/protocol/relay-pty-schemas.js +60 -0
- package/dist/wrapper/auth-detection.js +8 -1
- package/dist/wrapper/base-wrapper.d.ts +11 -1
- package/dist/wrapper/base-wrapper.js +67 -6
- package/dist/wrapper/client.d.ts +49 -1
- package/dist/wrapper/client.js +167 -0
- package/dist/wrapper/parser.d.ts +0 -4
- package/dist/wrapper/parser.js +38 -10
- package/dist/wrapper/pty-wrapper.d.ts +12 -1
- package/dist/wrapper/pty-wrapper.js +104 -5
- package/dist/wrapper/relay-pty-orchestrator.d.ts +270 -0
- package/dist/wrapper/relay-pty-orchestrator.js +970 -0
- package/dist/wrapper/shared.d.ts +1 -1
- package/dist/wrapper/shared.js +14 -4
- package/dist/wrapper/tmux-wrapper.d.ts +13 -1
- package/dist/wrapper/tmux-wrapper.js +143 -29
- package/package.json +9 -4
- package/scripts/postinstall.js +101 -11
- package/.trajectories/active/traj_3yx9dy148mge.json +0 -42
- package/.trajectories/agent-relay-322-324.md +0 -17
- package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.json +0 -49
- package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.md +0 -31
- package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.json +0 -125
- package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.md +0 -62
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +0 -65
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +0 -37
- package/.trajectories/completed/2026-01/traj_1g7yx6qtg4ai.json +0 -49
- package/.trajectories/completed/2026-01/traj_1g7yx6qtg4ai.md +0 -31
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +0 -65
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +0 -37
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +0 -49
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +0 -31
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +0 -113
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +0 -57
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +0 -53
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +0 -32
- package/.trajectories/completed/2026-01/traj_33iuy72sezbk.json +0 -49
- package/.trajectories/completed/2026-01/traj_33iuy72sezbk.md +0 -31
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +0 -26
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +0 -6
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +0 -47
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +0 -32
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +0 -53
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +0 -32
- package/.trajectories/completed/2026-01/traj_4qwd4zmhfwp4.json +0 -49
- package/.trajectories/completed/2026-01/traj_4qwd4zmhfwp4.md +0 -31
- package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.json +0 -77
- package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.md +0 -42
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +0 -59
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +0 -33
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +0 -53
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +0 -32
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +0 -48
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +0 -24
- package/.trajectories/completed/2026-01/traj_6mieijqyvaag.json +0 -77
- package/.trajectories/completed/2026-01/traj_6mieijqyvaag.md +0 -42
- package/.trajectories/completed/2026-01/traj_6unwwmgyj5sq.json +0 -109
- package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.json +0 -77
- package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.md +0 -42
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +0 -209
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +0 -97
- package/.trajectories/completed/2026-01/traj_94gnp3k30goq.json +0 -66
- package/.trajectories/completed/2026-01/traj_94gnp3k30goq.md +0 -36
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +0 -48
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +0 -24
- package/.trajectories/completed/2026-01/traj_a0tqx8biw9c4.json +0 -49
- package/.trajectories/completed/2026-01/traj_a0tqx8biw9c4.md +0 -31
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +0 -49
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +0 -23
- package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.json +0 -40
- package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.md +0 -22
- package/.trajectories/completed/2026-01/traj_ax8uungxz2qh.json +0 -66
- package/.trajectories/completed/2026-01/traj_ax8uungxz2qh.md +0 -36
- package/.trajectories/completed/2026-01/traj_c9izbh2snpzf.json +0 -49
- package/.trajectories/completed/2026-01/traj_c9izbh2snpzf.md +0 -31
- package/.trajectories/completed/2026-01/traj_cpn70dw066nt.json +0 -65
- package/.trajectories/completed/2026-01/traj_cpn70dw066nt.md +0 -37
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +0 -53
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +0 -32
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +0 -49
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +0 -31
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +0 -26
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +0 -6
- package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.json +0 -121
- package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.md +0 -29
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +0 -59
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +0 -37
- package/.trajectories/completed/2026-01/traj_erglv2f8t9eh.json +0 -36
- package/.trajectories/completed/2026-01/traj_erglv2f8t9eh.md +0 -21
- package/.trajectories/completed/2026-01/traj_fhx9irlckht6.json +0 -53
- package/.trajectories/completed/2026-01/traj_fhx9irlckht6.md +0 -32
- package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.json +0 -101
- package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.md +0 -52
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +0 -77
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +0 -42
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +0 -53
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +0 -32
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +0 -25
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +0 -15
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +0 -101
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +0 -44
- package/.trajectories/completed/2026-01/traj_he75f24d1xfm.json +0 -101
- package/.trajectories/completed/2026-01/traj_he75f24d1xfm.md +0 -52
- package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.json +0 -49
- package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.md +0 -31
- package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.json +0 -65
- package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.md +0 -37
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +0 -22
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +0 -5
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +0 -53
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +0 -32
- package/.trajectories/completed/2026-01/traj_lgtodco7dp1n.json +0 -61
- package/.trajectories/completed/2026-01/traj_lgtodco7dp1n.md +0 -36
- package/.trajectories/completed/2026-01/traj_lq450ly148uw.json +0 -49
- package/.trajectories/completed/2026-01/traj_lq450ly148uw.md +0 -31
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +0 -25
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +0 -15
- package/.trajectories/completed/2026-01/traj_multi_server_arch.md +0 -101
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +0 -53
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +0 -32
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +0 -53
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +0 -32
- package/.trajectories/completed/2026-01/traj_oszg9flv74pk.json +0 -73
- package/.trajectories/completed/2026-01/traj_oszg9flv74pk.md +0 -41
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +0 -48
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +0 -24
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +0 -53
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +0 -32
- package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.json +0 -27
- package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.md +0 -14
- package/.trajectories/completed/2026-01/traj_pulomd3y8cvj.json +0 -77
- package/.trajectories/completed/2026-01/traj_pulomd3y8cvj.md +0 -42
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +0 -77
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +0 -42
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +0 -53
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +0 -32
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +0 -83
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +0 -47
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +0 -59
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +0 -37
- package/.trajectories/completed/2026-01/traj_rsavt0jipi3c.json +0 -109
- package/.trajectories/completed/2026-01/traj_rsavt0jipi3c.md +0 -56
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +0 -48
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +0 -16
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +0 -59
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +0 -37
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +0 -53
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +0 -32
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +0 -84
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +0 -109
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +0 -53
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +0 -32
- package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.json +0 -53
- package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.md +0 -32
- package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.json +0 -186
- package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.md +0 -86
- package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.json +0 -77
- package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.md +0 -42
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +0 -71
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +0 -42
- package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.json +0 -89
- package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.md +0 -47
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +0 -53
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +0 -32
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +0 -20
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +0 -6
- package/.trajectories/completed/2026-01/traj_x721m1j9rzup.json +0 -113
- package/.trajectories/completed/2026-01/traj_x721m1j9rzup.md +0 -57
- package/.trajectories/completed/2026-01/traj_xjqvmep5ed3h.json +0 -61
- package/.trajectories/completed/2026-01/traj_xjqvmep5ed3h.md +0 -36
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +0 -175
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +0 -82
- package/.trajectories/completed/2026-01/traj_xy9vifpqet80.json +0 -65
- package/.trajectories/completed/2026-01/traj_xy9vifpqet80.md +0 -37
- package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.json +0 -49
- package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.md +0 -31
- package/.trajectories/completed/2026-01/traj_y7n6hfbf7dmg.json +0 -49
- package/.trajectories/completed/2026-01/traj_y7n6hfbf7dmg.md +0 -31
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +0 -47
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +0 -32
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +0 -59
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +0 -37
- package/.trajectories/completed/2026-01/traj_yvfkwnkdiso2.json +0 -49
- package/.trajectories/completed/2026-01/traj_yvfkwnkdiso2.md +0 -31
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +0 -53
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +0 -32
- package/.trajectories/consolidate-settings-panel.md +0 -24
- package/.trajectories/gh-cli-user-token.md +0 -26
- 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,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
|