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
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RelayPtyOrchestrator - Orchestrates the relay-pty Rust binary
|
|
3
|
+
*
|
|
4
|
+
* This wrapper spawns the relay-pty binary and communicates via Unix socket.
|
|
5
|
+
* It provides the same interface as PtyWrapper but with improved latency
|
|
6
|
+
* (~550ms vs ~1700ms) by using direct PTY writes instead of tmux send-keys.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* 1. Spawn relay-pty --name {agentName} -- {command} as child process
|
|
10
|
+
* 2. Connect to /tmp/relay-pty-{agentName}.sock for injection
|
|
11
|
+
* 3. Parse stdout for relay commands (relay-pty echoes all output)
|
|
12
|
+
* 4. Translate SEND envelopes → inject messages via socket
|
|
13
|
+
*
|
|
14
|
+
* @see docs/RUST_WRAPPER_DESIGN.md for protocol details
|
|
15
|
+
*/
|
|
16
|
+
import { BaseWrapper, type BaseWrapperConfig } from './base-wrapper.js';
|
|
17
|
+
import type { SendPayload, SendMeta } from '../protocol/types.js';
|
|
18
|
+
interface StatusResponse {
|
|
19
|
+
type: 'status';
|
|
20
|
+
agent_idle: boolean;
|
|
21
|
+
queue_length: number;
|
|
22
|
+
cursor_position?: [number, number];
|
|
23
|
+
last_output_ms: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Configuration for RelayPtyOrchestrator
|
|
27
|
+
*/
|
|
28
|
+
export interface RelayPtyOrchestratorConfig extends BaseWrapperConfig {
|
|
29
|
+
/** Path to relay-pty binary (default: searches PATH and ./relay-pty/target/release) */
|
|
30
|
+
relayPtyPath?: string;
|
|
31
|
+
/** Socket connect timeout in ms (default: 5000) */
|
|
32
|
+
socketConnectTimeoutMs?: number;
|
|
33
|
+
/** Socket reconnect attempts (default: 3) */
|
|
34
|
+
socketReconnectAttempts?: number;
|
|
35
|
+
/** Callback when agent exits */
|
|
36
|
+
onExit?: (code: number) => void;
|
|
37
|
+
/** Callback when injection fails after retries */
|
|
38
|
+
onInjectionFailed?: (messageId: string, error: string) => void;
|
|
39
|
+
/** Enable debug logging (default: false) */
|
|
40
|
+
debug?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Events emitted by RelayPtyOrchestrator
|
|
44
|
+
*/
|
|
45
|
+
export interface RelayPtyOrchestratorEvents {
|
|
46
|
+
output: (data: string) => void;
|
|
47
|
+
exit: (code: number) => void;
|
|
48
|
+
error: (error: Error) => void;
|
|
49
|
+
'injection-failed': (event: {
|
|
50
|
+
messageId: string;
|
|
51
|
+
from: string;
|
|
52
|
+
error: string;
|
|
53
|
+
}) => void;
|
|
54
|
+
'backpressure': (event: {
|
|
55
|
+
queueLength: number;
|
|
56
|
+
accept: boolean;
|
|
57
|
+
}) => void;
|
|
58
|
+
'summary': (event: {
|
|
59
|
+
agentName: string;
|
|
60
|
+
summary: unknown;
|
|
61
|
+
}) => void;
|
|
62
|
+
'session-end': (event: {
|
|
63
|
+
agentName: string;
|
|
64
|
+
marker: unknown;
|
|
65
|
+
}) => void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Orchestrator for relay-pty Rust binary
|
|
69
|
+
*
|
|
70
|
+
* Extends BaseWrapper to provide the same interface as PtyWrapper
|
|
71
|
+
* but uses the relay-pty binary for improved injection reliability.
|
|
72
|
+
*/
|
|
73
|
+
export declare class RelayPtyOrchestrator extends BaseWrapper {
|
|
74
|
+
protected config: RelayPtyOrchestratorConfig;
|
|
75
|
+
private relayPtyProcess?;
|
|
76
|
+
private socketPath;
|
|
77
|
+
private _logPath;
|
|
78
|
+
private _outboxPath;
|
|
79
|
+
private socket?;
|
|
80
|
+
private socketConnected;
|
|
81
|
+
private outputBuffer;
|
|
82
|
+
private rawBuffer;
|
|
83
|
+
private lastParsedLength;
|
|
84
|
+
private isInteractive;
|
|
85
|
+
private pendingInjections;
|
|
86
|
+
private backpressureActive;
|
|
87
|
+
private readyForMessages;
|
|
88
|
+
private lastUnreadIndicatorTime;
|
|
89
|
+
private readonly UNREAD_INDICATOR_COOLDOWN_MS;
|
|
90
|
+
constructor(config: RelayPtyOrchestratorConfig);
|
|
91
|
+
/**
|
|
92
|
+
* Debug log - only outputs when debug is enabled
|
|
93
|
+
*/
|
|
94
|
+
private log;
|
|
95
|
+
/**
|
|
96
|
+
* Error log - always outputs (errors are important)
|
|
97
|
+
*/
|
|
98
|
+
private logError;
|
|
99
|
+
/**
|
|
100
|
+
* Get the outbox path for this agent (for documentation purposes)
|
|
101
|
+
*/
|
|
102
|
+
get outboxPath(): string;
|
|
103
|
+
/**
|
|
104
|
+
* Start the relay-pty process and connect to socket
|
|
105
|
+
*/
|
|
106
|
+
start(): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Stop the relay-pty process gracefully
|
|
109
|
+
*/
|
|
110
|
+
stop(): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Inject content into the agent via socket
|
|
113
|
+
*/
|
|
114
|
+
protected performInjection(content: string): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Get cleaned output for parsing
|
|
117
|
+
*/
|
|
118
|
+
protected getCleanOutput(): string;
|
|
119
|
+
/**
|
|
120
|
+
* Find the relay-pty binary
|
|
121
|
+
*/
|
|
122
|
+
private findRelayPtyBinary;
|
|
123
|
+
/**
|
|
124
|
+
* Spawn the relay-pty process
|
|
125
|
+
*/
|
|
126
|
+
private spawnRelayPty;
|
|
127
|
+
/**
|
|
128
|
+
* Handle output from relay-pty stdout (headless mode only)
|
|
129
|
+
* In interactive mode, stdout goes directly to terminal via inherited stdio
|
|
130
|
+
*/
|
|
131
|
+
private handleOutput;
|
|
132
|
+
/**
|
|
133
|
+
* Format an unread message indicator if there are pending messages.
|
|
134
|
+
* Returns empty string if no pending messages or within cooldown period.
|
|
135
|
+
*
|
|
136
|
+
* Example output:
|
|
137
|
+
* ───────────────────────────
|
|
138
|
+
* 📬 2 unread messages (from: Alice, Bob)
|
|
139
|
+
*/
|
|
140
|
+
private formatUnreadIndicator;
|
|
141
|
+
/**
|
|
142
|
+
* Handle stderr from relay-pty (logs and JSON parsed commands)
|
|
143
|
+
*/
|
|
144
|
+
private handleStderr;
|
|
145
|
+
/**
|
|
146
|
+
* Handle a parsed command from Rust relay-pty
|
|
147
|
+
* Rust outputs structured JSON with 'kind' field: "message", "spawn", "release"
|
|
148
|
+
*/
|
|
149
|
+
private handleRustParsedCommand;
|
|
150
|
+
/**
|
|
151
|
+
* Handle spawn command
|
|
152
|
+
*/
|
|
153
|
+
private handleSpawnCommand;
|
|
154
|
+
/**
|
|
155
|
+
* Handle release command
|
|
156
|
+
*/
|
|
157
|
+
private handleReleaseCommand;
|
|
158
|
+
/**
|
|
159
|
+
* Spawn agent via dashboard API
|
|
160
|
+
*/
|
|
161
|
+
private spawnViaDashboardApi;
|
|
162
|
+
/**
|
|
163
|
+
* Release agent via dashboard API
|
|
164
|
+
*/
|
|
165
|
+
private releaseViaDashboardApi;
|
|
166
|
+
/**
|
|
167
|
+
* Connect to the relay-pty socket
|
|
168
|
+
*/
|
|
169
|
+
private connectToSocket;
|
|
170
|
+
/**
|
|
171
|
+
* Attempt a single socket connection
|
|
172
|
+
*/
|
|
173
|
+
private attemptSocketConnection;
|
|
174
|
+
/**
|
|
175
|
+
* Disconnect from socket
|
|
176
|
+
*/
|
|
177
|
+
private disconnectSocket;
|
|
178
|
+
/**
|
|
179
|
+
* Send a request to the socket and optionally wait for response
|
|
180
|
+
*/
|
|
181
|
+
private sendSocketRequest;
|
|
182
|
+
/**
|
|
183
|
+
* Handle a response from the socket
|
|
184
|
+
*/
|
|
185
|
+
private handleSocketResponse;
|
|
186
|
+
/**
|
|
187
|
+
* Handle injection result response
|
|
188
|
+
*/
|
|
189
|
+
private handleInjectResult;
|
|
190
|
+
/**
|
|
191
|
+
* Handle backpressure notification
|
|
192
|
+
*/
|
|
193
|
+
private handleBackpressure;
|
|
194
|
+
/**
|
|
195
|
+
* Inject a message into the agent via socket
|
|
196
|
+
*/
|
|
197
|
+
private injectMessage;
|
|
198
|
+
/**
|
|
199
|
+
* Process queued messages
|
|
200
|
+
*/
|
|
201
|
+
private processMessageQueue;
|
|
202
|
+
/**
|
|
203
|
+
* Override handleIncomingMessage to trigger queue processing
|
|
204
|
+
*/
|
|
205
|
+
protected handleIncomingMessage(from: string, payload: SendPayload, messageId: string, meta?: SendMeta, originalTo?: string): void;
|
|
206
|
+
/**
|
|
207
|
+
* Parse relay commands from output
|
|
208
|
+
*/
|
|
209
|
+
private parseRelayCommands;
|
|
210
|
+
/**
|
|
211
|
+
* Parse fenced multi-line messages
|
|
212
|
+
*/
|
|
213
|
+
private parseFencedMessages;
|
|
214
|
+
/**
|
|
215
|
+
* Parse single-line messages
|
|
216
|
+
*/
|
|
217
|
+
private parseSingleLineMessages;
|
|
218
|
+
/**
|
|
219
|
+
* Check for [[SUMMARY]] blocks
|
|
220
|
+
*/
|
|
221
|
+
private checkForSummary;
|
|
222
|
+
/**
|
|
223
|
+
* Check for [[SESSION_END]] blocks
|
|
224
|
+
*/
|
|
225
|
+
private checkForSessionEnd;
|
|
226
|
+
/**
|
|
227
|
+
* Query status from relay-pty
|
|
228
|
+
*/
|
|
229
|
+
queryStatus(): Promise<StatusResponse | null>;
|
|
230
|
+
/**
|
|
231
|
+
* Get raw output buffer
|
|
232
|
+
*/
|
|
233
|
+
getRawOutput(): string;
|
|
234
|
+
/**
|
|
235
|
+
* Check if backpressure is active
|
|
236
|
+
*/
|
|
237
|
+
isBackpressureActive(): boolean;
|
|
238
|
+
/**
|
|
239
|
+
* Get the socket path
|
|
240
|
+
*/
|
|
241
|
+
getSocketPath(): string;
|
|
242
|
+
/**
|
|
243
|
+
* Get the relay-pty process PID
|
|
244
|
+
*/
|
|
245
|
+
get pid(): number | undefined;
|
|
246
|
+
/**
|
|
247
|
+
* Get the log file path (not used by relay-pty, returns undefined)
|
|
248
|
+
*/
|
|
249
|
+
get logPath(): string | undefined;
|
|
250
|
+
/**
|
|
251
|
+
* Kill the process forcefully
|
|
252
|
+
*/
|
|
253
|
+
kill(): Promise<void>;
|
|
254
|
+
/**
|
|
255
|
+
* Get output lines (for compatibility with PtyWrapper)
|
|
256
|
+
* @param limit Maximum number of lines to return
|
|
257
|
+
*/
|
|
258
|
+
getOutput(limit?: number): string[];
|
|
259
|
+
/**
|
|
260
|
+
* Write data directly to the process stdin
|
|
261
|
+
* @param data Data to write
|
|
262
|
+
*/
|
|
263
|
+
write(data: string | Buffer): Promise<void>;
|
|
264
|
+
/**
|
|
265
|
+
* Get the agent ID (from continuity if available)
|
|
266
|
+
*/
|
|
267
|
+
getAgentId(): string | undefined;
|
|
268
|
+
}
|
|
269
|
+
export {};
|
|
270
|
+
//# sourceMappingURL=relay-pty-orchestrator.d.ts.map
|