agent-relay 1.0.22 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/bridge/shadow-cli.d.ts +17 -0
- package/dist/bridge/shadow-cli.d.ts.map +1 -0
- package/dist/bridge/shadow-cli.js +75 -0
- package/dist/bridge/shadow-cli.js.map +1 -0
- package/dist/bridge/shadow-config.d.ts +87 -0
- package/dist/bridge/shadow-config.d.ts.map +1 -0
- package/dist/bridge/shadow-config.js +134 -0
- package/dist/bridge/shadow-config.js.map +1 -0
- package/dist/bridge/spawner.d.ts +68 -1
- package/dist/bridge/spawner.d.ts.map +1 -1
- package/dist/bridge/spawner.js +360 -16
- package/dist/bridge/spawner.js.map +1 -1
- package/dist/bridge/types.d.ts +67 -0
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/cli/index.js +1196 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/cloud/api/auth.d.ts +20 -0
- package/dist/cloud/api/auth.d.ts.map +1 -0
- package/dist/cloud/api/auth.js +128 -0
- package/dist/cloud/api/auth.js.map +1 -0
- package/dist/cloud/api/billing.d.ts +17 -0
- package/dist/cloud/api/billing.d.ts.map +1 -0
- package/dist/cloud/api/billing.js +353 -0
- package/dist/cloud/api/billing.js.map +1 -0
- package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
- package/dist/cloud/api/cli-pty-runner.d.ts.map +1 -0
- package/dist/cloud/api/cli-pty-runner.js +119 -0
- package/dist/cloud/api/cli-pty-runner.js.map +1 -0
- package/dist/cloud/api/coordinators.d.ts +8 -0
- package/dist/cloud/api/coordinators.d.ts.map +1 -0
- package/dist/cloud/api/coordinators.js +347 -0
- package/dist/cloud/api/coordinators.js.map +1 -0
- package/dist/cloud/api/daemons.d.ts +12 -0
- package/dist/cloud/api/daemons.d.ts.map +1 -0
- package/dist/cloud/api/daemons.js +320 -0
- package/dist/cloud/api/daemons.js.map +1 -0
- package/dist/cloud/api/generic-webhooks.d.ts +8 -0
- package/dist/cloud/api/generic-webhooks.d.ts.map +1 -0
- package/dist/cloud/api/generic-webhooks.js +129 -0
- package/dist/cloud/api/generic-webhooks.js.map +1 -0
- package/dist/cloud/api/git.d.ts +8 -0
- package/dist/cloud/api/git.d.ts.map +1 -0
- package/dist/cloud/api/git.js +131 -0
- package/dist/cloud/api/git.js.map +1 -0
- package/dist/cloud/api/github-app.d.ts +11 -0
- package/dist/cloud/api/github-app.d.ts.map +1 -0
- package/dist/cloud/api/github-app.js +189 -0
- package/dist/cloud/api/github-app.js.map +1 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +43 -0
- package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -0
- package/dist/cloud/api/middleware/planLimits.js +202 -0
- package/dist/cloud/api/middleware/planLimits.js.map +1 -0
- package/dist/cloud/api/monitoring.d.ts +11 -0
- package/dist/cloud/api/monitoring.d.ts.map +1 -0
- package/dist/cloud/api/monitoring.js +578 -0
- package/dist/cloud/api/monitoring.js.map +1 -0
- package/dist/cloud/api/nango-auth.d.ts +9 -0
- package/dist/cloud/api/nango-auth.d.ts.map +1 -0
- package/dist/cloud/api/nango-auth.js +377 -0
- package/dist/cloud/api/nango-auth.js.map +1 -0
- package/dist/cloud/api/onboarding.d.ts +15 -0
- package/dist/cloud/api/onboarding.d.ts.map +1 -0
- package/dist/cloud/api/onboarding.js +588 -0
- package/dist/cloud/api/onboarding.js.map +1 -0
- package/dist/cloud/api/policy.d.ts +8 -0
- package/dist/cloud/api/policy.d.ts.map +1 -0
- package/dist/cloud/api/policy.js +229 -0
- package/dist/cloud/api/policy.js.map +1 -0
- package/dist/cloud/api/providers.d.ts +7 -0
- package/dist/cloud/api/providers.d.ts.map +1 -0
- package/dist/cloud/api/providers.js +507 -0
- package/dist/cloud/api/providers.js.map +1 -0
- package/dist/cloud/api/repos.d.ts +7 -0
- package/dist/cloud/api/repos.d.ts.map +1 -0
- package/dist/cloud/api/repos.js +314 -0
- package/dist/cloud/api/repos.js.map +1 -0
- package/dist/cloud/api/teams.d.ts +7 -0
- package/dist/cloud/api/teams.d.ts.map +1 -0
- package/dist/cloud/api/teams.js +279 -0
- package/dist/cloud/api/teams.js.map +1 -0
- package/dist/cloud/api/test-helpers.d.ts +10 -0
- package/dist/cloud/api/test-helpers.d.ts.map +1 -0
- package/dist/cloud/api/test-helpers.js +575 -0
- package/dist/cloud/api/test-helpers.js.map +1 -0
- package/dist/cloud/api/usage.d.ts +7 -0
- package/dist/cloud/api/usage.d.ts.map +1 -0
- package/dist/cloud/api/usage.js +98 -0
- package/dist/cloud/api/usage.js.map +1 -0
- package/dist/cloud/api/webhooks.d.ts +7 -0
- package/dist/cloud/api/webhooks.d.ts.map +1 -0
- package/dist/cloud/api/webhooks.js +496 -0
- package/dist/cloud/api/webhooks.js.map +1 -0
- package/dist/cloud/api/workspaces.d.ts +7 -0
- package/dist/cloud/api/workspaces.d.ts.map +1 -0
- package/dist/cloud/api/workspaces.js +727 -0
- package/dist/cloud/api/workspaces.js.map +1 -0
- package/dist/cloud/billing/index.d.ts +9 -0
- package/dist/cloud/billing/index.d.ts.map +1 -0
- package/dist/cloud/billing/index.js +9 -0
- package/dist/cloud/billing/index.js.map +1 -0
- package/dist/cloud/billing/plans.d.ts +39 -0
- package/dist/cloud/billing/plans.d.ts.map +1 -0
- package/dist/cloud/billing/plans.js +245 -0
- package/dist/cloud/billing/plans.js.map +1 -0
- package/dist/cloud/billing/service.d.ts +80 -0
- package/dist/cloud/billing/service.d.ts.map +1 -0
- package/dist/cloud/billing/service.js +388 -0
- package/dist/cloud/billing/service.js.map +1 -0
- package/dist/cloud/billing/types.d.ts +141 -0
- package/dist/cloud/billing/types.d.ts.map +1 -0
- package/dist/cloud/billing/types.js +7 -0
- package/dist/cloud/billing/types.js.map +1 -0
- package/dist/cloud/config.d.ts +66 -0
- package/dist/cloud/config.d.ts.map +1 -0
- package/dist/cloud/config.js +92 -0
- package/dist/cloud/config.js.map +1 -0
- package/dist/cloud/db/drizzle.d.ts +215 -0
- package/dist/cloud/db/drizzle.d.ts.map +1 -0
- package/dist/cloud/db/drizzle.js +1083 -0
- package/dist/cloud/db/drizzle.js.map +1 -0
- package/dist/cloud/db/index.d.ts +35 -0
- package/dist/cloud/db/index.d.ts.map +1 -0
- package/dist/cloud/db/index.js +52 -0
- package/dist/cloud/db/index.js.map +1 -0
- package/dist/cloud/db/schema.d.ts +4519 -0
- package/dist/cloud/db/schema.d.ts.map +1 -0
- package/dist/cloud/db/schema.js +547 -0
- package/dist/cloud/db/schema.js.map +1 -0
- package/dist/cloud/index.d.ts +12 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +39 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/provisioner/index.d.ts +75 -0
- package/dist/cloud/provisioner/index.d.ts.map +1 -0
- package/dist/cloud/provisioner/index.js +977 -0
- package/dist/cloud/provisioner/index.js.map +1 -0
- package/dist/cloud/server.d.ts +17 -0
- package/dist/cloud/server.d.ts.map +1 -0
- package/dist/cloud/server.js +534 -0
- package/dist/cloud/server.js.map +1 -0
- package/dist/cloud/services/auto-scaler.d.ts +152 -0
- package/dist/cloud/services/auto-scaler.d.ts.map +1 -0
- package/dist/cloud/services/auto-scaler.js +439 -0
- package/dist/cloud/services/auto-scaler.js.map +1 -0
- package/dist/cloud/services/capacity-manager.d.ts +148 -0
- package/dist/cloud/services/capacity-manager.d.ts.map +1 -0
- package/dist/cloud/services/capacity-manager.js +449 -0
- package/dist/cloud/services/capacity-manager.js.map +1 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts.map +1 -0
- package/dist/cloud/services/ci-agent-spawner.js +373 -0
- package/dist/cloud/services/ci-agent-spawner.js.map +1 -0
- package/dist/cloud/services/coordinator.d.ts +62 -0
- package/dist/cloud/services/coordinator.d.ts.map +1 -0
- package/dist/cloud/services/coordinator.js +389 -0
- package/dist/cloud/services/coordinator.js.map +1 -0
- package/dist/cloud/services/index.d.ts +12 -0
- package/dist/cloud/services/index.d.ts.map +1 -0
- package/dist/cloud/services/index.js +15 -0
- package/dist/cloud/services/index.js.map +1 -0
- package/dist/cloud/services/mention-handler.d.ts +65 -0
- package/dist/cloud/services/mention-handler.d.ts.map +1 -0
- package/dist/cloud/services/mention-handler.js +405 -0
- package/dist/cloud/services/mention-handler.js.map +1 -0
- package/dist/cloud/services/nango.d.ts +126 -0
- package/dist/cloud/services/nango.d.ts.map +1 -0
- package/dist/cloud/services/nango.js +191 -0
- package/dist/cloud/services/nango.js.map +1 -0
- package/dist/cloud/services/persistence.d.ts +131 -0
- package/dist/cloud/services/persistence.d.ts.map +1 -0
- package/dist/cloud/services/persistence.js +200 -0
- package/dist/cloud/services/persistence.js.map +1 -0
- package/dist/cloud/services/planLimits.d.ts +125 -0
- package/dist/cloud/services/planLimits.d.ts.map +1 -0
- package/dist/cloud/services/planLimits.js +282 -0
- package/dist/cloud/services/planLimits.js.map +1 -0
- package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
- package/dist/cloud/services/scaling-orchestrator.d.ts.map +1 -0
- package/dist/cloud/services/scaling-orchestrator.js +502 -0
- package/dist/cloud/services/scaling-orchestrator.js.map +1 -0
- package/dist/cloud/services/scaling-policy.d.ts +121 -0
- package/dist/cloud/services/scaling-policy.d.ts.map +1 -0
- package/dist/cloud/services/scaling-policy.js +415 -0
- package/dist/cloud/services/scaling-policy.js.map +1 -0
- package/dist/cloud/vault/index.d.ts +76 -0
- package/dist/cloud/vault/index.d.ts.map +1 -0
- package/dist/cloud/vault/index.js +219 -0
- package/dist/cloud/vault/index.js.map +1 -0
- package/dist/cloud/webhooks/index.d.ts +24 -0
- package/dist/cloud/webhooks/index.d.ts.map +1 -0
- package/dist/cloud/webhooks/index.js +29 -0
- package/dist/cloud/webhooks/index.js.map +1 -0
- package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
- package/dist/cloud/webhooks/parsers/github.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/github.js +234 -0
- package/dist/cloud/webhooks/parsers/github.js.map +1 -0
- package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
- package/dist/cloud/webhooks/parsers/index.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/index.js +30 -0
- package/dist/cloud/webhooks/parsers/index.js.map +1 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/linear.js +258 -0
- package/dist/cloud/webhooks/parsers/linear.js.map +1 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts.map +1 -0
- package/dist/cloud/webhooks/parsers/slack.js +214 -0
- package/dist/cloud/webhooks/parsers/slack.js.map +1 -0
- package/dist/cloud/webhooks/responders/github.d.ts +8 -0
- package/dist/cloud/webhooks/responders/github.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/github.js +73 -0
- package/dist/cloud/webhooks/responders/github.js.map +1 -0
- package/dist/cloud/webhooks/responders/index.d.ts +23 -0
- package/dist/cloud/webhooks/responders/index.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/index.js +30 -0
- package/dist/cloud/webhooks/responders/index.js.map +1 -0
- package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
- package/dist/cloud/webhooks/responders/linear.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/linear.js +149 -0
- package/dist/cloud/webhooks/responders/linear.js.map +1 -0
- package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
- package/dist/cloud/webhooks/responders/slack.d.ts.map +1 -0
- package/dist/cloud/webhooks/responders/slack.js +178 -0
- package/dist/cloud/webhooks/responders/slack.js.map +1 -0
- package/dist/cloud/webhooks/router.d.ts +25 -0
- package/dist/cloud/webhooks/router.d.ts.map +1 -0
- package/dist/cloud/webhooks/router.js +504 -0
- package/dist/cloud/webhooks/router.js.map +1 -0
- package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
- package/dist/cloud/webhooks/rules-engine.d.ts.map +1 -0
- package/dist/cloud/webhooks/rules-engine.js +287 -0
- package/dist/cloud/webhooks/rules-engine.js.map +1 -0
- package/dist/cloud/webhooks/types.d.ts +186 -0
- package/dist/cloud/webhooks/types.d.ts.map +1 -0
- package/dist/cloud/webhooks/types.js +8 -0
- package/dist/cloud/webhooks/types.js.map +1 -0
- package/dist/continuity/formatter.d.ts +51 -0
- package/dist/continuity/formatter.d.ts.map +1 -0
- package/dist/continuity/formatter.js +313 -0
- package/dist/continuity/formatter.js.map +1 -0
- package/dist/continuity/handoff-store.d.ts +67 -0
- package/dist/continuity/handoff-store.d.ts.map +1 -0
- package/dist/continuity/handoff-store.js +472 -0
- package/dist/continuity/handoff-store.js.map +1 -0
- package/dist/continuity/index.d.ts +45 -0
- package/dist/continuity/index.d.ts.map +1 -0
- package/dist/continuity/index.js +48 -0
- package/dist/continuity/index.js.map +1 -0
- package/dist/continuity/ledger-store.d.ts +110 -0
- package/dist/continuity/ledger-store.d.ts.map +1 -0
- package/dist/continuity/ledger-store.js +500 -0
- package/dist/continuity/ledger-store.js.map +1 -0
- package/dist/continuity/manager.d.ts +178 -0
- package/dist/continuity/manager.d.ts.map +1 -0
- package/dist/continuity/manager.js +562 -0
- package/dist/continuity/manager.js.map +1 -0
- package/dist/continuity/parser.d.ts +76 -0
- package/dist/continuity/parser.d.ts.map +1 -0
- package/dist/continuity/parser.js +579 -0
- package/dist/continuity/parser.js.map +1 -0
- package/dist/continuity/types.d.ts +180 -0
- package/dist/continuity/types.d.ts.map +1 -0
- package/dist/continuity/types.js +9 -0
- package/dist/continuity/types.js.map +1 -0
- package/dist/daemon/agent-manager.d.ts +114 -0
- package/dist/daemon/agent-manager.d.ts.map +1 -0
- package/dist/daemon/agent-manager.js +513 -0
- package/dist/daemon/agent-manager.js.map +1 -0
- package/dist/daemon/agent-registry.d.ts +34 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -1
- package/dist/daemon/agent-registry.js +45 -2
- package/dist/daemon/agent-registry.js.map +1 -1
- package/dist/daemon/api.d.ts +81 -0
- package/dist/daemon/api.d.ts.map +1 -0
- package/dist/daemon/api.js +554 -0
- package/dist/daemon/api.js.map +1 -0
- package/dist/daemon/cli-auth.d.ts +67 -0
- package/dist/daemon/cli-auth.d.ts.map +1 -0
- package/dist/daemon/cli-auth.js +537 -0
- package/dist/daemon/cli-auth.js.map +1 -0
- package/dist/daemon/cloud-sync.d.ts +101 -0
- package/dist/daemon/cloud-sync.d.ts.map +1 -0
- package/dist/daemon/cloud-sync.js +263 -0
- package/dist/daemon/cloud-sync.js.map +1 -0
- package/dist/daemon/index.d.ts +4 -0
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +6 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/orchestrator.d.ts +155 -0
- package/dist/daemon/orchestrator.d.ts.map +1 -0
- package/dist/daemon/orchestrator.js +766 -0
- package/dist/daemon/orchestrator.js.map +1 -0
- package/dist/daemon/router.d.ts +29 -0
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +143 -21
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +42 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +199 -16
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/services/browser-testing.d.ts +88 -0
- package/dist/daemon/services/browser-testing.d.ts.map +1 -0
- package/dist/daemon/services/browser-testing.js +244 -0
- package/dist/daemon/services/browser-testing.js.map +1 -0
- package/dist/daemon/services/container-spawner.d.ts +135 -0
- package/dist/daemon/services/container-spawner.d.ts.map +1 -0
- package/dist/daemon/services/container-spawner.js +313 -0
- package/dist/daemon/services/container-spawner.js.map +1 -0
- package/dist/daemon/types.d.ts +131 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +6 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/daemon/workspace-manager.d.ts +75 -0
- package/dist/daemon/workspace-manager.d.ts.map +1 -0
- package/dist/daemon/workspace-manager.js +289 -0
- package/dist/daemon/workspace-manager.js.map +1 -0
- 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/480-2d4111711d4e473c.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/724-73c1ee5f60abe860.js +9 -0
- package/dist/dashboard/out/_next/static/chunks/766-c3a14283c88d815b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-7120be68bea622f3.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-dc2e3a1a22478efc.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/page-56a8b4616a90dc43.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/login/page-3eac37ea6f5dd153.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1081dd190a331a91.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-daf87e86f783f980.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-4d72d5a5d8a9b618.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-b68a681526eb145e.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/signup/page-fee4ed1709070bcd.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
- package/dist/dashboard/out/_next/static/chunks/{main-e0a1f53fe0617a63.js → main-97850e03d723ea8c.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-5d692157a8eb1fd9.js +1 -0
- 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/411ce23ffeae9f76.css +1 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +45 -0
- package/dist/dashboard/out/alt-logos/logo.svg +38 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo.svg +38 -0
- package/dist/dashboard/out/app.html +1 -0
- package/dist/dashboard/out/app.txt +7 -0
- package/dist/dashboard/out/connect-repos.html +1 -0
- package/dist/dashboard/out/connect-repos.txt +7 -0
- package/dist/dashboard/out/history.html +1 -0
- package/dist/dashboard/out/history.txt +7 -0
- package/dist/dashboard/out/index.html +1 -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 -515
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +13 -0
- package/dist/dashboard/out/pricing.txt +7 -0
- package/dist/dashboard/out/providers.html +1 -0
- package/dist/dashboard/out/providers.txt +7 -0
- package/dist/dashboard/out/signup.html +6 -0
- package/dist/dashboard/out/signup.txt +7 -0
- package/dist/dashboard-server/metrics.d.ts.map +1 -1
- package/dist/dashboard-server/metrics.js +3 -2
- package/dist/dashboard-server/metrics.js.map +1 -1
- package/dist/dashboard-server/server.d.ts.map +1 -1
- package/dist/dashboard-server/server.js +2653 -130
- package/dist/dashboard-server/server.js.map +1 -1
- package/dist/hooks/emitter.d.ts +40 -0
- package/dist/hooks/emitter.d.ts.map +1 -0
- package/dist/hooks/emitter.js +63 -0
- package/dist/hooks/emitter.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/registry.d.ts +173 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +476 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/trajectory-hooks.d.ts +52 -0
- package/dist/hooks/trajectory-hooks.d.ts.map +1 -0
- package/dist/hooks/trajectory-hooks.js +183 -0
- package/dist/hooks/trajectory-hooks.js.map +1 -0
- package/dist/hooks/types.d.ts +141 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/adapters/index.d.ts +8 -0
- package/dist/memory/adapters/index.d.ts.map +1 -0
- package/dist/memory/adapters/index.js +8 -0
- package/dist/memory/adapters/index.js.map +1 -0
- package/dist/memory/adapters/inmemory.d.ts +59 -0
- package/dist/memory/adapters/inmemory.d.ts.map +1 -0
- package/dist/memory/adapters/inmemory.js +195 -0
- package/dist/memory/adapters/inmemory.js.map +1 -0
- package/dist/memory/adapters/supermemory.d.ts +71 -0
- package/dist/memory/adapters/supermemory.d.ts.map +1 -0
- package/dist/memory/adapters/supermemory.js +338 -0
- package/dist/memory/adapters/supermemory.js.map +1 -0
- package/dist/memory/factory.d.ts +48 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +143 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +32 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-hooks.d.ts +60 -0
- package/dist/memory/memory-hooks.d.ts.map +1 -0
- package/dist/memory/memory-hooks.js +313 -0
- package/dist/memory/memory-hooks.js.map +1 -0
- package/dist/memory/service.d.ts +49 -0
- package/dist/memory/service.d.ts.map +1 -0
- package/dist/memory/service.js +146 -0
- package/dist/memory/service.js.map +1 -0
- package/dist/memory/types.d.ts +195 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/policy/agent-policy.d.ts +225 -0
- package/dist/policy/agent-policy.d.ts.map +1 -0
- package/dist/policy/agent-policy.js +665 -0
- package/dist/policy/agent-policy.js.map +1 -0
- package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
- package/dist/policy/cloud-policy-fetcher.d.ts.map +1 -0
- package/dist/policy/cloud-policy-fetcher.js +64 -0
- package/dist/policy/cloud-policy-fetcher.js.map +1 -0
- package/dist/protocol/types.d.ts +10 -1
- package/dist/protocol/types.d.ts.map +1 -1
- package/dist/resiliency/context-persistence.d.ts +140 -0
- package/dist/resiliency/context-persistence.d.ts.map +1 -0
- package/dist/resiliency/context-persistence.js +397 -0
- package/dist/resiliency/context-persistence.js.map +1 -0
- package/dist/resiliency/crash-insights.d.ts +156 -0
- package/dist/resiliency/crash-insights.d.ts.map +1 -0
- package/dist/resiliency/crash-insights.js +492 -0
- package/dist/resiliency/crash-insights.js.map +1 -0
- package/dist/resiliency/gossip-health.d.ts +137 -0
- package/dist/resiliency/gossip-health.d.ts.map +1 -0
- package/dist/resiliency/gossip-health.js +241 -0
- package/dist/resiliency/gossip-health.js.map +1 -0
- package/dist/resiliency/health-monitor.d.ts +97 -0
- package/dist/resiliency/health-monitor.d.ts.map +1 -0
- package/dist/resiliency/health-monitor.js +291 -0
- package/dist/resiliency/health-monitor.js.map +1 -0
- package/dist/resiliency/index.d.ts +68 -0
- package/dist/resiliency/index.d.ts.map +1 -0
- package/dist/resiliency/index.js +68 -0
- package/dist/resiliency/index.js.map +1 -0
- package/dist/resiliency/leader-watchdog.d.ts +109 -0
- package/dist/resiliency/leader-watchdog.d.ts.map +1 -0
- package/dist/resiliency/leader-watchdog.js +189 -0
- package/dist/resiliency/leader-watchdog.js.map +1 -0
- package/dist/resiliency/logger.d.ts +114 -0
- package/dist/resiliency/logger.d.ts.map +1 -0
- package/dist/resiliency/logger.js +250 -0
- package/dist/resiliency/logger.js.map +1 -0
- package/dist/resiliency/memory-monitor.d.ts +172 -0
- package/dist/resiliency/memory-monitor.d.ts.map +1 -0
- package/dist/resiliency/memory-monitor.js +593 -0
- package/dist/resiliency/memory-monitor.js.map +1 -0
- package/dist/resiliency/metrics.d.ts +115 -0
- package/dist/resiliency/metrics.d.ts.map +1 -0
- package/dist/resiliency/metrics.js +239 -0
- package/dist/resiliency/metrics.js.map +1 -0
- package/dist/resiliency/provider-context.d.ts +100 -0
- package/dist/resiliency/provider-context.d.ts.map +1 -0
- package/dist/resiliency/provider-context.js +360 -0
- package/dist/resiliency/provider-context.js.map +1 -0
- package/dist/resiliency/stateless-lead.d.ts +149 -0
- package/dist/resiliency/stateless-lead.d.ts.map +1 -0
- package/dist/resiliency/stateless-lead.js +308 -0
- package/dist/resiliency/stateless-lead.js.map +1 -0
- package/dist/resiliency/supervisor.d.ts +147 -0
- package/dist/resiliency/supervisor.d.ts.map +1 -0
- package/dist/resiliency/supervisor.js +459 -0
- package/dist/resiliency/supervisor.js.map +1 -0
- package/dist/shared/cli-auth-config.d.ts +91 -0
- package/dist/shared/cli-auth-config.d.ts.map +1 -0
- package/dist/shared/cli-auth-config.js +264 -0
- package/dist/shared/cli-auth-config.js.map +1 -0
- package/dist/storage/adapter.d.ts +3 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/adapter.js +12 -2
- package/dist/storage/adapter.js.map +1 -1
- package/dist/storage/sqlite-adapter.d.ts.map +1 -1
- package/dist/storage/sqlite-adapter.js +18 -14
- package/dist/storage/sqlite-adapter.js.map +1 -1
- package/dist/trajectory/config.d.ts +84 -0
- package/dist/trajectory/config.d.ts.map +1 -0
- package/dist/trajectory/config.js +163 -0
- package/dist/trajectory/config.js.map +1 -0
- package/dist/trajectory/index.d.ts +8 -0
- package/dist/trajectory/index.d.ts.map +1 -0
- package/dist/trajectory/index.js +8 -0
- package/dist/trajectory/index.js.map +1 -0
- package/dist/trajectory/integration.d.ts +292 -0
- package/dist/trajectory/integration.d.ts.map +1 -0
- package/dist/trajectory/integration.js +834 -0
- package/dist/trajectory/integration.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +84 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/project-namespace.d.ts +24 -0
- package/dist/utils/project-namespace.d.ts.map +1 -1
- package/dist/utils/project-namespace.js +84 -0
- package/dist/utils/project-namespace.js.map +1 -1
- package/dist/wrapper/client.d.ts +16 -1
- package/dist/wrapper/client.d.ts.map +1 -1
- package/dist/wrapper/client.js +32 -1
- package/dist/wrapper/client.js.map +1 -1
- package/dist/wrapper/parser.d.ts +13 -0
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +217 -47
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/pty-wrapper.d.ts +219 -17
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +1050 -104
- package/dist/wrapper/pty-wrapper.js.map +1 -1
- package/dist/wrapper/shared.d.ts +165 -0
- package/dist/wrapper/shared.d.ts.map +1 -0
- package/dist/wrapper/shared.js +270 -0
- package/dist/wrapper/shared.js.map +1 -0
- package/dist/wrapper/tmux-wrapper.d.ts +78 -11
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +567 -106
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/CLOUD-ARCHITECTURE.md +804 -0
- package/docs/CLOUD-ONBOARDING-DESIGN.md +1983 -0
- package/docs/HOOKS_API.md +394 -0
- package/docs/WRAPPER_EVENTS.md +358 -0
- package/docs/agent-policy-snippet.md +40 -0
- package/docs/agent-relay-protocol.md +238 -0
- package/docs/agent-relay-snippet.md +115 -6
- package/docs/archive/EXECUTIVE_SUMMARY.md +358 -0
- package/docs/archive/ROADMAP.md +329 -0
- package/docs/archive/TESTING_PRESENCE_FEATURES.md +327 -0
- package/docs/competitive/GASTOWN.md +451 -0
- package/docs/{COMPETITIVE_ANALYSIS.md → competitive/OVERVIEW.md} +1 -0
- package/docs/competitive/README.md +34 -0
- package/docs/competitive/TMUX_ORCHESTRATOR.md +605 -0
- package/docs/dashboard.png +0 -0
- package/docs/design/ci-failure-webhooks.md +812 -0
- package/docs/design/comprehensive-integrations.md +238 -0
- package/docs/design/e2b-sandbox-integration.md +504 -0
- package/docs/design/github-app-permissions.md +264 -0
- package/docs/guides/CLOUD.md +236 -0
- package/docs/guides/LOCAL.md +535 -0
- package/docs/guides/SELF-HOSTED.md +494 -0
- package/docs/local-testing.md +428 -0
- package/docs/proposals/continuous-claude-integration.md +622 -0
- package/docs/proposals/custom-commands.md +368 -0
- package/docs/proposals/shadow-as-subagent.md +765 -0
- package/docs/proposals/slack-bot-integration.md +1457 -0
- package/docs/tasks/global-skills-system.tasks.md +230 -0
- package/docs/tasks/webhook-integrations.tasks.md +184 -0
- package/docs/tasks/workspace-capabilities.tasks.md +121 -0
- package/docs/testing/RESILIENCY-TEST-PLAN-2026-01-01.md +366 -0
- package/package.json +45 -7
- package/scripts/cloud-setup.sh +96 -0
- package/scripts/manual-qa.sh +293 -0
- package/scripts/postinstall.js +60 -0
- package/scripts/run-cloud-qa.sh +220 -0
- package/scripts/test-cli-auth/Dockerfile +44 -0
- package/scripts/test-cli-auth/Dockerfile.real +79 -0
- package/scripts/test-cli-auth/README.md +286 -0
- package/scripts/test-cli-auth/ci-test-real-clis.ts +251 -0
- package/scripts/test-cli-auth/ci-test-runner.ts +263 -0
- package/scripts/test-cli-auth/mock-cli.sh +147 -0
- package/scripts/test-cli-auth/package.json +14 -0
- package/scripts/test-cli-auth/test-oauth-flow.ts +220 -0
- package/scripts/test-pty-input-auto.js +222 -0
- package/scripts/test-pty-input.js +150 -0
- package/dist/dashboard/out/_next/static/chunks/app/layout-c9d8c5d95e48c6bf.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-8aa9936bc6c771ab.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-4498be09a5157759.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-bae2e535de00de50.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-c81f7fd28659d64f.js +0 -1
- package/dist/dashboard/out/_next/static/css/50ed6996e3df7bdd.css +0 -1
- /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → H5aWG0udPB4iOUIl_gytz}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{DXFA-jj8wb3PcY5DX2xcU → H5aWG0udPB4iOUIl_gytz}/_ssgManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{117-3bef7b19f3e60751.js → 117-b100311aff8d5c61.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-6cf686106c891ad3.js → 648-a13d3c2b1be45466.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-8ff6572bc7c9bc61.js → page-a4973f3e3c82fb67.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-26bd8d656b496dba.js → fd9d1056-bf46c09eb57e019c.js} +0 -0
- /package/docs/{CHANGELOG.md → archive/CHANGELOG.md} +0 -0
- /package/docs/{CLI-SIMPLIFICATION-COMPLETE.md → archive/CLI-SIMPLIFICATION-COMPLETE.md} +0 -0
- /package/docs/{DESIGN_BRIDGE_STAFFING.md → archive/DESIGN_BRIDGE_STAFFING.md} +0 -0
- /package/docs/{DESIGN_V2.md → archive/DESIGN_V2.md} +0 -0
- /package/docs/{MONETIZATION.md → archive/MONETIZATION.md} +0 -0
- /package/docs/{PROPOSAL-trajectories.md → archive/PROPOSAL-trajectories.md} +0 -0
- /package/docs/{SCALING_ANALYSIS.md → archive/SCALING_ANALYSIS.md} +0 -0
- /package/docs/{TMUX_IMPLEMENTATION_NOTES.md → archive/TMUX_IMPLEMENTATION_NOTES.md} +0 -0
- /package/docs/{TMUX_IMPROVEMENTS.md → archive/TMUX_IMPROVEMENTS.md} +0 -0
- /package/docs/{dashboard-v2-plan.md → archive/dashboard-v2-plan.md} +0 -0
- /package/docs/{removable-code-analysis.md → archive/removable-code-analysis.md} +0 -0
- /package/docs/{competitive-analysis-mcp-agent-mail.md → competitive/MCP_AGENT_MAIL.md} +0 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coordinator Agent Service
|
|
3
|
+
*
|
|
4
|
+
* Manages lifecycle of coordinator agents for project groups.
|
|
5
|
+
* Coordinators oversee and orchestrate work across repositories in a group.
|
|
6
|
+
*/
|
|
7
|
+
import { db } from '../db/index.js';
|
|
8
|
+
import { createClient } from 'redis';
|
|
9
|
+
import { getConfig } from '../config.js';
|
|
10
|
+
/**
|
|
11
|
+
* In-memory coordinator state tracker
|
|
12
|
+
* In production, this would be persisted to database or Redis
|
|
13
|
+
*/
|
|
14
|
+
const coordinatorStates = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* Start a coordinator agent for a project group
|
|
17
|
+
*/
|
|
18
|
+
async function start(groupId) {
|
|
19
|
+
const group = await db.projectGroups.findById(groupId);
|
|
20
|
+
if (!group) {
|
|
21
|
+
throw new Error('Project group not found');
|
|
22
|
+
}
|
|
23
|
+
if (!group.coordinatorAgent?.enabled) {
|
|
24
|
+
throw new Error('Coordinator is not enabled for this group');
|
|
25
|
+
}
|
|
26
|
+
const repositories = await db.repositories.findByProjectGroupId(groupId);
|
|
27
|
+
if (repositories.length === 0) {
|
|
28
|
+
throw new Error('Cannot start coordinator for empty group');
|
|
29
|
+
}
|
|
30
|
+
const config = group.coordinatorAgent;
|
|
31
|
+
const agentName = config.name || `${group.name} Coordinator`;
|
|
32
|
+
const model = config.model || 'claude-sonnet-4-5';
|
|
33
|
+
// Check if already running
|
|
34
|
+
const existing = coordinatorStates.get(groupId);
|
|
35
|
+
if (existing && existing.status === 'running') {
|
|
36
|
+
console.log(`Coordinator for group ${groupId} is already running`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Update state to starting
|
|
40
|
+
const state = {
|
|
41
|
+
groupId,
|
|
42
|
+
groupName: group.name,
|
|
43
|
+
agentName,
|
|
44
|
+
model,
|
|
45
|
+
status: 'starting',
|
|
46
|
+
repositories,
|
|
47
|
+
};
|
|
48
|
+
coordinatorStates.set(groupId, state);
|
|
49
|
+
try {
|
|
50
|
+
// Spawn the coordinator agent
|
|
51
|
+
// In a real implementation, this would:
|
|
52
|
+
// 1. Connect to agent-relay daemon or cloud workspace
|
|
53
|
+
// 2. Spawn agent with configured name and model
|
|
54
|
+
// 3. Provide system prompt with group context
|
|
55
|
+
// 4. Configure capabilities (read repos, create PRs, etc.)
|
|
56
|
+
await spawnCoordinatorAgent(group, config, repositories);
|
|
57
|
+
// Update state to running
|
|
58
|
+
state.status = 'running';
|
|
59
|
+
state.startedAt = new Date();
|
|
60
|
+
coordinatorStates.set(groupId, state);
|
|
61
|
+
console.log(`Coordinator agent started for group ${groupId}: ${agentName}`);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
state.status = 'error';
|
|
65
|
+
state.error = error instanceof Error ? error.message : 'Unknown error';
|
|
66
|
+
coordinatorStates.set(groupId, state);
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Stop a coordinator agent for a project group
|
|
72
|
+
*/
|
|
73
|
+
async function stop(groupId) {
|
|
74
|
+
const state = coordinatorStates.get(groupId);
|
|
75
|
+
if (!state) {
|
|
76
|
+
// Not running, nothing to do
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (state.status === 'stopped') {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Update state to stopping
|
|
83
|
+
state.status = 'stopping';
|
|
84
|
+
coordinatorStates.set(groupId, state);
|
|
85
|
+
try {
|
|
86
|
+
// Stop the coordinator agent
|
|
87
|
+
// In a real implementation, this would:
|
|
88
|
+
// 1. Send stop signal to the agent
|
|
89
|
+
// 2. Wait for graceful shutdown
|
|
90
|
+
// 3. Clean up resources
|
|
91
|
+
await stopCoordinatorAgent(groupId, state);
|
|
92
|
+
// Update state to stopped
|
|
93
|
+
state.status = 'stopped';
|
|
94
|
+
state.stoppedAt = new Date();
|
|
95
|
+
coordinatorStates.set(groupId, state);
|
|
96
|
+
console.log(`Coordinator agent stopped for group ${groupId}`);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
state.status = 'error';
|
|
100
|
+
state.error = error instanceof Error ? error.message : 'Unknown error';
|
|
101
|
+
coordinatorStates.set(groupId, state);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Restart a coordinator agent
|
|
107
|
+
*/
|
|
108
|
+
async function restart(groupId) {
|
|
109
|
+
await stop(groupId);
|
|
110
|
+
await start(groupId);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get status of a coordinator agent
|
|
114
|
+
*/
|
|
115
|
+
async function getStatus(groupId) {
|
|
116
|
+
return coordinatorStates.get(groupId) || null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* List all active coordinators
|
|
120
|
+
*/
|
|
121
|
+
async function listActive() {
|
|
122
|
+
return Array.from(coordinatorStates.values()).filter((state) => state.status === 'running' || state.status === 'starting');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Redis pub/sub for cross-workspace messaging
|
|
126
|
+
*/
|
|
127
|
+
let pubClient = null;
|
|
128
|
+
let subClient = null;
|
|
129
|
+
const messageHandlers = new Map();
|
|
130
|
+
/**
|
|
131
|
+
* Initialize Redis pub/sub clients
|
|
132
|
+
*/
|
|
133
|
+
async function initRedisClients() {
|
|
134
|
+
if (pubClient && subClient)
|
|
135
|
+
return;
|
|
136
|
+
const config = getConfig();
|
|
137
|
+
pubClient = createClient({ url: config.redisUrl });
|
|
138
|
+
subClient = createClient({ url: config.redisUrl });
|
|
139
|
+
await pubClient.connect();
|
|
140
|
+
await subClient.connect();
|
|
141
|
+
// Subscribe to coordinator channel
|
|
142
|
+
await subClient.subscribe('coordinator:messages', (message) => {
|
|
143
|
+
try {
|
|
144
|
+
const parsed = JSON.parse(message);
|
|
145
|
+
const handler = messageHandlers.get(parsed.toWorkspace || '*');
|
|
146
|
+
if (handler) {
|
|
147
|
+
handler(parsed);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error('Failed to parse coordinator message:', error);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
console.log('[coordinator] Redis pub/sub initialized');
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Send a message from coordinator to a workspace
|
|
158
|
+
*/
|
|
159
|
+
export async function sendToWorkspace(coordinatorGroupId, targetWorkspaceId, agentName, message, thread) {
|
|
160
|
+
if (!pubClient) {
|
|
161
|
+
await initRedisClients();
|
|
162
|
+
}
|
|
163
|
+
const crossMessage = {
|
|
164
|
+
type: 'relay',
|
|
165
|
+
from: 'Coordinator',
|
|
166
|
+
fromWorkspace: `coordinator:${coordinatorGroupId}`,
|
|
167
|
+
to: agentName,
|
|
168
|
+
toWorkspace: targetWorkspaceId,
|
|
169
|
+
body: message,
|
|
170
|
+
thread,
|
|
171
|
+
timestamp: new Date().toISOString(),
|
|
172
|
+
};
|
|
173
|
+
await pubClient.publish('workspace:messages', JSON.stringify(crossMessage));
|
|
174
|
+
console.log(`[coordinator] Sent message to ${targetWorkspaceId}:${agentName}`);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Broadcast a message to all workspaces in a project group
|
|
178
|
+
*/
|
|
179
|
+
export async function broadcastToGroup(coordinatorGroupId, message, thread) {
|
|
180
|
+
if (!pubClient) {
|
|
181
|
+
await initRedisClients();
|
|
182
|
+
}
|
|
183
|
+
const group = await db.projectGroups.findById(coordinatorGroupId);
|
|
184
|
+
if (!group) {
|
|
185
|
+
throw new Error('Project group not found');
|
|
186
|
+
}
|
|
187
|
+
const repositories = await db.repositories.findByProjectGroupId(coordinatorGroupId);
|
|
188
|
+
// Get all workspaces containing these repositories
|
|
189
|
+
const workspaceIds = new Set();
|
|
190
|
+
for (const repo of repositories) {
|
|
191
|
+
if (repo.workspaceId) {
|
|
192
|
+
workspaceIds.add(repo.workspaceId);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
const crossMessage = {
|
|
196
|
+
type: 'relay',
|
|
197
|
+
from: 'Coordinator',
|
|
198
|
+
fromWorkspace: `coordinator:${coordinatorGroupId}`,
|
|
199
|
+
to: '*',
|
|
200
|
+
body: message,
|
|
201
|
+
thread,
|
|
202
|
+
timestamp: new Date().toISOString(),
|
|
203
|
+
};
|
|
204
|
+
// Broadcast to each workspace
|
|
205
|
+
for (const workspaceId of workspaceIds) {
|
|
206
|
+
crossMessage.toWorkspace = workspaceId;
|
|
207
|
+
await pubClient.publish('workspace:messages', JSON.stringify(crossMessage));
|
|
208
|
+
}
|
|
209
|
+
console.log(`[coordinator] Broadcast to ${workspaceIds.size} workspace(s)`);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Spawn the actual coordinator agent
|
|
213
|
+
*/
|
|
214
|
+
async function spawnCoordinatorAgent(group, config, repositories) {
|
|
215
|
+
// Initialize Redis for cross-workspace messaging
|
|
216
|
+
await initRedisClients();
|
|
217
|
+
// Build system prompt for the coordinator
|
|
218
|
+
const systemPrompt = buildCoordinatorSystemPrompt(group, config, repositories);
|
|
219
|
+
// Get workspaces for the repositories
|
|
220
|
+
const workspaceIds = new Set();
|
|
221
|
+
for (const repo of repositories) {
|
|
222
|
+
if (repo.workspaceId) {
|
|
223
|
+
workspaceIds.add(repo.workspaceId);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
const workspaces = await Promise.all(Array.from(workspaceIds).map(id => db.workspaces.findById(id)));
|
|
227
|
+
console.log(`[coordinator] Spawning coordinator agent: ${config.name || group.name}`);
|
|
228
|
+
console.log(`[coordinator] Model: ${config.model || 'claude-sonnet-4-5'}`);
|
|
229
|
+
console.log(`[coordinator] Repositories: ${repositories.map((r) => r.githubFullName).join(', ')}`);
|
|
230
|
+
console.log(`[coordinator] Connected workspaces: ${workspaces.filter(Boolean).length}`);
|
|
231
|
+
// Register message handler for this coordinator
|
|
232
|
+
messageHandlers.set(`coordinator:${group.id}`, async (message) => {
|
|
233
|
+
console.log(`[coordinator:${group.id}] Received: ${message.body.substring(0, 100)}...`);
|
|
234
|
+
// In a full implementation, this would:
|
|
235
|
+
// 1. Parse the message for coordinator commands
|
|
236
|
+
// 2. Route to appropriate workspace(s)
|
|
237
|
+
// 3. Track conversation state
|
|
238
|
+
});
|
|
239
|
+
// Store coordinator connection info in Redis for workspace discovery
|
|
240
|
+
if (pubClient) {
|
|
241
|
+
await pubClient.hSet(`coordinator:${group.id}`, {
|
|
242
|
+
groupId: group.id,
|
|
243
|
+
groupName: group.name,
|
|
244
|
+
agentName: config.name || `${group.name} Coordinator`,
|
|
245
|
+
model: config.model || 'claude-sonnet-4-5',
|
|
246
|
+
startedAt: new Date().toISOString(),
|
|
247
|
+
workspaces: JSON.stringify(Array.from(workspaceIds)),
|
|
248
|
+
systemPrompt,
|
|
249
|
+
});
|
|
250
|
+
await pubClient.expire(`coordinator:${group.id}`, 86400); // 24h TTL
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Stop the actual coordinator agent
|
|
255
|
+
*/
|
|
256
|
+
async function stopCoordinatorAgent(groupId, state) {
|
|
257
|
+
console.log(`[coordinator] Stopping coordinator agent for group ${groupId}: ${state.agentName}`);
|
|
258
|
+
// Remove message handler
|
|
259
|
+
messageHandlers.delete(`coordinator:${groupId}`);
|
|
260
|
+
// Remove from Redis
|
|
261
|
+
if (pubClient) {
|
|
262
|
+
await pubClient.del(`coordinator:${groupId}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Route a message from a workspace to the coordinator
|
|
267
|
+
*/
|
|
268
|
+
export async function routeToCoordinator(workspaceId, agentName, message, thread) {
|
|
269
|
+
if (!pubClient) {
|
|
270
|
+
await initRedisClients();
|
|
271
|
+
}
|
|
272
|
+
// Find which coordinator is managing this workspace
|
|
273
|
+
// by scanning all coordinator keys
|
|
274
|
+
const coordinatorKeys = await pubClient.keys('coordinator:*');
|
|
275
|
+
for (const key of coordinatorKeys) {
|
|
276
|
+
if (key === 'coordinator:messages')
|
|
277
|
+
continue; // Skip the channel
|
|
278
|
+
const data = await pubClient.hGetAll(key);
|
|
279
|
+
if (data.workspaces) {
|
|
280
|
+
const workspaces = JSON.parse(data.workspaces);
|
|
281
|
+
if (workspaces.includes(workspaceId)) {
|
|
282
|
+
// Found the coordinator for this workspace
|
|
283
|
+
const crossMessage = {
|
|
284
|
+
type: 'relay',
|
|
285
|
+
from: agentName,
|
|
286
|
+
fromWorkspace: workspaceId,
|
|
287
|
+
to: 'Coordinator',
|
|
288
|
+
toWorkspace: key,
|
|
289
|
+
body: message,
|
|
290
|
+
thread,
|
|
291
|
+
timestamp: new Date().toISOString(),
|
|
292
|
+
};
|
|
293
|
+
await pubClient.publish('coordinator:messages', JSON.stringify(crossMessage));
|
|
294
|
+
console.log(`[coordinator] Routed message from ${workspaceId}:${agentName} to ${key}`);
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
console.warn(`[coordinator] No coordinator found for workspace ${workspaceId}`);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get all active coordinators
|
|
303
|
+
*/
|
|
304
|
+
export async function getActiveCoordinators() {
|
|
305
|
+
if (!pubClient) {
|
|
306
|
+
await initRedisClients();
|
|
307
|
+
}
|
|
308
|
+
const coordinatorKeys = await pubClient.keys('coordinator:*');
|
|
309
|
+
const coordinators = [];
|
|
310
|
+
for (const key of coordinatorKeys) {
|
|
311
|
+
if (key === 'coordinator:messages')
|
|
312
|
+
continue;
|
|
313
|
+
const data = await pubClient.hGetAll(key);
|
|
314
|
+
if (data.groupId) {
|
|
315
|
+
coordinators.push({
|
|
316
|
+
groupId: data.groupId,
|
|
317
|
+
groupName: data.groupName,
|
|
318
|
+
agentName: data.agentName,
|
|
319
|
+
model: data.model,
|
|
320
|
+
startedAt: data.startedAt,
|
|
321
|
+
workspaces: data.workspaces ? JSON.parse(data.workspaces) : [],
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return coordinators;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Build system prompt for coordinator agent
|
|
329
|
+
*/
|
|
330
|
+
function buildCoordinatorSystemPrompt(group, config, repositories) {
|
|
331
|
+
const repoList = repositories.map((r) => r.githubFullName).join('\n- ');
|
|
332
|
+
let prompt = `You are the coordinator agent for the "${group.name}" project group.
|
|
333
|
+
|
|
334
|
+
Your role is to oversee and orchestrate work across the following repositories:
|
|
335
|
+
- ${repoList}
|
|
336
|
+
|
|
337
|
+
`;
|
|
338
|
+
if (config.capabilities && config.capabilities.length > 0) {
|
|
339
|
+
prompt += `You have the following capabilities:
|
|
340
|
+
${config.capabilities.map((c) => `- ${c}`).join('\n')}
|
|
341
|
+
|
|
342
|
+
`;
|
|
343
|
+
}
|
|
344
|
+
if (config.systemPrompt) {
|
|
345
|
+
prompt += `${config.systemPrompt}\n\n`;
|
|
346
|
+
}
|
|
347
|
+
prompt += `When coordinating work:
|
|
348
|
+
1. Monitor all repositories in your group
|
|
349
|
+
2. Identify dependencies and coordination points
|
|
350
|
+
3. Delegate tasks to project-specific agents when appropriate
|
|
351
|
+
4. Ensure consistency across repositories
|
|
352
|
+
5. Report status and blockers to the team
|
|
353
|
+
|
|
354
|
+
Use the Agent Relay messaging system to communicate with other agents and team members.`;
|
|
355
|
+
return prompt;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Singleton instance
|
|
359
|
+
*/
|
|
360
|
+
let coordinatorServiceInstance = null;
|
|
361
|
+
/**
|
|
362
|
+
* Get the coordinator service singleton
|
|
363
|
+
*/
|
|
364
|
+
export function getCoordinatorService() {
|
|
365
|
+
if (!coordinatorServiceInstance) {
|
|
366
|
+
coordinatorServiceInstance = {
|
|
367
|
+
start,
|
|
368
|
+
stop,
|
|
369
|
+
restart,
|
|
370
|
+
getStatus,
|
|
371
|
+
listActive,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
return coordinatorServiceInstance;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Initialize coordinator service
|
|
378
|
+
* Restarts any coordinators that should be running
|
|
379
|
+
*/
|
|
380
|
+
export async function initializeCoordinatorService() {
|
|
381
|
+
console.log('Initializing coordinator service...');
|
|
382
|
+
// In a production system, this would:
|
|
383
|
+
// 1. Query database for all enabled coordinators
|
|
384
|
+
// 2. Check their expected state
|
|
385
|
+
// 3. Restart any that should be running
|
|
386
|
+
// For now, just log initialization
|
|
387
|
+
console.log('Coordinator service initialized');
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../src/cloud/services/coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Services Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all cloud-side services for easy importing.
|
|
5
|
+
*/
|
|
6
|
+
export { ScalingPolicyService, ScalingThresholds, ScalingPolicy, ScalingCondition, ScalingAction, ScalingDecision, UserScalingContext, WorkspaceMetrics, getScalingPolicyService, } from './scaling-policy.js';
|
|
7
|
+
export { AutoScaler, AutoScalerConfig, ScalingOperation, MetricsSnapshot, getAutoScaler, createAutoScaler, } from './auto-scaler.js';
|
|
8
|
+
export { CapacityManager, CapacityManagerConfig, WorkspaceCapacity, PlacementRecommendation, CapacitySnapshot, CapacityForecast, getCapacityManager, createCapacityManager, } from './capacity-manager.js';
|
|
9
|
+
export { ScalingOrchestrator, OrchestratorConfig, ScalingEvent, getScalingOrchestrator, createScalingOrchestrator, } from './scaling-orchestrator.js';
|
|
10
|
+
export { spawnCIFixAgent, notifyAgentOfCIFailure, completeFixAttempt, getFailureHistory, getPRFailureHistory, } from './ci-agent-spawner.js';
|
|
11
|
+
export { handleMention, handleIssueAssignment, getPendingMentions, getPendingIssueAssignments, processPendingMentions, processPendingIssueAssignments, KNOWN_AGENTS, isKnownAgent, } from './mention-handler.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cloud/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,YAAY,EACZ,YAAY,GACb,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cloud Services Index
|
|
3
|
+
*
|
|
4
|
+
* Exports all cloud-side services for easy importing.
|
|
5
|
+
*/
|
|
6
|
+
// Scaling infrastructure
|
|
7
|
+
export { ScalingPolicyService, getScalingPolicyService, } from './scaling-policy.js';
|
|
8
|
+
export { AutoScaler, getAutoScaler, createAutoScaler, } from './auto-scaler.js';
|
|
9
|
+
export { CapacityManager, getCapacityManager, createCapacityManager, } from './capacity-manager.js';
|
|
10
|
+
export { ScalingOrchestrator, getScalingOrchestrator, createScalingOrchestrator, } from './scaling-orchestrator.js';
|
|
11
|
+
// CI failure handling
|
|
12
|
+
export { spawnCIFixAgent, notifyAgentOfCIFailure, completeFixAttempt, getFailureHistory, getPRFailureHistory, } from './ci-agent-spawner.js';
|
|
13
|
+
// Issue and mention handling
|
|
14
|
+
export { handleMention, handleIssueAssignment, getPendingMentions, getPendingIssueAssignments, processPendingMentions, processPendingIssueAssignments, KNOWN_AGENTS, isKnownAgent, } from './mention-handler.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cloud/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yBAAyB;AACzB,OAAO,EACL,oBAAoB,EAQpB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,UAAU,EAIV,aAAa,EACb,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EAMf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,mBAAmB,EAGnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,sBAAsB;AACtB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,YAAY,EACZ,YAAY,GACb,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mention Handler Service
|
|
3
|
+
*
|
|
4
|
+
* Handles @mentions of agents in GitHub issues and PR comments.
|
|
5
|
+
* Routes mentions to appropriate agents for response.
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. App posts acknowledgment comment
|
|
9
|
+
* 2. Finds a linked daemon for the repository
|
|
10
|
+
* 3. Queues spawn command for the daemon
|
|
11
|
+
* 4. Agent works and posts response comment
|
|
12
|
+
*/
|
|
13
|
+
import { CommentMention, IssueAssignment } from '../db/index.js';
|
|
14
|
+
/**
|
|
15
|
+
* Known agent types that can be mentioned
|
|
16
|
+
*/
|
|
17
|
+
export declare const KNOWN_AGENTS: {
|
|
18
|
+
readonly 'agent-relay': "General purpose agent for any task";
|
|
19
|
+
readonly lead: "Lead agent for coordination and delegation";
|
|
20
|
+
readonly developer: "Developer agent for coding tasks";
|
|
21
|
+
readonly reviewer: "Code review agent";
|
|
22
|
+
readonly 'ci-fix': "CI failure fixing agent";
|
|
23
|
+
readonly debugger: "Bug investigation and fixing agent";
|
|
24
|
+
readonly docs: "Documentation agent";
|
|
25
|
+
readonly test: "Test writing agent";
|
|
26
|
+
readonly refactor: "Code refactoring agent";
|
|
27
|
+
};
|
|
28
|
+
export type KnownAgentType = keyof typeof KNOWN_AGENTS;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a mention is for a known agent type
|
|
31
|
+
*/
|
|
32
|
+
export declare function isKnownAgent(mention: string): mention is KnownAgentType;
|
|
33
|
+
/**
|
|
34
|
+
* Handle a mention record
|
|
35
|
+
*
|
|
36
|
+
* This function:
|
|
37
|
+
* 1. Validates the mention is for a known agent
|
|
38
|
+
* 2. Posts an acknowledgment comment
|
|
39
|
+
* 3. Finds a linked daemon
|
|
40
|
+
* 4. Queues a spawn command for the agent
|
|
41
|
+
*/
|
|
42
|
+
export declare function handleMention(mention: CommentMention): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Handle an issue assignment
|
|
45
|
+
*
|
|
46
|
+
* Called when an issue should be assigned to an agent
|
|
47
|
+
*/
|
|
48
|
+
export declare function handleIssueAssignment(assignment: IssueAssignment): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Get pending mentions for processing
|
|
51
|
+
*/
|
|
52
|
+
export declare function getPendingMentions(limit?: number): Promise<CommentMention[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Get pending issue assignments for processing
|
|
55
|
+
*/
|
|
56
|
+
export declare function getPendingIssueAssignments(limit?: number): Promise<IssueAssignment[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Process all pending mentions (background job)
|
|
59
|
+
*/
|
|
60
|
+
export declare function processPendingMentions(): Promise<number>;
|
|
61
|
+
/**
|
|
62
|
+
* Process all pending issue assignments (background job)
|
|
63
|
+
*/
|
|
64
|
+
export declare function processPendingIssueAssignments(): Promise<number>;
|
|
65
|
+
//# sourceMappingURL=mention-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-handler.d.ts","sourceRoot":"","sources":["../../../src/cloud/services/mention-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAM,cAAc,EAAE,eAAe,EAAc,MAAM,gBAAgB,CAAC;AAGjF;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAaf,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAEvD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,cAAc,CAEvE;AA0GD;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E1E;AAyED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEtF;AA4DD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAE9E;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAEvF;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAc9D;AAED;;GAEG;AACH,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,MAAM,CAAC,CActE"}
|