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
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# Hearts - 3 Player Autonomous Agent Game
|
|
4
|
-
# Sets up three agents to play Hearts autonomously via file-based inbox
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
set -e
|
|
8
|
-
|
|
9
|
-
GAME_DIR="${GAME_DIR:-/tmp/agent-relay-hearts}"
|
|
10
|
-
PLAYER_1="Alice"
|
|
11
|
-
PLAYER_2="Bob"
|
|
12
|
-
PLAYER_3="Carol"
|
|
13
|
-
|
|
14
|
-
echo "=== Hearts 3-Player Game Setup ==="
|
|
15
|
-
echo "Game directory: $GAME_DIR"
|
|
16
|
-
echo "Players: $PLAYER_1, $PLAYER_2, $PLAYER_3"
|
|
17
|
-
echo ""
|
|
18
|
-
|
|
19
|
-
# Create directories
|
|
20
|
-
mkdir -p "$GAME_DIR/$PLAYER_1"
|
|
21
|
-
mkdir -p "$GAME_DIR/$PLAYER_2"
|
|
22
|
-
mkdir -p "$GAME_DIR/$PLAYER_3"
|
|
23
|
-
|
|
24
|
-
# Clear any existing inbox
|
|
25
|
-
echo "" > "$GAME_DIR/$PLAYER_1/inbox.md"
|
|
26
|
-
echo "" > "$GAME_DIR/$PLAYER_2/inbox.md"
|
|
27
|
-
echo "" > "$GAME_DIR/$PLAYER_3/inbox.md"
|
|
28
|
-
|
|
29
|
-
# Generate and deal cards
|
|
30
|
-
# For 3 players: remove 2 of diamonds, deal 17 cards each
|
|
31
|
-
CARDS="2C 3C 4C 5C 6C 7C 8C 9C TC JC QC KC AC 2H 3H 4H 5H 6H 7H 8H 9H TH JH QH KH AH 2S 3S 4S 5S 6S 7S 8S 9S TS JS QS KS AS 3D 4D 5D 6D 7D 8D 9D TD JD QD KD AD"
|
|
32
|
-
|
|
33
|
-
# Shuffle cards using a simple method
|
|
34
|
-
SHUFFLED=$(echo $CARDS | tr ' ' '\n' | sort -R | tr '\n' ' ')
|
|
35
|
-
CARD_ARRAY=($SHUFFLED)
|
|
36
|
-
|
|
37
|
-
# Deal 17 cards to each player
|
|
38
|
-
HAND_1="${CARD_ARRAY[@]:0:17}"
|
|
39
|
-
HAND_2="${CARD_ARRAY[@]:17:17}"
|
|
40
|
-
HAND_3="${CARD_ARRAY[@]:34:17}"
|
|
41
|
-
|
|
42
|
-
# Create common game rules file
|
|
43
|
-
cat > "$GAME_DIR/GAME_RULES.md" << 'EOF'
|
|
44
|
-
# Hearts - 3 Player Rules
|
|
45
|
-
|
|
46
|
-
## Overview
|
|
47
|
-
Hearts is a trick-taking card game where you try to AVOID points.
|
|
48
|
-
|
|
49
|
-
## Card Values
|
|
50
|
-
- Suits: Clubs (C), Diamonds (D), Spades (S), Hearts (H)
|
|
51
|
-
- Ranks: 2-9, T(10), J, Q, K, A (low to high)
|
|
52
|
-
- Card notation: RankSuit (e.g., 2C = 2 of Clubs, QS = Queen of Spades)
|
|
53
|
-
|
|
54
|
-
## Scoring
|
|
55
|
-
- Each Heart: 1 point
|
|
56
|
-
- Queen of Spades (QS): 13 points
|
|
57
|
-
- **Goal: Get the LOWEST score**
|
|
58
|
-
|
|
59
|
-
## Special Rule: Shooting the Moon
|
|
60
|
-
If you take ALL hearts AND the Queen of Spades in one round:
|
|
61
|
-
- You score 0 points
|
|
62
|
-
- All opponents get 26 points each
|
|
63
|
-
|
|
64
|
-
## Gameplay
|
|
65
|
-
|
|
66
|
-
### 1. Passing Phase
|
|
67
|
-
- Pass 3 cards to the player on your left
|
|
68
|
-
- Round 1: Alice→Bob, Bob→Carol, Carol→Alice
|
|
69
|
-
|
|
70
|
-
### 2. Trick Phase
|
|
71
|
-
- Player with 2 of Clubs (2C) leads first trick
|
|
72
|
-
- Players must follow suit if able
|
|
73
|
-
- If can't follow suit, can play any card
|
|
74
|
-
- Highest card of the led suit wins the trick
|
|
75
|
-
- Winner leads next trick
|
|
76
|
-
|
|
77
|
-
### 3. Hearts Breaking
|
|
78
|
-
- Cannot lead hearts until hearts have been "broken"
|
|
79
|
-
- Hearts break when someone plays a heart (because they can't follow suit)
|
|
80
|
-
|
|
81
|
-
## Turn Order
|
|
82
|
-
Alice → Bob → Carol → Alice → ...
|
|
83
|
-
|
|
84
|
-
## End of Round
|
|
85
|
-
- Round ends when all 17 tricks are played
|
|
86
|
-
- Count points taken
|
|
87
|
-
- Game ends when someone reaches 100 points
|
|
88
|
-
|
|
89
|
-
## Commands
|
|
90
|
-
|
|
91
|
-
**Wait for your turn:**
|
|
92
|
-
```bash
|
|
93
|
-
agent-relay inbox-poll -n YOUR_NAME -d /tmp/agent-relay-hearts --clear
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Play a card (to next player or broadcast):**
|
|
97
|
-
```bash
|
|
98
|
-
agent-relay inbox-write -t "NEXT_PLAYER" -f YOUR_NAME -m "PLAY: CARD" -d /tmp/agent-relay-hearts
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**Broadcast to all:**
|
|
102
|
-
```bash
|
|
103
|
-
agent-relay inbox-write -t "*" -f YOUR_NAME -m "MESSAGE" -d /tmp/agent-relay-hearts
|
|
104
|
-
```
|
|
105
|
-
EOF
|
|
106
|
-
|
|
107
|
-
# Create player-specific instruction files
|
|
108
|
-
create_player_instructions() {
|
|
109
|
-
local PLAYER=$1
|
|
110
|
-
local HAND=$2
|
|
111
|
-
local PREV=$3
|
|
112
|
-
local NEXT=$4
|
|
113
|
-
local IS_FIRST=$5
|
|
114
|
-
|
|
115
|
-
cat > "$GAME_DIR/$PLAYER/INSTRUCTIONS.md" << EOFPLAYER
|
|
116
|
-
# Hearts - You are $PLAYER
|
|
117
|
-
|
|
118
|
-
Read the game rules: \`cat /tmp/agent-relay-hearts/GAME_RULES.md\`
|
|
119
|
-
|
|
120
|
-
## Your Starting Hand (17 cards)
|
|
121
|
-
\`\`\`
|
|
122
|
-
$HAND
|
|
123
|
-
\`\`\`
|
|
124
|
-
|
|
125
|
-
## Players
|
|
126
|
-
- You: **$PLAYER**
|
|
127
|
-
- To your left (you pass TO): **$NEXT**
|
|
128
|
-
- To your right (you receive FROM): **$PREV**
|
|
129
|
-
|
|
130
|
-
## Commands
|
|
131
|
-
|
|
132
|
-
**Wait for messages:**
|
|
133
|
-
\`\`\`bash
|
|
134
|
-
agent-relay inbox-poll -n $PLAYER -d /tmp/agent-relay-hearts --clear
|
|
135
|
-
\`\`\`
|
|
136
|
-
|
|
137
|
-
**Send to next player:**
|
|
138
|
-
\`\`\`bash
|
|
139
|
-
agent-relay inbox-write -t "$NEXT" -f $PLAYER -m "YOUR_MESSAGE" -d /tmp/agent-relay-hearts
|
|
140
|
-
\`\`\`
|
|
141
|
-
|
|
142
|
-
**Broadcast to all:**
|
|
143
|
-
\`\`\`bash
|
|
144
|
-
agent-relay inbox-write -t "*" -f $PLAYER -m "YOUR_MESSAGE" -d /tmp/agent-relay-hearts
|
|
145
|
-
\`\`\`
|
|
146
|
-
|
|
147
|
-
## Game Protocol
|
|
148
|
-
|
|
149
|
-
### Phase 1: Card Passing
|
|
150
|
-
1. Choose 3 cards to pass to $NEXT
|
|
151
|
-
2. Send: \`PASS: card1 card2 card3\`
|
|
152
|
-
3. Wait to receive 3 cards from $PREV
|
|
153
|
-
4. Update your hand (remove passed, add received)
|
|
154
|
-
|
|
155
|
-
### Phase 2: Playing Tricks
|
|
156
|
-
The player with 2C leads the first trick.
|
|
157
|
-
|
|
158
|
-
**When it's your turn to play:**
|
|
159
|
-
1. Look at what's been played in this trick
|
|
160
|
-
2. If you have the led suit, you MUST play it
|
|
161
|
-
3. If you don't have the led suit, play any card
|
|
162
|
-
4. Send: \`PLAY: CARD\` (e.g., \`PLAY: 7H\`)
|
|
163
|
-
5. If you're last in trick, also announce winner and next lead
|
|
164
|
-
|
|
165
|
-
**Message format for playing:**
|
|
166
|
-
- \`PLAY: CARD\` - Your card play
|
|
167
|
-
- \`TRICK_WINNER: PLAYER\` - Who won the trick
|
|
168
|
-
- \`POINTS: {Alice: X, Bob: Y, Carol: Z}\` - Point totals
|
|
169
|
-
|
|
170
|
-
### Tracking State
|
|
171
|
-
Keep track of:
|
|
172
|
-
- Your current hand
|
|
173
|
-
- Cards played this trick
|
|
174
|
-
- Who has played
|
|
175
|
-
- Hearts broken? (true/false)
|
|
176
|
-
- Points taken this round
|
|
177
|
-
|
|
178
|
-
EOFPLAYER
|
|
179
|
-
|
|
180
|
-
if [ "$IS_FIRST" = "true" ]; then
|
|
181
|
-
cat >> "$GAME_DIR/$PLAYER/INSTRUCTIONS.md" << EOFSTART
|
|
182
|
-
|
|
183
|
-
## You Start!
|
|
184
|
-
Since you are $PLAYER, you coordinate the game start:
|
|
185
|
-
|
|
186
|
-
1. **First, wait for all pass cards:**
|
|
187
|
-
\`\`\`bash
|
|
188
|
-
agent-relay inbox-poll -n $PLAYER -d /tmp/agent-relay-hearts --clear
|
|
189
|
-
\`\`\`
|
|
190
|
-
|
|
191
|
-
2. **Send your 3 pass cards to $NEXT:**
|
|
192
|
-
\`\`\`bash
|
|
193
|
-
agent-relay inbox-write -t "$NEXT" -f $PLAYER -m "PASS: [card1] [card2] [card3]" -d /tmp/agent-relay-hearts
|
|
194
|
-
\`\`\`
|
|
195
|
-
|
|
196
|
-
3. **Wait for pass cards from $PREV**
|
|
197
|
-
|
|
198
|
-
4. **After everyone has passed, if you have 2C, lead first trick:**
|
|
199
|
-
\`\`\`bash
|
|
200
|
-
agent-relay inbox-write -t "*" -f $PLAYER -m "TRICK 1 - $PLAYER leads: PLAY: 2C" -d /tmp/agent-relay-hearts
|
|
201
|
-
\`\`\`
|
|
202
|
-
|
|
203
|
-
5. **Wait for responses and continue the game loop**
|
|
204
|
-
|
|
205
|
-
## START NOW
|
|
206
|
-
Begin by choosing 3 cards to pass and sending them to $NEXT!
|
|
207
|
-
EOFSTART
|
|
208
|
-
else
|
|
209
|
-
cat >> "$GAME_DIR/$PLAYER/INSTRUCTIONS.md" << EOFWAIT
|
|
210
|
-
|
|
211
|
-
## Waiting for Game Start
|
|
212
|
-
You will receive the first message when it's time to pass cards.
|
|
213
|
-
|
|
214
|
-
1. **Wait for instruction to pass:**
|
|
215
|
-
\`\`\`bash
|
|
216
|
-
agent-relay inbox-poll -n $PLAYER -d /tmp/agent-relay-hearts --clear
|
|
217
|
-
\`\`\`
|
|
218
|
-
|
|
219
|
-
2. **When prompted, send your 3 pass cards to $NEXT:**
|
|
220
|
-
\`\`\`bash
|
|
221
|
-
agent-relay inbox-write -t "$NEXT" -f $PLAYER -m "PASS: [card1] [card2] [card3]" -d /tmp/agent-relay-hearts
|
|
222
|
-
\`\`\`
|
|
223
|
-
|
|
224
|
-
3. **Continue following the game protocol**
|
|
225
|
-
|
|
226
|
-
## START NOW
|
|
227
|
-
Run the inbox-poll command to wait for the game to begin!
|
|
228
|
-
EOFWAIT
|
|
229
|
-
fi
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
# Create instructions for each player
|
|
233
|
-
create_player_instructions "$PLAYER_1" "$HAND_1" "$PLAYER_3" "$PLAYER_2" "true"
|
|
234
|
-
create_player_instructions "$PLAYER_2" "$HAND_2" "$PLAYER_1" "$PLAYER_3" "false"
|
|
235
|
-
create_player_instructions "$PLAYER_3" "$HAND_3" "$PLAYER_2" "$PLAYER_1" "false"
|
|
236
|
-
|
|
237
|
-
echo "Created game files:"
|
|
238
|
-
echo " - $GAME_DIR/GAME_RULES.md"
|
|
239
|
-
echo " - $GAME_DIR/$PLAYER_1/INSTRUCTIONS.md (Hand: $HAND_1)"
|
|
240
|
-
echo " - $GAME_DIR/$PLAYER_2/INSTRUCTIONS.md (Hand: $HAND_2)"
|
|
241
|
-
echo " - $GAME_DIR/$PLAYER_3/INSTRUCTIONS.md (Hand: $HAND_3)"
|
|
242
|
-
echo ""
|
|
243
|
-
echo "=== TO START THE GAME ==="
|
|
244
|
-
echo ""
|
|
245
|
-
echo "Make sure agent-relay is built:"
|
|
246
|
-
echo " cd $(dirname "$0")/../.."
|
|
247
|
-
echo " npm run build"
|
|
248
|
-
echo ""
|
|
249
|
-
echo "Open THREE terminal windows and run Claude/Codex in each:"
|
|
250
|
-
echo ""
|
|
251
|
-
echo "Terminal 1 ($PLAYER_1 - coordinates start):"
|
|
252
|
-
echo " claude"
|
|
253
|
-
echo " # Say: Read $GAME_DIR/$PLAYER_1/INSTRUCTIONS.md and start the Hearts game"
|
|
254
|
-
echo ""
|
|
255
|
-
echo "Terminal 2 ($PLAYER_2):"
|
|
256
|
-
echo " claude"
|
|
257
|
-
echo " # Say: Read $GAME_DIR/$PLAYER_2/INSTRUCTIONS.md and play Hearts"
|
|
258
|
-
echo ""
|
|
259
|
-
echo "Terminal 3 ($PLAYER_3):"
|
|
260
|
-
echo " claude"
|
|
261
|
-
echo " # Say: Read $GAME_DIR/$PLAYER_3/INSTRUCTIONS.md and play Hearts"
|
|
262
|
-
echo ""
|
|
263
|
-
echo "The three agents will autonomously play Hearts!"
|
|
264
|
-
echo ""
|
package/scripts/manual-qa.sh
DELETED
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# Agent Relay Cloud - Manual QA Testing Setup
|
|
4
|
-
#
|
|
5
|
-
# This script sets up everything for manual browser-based QA testing:
|
|
6
|
-
# - PostgreSQL and Redis (via Docker)
|
|
7
|
-
# - Cloud API server (local, with test mode)
|
|
8
|
-
# - Daemon simulators generating test data
|
|
9
|
-
# - Creates test user for dashboard access
|
|
10
|
-
#
|
|
11
|
-
# Usage:
|
|
12
|
-
# ./scripts/manual-qa.sh # Start everything
|
|
13
|
-
# ./scripts/manual-qa.sh --stop # Stop all services
|
|
14
|
-
# ./scripts/manual-qa.sh --create-data # Create test data only
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
set -e
|
|
18
|
-
|
|
19
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
-
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
21
|
-
|
|
22
|
-
# Colors
|
|
23
|
-
RED='\033[0;31m'
|
|
24
|
-
GREEN='\033[0;32m'
|
|
25
|
-
YELLOW='\033[1;33m'
|
|
26
|
-
BLUE='\033[0;34m'
|
|
27
|
-
CYAN='\033[0;36m'
|
|
28
|
-
NC='\033[0m'
|
|
29
|
-
|
|
30
|
-
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
31
|
-
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
32
|
-
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
33
|
-
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
34
|
-
log_header() { echo -e "\n${CYAN}=== $1 ===${NC}\n"; }
|
|
35
|
-
|
|
36
|
-
# Parse arguments
|
|
37
|
-
STOP_ONLY=false
|
|
38
|
-
CREATE_DATA_ONLY=false
|
|
39
|
-
|
|
40
|
-
while [[ "$#" -gt 0 ]]; do
|
|
41
|
-
case $1 in
|
|
42
|
-
--stop) STOP_ONLY=true ;;
|
|
43
|
-
--create-data) CREATE_DATA_ONLY=true ;;
|
|
44
|
-
-h|--help)
|
|
45
|
-
echo "Usage: $0 [options]"
|
|
46
|
-
echo ""
|
|
47
|
-
echo "Options:"
|
|
48
|
-
echo " --stop Stop all services"
|
|
49
|
-
echo " --create-data Create test data only (assumes services running)"
|
|
50
|
-
echo " -h, --help Show this help"
|
|
51
|
-
exit 0
|
|
52
|
-
;;
|
|
53
|
-
*) log_error "Unknown option: $1"; exit 1 ;;
|
|
54
|
-
esac
|
|
55
|
-
shift
|
|
56
|
-
done
|
|
57
|
-
|
|
58
|
-
cd "$PROJECT_DIR"
|
|
59
|
-
|
|
60
|
-
# Stop services
|
|
61
|
-
stop_services() {
|
|
62
|
-
log_header "Stopping Services"
|
|
63
|
-
|
|
64
|
-
# Stop daemon simulators
|
|
65
|
-
pkill -f "daemon-simulator" 2>/dev/null || true
|
|
66
|
-
|
|
67
|
-
# Stop cloud server
|
|
68
|
-
pkill -f "node dist/cloud/index.js" 2>/dev/null || true
|
|
69
|
-
|
|
70
|
-
# Stop Docker services
|
|
71
|
-
docker compose -f docker-compose.dev.yml down 2>/dev/null || true
|
|
72
|
-
|
|
73
|
-
log_success "All services stopped"
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if [ "$STOP_ONLY" = true ]; then
|
|
77
|
-
stop_services
|
|
78
|
-
exit 0
|
|
79
|
-
fi
|
|
80
|
-
|
|
81
|
-
# Create test data
|
|
82
|
-
create_test_data() {
|
|
83
|
-
log_header "Creating Test Data"
|
|
84
|
-
|
|
85
|
-
local API_URL="${1:-http://localhost:3000}"
|
|
86
|
-
|
|
87
|
-
# Wait for API to be ready
|
|
88
|
-
log_info "Waiting for API..."
|
|
89
|
-
for i in {1..30}; do
|
|
90
|
-
if curl -sf "$API_URL/health" >/dev/null 2>&1; then
|
|
91
|
-
break
|
|
92
|
-
fi
|
|
93
|
-
if [ $i -eq 30 ]; then
|
|
94
|
-
log_error "API not available"
|
|
95
|
-
return 1
|
|
96
|
-
fi
|
|
97
|
-
sleep 1
|
|
98
|
-
done
|
|
99
|
-
|
|
100
|
-
# Create test user
|
|
101
|
-
log_info "Creating test user..."
|
|
102
|
-
USER_RESPONSE=$(curl -sf -X POST "$API_URL/api/test/create-user" \
|
|
103
|
-
-H "Content-Type: application/json" \
|
|
104
|
-
-d '{"email": "qa@test.local", "name": "QA Tester"}' 2>/dev/null || echo "")
|
|
105
|
-
|
|
106
|
-
if [ -n "$USER_RESPONSE" ]; then
|
|
107
|
-
USER_ID=$(echo "$USER_RESPONSE" | grep -o '"userId":"[^"]*"' | cut -d'"' -f4)
|
|
108
|
-
log_success "Created test user: $USER_ID"
|
|
109
|
-
else
|
|
110
|
-
log_warn "Could not create test user (may already exist or test mode disabled)"
|
|
111
|
-
fi
|
|
112
|
-
|
|
113
|
-
# Create test daemons
|
|
114
|
-
log_info "Creating test daemons..."
|
|
115
|
-
|
|
116
|
-
for i in 1 2 3; do
|
|
117
|
-
DAEMON_RESPONSE=$(curl -sf -X POST "$API_URL/api/test/create-daemon" \
|
|
118
|
-
-H "Content-Type: application/json" \
|
|
119
|
-
-d "{\"name\": \"qa-daemon-$i\", \"machineId\": \"qa-machine-$i\"}" 2>/dev/null || echo "")
|
|
120
|
-
|
|
121
|
-
if [ -n "$DAEMON_RESPONSE" ]; then
|
|
122
|
-
DAEMON_ID=$(echo "$DAEMON_RESPONSE" | grep -o '"daemonId":"[^"]*"' | cut -d'"' -f4)
|
|
123
|
-
API_KEY=$(echo "$DAEMON_RESPONSE" | grep -o '"apiKey":"[^"]*"' | cut -d'"' -f4)
|
|
124
|
-
log_success "Created daemon $i: $DAEMON_ID"
|
|
125
|
-
|
|
126
|
-
# Save API key for simulator
|
|
127
|
-
echo "$API_KEY" > "/tmp/qa-daemon-$i.key"
|
|
128
|
-
fi
|
|
129
|
-
done
|
|
130
|
-
|
|
131
|
-
log_success "Test data created!"
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if [ "$CREATE_DATA_ONLY" = true ]; then
|
|
135
|
-
create_test_data
|
|
136
|
-
exit 0
|
|
137
|
-
fi
|
|
138
|
-
|
|
139
|
-
# Main setup
|
|
140
|
-
log_header "Agent Relay - Manual QA Setup"
|
|
141
|
-
|
|
142
|
-
# Check prerequisites
|
|
143
|
-
if ! docker info >/dev/null 2>&1; then
|
|
144
|
-
log_error "Docker is not running"
|
|
145
|
-
exit 1
|
|
146
|
-
fi
|
|
147
|
-
|
|
148
|
-
if ! command -v node >/dev/null 2>&1; then
|
|
149
|
-
log_error "Node.js is required"
|
|
150
|
-
exit 1
|
|
151
|
-
fi
|
|
152
|
-
|
|
153
|
-
# Step 1: Build if needed
|
|
154
|
-
if [ ! -d "dist" ]; then
|
|
155
|
-
log_header "Building Project"
|
|
156
|
-
npm run build
|
|
157
|
-
fi
|
|
158
|
-
|
|
159
|
-
# Step 2: Start infrastructure
|
|
160
|
-
log_header "Starting Infrastructure"
|
|
161
|
-
|
|
162
|
-
docker compose -f docker-compose.dev.yml up -d postgres redis
|
|
163
|
-
|
|
164
|
-
log_info "Waiting for PostgreSQL..."
|
|
165
|
-
for i in {1..30}; do
|
|
166
|
-
if docker compose -f docker-compose.dev.yml exec -T postgres pg_isready -U agent_relay >/dev/null 2>&1; then
|
|
167
|
-
log_success "PostgreSQL is ready"
|
|
168
|
-
break
|
|
169
|
-
fi
|
|
170
|
-
if [ $i -eq 30 ]; then
|
|
171
|
-
log_error "PostgreSQL failed to start"
|
|
172
|
-
exit 1
|
|
173
|
-
fi
|
|
174
|
-
sleep 1
|
|
175
|
-
done
|
|
176
|
-
|
|
177
|
-
log_info "Waiting for Redis..."
|
|
178
|
-
for i in {1..30}; do
|
|
179
|
-
if docker compose -f docker-compose.dev.yml exec -T redis redis-cli ping >/dev/null 2>&1; then
|
|
180
|
-
log_success "Redis is ready"
|
|
181
|
-
break
|
|
182
|
-
fi
|
|
183
|
-
if [ $i -eq 30 ]; then
|
|
184
|
-
log_error "Redis failed to start"
|
|
185
|
-
exit 1
|
|
186
|
-
fi
|
|
187
|
-
sleep 1
|
|
188
|
-
done
|
|
189
|
-
|
|
190
|
-
# Step 3: Start Cloud API server
|
|
191
|
-
log_header "Starting Cloud API Server"
|
|
192
|
-
|
|
193
|
-
export NODE_ENV=development
|
|
194
|
-
export PORT=3000
|
|
195
|
-
export PUBLIC_URL=http://localhost:3000
|
|
196
|
-
export DATABASE_URL="postgres://agent_relay:dev_password@localhost:5432/agent_relay"
|
|
197
|
-
export REDIS_URL="redis://localhost:6379"
|
|
198
|
-
export SESSION_SECRET="dev-session-secret"
|
|
199
|
-
export VAULT_MASTER_KEY="ZGV2LXZhdWx0LWtleS1jaGFuZ2UtaW4tcHJvZHVjdGlvbg=="
|
|
200
|
-
export RELAY_CLOUD_ENABLED=true
|
|
201
|
-
export RELAY_MEMORY_MONITORING=true
|
|
202
|
-
|
|
203
|
-
# Start cloud server in background
|
|
204
|
-
node dist/cloud/index.js &
|
|
205
|
-
CLOUD_PID=$!
|
|
206
|
-
echo $CLOUD_PID > /tmp/cloud-server.pid
|
|
207
|
-
|
|
208
|
-
log_info "Cloud server starting (PID: $CLOUD_PID)..."
|
|
209
|
-
|
|
210
|
-
# Wait for cloud server
|
|
211
|
-
for i in {1..60}; do
|
|
212
|
-
if curl -sf http://localhost:3000/health >/dev/null 2>&1; then
|
|
213
|
-
log_success "Cloud API server is ready"
|
|
214
|
-
break
|
|
215
|
-
fi
|
|
216
|
-
if [ $i -eq 60 ]; then
|
|
217
|
-
log_error "Cloud server failed to start"
|
|
218
|
-
exit 1
|
|
219
|
-
fi
|
|
220
|
-
sleep 1
|
|
221
|
-
done
|
|
222
|
-
|
|
223
|
-
# Step 4: Create test data
|
|
224
|
-
create_test_data "http://localhost:3000"
|
|
225
|
-
|
|
226
|
-
# Step 5: Start daemon simulators
|
|
227
|
-
log_header "Starting Daemon Simulators"
|
|
228
|
-
|
|
229
|
-
# Check if tsx is available, otherwise use ts-node or compile
|
|
230
|
-
if command -v tsx >/dev/null 2>&1; then
|
|
231
|
-
TSX_CMD="tsx"
|
|
232
|
-
elif command -v ts-node >/dev/null 2>&1; then
|
|
233
|
-
TSX_CMD="ts-node"
|
|
234
|
-
else
|
|
235
|
-
log_warn "No TypeScript runner found, skipping simulators"
|
|
236
|
-
TSX_CMD=""
|
|
237
|
-
fi
|
|
238
|
-
|
|
239
|
-
if [ -n "$TSX_CMD" ] && [ -f "test/cloud/daemon-simulator.ts" ]; then
|
|
240
|
-
# Start simulator 1 - normal operation
|
|
241
|
-
DAEMON_NAME=qa-daemon-1 \
|
|
242
|
-
CLOUD_API_URL=http://localhost:3000 \
|
|
243
|
-
AGENT_COUNT=3 \
|
|
244
|
-
REPORT_INTERVAL_MS=5000 \
|
|
245
|
-
SIMULATE_MEMORY_GROWTH=false \
|
|
246
|
-
$TSX_CMD test/cloud/daemon-simulator.ts &
|
|
247
|
-
echo $! > /tmp/simulator-1.pid
|
|
248
|
-
log_info "Started simulator 1 (PID: $!)"
|
|
249
|
-
|
|
250
|
-
# Start simulator 2 - memory growth
|
|
251
|
-
DAEMON_NAME=qa-daemon-2 \
|
|
252
|
-
CLOUD_API_URL=http://localhost:3000 \
|
|
253
|
-
AGENT_COUNT=2 \
|
|
254
|
-
REPORT_INTERVAL_MS=5000 \
|
|
255
|
-
SIMULATE_MEMORY_GROWTH=true \
|
|
256
|
-
$TSX_CMD test/cloud/daemon-simulator.ts &
|
|
257
|
-
echo $! > /tmp/simulator-2.pid
|
|
258
|
-
log_info "Started simulator 2 (PID: $!)"
|
|
259
|
-
|
|
260
|
-
sleep 3
|
|
261
|
-
log_success "Daemon simulators running"
|
|
262
|
-
else
|
|
263
|
-
log_warn "Daemon simulators not started (tsx/ts-node not available)"
|
|
264
|
-
fi
|
|
265
|
-
|
|
266
|
-
# Done!
|
|
267
|
-
log_header "Manual QA Environment Ready!"
|
|
268
|
-
|
|
269
|
-
echo -e "${GREEN}Access Points:${NC}"
|
|
270
|
-
echo " - Dashboard: http://localhost:3000"
|
|
271
|
-
echo " - API Health: http://localhost:3000/health"
|
|
272
|
-
echo " - Metrics: http://localhost:3000/metrics"
|
|
273
|
-
echo ""
|
|
274
|
-
echo -e "${GREEN}Test Endpoints:${NC}"
|
|
275
|
-
echo " - GET /api/test/status - Check test mode"
|
|
276
|
-
echo " - POST /api/test/create-user - Create test user"
|
|
277
|
-
echo " - POST /api/test/create-daemon - Create test daemon"
|
|
278
|
-
echo ""
|
|
279
|
-
echo -e "${GREEN}Database Access:${NC}"
|
|
280
|
-
echo " psql postgres://agent_relay:dev_password@localhost:5432/agent_relay"
|
|
281
|
-
echo ""
|
|
282
|
-
echo -e "${GREEN}Redis Access:${NC}"
|
|
283
|
-
echo " redis-cli -h localhost -p 6379"
|
|
284
|
-
echo ""
|
|
285
|
-
echo -e "${YELLOW}Note:${NC} OAuth is bypassed in test mode. Use /api/test endpoints to create users."
|
|
286
|
-
echo ""
|
|
287
|
-
echo -e "To stop: ${CYAN}./scripts/manual-qa.sh --stop${NC}"
|
|
288
|
-
echo ""
|
|
289
|
-
|
|
290
|
-
# Keep script running to show logs
|
|
291
|
-
log_info "Showing cloud server logs (Ctrl+C to exit, services keep running)..."
|
|
292
|
-
echo ""
|
|
293
|
-
tail -f /dev/null
|