agent-relay 1.2.0 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +3 -0
- package/.nvmrc +1 -0
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
- package/.trajectories/index.json +314 -0
- package/ARCHITECTURE.md +1245 -0
- package/TESTING.md +278 -0
- package/deploy/init-db.sql +5 -0
- package/deploy/scripts/setup-fly-workspaces.sh +69 -0
- package/deploy/scripts/setup-railway.sh +75 -0
- package/deploy/workspace/entrypoint-browser.sh +118 -0
- package/deploy/workspace/entrypoint.sh +348 -0
- package/deploy/workspace/git-credential-relay +111 -0
- package/dist/cli/index.js +218 -1
- package/dist/cloud/api/billing.js +30 -9
- package/dist/cloud/api/codex-auth-helper.d.ts +15 -0
- package/dist/cloud/api/codex-auth-helper.js +100 -0
- package/dist/cloud/api/git.js +24 -3
- package/dist/cloud/api/onboarding.js +15 -2
- package/dist/cloud/api/repos.d.ts +1 -0
- package/dist/cloud/api/repos.js +186 -0
- package/dist/cloud/api/webhooks.d.ts +1 -0
- package/dist/cloud/api/webhooks.js +149 -0
- package/dist/cloud/api/workspaces.js +97 -6
- package/dist/cloud/billing/plans.js +19 -19
- package/dist/cloud/provisioner/index.d.ts +32 -0
- package/dist/cloud/provisioner/index.js +362 -21
- package/dist/cloud/server.js +6 -1
- package/dist/cloud/services/nango.d.ts +60 -0
- package/dist/cloud/services/nango.js +153 -0
- package/dist/cloud/services/planLimits.d.ts +22 -0
- package/dist/cloud/services/planLimits.js +58 -5
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/{page-56a8b4616a90dc43.js → page-abb9ab2d329f56e9.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/login/{page-3eac37ea6f5dd153.js → page-c22d080201cbd9fb.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/{page-1081dd190a331a91.js → page-67a3e98d9a43a6ed.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/{page-daf87e86f783f980.js → page-77e9c65420a06cfb.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/signup/{page-fee4ed1709070bcd.js → page-68d34f50baa8ab6b.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/{main-app-5d692157a8eb1fd9.js → main-app-6e8e8d3ef4e0192a.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/{main-97850e03d723ea8c.js → main-ed4e1fb6f29c34cf.js} +1 -1
- package/dist/dashboard/out/_next/static/css/7c3ae9e8617d42a5.css +1 -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 -1
- package/dist/dashboard/out/app.txt +2 -2
- package/dist/dashboard/out/connect-repos.html +1 -1
- package/dist/dashboard/out/connect-repos.txt +2 -2
- package/dist/dashboard/out/history.html +1 -1
- package/dist/dashboard/out/history.txt +2 -2
- package/dist/dashboard/out/index.html +1 -1
- package/dist/dashboard/out/index.txt +2 -2
- package/dist/dashboard/out/login.html +2 -2
- package/dist/dashboard/out/login.txt +2 -2
- package/dist/dashboard/out/metrics.html +1 -1
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +3 -3
- package/dist/dashboard/out/pricing.txt +2 -2
- package/dist/dashboard/out/providers.html +1 -1
- package/dist/dashboard/out/providers.txt +2 -2
- package/dist/dashboard/out/signup.html +2 -2
- package/dist/dashboard/out/signup.txt +2 -2
- package/package.json +2 -11
- package/test-push.txt +1 -0
- package/bin/tmux +0 -0
- package/dist/bridge/config.d.ts.map +0 -1
- package/dist/bridge/config.js.map +0 -1
- package/dist/bridge/index.d.ts.map +0 -1
- package/dist/bridge/index.js.map +0 -1
- package/dist/bridge/multi-project-client.d.ts.map +0 -1
- package/dist/bridge/multi-project-client.js.map +0 -1
- package/dist/bridge/shadow-cli.d.ts.map +0 -1
- package/dist/bridge/shadow-cli.js.map +0 -1
- package/dist/bridge/shadow-config.d.ts.map +0 -1
- package/dist/bridge/shadow-config.js.map +0 -1
- package/dist/bridge/spawner.d.ts.map +0 -1
- package/dist/bridge/spawner.js.map +0 -1
- package/dist/bridge/teams-config.d.ts.map +0 -1
- package/dist/bridge/teams-config.js.map +0 -1
- package/dist/bridge/types.d.ts.map +0 -1
- package/dist/bridge/types.js.map +0 -1
- package/dist/bridge/utils.d.ts.map +0 -1
- package/dist/bridge/utils.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cloud/api/auth.d.ts.map +0 -1
- package/dist/cloud/api/auth.js.map +0 -1
- package/dist/cloud/api/billing.d.ts.map +0 -1
- package/dist/cloud/api/billing.js.map +0 -1
- package/dist/cloud/api/cli-pty-runner.d.ts.map +0 -1
- package/dist/cloud/api/cli-pty-runner.js.map +0 -1
- package/dist/cloud/api/coordinators.d.ts.map +0 -1
- package/dist/cloud/api/coordinators.js.map +0 -1
- package/dist/cloud/api/daemons.d.ts.map +0 -1
- package/dist/cloud/api/daemons.js.map +0 -1
- package/dist/cloud/api/generic-webhooks.d.ts.map +0 -1
- package/dist/cloud/api/generic-webhooks.js.map +0 -1
- package/dist/cloud/api/git.d.ts.map +0 -1
- package/dist/cloud/api/git.js.map +0 -1
- package/dist/cloud/api/github-app.d.ts.map +0 -1
- package/dist/cloud/api/github-app.js.map +0 -1
- package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
- package/dist/cloud/api/middleware/planLimits.js.map +0 -1
- package/dist/cloud/api/monitoring.d.ts.map +0 -1
- package/dist/cloud/api/monitoring.js.map +0 -1
- package/dist/cloud/api/nango-auth.d.ts.map +0 -1
- package/dist/cloud/api/nango-auth.js.map +0 -1
- package/dist/cloud/api/onboarding.d.ts.map +0 -1
- package/dist/cloud/api/onboarding.js.map +0 -1
- package/dist/cloud/api/policy.d.ts.map +0 -1
- package/dist/cloud/api/policy.js.map +0 -1
- package/dist/cloud/api/providers.d.ts.map +0 -1
- package/dist/cloud/api/providers.js.map +0 -1
- package/dist/cloud/api/repos.d.ts.map +0 -1
- package/dist/cloud/api/repos.js.map +0 -1
- package/dist/cloud/api/teams.d.ts.map +0 -1
- package/dist/cloud/api/teams.js.map +0 -1
- package/dist/cloud/api/test-helpers.d.ts.map +0 -1
- package/dist/cloud/api/test-helpers.js.map +0 -1
- package/dist/cloud/api/usage.d.ts.map +0 -1
- package/dist/cloud/api/usage.js.map +0 -1
- package/dist/cloud/api/webhooks.d.ts.map +0 -1
- package/dist/cloud/api/webhooks.js.map +0 -1
- package/dist/cloud/api/workspaces.d.ts.map +0 -1
- package/dist/cloud/api/workspaces.js.map +0 -1
- package/dist/cloud/billing/index.d.ts.map +0 -1
- package/dist/cloud/billing/index.js.map +0 -1
- package/dist/cloud/billing/plans.d.ts.map +0 -1
- package/dist/cloud/billing/plans.js.map +0 -1
- package/dist/cloud/billing/service.d.ts.map +0 -1
- package/dist/cloud/billing/service.js.map +0 -1
- package/dist/cloud/billing/types.d.ts.map +0 -1
- package/dist/cloud/billing/types.js.map +0 -1
- package/dist/cloud/config.d.ts.map +0 -1
- package/dist/cloud/config.js.map +0 -1
- package/dist/cloud/db/drizzle.d.ts.map +0 -1
- package/dist/cloud/db/drizzle.js.map +0 -1
- package/dist/cloud/db/index.d.ts.map +0 -1
- package/dist/cloud/db/index.js.map +0 -1
- package/dist/cloud/db/schema.d.ts.map +0 -1
- package/dist/cloud/db/schema.js.map +0 -1
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js.map +0 -1
- package/dist/cloud/provisioner/index.d.ts.map +0 -1
- package/dist/cloud/provisioner/index.js.map +0 -1
- package/dist/cloud/server.d.ts.map +0 -1
- package/dist/cloud/server.js.map +0 -1
- package/dist/cloud/services/auto-scaler.d.ts.map +0 -1
- package/dist/cloud/services/auto-scaler.js.map +0 -1
- package/dist/cloud/services/capacity-manager.d.ts.map +0 -1
- package/dist/cloud/services/capacity-manager.js.map +0 -1
- package/dist/cloud/services/ci-agent-spawner.d.ts.map +0 -1
- package/dist/cloud/services/ci-agent-spawner.js.map +0 -1
- package/dist/cloud/services/coordinator.d.ts.map +0 -1
- package/dist/cloud/services/coordinator.js.map +0 -1
- package/dist/cloud/services/index.d.ts.map +0 -1
- package/dist/cloud/services/index.js.map +0 -1
- package/dist/cloud/services/mention-handler.d.ts.map +0 -1
- package/dist/cloud/services/mention-handler.js.map +0 -1
- package/dist/cloud/services/nango.d.ts.map +0 -1
- package/dist/cloud/services/nango.js.map +0 -1
- package/dist/cloud/services/persistence.d.ts.map +0 -1
- package/dist/cloud/services/persistence.js.map +0 -1
- package/dist/cloud/services/planLimits.d.ts.map +0 -1
- package/dist/cloud/services/planLimits.js.map +0 -1
- package/dist/cloud/services/scaling-orchestrator.d.ts.map +0 -1
- package/dist/cloud/services/scaling-orchestrator.js.map +0 -1
- package/dist/cloud/services/scaling-policy.d.ts.map +0 -1
- package/dist/cloud/services/scaling-policy.js.map +0 -1
- package/dist/cloud/vault/index.d.ts.map +0 -1
- package/dist/cloud/vault/index.js.map +0 -1
- package/dist/cloud/webhooks/index.d.ts.map +0 -1
- package/dist/cloud/webhooks/index.js.map +0 -1
- package/dist/cloud/webhooks/parsers/github.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/github.js.map +0 -1
- package/dist/cloud/webhooks/parsers/index.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/index.js.map +0 -1
- package/dist/cloud/webhooks/parsers/linear.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/linear.js.map +0 -1
- package/dist/cloud/webhooks/parsers/slack.d.ts.map +0 -1
- package/dist/cloud/webhooks/parsers/slack.js.map +0 -1
- package/dist/cloud/webhooks/responders/github.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/github.js.map +0 -1
- package/dist/cloud/webhooks/responders/index.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/index.js.map +0 -1
- package/dist/cloud/webhooks/responders/linear.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/linear.js.map +0 -1
- package/dist/cloud/webhooks/responders/slack.d.ts.map +0 -1
- package/dist/cloud/webhooks/responders/slack.js.map +0 -1
- package/dist/cloud/webhooks/router.d.ts.map +0 -1
- package/dist/cloud/webhooks/router.js.map +0 -1
- package/dist/cloud/webhooks/rules-engine.d.ts.map +0 -1
- package/dist/cloud/webhooks/rules-engine.js.map +0 -1
- package/dist/cloud/webhooks/types.d.ts.map +0 -1
- package/dist/cloud/webhooks/types.js.map +0 -1
- package/dist/continuity/formatter.d.ts.map +0 -1
- package/dist/continuity/formatter.js.map +0 -1
- package/dist/continuity/handoff-store.d.ts.map +0 -1
- package/dist/continuity/handoff-store.js.map +0 -1
- package/dist/continuity/index.d.ts.map +0 -1
- package/dist/continuity/index.js.map +0 -1
- package/dist/continuity/ledger-store.d.ts.map +0 -1
- package/dist/continuity/ledger-store.js.map +0 -1
- package/dist/continuity/manager.d.ts.map +0 -1
- package/dist/continuity/manager.js.map +0 -1
- package/dist/continuity/parser.d.ts.map +0 -1
- package/dist/continuity/parser.js.map +0 -1
- package/dist/continuity/types.d.ts.map +0 -1
- package/dist/continuity/types.js.map +0 -1
- package/dist/daemon/agent-manager.d.ts.map +0 -1
- package/dist/daemon/agent-manager.js.map +0 -1
- package/dist/daemon/agent-registry.d.ts.map +0 -1
- package/dist/daemon/agent-registry.js.map +0 -1
- package/dist/daemon/api.d.ts.map +0 -1
- package/dist/daemon/api.js.map +0 -1
- package/dist/daemon/auth.d.ts.map +0 -1
- package/dist/daemon/auth.js.map +0 -1
- package/dist/daemon/cli-auth.d.ts.map +0 -1
- package/dist/daemon/cli-auth.js.map +0 -1
- package/dist/daemon/cloud-sync.d.ts.map +0 -1
- package/dist/daemon/cloud-sync.js.map +0 -1
- package/dist/daemon/connection.d.ts.map +0 -1
- package/dist/daemon/connection.js.map +0 -1
- package/dist/daemon/index.d.ts.map +0 -1
- package/dist/daemon/index.js.map +0 -1
- package/dist/daemon/orchestrator.d.ts.map +0 -1
- package/dist/daemon/orchestrator.js.map +0 -1
- package/dist/daemon/registry.d.ts.map +0 -1
- package/dist/daemon/registry.js.map +0 -1
- package/dist/daemon/router.d.ts.map +0 -1
- package/dist/daemon/router.js.map +0 -1
- package/dist/daemon/server.d.ts.map +0 -1
- package/dist/daemon/server.js.map +0 -1
- package/dist/daemon/services/browser-testing.d.ts.map +0 -1
- package/dist/daemon/services/browser-testing.js.map +0 -1
- package/dist/daemon/services/container-spawner.d.ts.map +0 -1
- package/dist/daemon/services/container-spawner.js.map +0 -1
- package/dist/daemon/types.d.ts.map +0 -1
- package/dist/daemon/types.js.map +0 -1
- package/dist/daemon/workspace-manager.d.ts.map +0 -1
- package/dist/daemon/workspace-manager.js.map +0 -1
- package/dist/dashboard/out/_next/static/chunks/480-2d4111711d4e473c.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/766-c3a14283c88d815b.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/page-7120be68bea622f3.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-dc2e3a1a22478efc.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-4d72d5a5d8a9b618.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-b68a681526eb145e.js +0 -1
- package/dist/dashboard/out/_next/static/css/411ce23ffeae9f76.css +0 -1
- package/dist/dashboard-server/metrics.d.ts.map +0 -1
- package/dist/dashboard-server/metrics.js.map +0 -1
- package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
- package/dist/dashboard-server/needs-attention.js.map +0 -1
- package/dist/dashboard-server/server.d.ts.map +0 -1
- package/dist/dashboard-server/server.js.map +0 -1
- package/dist/dashboard-server/start.d.ts.map +0 -1
- package/dist/dashboard-server/start.js.map +0 -1
- package/dist/hooks/emitter.d.ts.map +0 -1
- package/dist/hooks/emitter.js.map +0 -1
- package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
- package/dist/hooks/inbox-check/hook.js.map +0 -1
- package/dist/hooks/inbox-check/index.d.ts.map +0 -1
- package/dist/hooks/inbox-check/index.js.map +0 -1
- package/dist/hooks/inbox-check/types.d.ts.map +0 -1
- package/dist/hooks/inbox-check/types.js.map +0 -1
- package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
- package/dist/hooks/inbox-check/utils.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/registry.d.ts.map +0 -1
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/trajectory-hooks.d.ts.map +0 -1
- package/dist/hooks/trajectory-hooks.js.map +0 -1
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/memory/adapters/index.d.ts.map +0 -1
- package/dist/memory/adapters/index.js.map +0 -1
- package/dist/memory/adapters/inmemory.d.ts.map +0 -1
- package/dist/memory/adapters/inmemory.js.map +0 -1
- package/dist/memory/adapters/supermemory.d.ts.map +0 -1
- package/dist/memory/adapters/supermemory.js.map +0 -1
- package/dist/memory/factory.d.ts.map +0 -1
- package/dist/memory/factory.js.map +0 -1
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/memory-hooks.d.ts.map +0 -1
- package/dist/memory/memory-hooks.js.map +0 -1
- package/dist/memory/service.d.ts.map +0 -1
- package/dist/memory/service.js.map +0 -1
- package/dist/memory/types.d.ts.map +0 -1
- package/dist/memory/types.js.map +0 -1
- package/dist/policy/agent-policy.d.ts.map +0 -1
- package/dist/policy/agent-policy.js.map +0 -1
- package/dist/policy/cloud-policy-fetcher.d.ts.map +0 -1
- package/dist/policy/cloud-policy-fetcher.js.map +0 -1
- package/dist/protocol/framing.d.ts.map +0 -1
- package/dist/protocol/framing.js.map +0 -1
- package/dist/protocol/index.d.ts.map +0 -1
- package/dist/protocol/index.js.map +0 -1
- package/dist/protocol/types.d.ts.map +0 -1
- package/dist/protocol/types.js.map +0 -1
- package/dist/resiliency/context-persistence.d.ts.map +0 -1
- package/dist/resiliency/context-persistence.js.map +0 -1
- package/dist/resiliency/crash-insights.d.ts.map +0 -1
- package/dist/resiliency/crash-insights.js.map +0 -1
- package/dist/resiliency/gossip-health.d.ts.map +0 -1
- package/dist/resiliency/gossip-health.js.map +0 -1
- package/dist/resiliency/health-monitor.d.ts.map +0 -1
- package/dist/resiliency/health-monitor.js.map +0 -1
- package/dist/resiliency/index.d.ts.map +0 -1
- package/dist/resiliency/index.js.map +0 -1
- package/dist/resiliency/leader-watchdog.d.ts.map +0 -1
- package/dist/resiliency/leader-watchdog.js.map +0 -1
- package/dist/resiliency/logger.d.ts.map +0 -1
- package/dist/resiliency/logger.js.map +0 -1
- package/dist/resiliency/memory-monitor.d.ts.map +0 -1
- package/dist/resiliency/memory-monitor.js.map +0 -1
- package/dist/resiliency/metrics.d.ts.map +0 -1
- package/dist/resiliency/metrics.js.map +0 -1
- package/dist/resiliency/provider-context.d.ts.map +0 -1
- package/dist/resiliency/provider-context.js.map +0 -1
- package/dist/resiliency/stateless-lead.d.ts.map +0 -1
- package/dist/resiliency/stateless-lead.js.map +0 -1
- package/dist/resiliency/supervisor.d.ts.map +0 -1
- package/dist/resiliency/supervisor.js.map +0 -1
- package/dist/shared/cli-auth-config.d.ts.map +0 -1
- package/dist/shared/cli-auth-config.js.map +0 -1
- package/dist/state/agent-state.d.ts.map +0 -1
- package/dist/state/agent-state.js.map +0 -1
- package/dist/storage/adapter.d.ts.map +0 -1
- package/dist/storage/adapter.js.map +0 -1
- package/dist/storage/sqlite-adapter.d.ts.map +0 -1
- package/dist/storage/sqlite-adapter.js.map +0 -1
- package/dist/trajectory/config.d.ts.map +0 -1
- package/dist/trajectory/config.js.map +0 -1
- package/dist/trajectory/index.d.ts.map +0 -1
- package/dist/trajectory/index.js.map +0 -1
- package/dist/trajectory/integration.d.ts.map +0 -1
- package/dist/trajectory/integration.js.map +0 -1
- package/dist/utils/agent-config.d.ts.map +0 -1
- package/dist/utils/agent-config.js.map +0 -1
- package/dist/utils/command-resolver.d.ts.map +0 -1
- package/dist/utils/command-resolver.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/name-generator.d.ts.map +0 -1
- package/dist/utils/name-generator.js.map +0 -1
- package/dist/utils/project-namespace.d.ts.map +0 -1
- package/dist/utils/project-namespace.js.map +0 -1
- package/dist/utils/tmux-resolver.d.ts.map +0 -1
- package/dist/utils/tmux-resolver.js.map +0 -1
- package/dist/utils/update-checker.d.ts.map +0 -1
- package/dist/utils/update-checker.js.map +0 -1
- package/dist/wrapper/client.d.ts.map +0 -1
- package/dist/wrapper/client.js.map +0 -1
- package/dist/wrapper/inbox.d.ts.map +0 -1
- package/dist/wrapper/inbox.js.map +0 -1
- package/dist/wrapper/index.d.ts.map +0 -1
- package/dist/wrapper/index.js.map +0 -1
- package/dist/wrapper/parser.d.ts.map +0 -1
- package/dist/wrapper/parser.js.map +0 -1
- package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
- package/dist/wrapper/pty-wrapper.js.map +0 -1
- package/dist/wrapper/shared.d.ts.map +0 -1
- package/dist/wrapper/shared.js.map +0 -1
- package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
- package/dist/wrapper/tmux-wrapper.js.map +0 -1
- package/docs/AGENTS.md +0 -513
- package/docs/ARCHITECTURE_DECISIONS.md +0 -175
- package/docs/CLOUD-ARCHITECTURE.md +0 -804
- package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
- package/docs/CONTRIBUTING.md +0 -151
- package/docs/HOOKS_API.md +0 -394
- package/docs/INTEGRATION-GUIDE.md +0 -926
- package/docs/PROTOCOL.md +0 -325
- package/docs/WRAPPER_EVENTS.md +0 -358
- package/docs/agent-policy-snippet.md +0 -40
- package/docs/agent-relay-protocol.md +0 -238
- package/docs/agent-relay-snippet.md +0 -174
- package/docs/archive/CHANGELOG.md +0 -11
- package/docs/archive/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
- package/docs/archive/DESIGN_BRIDGE_STAFFING.md +0 -878
- package/docs/archive/DESIGN_V2.md +0 -1079
- package/docs/archive/EXECUTIVE_SUMMARY.md +0 -358
- package/docs/archive/MONETIZATION.md +0 -1679
- package/docs/archive/PROPOSAL-trajectories.md +0 -1582
- package/docs/archive/ROADMAP.md +0 -329
- package/docs/archive/SCALING_ANALYSIS.md +0 -280
- package/docs/archive/TESTING_PRESENCE_FEATURES.md +0 -327
- package/docs/archive/TMUX_IMPLEMENTATION_NOTES.md +0 -364
- package/docs/archive/TMUX_IMPROVEMENTS.md +0 -968
- package/docs/archive/dashboard-v2-plan.md +0 -179
- package/docs/archive/removable-code-analysis.md +0 -24
- package/docs/competitive/GASTOWN.md +0 -451
- package/docs/competitive/MCP_AGENT_MAIL.md +0 -389
- package/docs/competitive/OVERVIEW.md +0 -898
- package/docs/competitive/README.md +0 -34
- package/docs/competitive/TMUX_ORCHESTRATOR.md +0 -605
- package/docs/dashboard.png +0 -0
- package/docs/design/ci-failure-webhooks.md +0 -812
- package/docs/design/comprehensive-integrations.md +0 -238
- package/docs/design/e2b-sandbox-integration.md +0 -504
- package/docs/design/github-app-permissions.md +0 -264
- package/docs/guides/CLOUD.md +0 -236
- package/docs/guides/LOCAL.md +0 -535
- package/docs/guides/SELF-HOSTED.md +0 -494
- package/docs/local-testing.md +0 -428
- package/docs/proposals/continuous-claude-integration.md +0 -622
- package/docs/proposals/custom-commands.md +0 -368
- package/docs/proposals/shadow-as-subagent.md +0 -765
- package/docs/proposals/slack-bot-integration.md +0 -1457
- package/docs/tasks/global-skills-system.tasks.md +0 -230
- package/docs/tasks/webhook-integrations.tasks.md +0 -184
- package/docs/tasks/workspace-capabilities.tasks.md +0 -121
- package/docs/testing/RESILIENCY-TEST-PLAN-2026-01-01.md +0 -366
- package/scripts/cloud-setup.sh +0 -96
- package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
- package/scripts/dev/dev-team-setup.sh +0 -431
- package/scripts/e2e-test.sh +0 -119
- package/scripts/games/game-protocol.md +0 -79
- package/scripts/games/hearts-setup.sh +0 -264
- package/scripts/manual-qa.sh +0 -293
- package/scripts/run-cloud-qa.sh +0 -220
- package/scripts/test-cli-auth/Dockerfile +0 -44
- package/scripts/test-cli-auth/Dockerfile.real +0 -79
- package/scripts/test-cli-auth/README.md +0 -286
- package/scripts/test-cli-auth/ci-test-real-clis.ts +0 -251
- package/scripts/test-cli-auth/ci-test-runner.ts +0 -263
- package/scripts/test-cli-auth/mock-cli.sh +0 -147
- package/scripts/test-cli-auth/package.json +0 -14
- package/scripts/test-cli-auth/test-oauth-flow.ts +0 -220
- package/scripts/test-pty-input-auto.js +0 -222
- package/scripts/test-pty-input.js +0 -150
- package/scripts/tictactoe-setup.sh +0 -181
- /package/dist/dashboard/out/_next/static/chunks/{117-b100311aff8d5c61.js → 117-f7b8ab0809342e77.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-a13d3c2b1be45466.js → 648-5cc6e1921389a58a.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{724-73c1ee5f60abe860.js → 724-2dae7627550ab88f.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-a4973f3e3c82fb67.js → page-53b8a69f76db17d0.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
- /package/dist/dashboard/out/_next/static/{H5aWG0udPB4iOUIl_gytz → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{H5aWG0udPB4iOUIl_gytz → wPgKJtcOmTFLpUncDg16A}/_ssgManifest.js +0 -0
package/docs/CONTRIBUTING.md
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# Contributing to agent-relay
|
|
2
|
-
|
|
3
|
-
Thank you for your interest in contributing to agent-relay! This document provides guidelines for contributing to the project.
|
|
4
|
-
|
|
5
|
-
## Getting Started
|
|
6
|
-
|
|
7
|
-
### Prerequisites
|
|
8
|
-
|
|
9
|
-
- Node.js >= 18 (20+ recommended)
|
|
10
|
-
- npm
|
|
11
|
-
- macOS or Linux (Windows support is not currently tested)
|
|
12
|
-
|
|
13
|
-
### Development Setup
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
# Clone the repository
|
|
17
|
-
git clone https://github.com/khaliqgant/agent-relay.git
|
|
18
|
-
cd agent-relay
|
|
19
|
-
|
|
20
|
-
# Install dependencies
|
|
21
|
-
npm install
|
|
22
|
-
|
|
23
|
-
# Build the project
|
|
24
|
-
npm run build
|
|
25
|
-
|
|
26
|
-
# Run tests
|
|
27
|
-
npm test
|
|
28
|
-
|
|
29
|
-
# Start development mode (watch for changes)
|
|
30
|
-
npm run dev
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Project Structure
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
agent-relay/
|
|
37
|
-
├── src/
|
|
38
|
-
│ ├── cli/ # CLI commands (start, wrap, send, etc.)
|
|
39
|
-
│ ├── daemon/ # Relay daemon and message router
|
|
40
|
-
│ ├── wrapper/ # PTY wrapper and message parsing
|
|
41
|
-
│ ├── supervisor/ # Spawn-per-message agent supervisor
|
|
42
|
-
│ ├── games/ # Game engines (Hearts, Tic-tac-toe)
|
|
43
|
-
│ └── utils/ # Utilities (name generator, etc.)
|
|
44
|
-
├── examples/ # Usage examples
|
|
45
|
-
├── dist/ # Compiled output
|
|
46
|
-
└── tests/ # Test files
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## How to Contribute
|
|
50
|
-
|
|
51
|
-
### Reporting Bugs
|
|
52
|
-
|
|
53
|
-
1. Check if the bug has already been reported in [Issues](https://github.com/khaliqgant/agent-relay/issues)
|
|
54
|
-
2. If not, create a new issue with:
|
|
55
|
-
- Clear, descriptive title
|
|
56
|
-
- Steps to reproduce
|
|
57
|
-
- Expected vs actual behavior
|
|
58
|
-
- Your environment (OS, Node version)
|
|
59
|
-
- Relevant logs or error messages
|
|
60
|
-
|
|
61
|
-
### Suggesting Features
|
|
62
|
-
|
|
63
|
-
1. Check existing issues and discussions first
|
|
64
|
-
2. Open a new issue with the "feature request" label
|
|
65
|
-
3. Describe the use case and proposed solution
|
|
66
|
-
|
|
67
|
-
### Submitting Pull Requests
|
|
68
|
-
|
|
69
|
-
1. Fork the repository
|
|
70
|
-
2. Create a feature branch: `git checkout -b feature/your-feature-name`
|
|
71
|
-
3. Make your changes
|
|
72
|
-
4. Ensure tests pass: `npm test`
|
|
73
|
-
5. Ensure linting passes: `npm run lint`
|
|
74
|
-
6. Commit with a descriptive message
|
|
75
|
-
7. Push to your fork
|
|
76
|
-
8. Open a Pull Request
|
|
77
|
-
|
|
78
|
-
### Pull Request Guidelines
|
|
79
|
-
|
|
80
|
-
- Keep PRs focused on a single change
|
|
81
|
-
- Include tests for new functionality
|
|
82
|
-
- Update documentation as needed
|
|
83
|
-
- Follow existing code style
|
|
84
|
-
- Write clear commit messages
|
|
85
|
-
|
|
86
|
-
## Code Style
|
|
87
|
-
|
|
88
|
-
- TypeScript with strict mode
|
|
89
|
-
- Use ESLint configuration provided
|
|
90
|
-
- Prefer async/await over callbacks
|
|
91
|
-
- Use meaningful variable and function names
|
|
92
|
-
- Add JSDoc comments for public APIs
|
|
93
|
-
|
|
94
|
-
### Example
|
|
95
|
-
|
|
96
|
-
```typescript
|
|
97
|
-
/**
|
|
98
|
-
* Send a message to another agent.
|
|
99
|
-
* @param recipient - Target agent name or '*' for broadcast
|
|
100
|
-
* @param body - Message content
|
|
101
|
-
* @param type - Message type (default: 'message')
|
|
102
|
-
* @returns true if message was sent successfully
|
|
103
|
-
*/
|
|
104
|
-
sendMessage(recipient: string, body: string, type?: MessageType): boolean {
|
|
105
|
-
// Implementation
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## Testing
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
# Run all tests
|
|
113
|
-
npm test
|
|
114
|
-
|
|
115
|
-
# Run tests in watch mode
|
|
116
|
-
npm run test:watch
|
|
117
|
-
|
|
118
|
-
# Run specific test file
|
|
119
|
-
npm test -- src/wrapper/parser.test.ts
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Writing Tests
|
|
123
|
-
|
|
124
|
-
- Place tests next to source files (`.test.ts`) or in `tests/`
|
|
125
|
-
- Use descriptive test names
|
|
126
|
-
- Test both success and failure cases
|
|
127
|
-
- Mock external dependencies
|
|
128
|
-
|
|
129
|
-
## Documentation
|
|
130
|
-
|
|
131
|
-
- Update README.md for user-facing changes
|
|
132
|
-
- Add JSDoc comments for new public APIs
|
|
133
|
-
- Update examples if adding new features
|
|
134
|
-
- Keep `docs/PROTOCOL.md` updated for protocol changes
|
|
135
|
-
|
|
136
|
-
## Release Process
|
|
137
|
-
|
|
138
|
-
1. Update version in `package.json`
|
|
139
|
-
2. Update `docs/CHANGELOG.md`
|
|
140
|
-
3. Create a GitHub release
|
|
141
|
-
4. npm publish is automated via GitHub Actions
|
|
142
|
-
|
|
143
|
-
## Getting Help
|
|
144
|
-
|
|
145
|
-
- Open an issue for bugs or feature requests
|
|
146
|
-
- Check existing issues and documentation first
|
|
147
|
-
- Be respectful and constructive in discussions
|
|
148
|
-
|
|
149
|
-
## License
|
|
150
|
-
|
|
151
|
-
By contributing, you agree that your contributions will be licensed under the MIT License.
|
package/docs/HOOKS_API.md
DELETED
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
# Agent Relay Hooks API
|
|
2
|
-
|
|
3
|
-
**Date:** 2025-12-21
|
|
4
|
-
**Status:** Proposed
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
Hooks are a core primitive in agent-relay that allow:
|
|
9
|
-
1. **Intercepting agent output** - React to patterns, events, session lifecycle
|
|
10
|
-
2. **Injecting prompts** - Guide agent behavior automatically
|
|
11
|
-
3. **Extending with namespaces** - User-defined `@pattern:` handlers
|
|
12
|
-
|
|
13
|
-
## Pattern Namespaces
|
|
14
|
-
|
|
15
|
-
agent-relay intercepts output patterns in the format `@namespace:target message`.
|
|
16
|
-
|
|
17
|
-
### Built-in Namespaces
|
|
18
|
-
|
|
19
|
-
| Namespace | Purpose | Example |
|
|
20
|
-
|-----------|---------|---------|
|
|
21
|
-
| `@relay:` | Inter-agent messaging | `@relay:Alice Check the tests` |
|
|
22
|
-
| `@memory:` | Memory operations | `@memory:save User prefers dark mode` |
|
|
23
|
-
| `@broadcast:` | Broadcast to all | `@relay:* Status update` |
|
|
24
|
-
|
|
25
|
-
### Memory Namespace
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
@memory:save <content> # Store a memory
|
|
29
|
-
@memory:search <query> # Retrieve relevant memories
|
|
30
|
-
@memory:forget <id> # Delete a memory
|
|
31
|
-
@memory:list # List recent memories
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### User-Defined Namespaces
|
|
35
|
-
|
|
36
|
-
Users can register custom pattern handlers:
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
// relay.config.ts
|
|
40
|
-
export default {
|
|
41
|
-
patterns: {
|
|
42
|
-
// Custom namespace: @deploy:
|
|
43
|
-
deploy: {
|
|
44
|
-
handler: async (target, message, context) => {
|
|
45
|
-
if (target === 'staging') {
|
|
46
|
-
await exec('npm run deploy:staging');
|
|
47
|
-
return { inject: 'Deployed to staging successfully' };
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
// Custom namespace: @notify:
|
|
53
|
-
notify: {
|
|
54
|
-
handler: async (target, message, context) => {
|
|
55
|
-
await fetch('https://slack.com/api/post', {
|
|
56
|
-
body: JSON.stringify({ channel: target, text: message })
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Usage in agent output:
|
|
65
|
-
```
|
|
66
|
-
@deploy:staging Release v1.2.3
|
|
67
|
-
@notify:#engineering Build complete
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## Hook Lifecycle
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
74
|
-
│ HOOK LIFECYCLE │
|
|
75
|
-
│ │
|
|
76
|
-
│ SESSION START │
|
|
77
|
-
│ │ │
|
|
78
|
-
│ ▼ │
|
|
79
|
-
│ ┌─────────────────┐ │
|
|
80
|
-
│ │ onSessionStart │ → Inject initial context, load memories │
|
|
81
|
-
│ └────────┬────────┘ │
|
|
82
|
-
│ │ │
|
|
83
|
-
│ ▼ │
|
|
84
|
-
│ ┌─────────────────────────────────────────────────────────────────┐ │
|
|
85
|
-
│ │ AGENT RUNNING │ │
|
|
86
|
-
│ │ │ │
|
|
87
|
-
│ │ Agent Output ──► onOutput ──► Pattern Match? ──► Handler │ │
|
|
88
|
-
│ │ │ │ │ │
|
|
89
|
-
│ │ │ ▼ │ │
|
|
90
|
-
│ │ │ @relay: → route message │ │
|
|
91
|
-
│ │ │ @memory: → store/search │ │
|
|
92
|
-
│ │ │ @custom: → user handler │ │
|
|
93
|
-
│ │ │ │ │
|
|
94
|
-
│ │ ▼ │ │
|
|
95
|
-
│ │ onToolCall ──► Before/after tool execution │ │
|
|
96
|
-
│ │ │ │ │
|
|
97
|
-
│ │ ▼ │ │
|
|
98
|
-
│ │ onMessageReceived ──► Inject incoming relay messages │ │
|
|
99
|
-
│ │ │ │ │
|
|
100
|
-
│ │ ▼ │ │
|
|
101
|
-
│ │ onIdle ──► Periodic prompts (memory review, status) │ │
|
|
102
|
-
│ │ │ │
|
|
103
|
-
│ └─────────────────────────────────────────────────────────────────┘ │
|
|
104
|
-
│ │ │
|
|
105
|
-
│ ▼ │
|
|
106
|
-
│ ┌─────────────────┐ │
|
|
107
|
-
│ │ onSessionEnd │ → Prompt for memory save, cleanup │
|
|
108
|
-
│ └─────────────────┘ │
|
|
109
|
-
│ │
|
|
110
|
-
└─────────────────────────────────────────────────────────────────────────────┘
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Hook API
|
|
114
|
-
|
|
115
|
-
### Configuration File
|
|
116
|
-
|
|
117
|
-
```typescript
|
|
118
|
-
// relay.config.ts (in project root or ~/.config/agent-relay/)
|
|
119
|
-
import type { RelayConfig } from 'agent-relay';
|
|
120
|
-
|
|
121
|
-
export default {
|
|
122
|
-
// Pattern handlers (namespaces)
|
|
123
|
-
patterns: {
|
|
124
|
-
memory: 'builtin', // Use built-in memory handler
|
|
125
|
-
deploy: { handler: myDeployHandler },
|
|
126
|
-
},
|
|
127
|
-
|
|
128
|
-
// Lifecycle hooks
|
|
129
|
-
hooks: {
|
|
130
|
-
onSessionStart: async (ctx) => {
|
|
131
|
-
// Load relevant memories
|
|
132
|
-
const memories = await ctx.memory.search(ctx.workingDir);
|
|
133
|
-
return { inject: `Relevant context:\n${memories}` };
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
onSessionEnd: async (ctx) => {
|
|
137
|
-
return {
|
|
138
|
-
inject: `Session ending. Save any important learnings with @memory:save`
|
|
139
|
-
};
|
|
140
|
-
},
|
|
141
|
-
|
|
142
|
-
onOutput: async (output, ctx) => {
|
|
143
|
-
// Custom output processing
|
|
144
|
-
if (output.includes('ERROR')) {
|
|
145
|
-
await ctx.notify('errors', output);
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
|
|
149
|
-
onIdle: async (ctx) => {
|
|
150
|
-
// Called after 30s of no output
|
|
151
|
-
// Could prompt for status update
|
|
152
|
-
},
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
// Memory configuration
|
|
156
|
-
memory: {
|
|
157
|
-
backend: 'mem0', // or 'qdrant', 'custom'
|
|
158
|
-
autoSave: false, // Don't auto-extract, let agent decide
|
|
159
|
-
promptOnEnd: true, // Prompt to save at session end
|
|
160
|
-
},
|
|
161
|
-
} satisfies RelayConfig;
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Programmatic API
|
|
165
|
-
|
|
166
|
-
```typescript
|
|
167
|
-
import { Relay } from 'agent-relay';
|
|
168
|
-
|
|
169
|
-
const relay = new Relay({
|
|
170
|
-
name: 'MyAgent',
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
// Register pattern handler
|
|
174
|
-
relay.pattern('deploy', async (target, message, ctx) => {
|
|
175
|
-
console.log(`Deploying to ${target}: ${message}`);
|
|
176
|
-
await deploy(target);
|
|
177
|
-
return { inject: `Deployed to ${target}` };
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
// Register lifecycle hook
|
|
181
|
-
relay.on('sessionStart', async (ctx) => {
|
|
182
|
-
const memories = await loadMemories(ctx.agentId);
|
|
183
|
-
ctx.inject(`Your memories:\n${memories}`);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
relay.on('sessionEnd', async (ctx) => {
|
|
187
|
-
ctx.inject('Save important learnings with @memory:save');
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
// Start with wrapped command
|
|
191
|
-
relay.wrap('claude');
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### Hook Context
|
|
195
|
-
|
|
196
|
-
```typescript
|
|
197
|
-
interface HookContext {
|
|
198
|
-
// Agent info
|
|
199
|
-
agentId: string;
|
|
200
|
-
agentName: string;
|
|
201
|
-
sessionId: string;
|
|
202
|
-
|
|
203
|
-
// Environment
|
|
204
|
-
workingDir: string;
|
|
205
|
-
env: Record<string, string>;
|
|
206
|
-
|
|
207
|
-
// Actions
|
|
208
|
-
inject(text: string): void; // Inject text to agent stdin
|
|
209
|
-
send(to: string, msg: string): void; // Send relay message
|
|
210
|
-
|
|
211
|
-
// Built-in services
|
|
212
|
-
memory: MemoryService; // Memory operations
|
|
213
|
-
relay: RelayService; // Messaging operations
|
|
214
|
-
|
|
215
|
-
// Session state
|
|
216
|
-
output: string[]; // All output so far
|
|
217
|
-
messages: Message[]; // All relay messages
|
|
218
|
-
}
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
## Built-in Pattern Handlers
|
|
222
|
-
|
|
223
|
-
### @relay: (Messaging)
|
|
224
|
-
|
|
225
|
-
```typescript
|
|
226
|
-
// Built-in, always available
|
|
227
|
-
relay.pattern('relay', async (target, message, ctx) => {
|
|
228
|
-
if (target === '*') {
|
|
229
|
-
await ctx.relay.broadcast(message);
|
|
230
|
-
} else {
|
|
231
|
-
await ctx.relay.send(target, message);
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### @memory: (Memory Operations)
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
// Built-in when memory is configured
|
|
240
|
-
relay.pattern('memory', async (action, content, ctx) => {
|
|
241
|
-
switch (action) {
|
|
242
|
-
case 'save':
|
|
243
|
-
await ctx.memory.add(content, { agentId: ctx.agentId });
|
|
244
|
-
return { inject: `✓ Saved to memory` };
|
|
245
|
-
|
|
246
|
-
case 'search':
|
|
247
|
-
const results = await ctx.memory.search(content);
|
|
248
|
-
return { inject: `Memories:\n${format(results)}` };
|
|
249
|
-
|
|
250
|
-
case 'forget':
|
|
251
|
-
await ctx.memory.delete(content);
|
|
252
|
-
return { inject: `✓ Forgotten` };
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
## Example: Full Memory Integration
|
|
258
|
-
|
|
259
|
-
```typescript
|
|
260
|
-
// relay.config.ts
|
|
261
|
-
export default {
|
|
262
|
-
patterns: {
|
|
263
|
-
memory: 'builtin',
|
|
264
|
-
},
|
|
265
|
-
|
|
266
|
-
hooks: {
|
|
267
|
-
onSessionStart: async (ctx) => {
|
|
268
|
-
// Search for relevant context based on current directory/project
|
|
269
|
-
const projectMemories = await ctx.memory.search(
|
|
270
|
-
`project: ${ctx.workingDir}`
|
|
271
|
-
);
|
|
272
|
-
const userPrefs = await ctx.memory.search('user preferences');
|
|
273
|
-
|
|
274
|
-
if (projectMemories.length || userPrefs.length) {
|
|
275
|
-
return {
|
|
276
|
-
inject: `
|
|
277
|
-
[CONTEXT FROM MEMORY]
|
|
278
|
-
${projectMemories.map(m => `- ${m.content}`).join('\n')}
|
|
279
|
-
|
|
280
|
-
[USER PREFERENCES]
|
|
281
|
-
${userPrefs.map(m => `- ${m.content}`).join('\n')}
|
|
282
|
-
`
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
|
|
287
|
-
onSessionEnd: async (ctx) => {
|
|
288
|
-
return {
|
|
289
|
-
inject: `
|
|
290
|
-
[SESSION ENDING]
|
|
291
|
-
If you learned anything important, save it:
|
|
292
|
-
@memory:save <what you learned>
|
|
293
|
-
|
|
294
|
-
Examples:
|
|
295
|
-
@memory:save User prefers TypeScript over JavaScript
|
|
296
|
-
@memory:save This project uses Prisma for database access
|
|
297
|
-
@memory:save Auth tokens stored in httpOnly cookies
|
|
298
|
-
`
|
|
299
|
-
};
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
|
|
303
|
-
memory: {
|
|
304
|
-
backend: 'mem0',
|
|
305
|
-
config: {
|
|
306
|
-
vectorStore: { provider: 'qdrant', url: 'http://localhost:6333' },
|
|
307
|
-
embedder: { provider: 'ollama', model: 'nomic-embed-text' },
|
|
308
|
-
},
|
|
309
|
-
},
|
|
310
|
-
};
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
## Trajectory Integration
|
|
314
|
-
|
|
315
|
-
Hooks integrate naturally with trajectory tracking (PDERO paradigm):
|
|
316
|
-
|
|
317
|
-
```typescript
|
|
318
|
-
// relay.config.ts
|
|
319
|
-
export default {
|
|
320
|
-
hooks: {
|
|
321
|
-
onSessionStart: async (ctx) => {
|
|
322
|
-
// Auto-start trajectory if task is provided
|
|
323
|
-
if (ctx.task) {
|
|
324
|
-
await exec(`trail start "${ctx.task}" --agent ${ctx.agentName}`);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Load active trajectory context
|
|
328
|
-
const status = await exec('trail status --json');
|
|
329
|
-
if (status.active) {
|
|
330
|
-
return {
|
|
331
|
-
inject: `Active trajectory: ${status.task}\nPhase: ${status.phase}`
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
},
|
|
335
|
-
|
|
336
|
-
onOutput: async (output, ctx) => {
|
|
337
|
-
// Auto-detect PDERO phase transitions
|
|
338
|
-
const phases = ['planning', 'designing', 'implementing', 'testing', 'observing'];
|
|
339
|
-
for (const phase of phases) {
|
|
340
|
-
if (output.toLowerCase().includes(phase)) {
|
|
341
|
-
await exec(`trail phase ${phase.slice(0, -3)} --reason "Auto-detected"`);
|
|
342
|
-
break;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
|
|
347
|
-
onMessageReceived: async (from, body, ctx) => {
|
|
348
|
-
// Record message in trajectory
|
|
349
|
-
await exec(`trail event "Message from ${from}" --type observation`);
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
onSessionEnd: async (ctx) => {
|
|
353
|
-
return {
|
|
354
|
-
inject: `
|
|
355
|
-
[SESSION ENDING]
|
|
356
|
-
Complete your trajectory with learnings:
|
|
357
|
-
trail complete --summary "What you accomplished" --confidence 0.9
|
|
358
|
-
`
|
|
359
|
-
};
|
|
360
|
-
},
|
|
361
|
-
},
|
|
362
|
-
};
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
## Escaping Patterns
|
|
366
|
-
|
|
367
|
-
To output literal `@namespace:` without triggering handlers:
|
|
368
|
-
|
|
369
|
-
```
|
|
370
|
-
\@relay:AgentName # Outputs literally, not routed
|
|
371
|
-
\\@relay:AgentName # Outputs \@relay:AgentName
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
## Priority & Order
|
|
375
|
-
|
|
376
|
-
1. Patterns are matched in order of specificity
|
|
377
|
-
2. Built-in patterns run before user patterns (unless overridden)
|
|
378
|
-
3. Multiple handlers for same pattern run in registration order
|
|
379
|
-
4. Return `{ stop: true }` to prevent further handlers
|
|
380
|
-
|
|
381
|
-
## Next Steps
|
|
382
|
-
|
|
383
|
-
1. Implement pattern registry in agent-relay daemon
|
|
384
|
-
2. Add hook lifecycle events to wrapper
|
|
385
|
-
3. Implement @memory: built-in handler
|
|
386
|
-
4. Create relay.config.ts loader
|
|
387
|
-
5. Add trajectory hooks integration
|
|
388
|
-
6. Add documentation and examples
|
|
389
|
-
|
|
390
|
-
## Related
|
|
391
|
-
|
|
392
|
-
- [MEMORY_STACK_DECISION.md](./MEMORY_STACK_DECISION.md) - Memory backend choice
|
|
393
|
-
- [FEDERATION_PROPOSAL.md](./FEDERATION_PROPOSAL.md) - Cross-server messaging
|
|
394
|
-
- [PROPOSAL-trajectories.md](./PROPOSAL-trajectories.md) - Trajectory tracking
|