agent-relay 1.1.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/README.md +1 -1
- 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/bridge/spawner.d.ts +53 -0
- package/dist/bridge/spawner.js +203 -19
- package/dist/bridge/types.d.ts +12 -0
- package/dist/cli/index.js +618 -5
- package/dist/cloud/api/auth.d.ts +3 -2
- package/dist/cloud/api/auth.js +10 -98
- package/dist/cloud/api/billing.js +30 -9
- package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
- package/dist/cloud/api/cli-pty-runner.js +119 -0
- 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/generic-webhooks.d.ts +8 -0
- package/dist/cloud/api/generic-webhooks.js +129 -0
- package/dist/cloud/api/git.d.ts +8 -0
- package/dist/cloud/api/git.js +152 -0
- package/dist/cloud/api/github-app.d.ts +11 -0
- package/dist/cloud/api/github-app.js +189 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
- package/dist/cloud/api/middleware/planLimits.js +39 -1
- package/dist/cloud/api/monitoring.d.ts +11 -0
- package/dist/cloud/api/monitoring.js +578 -0
- package/dist/cloud/api/nango-auth.d.ts +9 -0
- package/dist/cloud/api/nango-auth.js +377 -0
- package/dist/cloud/api/onboarding.d.ts +8 -1
- package/dist/cloud/api/onboarding.js +313 -119
- package/dist/cloud/api/policy.d.ts +8 -0
- package/dist/cloud/api/policy.js +229 -0
- package/dist/cloud/api/providers.js +114 -42
- package/dist/cloud/api/repos.d.ts +1 -0
- package/dist/cloud/api/repos.js +186 -0
- package/dist/cloud/api/test-helpers.d.ts +10 -0
- package/dist/cloud/api/test-helpers.js +575 -0
- package/dist/cloud/api/webhooks.d.ts +8 -0
- package/dist/cloud/api/webhooks.js +645 -0
- package/dist/cloud/api/workspaces.js +320 -12
- package/dist/cloud/billing/plans.js +32 -19
- package/dist/cloud/billing/types.d.ts +9 -3
- package/dist/cloud/config.d.ts +9 -2
- package/dist/cloud/config.js +13 -4
- package/dist/cloud/db/drizzle.d.ts +84 -1
- package/dist/cloud/db/drizzle.js +470 -0
- package/dist/cloud/db/index.d.ts +9 -4
- package/dist/cloud/db/index.js +11 -3
- package/dist/cloud/db/schema.d.ts +3283 -556
- package/dist/cloud/db/schema.js +314 -1
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.js +2 -0
- package/dist/cloud/provisioner/index.d.ts +56 -0
- package/dist/cloud/provisioner/index.js +676 -34
- package/dist/cloud/server.d.ts +1 -0
- package/dist/cloud/server.js +362 -13
- package/dist/cloud/services/auto-scaler.d.ts +152 -0
- package/dist/cloud/services/auto-scaler.js +439 -0
- package/dist/cloud/services/capacity-manager.d.ts +148 -0
- package/dist/cloud/services/capacity-manager.js +449 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
- package/dist/cloud/services/ci-agent-spawner.js +373 -0
- package/dist/cloud/services/index.d.ts +12 -0
- package/dist/cloud/services/index.js +15 -0
- package/dist/cloud/services/mention-handler.d.ts +65 -0
- package/dist/cloud/services/mention-handler.js +405 -0
- package/dist/cloud/services/nango.d.ts +186 -0
- package/dist/cloud/services/nango.js +344 -0
- package/dist/cloud/services/persistence.d.ts +131 -0
- package/dist/cloud/services/persistence.js +200 -0
- package/dist/cloud/services/planLimits.d.ts +37 -0
- package/dist/cloud/services/planLimits.js +86 -5
- package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
- package/dist/cloud/services/scaling-orchestrator.js +502 -0
- package/dist/cloud/services/scaling-policy.d.ts +121 -0
- package/dist/cloud/services/scaling-policy.js +415 -0
- package/dist/cloud/vault/index.js +1 -1
- package/dist/cloud/webhooks/index.d.ts +24 -0
- package/dist/cloud/webhooks/index.js +29 -0
- package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
- package/dist/cloud/webhooks/parsers/github.js +234 -0
- package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
- package/dist/cloud/webhooks/parsers/index.js +30 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/linear.js +258 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/slack.js +214 -0
- package/dist/cloud/webhooks/responders/github.d.ts +8 -0
- package/dist/cloud/webhooks/responders/github.js +73 -0
- package/dist/cloud/webhooks/responders/index.d.ts +23 -0
- package/dist/cloud/webhooks/responders/index.js +30 -0
- package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
- package/dist/cloud/webhooks/responders/linear.js +149 -0
- package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
- package/dist/cloud/webhooks/responders/slack.js +178 -0
- package/dist/cloud/webhooks/router.d.ts +25 -0
- package/dist/cloud/webhooks/router.js +504 -0
- package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
- package/dist/cloud/webhooks/rules-engine.js +287 -0
- package/dist/cloud/webhooks/types.d.ts +186 -0
- package/dist/cloud/webhooks/types.js +8 -0
- package/dist/continuity/formatter.d.ts +51 -0
- package/dist/continuity/formatter.js +313 -0
- package/dist/continuity/handoff-store.d.ts +67 -0
- package/dist/continuity/handoff-store.js +472 -0
- package/dist/continuity/index.d.ts +45 -0
- package/dist/continuity/index.js +48 -0
- package/dist/continuity/ledger-store.d.ts +110 -0
- package/dist/continuity/ledger-store.js +500 -0
- package/dist/continuity/manager.d.ts +178 -0
- package/dist/continuity/manager.js +562 -0
- package/dist/continuity/parser.d.ts +76 -0
- package/dist/continuity/parser.js +579 -0
- package/dist/continuity/types.d.ts +180 -0
- package/dist/continuity/types.js +9 -0
- package/dist/daemon/agent-manager.d.ts +27 -0
- package/dist/daemon/agent-manager.js +107 -6
- package/dist/daemon/agent-registry.d.ts +32 -0
- package/dist/daemon/agent-registry.js +42 -2
- package/dist/daemon/api.d.ts +12 -0
- package/dist/daemon/api.js +131 -2
- package/dist/daemon/cli-auth.d.ts +67 -0
- package/dist/daemon/cli-auth.js +537 -0
- package/dist/daemon/cloud-sync.js +9 -7
- package/dist/daemon/orchestrator.js +30 -0
- package/dist/daemon/router.d.ts +5 -0
- package/dist/daemon/router.js +78 -26
- package/dist/daemon/server.d.ts +5 -0
- package/dist/daemon/server.js +9 -1
- package/dist/daemon/services/browser-testing.d.ts +88 -0
- package/dist/daemon/services/browser-testing.js +244 -0
- package/dist/daemon/services/container-spawner.d.ts +135 -0
- package/dist/daemon/services/container-spawner.js +313 -0
- package/dist/daemon/types.d.ts +5 -1
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +9 -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-b6edd4dde8d08194.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-c22d080201cbd9fb.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-77e9c65420a06cfb.js +1 -0
- 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-68d34f50baa8ab6b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
- 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-c2f423b9c9f4591b.js → main-ed4e1fb6f29c34cf.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
- package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
- 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 -14
- package/dist/dashboard/out/app.txt +2 -2
- package/dist/dashboard/out/connect-repos.html +1 -0
- package/dist/dashboard/out/connect-repos.txt +7 -0
- package/dist/dashboard/out/history.html +1 -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 +6 -0
- package/dist/dashboard/out/login.txt +7 -0
- 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 -0
- package/dist/dashboard/out/providers.txt +7 -0
- package/dist/dashboard/out/signup.html +6 -0
- package/dist/dashboard/out/signup.txt +7 -0
- package/dist/dashboard-server/server.js +1308 -8
- package/dist/hooks/emitter.d.ts +40 -0
- package/dist/hooks/emitter.js +63 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/registry.d.ts +173 -0
- package/dist/hooks/registry.js +476 -0
- package/dist/hooks/trajectory-hooks.d.ts +52 -0
- package/dist/hooks/trajectory-hooks.js +183 -0
- package/dist/hooks/types.d.ts +141 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/memory/adapters/index.d.ts +8 -0
- package/dist/memory/adapters/index.js +8 -0
- package/dist/memory/adapters/inmemory.d.ts +59 -0
- package/dist/memory/adapters/inmemory.js +195 -0
- package/dist/memory/adapters/supermemory.d.ts +71 -0
- package/dist/memory/adapters/supermemory.js +338 -0
- package/dist/memory/factory.d.ts +48 -0
- package/dist/memory/factory.js +143 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.js +32 -0
- package/dist/memory/memory-hooks.d.ts +60 -0
- package/dist/memory/memory-hooks.js +313 -0
- package/dist/memory/service.d.ts +49 -0
- package/dist/memory/service.js +146 -0
- package/dist/memory/types.d.ts +195 -0
- package/dist/memory/types.js +8 -0
- package/dist/policy/agent-policy.d.ts +225 -0
- package/dist/policy/agent-policy.js +665 -0
- package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
- package/dist/policy/cloud-policy-fetcher.js +64 -0
- package/dist/resiliency/crash-insights.d.ts +156 -0
- package/dist/resiliency/crash-insights.js +492 -0
- package/dist/resiliency/gossip-health.d.ts +137 -0
- package/dist/resiliency/gossip-health.js +241 -0
- package/dist/resiliency/index.d.ts +5 -0
- package/dist/resiliency/index.js +5 -0
- package/dist/resiliency/leader-watchdog.d.ts +109 -0
- package/dist/resiliency/leader-watchdog.js +189 -0
- package/dist/resiliency/memory-monitor.d.ts +172 -0
- package/dist/resiliency/memory-monitor.js +593 -0
- package/dist/resiliency/stateless-lead.d.ts +149 -0
- package/dist/resiliency/stateless-lead.js +308 -0
- package/dist/resiliency/supervisor.d.ts +38 -0
- package/dist/resiliency/supervisor.js +122 -0
- package/dist/shared/cli-auth-config.d.ts +91 -0
- package/dist/shared/cli-auth-config.js +264 -0
- package/dist/storage/adapter.d.ts +1 -1
- package/dist/trajectory/config.d.ts +84 -0
- package/dist/trajectory/config.js +163 -0
- package/dist/trajectory/index.d.ts +8 -0
- package/dist/trajectory/index.js +8 -0
- package/dist/trajectory/integration.d.ts +292 -0
- package/dist/trajectory/integration.js +834 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/project-namespace.d.ts +24 -0
- package/dist/utils/project-namespace.js +84 -0
- package/dist/wrapper/parser.d.ts +10 -0
- package/dist/wrapper/parser.js +100 -33
- package/dist/wrapper/pty-wrapper.d.ts +197 -16
- package/dist/wrapper/pty-wrapper.js +943 -106
- package/dist/wrapper/shared.d.ts +165 -0
- package/dist/wrapper/shared.js +270 -0
- package/dist/wrapper/tmux-wrapper.d.ts +73 -11
- package/dist/wrapper/tmux-wrapper.js +541 -120
- package/package.json +16 -16
- package/scripts/postinstall.js +60 -0
- 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/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/middleware/planLimits.d.ts.map +0 -1
- package/dist/cloud/api/middleware/planLimits.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/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/usage.d.ts.map +0 -1
- package/dist/cloud/api/usage.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/coordinator.d.ts.map +0 -1
- package/dist/cloud/services/coordinator.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/vault/index.d.ts.map +0 -1
- package/dist/cloud/vault/index.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/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/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/693-7b3301d8f6bc5014.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-a5acc2831d094776.js +0 -1
- package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +0 -1
- package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.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/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/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/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/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/logger.d.ts.map +0 -1
- package/dist/resiliency/logger.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/supervisor.d.ts.map +0 -1
- package/dist/resiliency/supervisor.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/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/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/CHANGELOG.md +0 -11
- package/docs/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
- package/docs/CLOUD-ARCHITECTURE.md +0 -652
- package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
- package/docs/COMPETITIVE_ANALYSIS.md +0 -897
- package/docs/CONTRIBUTING.md +0 -151
- package/docs/DESIGN_BRIDGE_STAFFING.md +0 -878
- package/docs/DESIGN_V2.md +0 -1079
- package/docs/INTEGRATION-GUIDE.md +0 -926
- package/docs/MONETIZATION.md +0 -1679
- package/docs/PROPOSAL-trajectories.md +0 -1582
- package/docs/PROTOCOL.md +0 -325
- package/docs/SCALING_ANALYSIS.md +0 -280
- package/docs/TESTING_PRESENCE_FEATURES.md +0 -327
- package/docs/TMUX_IMPLEMENTATION_NOTES.md +0 -364
- package/docs/TMUX_IMPROVEMENTS.md +0 -968
- package/docs/agent-relay-snippet.md +0 -168
- package/docs/competitive-analysis-mcp-agent-mail.md +0 -389
- package/docs/dashboard-v2-plan.md +0 -179
- package/docs/guides/CLOUD.md +0 -236
- package/docs/guides/LOCAL.md +0 -535
- package/docs/guides/SELF-HOSTED.md +0 -494
- package/docs/proposals/shadow-as-subagent.md +0 -765
- package/docs/proposals/slack-bot-integration.md +0 -1457
- package/docs/removable-code-analysis.md +0 -24
- 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/tictactoe-setup.sh +0 -181
- /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-f7b8ab0809342e77.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-5cc6e1921389a58a.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.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/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_ssgManifest.js +0 -0
|
@@ -14,6 +14,8 @@ export interface PlanLimits {
|
|
|
14
14
|
maxConcurrentAgents: number;
|
|
15
15
|
maxComputeHoursPerMonth: number;
|
|
16
16
|
coordinatorsEnabled: boolean;
|
|
17
|
+
/** Cloud session persistence (summaries, session tracking) - Pro+ only */
|
|
18
|
+
sessionPersistence: boolean;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Plan limits configuration
|
|
@@ -76,6 +78,19 @@ export declare function canUseCoordinator(userId: string): Promise<{
|
|
|
76
78
|
reason?: string;
|
|
77
79
|
requiredPlan?: string;
|
|
78
80
|
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Check if user can use cloud session persistence
|
|
83
|
+
*
|
|
84
|
+
* Session persistence enables:
|
|
85
|
+
* - [[SUMMARY]] blocks saved to cloud database
|
|
86
|
+
* - [[SESSION_END]] markers for session tracking
|
|
87
|
+
* - Session recovery and handoff between agents
|
|
88
|
+
*/
|
|
89
|
+
export declare function canUseSessionPersistence(userId: string): Promise<{
|
|
90
|
+
allowed: boolean;
|
|
91
|
+
reason?: string;
|
|
92
|
+
requiredPlan?: string;
|
|
93
|
+
}>;
|
|
79
94
|
/**
|
|
80
95
|
* Check if user has compute hours available
|
|
81
96
|
*/
|
|
@@ -107,4 +122,26 @@ export declare function recordComputeUsage(userId: string, workspaceId: string,
|
|
|
107
122
|
* Update active agent count for a user
|
|
108
123
|
*/
|
|
109
124
|
export declare function updateActiveAgentCount(userId: string, workspaceId: string, count: number): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* Resource tier name type
|
|
127
|
+
*/
|
|
128
|
+
export type ResourceTierName = 'small' | 'medium' | 'large' | 'xlarge';
|
|
129
|
+
/**
|
|
130
|
+
* Get the default resource tier for a plan
|
|
131
|
+
* Maps plans to appropriate compute resources
|
|
132
|
+
*/
|
|
133
|
+
export declare function getResourceTierForPlan(plan: PlanType): ResourceTierName;
|
|
134
|
+
/**
|
|
135
|
+
* Get the maximum resource tier a plan can scale to
|
|
136
|
+
* Prevents over-scaling beyond plan entitlements
|
|
137
|
+
*/
|
|
138
|
+
export declare function getMaxResourceTierForPlan(plan: PlanType): ResourceTierName;
|
|
139
|
+
/**
|
|
140
|
+
* Check if user's plan allows auto-scaling
|
|
141
|
+
*/
|
|
142
|
+
export declare function canAutoScale(plan: PlanType): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Check if auto-scale to a specific tier is allowed for a plan
|
|
145
|
+
*/
|
|
146
|
+
export declare function canScaleToTier(plan: PlanType, targetTier: ResourceTierName): boolean;
|
|
110
147
|
//# sourceMappingURL=planLimits.d.ts.map
|
|
@@ -18,17 +18,19 @@ import { getDb } from '../db/drizzle.js';
|
|
|
18
18
|
export const PLAN_LIMITS = {
|
|
19
19
|
free: {
|
|
20
20
|
maxWorkspaces: 1,
|
|
21
|
-
maxRepos:
|
|
21
|
+
maxRepos: 2,
|
|
22
22
|
maxConcurrentAgents: 2,
|
|
23
|
-
maxComputeHoursPerMonth:
|
|
23
|
+
maxComputeHoursPerMonth: 5, // Limited free tier
|
|
24
24
|
coordinatorsEnabled: false,
|
|
25
|
+
sessionPersistence: false,
|
|
25
26
|
},
|
|
26
27
|
pro: {
|
|
27
28
|
maxWorkspaces: 5,
|
|
28
|
-
maxRepos:
|
|
29
|
-
maxConcurrentAgents:
|
|
30
|
-
maxComputeHoursPerMonth:
|
|
29
|
+
maxRepos: 10,
|
|
30
|
+
maxConcurrentAgents: 5,
|
|
31
|
+
maxComputeHoursPerMonth: 50,
|
|
31
32
|
coordinatorsEnabled: true,
|
|
33
|
+
sessionPersistence: true,
|
|
32
34
|
},
|
|
33
35
|
team: {
|
|
34
36
|
maxWorkspaces: 20,
|
|
@@ -36,6 +38,7 @@ export const PLAN_LIMITS = {
|
|
|
36
38
|
maxConcurrentAgents: 50,
|
|
37
39
|
maxComputeHoursPerMonth: 500,
|
|
38
40
|
coordinatorsEnabled: true,
|
|
41
|
+
sessionPersistence: true,
|
|
39
42
|
},
|
|
40
43
|
enterprise: {
|
|
41
44
|
maxWorkspaces: Infinity,
|
|
@@ -43,6 +46,7 @@ export const PLAN_LIMITS = {
|
|
|
43
46
|
maxConcurrentAgents: Infinity,
|
|
44
47
|
maxComputeHoursPerMonth: Infinity,
|
|
45
48
|
coordinatorsEnabled: true,
|
|
49
|
+
sessionPersistence: true,
|
|
46
50
|
},
|
|
47
51
|
};
|
|
48
52
|
/**
|
|
@@ -179,6 +183,30 @@ export async function canUseCoordinator(userId) {
|
|
|
179
183
|
}
|
|
180
184
|
return { allowed: true };
|
|
181
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if user can use cloud session persistence
|
|
188
|
+
*
|
|
189
|
+
* Session persistence enables:
|
|
190
|
+
* - [[SUMMARY]] blocks saved to cloud database
|
|
191
|
+
* - [[SESSION_END]] markers for session tracking
|
|
192
|
+
* - Session recovery and handoff between agents
|
|
193
|
+
*/
|
|
194
|
+
export async function canUseSessionPersistence(userId) {
|
|
195
|
+
const user = await db.users.findById(userId);
|
|
196
|
+
if (!user) {
|
|
197
|
+
return { allowed: false, reason: 'User not found' };
|
|
198
|
+
}
|
|
199
|
+
const plan = user.plan || 'free';
|
|
200
|
+
const limits = getPlanLimits(plan);
|
|
201
|
+
if (!limits.sessionPersistence) {
|
|
202
|
+
return {
|
|
203
|
+
allowed: false,
|
|
204
|
+
reason: 'Cloud session persistence requires a Pro plan or higher',
|
|
205
|
+
requiredPlan: 'pro',
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
return { allowed: true };
|
|
209
|
+
}
|
|
182
210
|
/**
|
|
183
211
|
* Check if user has compute hours available
|
|
184
212
|
*/
|
|
@@ -251,4 +279,57 @@ export async function updateActiveAgentCount(userId, workspaceId, count) {
|
|
|
251
279
|
recordedAt: new Date(),
|
|
252
280
|
});
|
|
253
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Get the default resource tier for a plan
|
|
284
|
+
* Maps plans to appropriate compute resources
|
|
285
|
+
*/
|
|
286
|
+
export function getResourceTierForPlan(plan) {
|
|
287
|
+
switch (plan) {
|
|
288
|
+
case 'free':
|
|
289
|
+
return 'small'; // 2GB, 2 CPUs - suitable for 2 agents
|
|
290
|
+
case 'pro':
|
|
291
|
+
return 'medium'; // 4GB, 4 CPUs - suitable for 5 agents
|
|
292
|
+
case 'team':
|
|
293
|
+
return 'large'; // 8GB, 4 CPUs - suitable for 10 agents
|
|
294
|
+
case 'enterprise':
|
|
295
|
+
return 'xlarge'; // 16GB, 8 CPUs - suitable for 20 agents
|
|
296
|
+
default:
|
|
297
|
+
return 'small';
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get the maximum resource tier a plan can scale to
|
|
302
|
+
* Prevents over-scaling beyond plan entitlements
|
|
303
|
+
*/
|
|
304
|
+
export function getMaxResourceTierForPlan(plan) {
|
|
305
|
+
switch (plan) {
|
|
306
|
+
case 'free':
|
|
307
|
+
return 'small'; // Free tier cannot scale up
|
|
308
|
+
case 'pro':
|
|
309
|
+
return 'medium'; // Pro can scale to medium
|
|
310
|
+
case 'team':
|
|
311
|
+
return 'large'; // Team can scale to large
|
|
312
|
+
case 'enterprise':
|
|
313
|
+
return 'xlarge'; // Enterprise can use any tier
|
|
314
|
+
default:
|
|
315
|
+
return 'small';
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Check if user's plan allows auto-scaling
|
|
320
|
+
*/
|
|
321
|
+
export function canAutoScale(plan) {
|
|
322
|
+
// Only Pro and above can auto-scale
|
|
323
|
+
return plan !== 'free';
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Check if auto-scale to a specific tier is allowed for a plan
|
|
327
|
+
*/
|
|
328
|
+
export function canScaleToTier(plan, targetTier) {
|
|
329
|
+
const tierOrder = ['small', 'medium', 'large', 'xlarge'];
|
|
330
|
+
const maxTier = getMaxResourceTierForPlan(plan);
|
|
331
|
+
const targetIndex = tierOrder.indexOf(targetTier);
|
|
332
|
+
const maxIndex = tierOrder.indexOf(maxTier);
|
|
333
|
+
return targetIndex <= maxIndex;
|
|
334
|
+
}
|
|
254
335
|
//# sourceMappingURL=planLimits.js.map
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaling Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Main integration layer that connects:
|
|
5
|
+
* - AutoScaler (policy evaluation and scaling decisions)
|
|
6
|
+
* - CapacityManager (workspace capacity tracking)
|
|
7
|
+
* - WorkspaceProvisioner (actual instance provisioning)
|
|
8
|
+
* - Monitoring (memory/CPU metrics from agents)
|
|
9
|
+
*
|
|
10
|
+
* Handles the complete scaling lifecycle:
|
|
11
|
+
* 1. Receives metrics from monitoring
|
|
12
|
+
* 2. Updates capacity manager
|
|
13
|
+
* 3. Triggers auto-scaler evaluation
|
|
14
|
+
* 4. Executes scaling via provisioner
|
|
15
|
+
* 5. Updates capacity after scaling
|
|
16
|
+
*/
|
|
17
|
+
import { EventEmitter } from 'events';
|
|
18
|
+
import { ScalingOperation } from './auto-scaler.js';
|
|
19
|
+
import { CapacityForecast } from './capacity-manager.js';
|
|
20
|
+
import { ScalingDecision, WorkspaceMetrics } from './scaling-policy.js';
|
|
21
|
+
import { ProvisionResult } from '../provisioner/index.js';
|
|
22
|
+
export interface ScalingEvent {
|
|
23
|
+
type: 'scale_up' | 'scale_down' | 'resize_up' | 'resize_down' | 'increase_agent_limit' | 'migrate_agents' | 'rebalance' | 'alert';
|
|
24
|
+
userId: string;
|
|
25
|
+
workspaceId?: string;
|
|
26
|
+
decision?: ScalingDecision;
|
|
27
|
+
operation?: ScalingOperation;
|
|
28
|
+
result?: ProvisionResult;
|
|
29
|
+
previousTier?: string;
|
|
30
|
+
newTier?: string;
|
|
31
|
+
previousAgentLimit?: number;
|
|
32
|
+
newAgentLimit?: number;
|
|
33
|
+
error?: string;
|
|
34
|
+
timestamp: Date;
|
|
35
|
+
}
|
|
36
|
+
export interface OrchestratorConfig {
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
redisUrl?: string;
|
|
39
|
+
autoProvision: boolean;
|
|
40
|
+
autoDeprovision: boolean;
|
|
41
|
+
idleTimeoutMs: number;
|
|
42
|
+
minUserWorkspaces: number;
|
|
43
|
+
}
|
|
44
|
+
export declare class ScalingOrchestrator extends EventEmitter {
|
|
45
|
+
private config;
|
|
46
|
+
private autoScaler;
|
|
47
|
+
private capacityManager;
|
|
48
|
+
private provisioner;
|
|
49
|
+
private initialized;
|
|
50
|
+
private scalingHistory;
|
|
51
|
+
private maxHistorySize;
|
|
52
|
+
constructor(config?: Partial<OrchestratorConfig>);
|
|
53
|
+
/**
|
|
54
|
+
* Initialize the orchestrator with Redis for cross-server coordination
|
|
55
|
+
*/
|
|
56
|
+
initialize(redisUrl?: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Set up event handlers between components
|
|
59
|
+
*/
|
|
60
|
+
private setupEventHandlers;
|
|
61
|
+
/**
|
|
62
|
+
* Check if scaling is needed for a user
|
|
63
|
+
*/
|
|
64
|
+
private checkScalingNeeded;
|
|
65
|
+
/**
|
|
66
|
+
* Execute a scaling operation
|
|
67
|
+
*/
|
|
68
|
+
private executeScaling;
|
|
69
|
+
/**
|
|
70
|
+
* Handle scale up - provision new workspace
|
|
71
|
+
*/
|
|
72
|
+
private handleScaleUp;
|
|
73
|
+
/**
|
|
74
|
+
* Handle scale down - deprovision workspace
|
|
75
|
+
*/
|
|
76
|
+
private handleScaleDown;
|
|
77
|
+
/**
|
|
78
|
+
* Handle rebalance - redistribute agents across workspaces
|
|
79
|
+
*/
|
|
80
|
+
private handleRebalance;
|
|
81
|
+
/**
|
|
82
|
+
* Handle resize - vertical scaling (increase/decrease workspace resources)
|
|
83
|
+
*/
|
|
84
|
+
private handleResize;
|
|
85
|
+
/**
|
|
86
|
+
* Handle agent limit increase within a workspace
|
|
87
|
+
*/
|
|
88
|
+
private handleAgentLimitIncrease;
|
|
89
|
+
/**
|
|
90
|
+
* Handle agent migration between workspaces
|
|
91
|
+
*/
|
|
92
|
+
private handleMigrateAgents;
|
|
93
|
+
/**
|
|
94
|
+
* Record a scaling event in history
|
|
95
|
+
*/
|
|
96
|
+
private recordEvent;
|
|
97
|
+
/**
|
|
98
|
+
* Persist scaling event to database
|
|
99
|
+
*/
|
|
100
|
+
private persistScalingEvent;
|
|
101
|
+
/**
|
|
102
|
+
* Report metrics from monitoring service
|
|
103
|
+
* This is the main entry point for metrics from agents
|
|
104
|
+
*/
|
|
105
|
+
reportMetrics(userId: string, workspaces: WorkspaceMetrics[]): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Manually trigger scaling evaluation for a user
|
|
108
|
+
*/
|
|
109
|
+
evaluateScaling(userId: string): Promise<ScalingDecision | null>;
|
|
110
|
+
/**
|
|
111
|
+
* Get capacity forecast for a user
|
|
112
|
+
*/
|
|
113
|
+
getCapacityForecast(userId: string): CapacityForecast | null;
|
|
114
|
+
/**
|
|
115
|
+
* Get best placement for new agents
|
|
116
|
+
*/
|
|
117
|
+
recommendPlacement(userId: string, agentCount?: number): import("./capacity-manager.js").PlacementRecommendation[];
|
|
118
|
+
/**
|
|
119
|
+
* Get scaling history for a user
|
|
120
|
+
*/
|
|
121
|
+
getScalingHistory(userId?: string): ScalingEvent[];
|
|
122
|
+
/**
|
|
123
|
+
* Get current status of the orchestrator
|
|
124
|
+
*/
|
|
125
|
+
getStatus(): {
|
|
126
|
+
initialized: boolean;
|
|
127
|
+
autoScaler: {
|
|
128
|
+
enabled: boolean;
|
|
129
|
+
isLeader: boolean;
|
|
130
|
+
serverId: string;
|
|
131
|
+
pendingOperations: number;
|
|
132
|
+
cachedUsers: number;
|
|
133
|
+
};
|
|
134
|
+
capacity: {
|
|
135
|
+
totalWorkspaces: number;
|
|
136
|
+
totalAgents: number;
|
|
137
|
+
totalMaxAgents: number;
|
|
138
|
+
averageUtilization: number;
|
|
139
|
+
staleWorkspaces: number;
|
|
140
|
+
};
|
|
141
|
+
config: {
|
|
142
|
+
autoProvision: boolean;
|
|
143
|
+
autoDeprovision: boolean;
|
|
144
|
+
minUserWorkspaces: number;
|
|
145
|
+
};
|
|
146
|
+
historySize: number;
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Update user's plan tier
|
|
150
|
+
*/
|
|
151
|
+
setUserPlan(userId: string, plan: 'free' | 'pro' | 'team' | 'enterprise'): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Clean shutdown
|
|
154
|
+
*/
|
|
155
|
+
shutdown(): Promise<void>;
|
|
156
|
+
}
|
|
157
|
+
export declare function getScalingOrchestrator(): ScalingOrchestrator;
|
|
158
|
+
export declare function createScalingOrchestrator(config?: Partial<OrchestratorConfig>): ScalingOrchestrator;
|
|
159
|
+
//# sourceMappingURL=scaling-orchestrator.d.ts.map
|