agent-relay 1.1.0 → 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/spawner.d.ts +53 -0
- package/dist/bridge/spawner.d.ts.map +1 -1
- package/dist/bridge/spawner.js +203 -19
- package/dist/bridge/spawner.js.map +1 -1
- package/dist/bridge/types.d.ts +12 -0
- package/dist/bridge/types.d.ts.map +1 -1
- package/dist/cli/index.js +401 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cloud/api/auth.d.ts +3 -2
- package/dist/cloud/api/auth.d.ts.map +1 -1
- package/dist/cloud/api/auth.js +10 -98
- package/dist/cloud/api/auth.js.map +1 -1
- 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/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 +7 -0
- package/dist/cloud/api/middleware/planLimits.d.ts.map +1 -1
- package/dist/cloud/api/middleware/planLimits.js +39 -1
- package/dist/cloud/api/middleware/planLimits.js.map +1 -1
- 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 +8 -1
- package/dist/cloud/api/onboarding.d.ts.map +1 -1
- package/dist/cloud/api/onboarding.js +300 -119
- package/dist/cloud/api/onboarding.js.map +1 -1
- 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.js +114 -42
- package/dist/cloud/api/providers.js.map +1 -1
- 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/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.js +225 -8
- package/dist/cloud/api/workspaces.js.map +1 -1
- package/dist/cloud/billing/plans.d.ts.map +1 -1
- package/dist/cloud/billing/plans.js +13 -0
- package/dist/cloud/billing/plans.js.map +1 -1
- package/dist/cloud/billing/types.d.ts +9 -3
- package/dist/cloud/billing/types.d.ts.map +1 -1
- package/dist/cloud/config.d.ts +9 -2
- package/dist/cloud/config.d.ts.map +1 -1
- package/dist/cloud/config.js +13 -4
- package/dist/cloud/config.js.map +1 -1
- package/dist/cloud/db/drizzle.d.ts +84 -1
- package/dist/cloud/db/drizzle.d.ts.map +1 -1
- package/dist/cloud/db/drizzle.js +470 -0
- package/dist/cloud/db/drizzle.js.map +1 -1
- package/dist/cloud/db/index.d.ts +9 -4
- package/dist/cloud/db/index.d.ts.map +1 -1
- package/dist/cloud/db/index.js +11 -3
- package/dist/cloud/db/index.js.map +1 -1
- package/dist/cloud/db/schema.d.ts +3283 -556
- package/dist/cloud/db/schema.d.ts.map +1 -1
- package/dist/cloud/db/schema.js +314 -1
- package/dist/cloud/db/schema.js.map +1 -1
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +2 -0
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/provisioner/index.d.ts +24 -0
- package/dist/cloud/provisioner/index.d.ts.map +1 -1
- package/dist/cloud/provisioner/index.js +319 -18
- package/dist/cloud/provisioner/index.js.map +1 -1
- package/dist/cloud/server.d.ts +1 -0
- package/dist/cloud/server.d.ts.map +1 -1
- package/dist/cloud/server.js +357 -13
- package/dist/cloud/server.js.map +1 -1
- 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/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 +15 -0
- package/dist/cloud/services/planLimits.d.ts.map +1 -1
- package/dist/cloud/services/planLimits.js +28 -0
- package/dist/cloud/services/planLimits.js.map +1 -1
- 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.js +1 -1
- package/dist/cloud/vault/index.js.map +1 -1
- 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 +27 -0
- package/dist/daemon/agent-manager.d.ts.map +1 -1
- package/dist/daemon/agent-manager.js +107 -6
- package/dist/daemon/agent-manager.js.map +1 -1
- package/dist/daemon/agent-registry.d.ts +32 -0
- package/dist/daemon/agent-registry.d.ts.map +1 -1
- package/dist/daemon/agent-registry.js +42 -2
- package/dist/daemon/agent-registry.js.map +1 -1
- package/dist/daemon/api.d.ts +12 -0
- package/dist/daemon/api.d.ts.map +1 -1
- package/dist/daemon/api.js +131 -2
- package/dist/daemon/api.js.map +1 -1
- 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.map +1 -1
- package/dist/daemon/cloud-sync.js +9 -7
- package/dist/daemon/cloud-sync.js.map +1 -1
- package/dist/daemon/orchestrator.d.ts.map +1 -1
- package/dist/daemon/orchestrator.js +30 -0
- package/dist/daemon/orchestrator.js.map +1 -1
- package/dist/daemon/router.d.ts +5 -0
- package/dist/daemon/router.d.ts.map +1 -1
- package/dist/daemon/router.js +78 -26
- package/dist/daemon/router.js.map +1 -1
- package/dist/daemon/server.d.ts +5 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +9 -1
- 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 +5 -1
- package/dist/daemon/types.d.ts.map +1 -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/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-b6edd4dde8d08194.js → page-56a8b4616a90dc43.js} +1 -1
- 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/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-c2f423b9c9f4591b.js → main-97850e03d723ea8c.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/411ce23ffeae9f76.css +1 -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 +2 -2
- 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.d.ts.map +1 -1
- package/dist/dashboard-server/server.js +1308 -8
- 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/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/index.d.ts +5 -0
- package/dist/resiliency/index.d.ts.map +1 -1
- package/dist/resiliency/index.js +5 -0
- package/dist/resiliency/index.js.map +1 -1
- 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/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/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 +38 -0
- package/dist/resiliency/supervisor.d.ts.map +1 -1
- package/dist/resiliency/supervisor.js +122 -0
- package/dist/resiliency/supervisor.js.map +1 -1
- 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 +1 -1
- package/dist/storage/adapter.d.ts.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/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- 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/parser.d.ts +10 -0
- package/dist/wrapper/parser.d.ts.map +1 -1
- package/dist/wrapper/parser.js +100 -33
- package/dist/wrapper/parser.js.map +1 -1
- package/dist/wrapper/pty-wrapper.d.ts +197 -16
- package/dist/wrapper/pty-wrapper.d.ts.map +1 -1
- package/dist/wrapper/pty-wrapper.js +943 -106
- 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 +73 -11
- package/dist/wrapper/tmux-wrapper.d.ts.map +1 -1
- package/dist/wrapper/tmux-wrapper.js +541 -120
- package/dist/wrapper/tmux-wrapper.js.map +1 -1
- package/docs/CLOUD-ARCHITECTURE.md +152 -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 +53 -47
- package/docs/archive/EXECUTIVE_SUMMARY.md +358 -0
- package/docs/archive/ROADMAP.md +329 -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/local-testing.md +428 -0
- package/docs/proposals/continuous-claude-integration.md +622 -0
- package/docs/proposals/custom-commands.md +368 -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 +16 -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/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/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/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/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → H5aWG0udPB4iOUIl_gytz}/_buildManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → H5aWG0udPB4iOUIl_gytz}/_ssgManifest.js +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-b100311aff8d5c61.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-a13d3c2b1be45466.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js → page-a4973f3e3c82fb67.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/pricing/{page-d80e03a5297f95b6.js → page-4d72d5a5d8a9b618.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/{TESTING_PRESENCE_FEATURES.md → archive/TESTING_PRESENCE_FEATURES.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,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI Agent Spawner Service
|
|
3
|
+
*
|
|
4
|
+
* Spawns agents to fix CI failures automatically.
|
|
5
|
+
* Called by the webhook handler when CI checks fail on PRs.
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. App posts acknowledgment comment on the PR
|
|
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 { db } from '../db/index.js';
|
|
14
|
+
import { nangoService } from './nango.js';
|
|
15
|
+
/**
|
|
16
|
+
* Get the GitHub App name for comments
|
|
17
|
+
*/
|
|
18
|
+
function getAppName() {
|
|
19
|
+
return process.env.GITHUB_APP_NAME || 'Agent Relay';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Post a CI failure acknowledgment comment on GitHub
|
|
23
|
+
*/
|
|
24
|
+
async function postCIAcknowledgmentComment(repository, prNumber, checkName, failureTitle) {
|
|
25
|
+
if (!repository.nangoConnectionId) {
|
|
26
|
+
console.warn(`[ci-spawner] Repository ${repository.githubFullName} has no Nango connection`);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const [owner, repo] = repository.githubFullName.split('/');
|
|
30
|
+
const appName = getAppName();
|
|
31
|
+
const body = `🔴 **CI Failure Detected**
|
|
32
|
+
|
|
33
|
+
The \`${checkName}\` check has failed${failureTitle ? `: ${failureTitle}` : ''}.
|
|
34
|
+
|
|
35
|
+
I'm spawning an agent to investigate and fix this issue. The **@ci-fix** agent will analyze the failure and attempt to resolve it.
|
|
36
|
+
|
|
37
|
+
You'll be notified when the fix is ready or if manual intervention is needed.
|
|
38
|
+
|
|
39
|
+
_— ${appName}_`;
|
|
40
|
+
try {
|
|
41
|
+
const result = await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, prNumber, body);
|
|
42
|
+
console.log(`[ci-spawner] Posted CI acknowledgment comment: ${result.html_url}`);
|
|
43
|
+
return { id: result.id, url: result.html_url };
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error(`[ci-spawner] Failed to post CI acknowledgment comment:`, error);
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Post a completion comment on GitHub
|
|
52
|
+
*/
|
|
53
|
+
async function postCompletionComment(repository, prNumber, success, summary, commitSha) {
|
|
54
|
+
if (!repository.nangoConnectionId) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const [owner, repo] = repository.githubFullName.split('/');
|
|
58
|
+
const appName = getAppName();
|
|
59
|
+
let body;
|
|
60
|
+
if (success) {
|
|
61
|
+
body = `✅ **CI Fix Applied**
|
|
62
|
+
|
|
63
|
+
${summary}
|
|
64
|
+
|
|
65
|
+
${commitSha ? `**Commit:** ${commitSha.substring(0, 7)}` : ''}
|
|
66
|
+
|
|
67
|
+
Please review the changes and re-run the CI checks.
|
|
68
|
+
|
|
69
|
+
_— ${appName}_`;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
body = `⚠️ **CI Fix Unsuccessful**
|
|
73
|
+
|
|
74
|
+
${summary}
|
|
75
|
+
|
|
76
|
+
Manual intervention may be required. Please check the failure details and fix the issue manually.
|
|
77
|
+
|
|
78
|
+
_— ${appName}_`;
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, prNumber, body);
|
|
82
|
+
console.log(`[ci-spawner] Posted completion comment for PR #${prNumber}`);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error(`[ci-spawner] Failed to post completion comment:`, error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find a linked daemon that can handle this repository
|
|
90
|
+
*/
|
|
91
|
+
async function findAvailableDaemon(repository) {
|
|
92
|
+
if (!repository.userId) {
|
|
93
|
+
console.warn(`[ci-spawner] Repository ${repository.githubFullName} has no userId`);
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const daemons = await db.linkedDaemons.findByUserId(repository.userId);
|
|
97
|
+
const onlineDaemon = daemons.find(d => d.status === 'online');
|
|
98
|
+
if (!onlineDaemon) {
|
|
99
|
+
console.warn(`[ci-spawner] No online daemon found for user ${repository.userId}`);
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
return { id: onlineDaemon.id, userId: repository.userId };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Queue a spawn command for a linked daemon
|
|
106
|
+
*/
|
|
107
|
+
async function queueSpawnCommand(daemonId, agentName, prompt, metadata) {
|
|
108
|
+
const command = {
|
|
109
|
+
type: 'spawn_agent',
|
|
110
|
+
agentName,
|
|
111
|
+
cli: 'claude',
|
|
112
|
+
task: prompt,
|
|
113
|
+
metadata,
|
|
114
|
+
timestamp: new Date().toISOString(),
|
|
115
|
+
};
|
|
116
|
+
await db.linkedDaemons.queueMessage(daemonId, {
|
|
117
|
+
from: { daemonId: 'cloud', daemonName: 'Agent Relay Cloud', agent: 'system' },
|
|
118
|
+
to: '__spawner__',
|
|
119
|
+
content: JSON.stringify(command),
|
|
120
|
+
metadata: { type: 'spawn_command' },
|
|
121
|
+
timestamp: new Date().toISOString(),
|
|
122
|
+
});
|
|
123
|
+
console.log(`[ci-spawner] Queued spawn command for daemon ${daemonId}`);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Spawn an agent to fix CI failures
|
|
127
|
+
*
|
|
128
|
+
* This function:
|
|
129
|
+
* 1. Finds the workspace for the repository
|
|
130
|
+
* 2. Posts acknowledgment comment
|
|
131
|
+
* 3. Creates a fix attempt record
|
|
132
|
+
* 4. Queues spawn command for a linked daemon
|
|
133
|
+
*
|
|
134
|
+
* @param failureEvent - The CI failure event from the database
|
|
135
|
+
*/
|
|
136
|
+
export async function spawnCIFixAgent(failureEvent) {
|
|
137
|
+
console.log(`[ci-spawner] Spawning agent for failure: ${failureEvent.id}`);
|
|
138
|
+
console.log(`[ci-spawner] Repository: ${failureEvent.repository}`);
|
|
139
|
+
console.log(`[ci-spawner] Check: ${failureEvent.checkName}`);
|
|
140
|
+
console.log(`[ci-spawner] PR: #${failureEvent.prNumber}`);
|
|
141
|
+
// Only handle failures on PRs
|
|
142
|
+
if (failureEvent.prNumber === null) {
|
|
143
|
+
console.log(`[ci-spawner] Failure not on a PR, skipping`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const prNumber = failureEvent.prNumber;
|
|
147
|
+
// Find the repository
|
|
148
|
+
const repository = await db.repositories.findByFullName(failureEvent.repository);
|
|
149
|
+
if (!repository) {
|
|
150
|
+
console.error(`[ci-spawner] Repository not found: ${failureEvent.repository}`);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Generate agent name and ID
|
|
154
|
+
const agentName = `ci-fix-${failureEvent.checkName.replace(/[^a-zA-Z0-9-]/g, '-')}-${prNumber}`;
|
|
155
|
+
const agentId = `ci-${failureEvent.id}`;
|
|
156
|
+
// Create fix attempt record
|
|
157
|
+
const fixAttempt = await db.ciFixAttempts.create({
|
|
158
|
+
failureEventId: failureEvent.id,
|
|
159
|
+
agentId,
|
|
160
|
+
agentName,
|
|
161
|
+
status: 'pending',
|
|
162
|
+
});
|
|
163
|
+
console.log(`[ci-spawner] Created fix attempt: ${fixAttempt.id}`);
|
|
164
|
+
try {
|
|
165
|
+
// Step 1: Post acknowledgment comment
|
|
166
|
+
await postCIAcknowledgmentComment(repository, prNumber, failureEvent.checkName, failureEvent.failureTitle);
|
|
167
|
+
// Step 2: Find a linked daemon
|
|
168
|
+
const daemon = await findAvailableDaemon(repository);
|
|
169
|
+
if (!daemon) {
|
|
170
|
+
console.warn(`[ci-spawner] No available daemon for ${failureEvent.repository}`);
|
|
171
|
+
// Post a comment explaining the situation
|
|
172
|
+
if (repository.nangoConnectionId) {
|
|
173
|
+
const [owner, repo] = repository.githubFullName.split('/');
|
|
174
|
+
try {
|
|
175
|
+
await nangoService.addGithubIssueComment(repository.nangoConnectionId, owner, repo, prNumber, `⚠️ I couldn't spawn an agent to fix this CI failure because no Agent Relay daemon is available.
|
|
176
|
+
|
|
177
|
+
Please ensure you have a linked daemon running by executing \`agent-relay cloud link\` on your development machine.
|
|
178
|
+
|
|
179
|
+
You can also fix this issue manually by reviewing the failure output above.
|
|
180
|
+
|
|
181
|
+
_— ${getAppName()}_`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.error(`[ci-spawner] Failed to post error comment:`, error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
await db.ciFixAttempts.complete(fixAttempt.id, 'failed', undefined, 'No available daemon to spawn agent');
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
// Step 3: Build the agent prompt
|
|
191
|
+
const prompt = buildAgentPrompt(failureEvent, repository);
|
|
192
|
+
// Step 4: Update status to in_progress
|
|
193
|
+
await db.ciFixAttempts.updateStatus(fixAttempt.id, 'in_progress');
|
|
194
|
+
// Step 5: Queue spawn command for the daemon
|
|
195
|
+
await queueSpawnCommand(daemon.id, agentName, prompt, {
|
|
196
|
+
failureEventId: failureEvent.id,
|
|
197
|
+
fixAttemptId: fixAttempt.id,
|
|
198
|
+
repository: failureEvent.repository,
|
|
199
|
+
prNumber,
|
|
200
|
+
checkName: failureEvent.checkName,
|
|
201
|
+
});
|
|
202
|
+
console.log(`[ci-spawner] Successfully queued CI fix agent for ${failureEvent.repository}#${prNumber}`);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
console.error(`[ci-spawner] Failed to spawn agent:`, error);
|
|
206
|
+
await db.ciFixAttempts.complete(fixAttempt.id, 'failed', undefined, error instanceof Error ? error.message : 'Unknown error');
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Build the prompt for the CI fix agent
|
|
212
|
+
*/
|
|
213
|
+
function buildAgentPrompt(failureEvent, _repository) {
|
|
214
|
+
const annotations = failureEvent.annotations;
|
|
215
|
+
const annotationsList = annotations && annotations.length > 0
|
|
216
|
+
? annotations
|
|
217
|
+
.slice(0, 20) // Limit to first 20 annotations
|
|
218
|
+
.map(a => `- ${a.path}:${a.startLine} - ${a.message}`)
|
|
219
|
+
.join('\n')
|
|
220
|
+
: null;
|
|
221
|
+
const responseInstructions = `
|
|
222
|
+
## Response Instructions
|
|
223
|
+
|
|
224
|
+
When you complete your work:
|
|
225
|
+
1. Commit and push your changes
|
|
226
|
+
2. Post a comment on the PR summarizing what you fixed
|
|
227
|
+
|
|
228
|
+
Use the GitHub CLI (\`gh\`) to post your response:
|
|
229
|
+
\`\`\`bash
|
|
230
|
+
gh pr comment ${failureEvent.prNumber} --repo ${failureEvent.repository} --body "## CI Fix Applied
|
|
231
|
+
|
|
232
|
+
Summary of changes...
|
|
233
|
+
|
|
234
|
+
**Files modified:**
|
|
235
|
+
- file1.ts
|
|
236
|
+
- file2.ts
|
|
237
|
+
|
|
238
|
+
Please re-run the CI checks to verify the fix."
|
|
239
|
+
\`\`\`
|
|
240
|
+
`;
|
|
241
|
+
return `
|
|
242
|
+
# CI Failure Fix Task
|
|
243
|
+
|
|
244
|
+
A CI check has failed on PR #${failureEvent.prNumber} in ${failureEvent.repository}.
|
|
245
|
+
|
|
246
|
+
## Failure Details
|
|
247
|
+
|
|
248
|
+
**Check Name:** ${failureEvent.checkName}
|
|
249
|
+
**Branch:** ${failureEvent.branch || 'unknown'}
|
|
250
|
+
**Commit:** ${failureEvent.commitSha || 'unknown'}
|
|
251
|
+
|
|
252
|
+
${failureEvent.failureTitle ? `**Title:** ${failureEvent.failureTitle}` : ''}
|
|
253
|
+
|
|
254
|
+
${failureEvent.failureSummary ? `**Summary:**\n${failureEvent.failureSummary}` : ''}
|
|
255
|
+
|
|
256
|
+
${failureEvent.failureDetails ? `**Details:**\n${failureEvent.failureDetails}` : ''}
|
|
257
|
+
|
|
258
|
+
${annotationsList ? `## Annotations\n\n${annotationsList}` : ''}
|
|
259
|
+
|
|
260
|
+
## Your Task
|
|
261
|
+
|
|
262
|
+
1. Checkout the branch: \`${failureEvent.branch || 'unknown'}\`
|
|
263
|
+
2. Analyze the failure based on the annotations and error messages
|
|
264
|
+
3. Fix the issues in the affected files
|
|
265
|
+
4. Run the relevant checks locally to verify the fix
|
|
266
|
+
5. Commit and push your changes with a clear commit message
|
|
267
|
+
6. Report back with a summary of what was fixed
|
|
268
|
+
|
|
269
|
+
${responseInstructions}
|
|
270
|
+
|
|
271
|
+
## Important
|
|
272
|
+
|
|
273
|
+
- Only fix the specific issues causing the CI failure
|
|
274
|
+
- Do not refactor or improve unrelated code
|
|
275
|
+
- If you cannot fix the issue, explain why and what manual intervention is needed
|
|
276
|
+
- Keep your commit message descriptive and reference the CI check name
|
|
277
|
+
`.trim();
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Notify an existing agent about a CI failure
|
|
281
|
+
*
|
|
282
|
+
* Used when an agent is already working on a PR and a new failure occurs.
|
|
283
|
+
*
|
|
284
|
+
* @param agentId - The ID of the existing agent
|
|
285
|
+
* @param failureEvent - The new CI failure event
|
|
286
|
+
*/
|
|
287
|
+
export async function notifyAgentOfCIFailure(agentId, failureEvent) {
|
|
288
|
+
console.log(`[ci-spawner] Notifying agent ${agentId} of new failure`);
|
|
289
|
+
// Find the repository
|
|
290
|
+
const repository = await db.repositories.findByFullName(failureEvent.repository);
|
|
291
|
+
if (!repository || !repository.userId) {
|
|
292
|
+
console.warn(`[ci-spawner] Repository not found or has no userId: ${failureEvent.repository}`);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// Find the daemon that should have this agent
|
|
296
|
+
const daemons = await db.linkedDaemons.findByUserId(repository.userId);
|
|
297
|
+
const onlineDaemon = daemons.find(d => d.status === 'online');
|
|
298
|
+
if (!onlineDaemon) {
|
|
299
|
+
console.warn(`[ci-spawner] No online daemon to notify agent ${agentId}`);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
// Build notification message
|
|
303
|
+
const annotations = failureEvent.annotations;
|
|
304
|
+
const annotationsList = annotations && annotations.length > 0
|
|
305
|
+
? annotations
|
|
306
|
+
.slice(0, 10)
|
|
307
|
+
.map(a => ` - ${a.path}:${a.startLine}: ${a.message}`)
|
|
308
|
+
.join('\n')
|
|
309
|
+
: null;
|
|
310
|
+
const message = `
|
|
311
|
+
CI FAILURE: ${failureEvent.checkName}
|
|
312
|
+
|
|
313
|
+
${failureEvent.failureTitle || 'Check failed'}
|
|
314
|
+
|
|
315
|
+
${failureEvent.failureSummary || ''}
|
|
316
|
+
|
|
317
|
+
${annotationsList ? `Issues:\n${annotationsList}` : ''}
|
|
318
|
+
|
|
319
|
+
Please investigate and fix these issues, then push your changes.
|
|
320
|
+
`.trim();
|
|
321
|
+
// Queue message for the agent via daemon
|
|
322
|
+
await db.linkedDaemons.queueMessage(onlineDaemon.id, {
|
|
323
|
+
from: { daemonId: 'cloud', daemonName: 'Agent Relay Cloud', agent: 'system' },
|
|
324
|
+
to: agentId,
|
|
325
|
+
content: message,
|
|
326
|
+
metadata: { type: 'ci_failure_notification', failureEventId: failureEvent.id },
|
|
327
|
+
timestamp: new Date().toISOString(),
|
|
328
|
+
});
|
|
329
|
+
console.log(`[ci-spawner] Queued CI failure notification for agent ${agentId}`);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Mark a fix attempt as complete
|
|
333
|
+
*
|
|
334
|
+
* Called when an agent reports completion (success or failure)
|
|
335
|
+
*/
|
|
336
|
+
export async function completeFixAttempt(fixAttemptId, success, commitSha, errorMessage) {
|
|
337
|
+
console.log(`[ci-spawner] Completing fix attempt ${fixAttemptId}: ${success ? 'success' : 'failed'}`);
|
|
338
|
+
// Update the fix attempt record
|
|
339
|
+
await db.ciFixAttempts.complete(fixAttemptId, success ? 'success' : 'failed', commitSha, errorMessage);
|
|
340
|
+
// Get the fix attempt to find the failure event
|
|
341
|
+
const fixAttempt = await db.ciFixAttempts.findById(fixAttemptId);
|
|
342
|
+
if (!fixAttempt) {
|
|
343
|
+
console.warn(`[ci-spawner] Fix attempt not found: ${fixAttemptId}`);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
// Get the failure event to find the repository and PR
|
|
347
|
+
const failureEvent = await db.ciFailureEvents.findById(fixAttempt.failureEventId);
|
|
348
|
+
if (!failureEvent) {
|
|
349
|
+
console.warn(`[ci-spawner] Failure event not found: ${fixAttempt.failureEventId}`);
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
// Find the repository to post completion comment
|
|
353
|
+
const repository = await db.repositories.findByFullName(failureEvent.repository);
|
|
354
|
+
if (repository && failureEvent.prNumber !== null) {
|
|
355
|
+
const summary = success
|
|
356
|
+
? `The @ci-fix agent has fixed the \`${failureEvent.checkName}\` check failure.`
|
|
357
|
+
: errorMessage || 'The @ci-fix agent was unable to fix the issue.';
|
|
358
|
+
await postCompletionComment(repository, failureEvent.prNumber, success, summary, commitSha);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get failure history for a repository
|
|
363
|
+
*/
|
|
364
|
+
export async function getFailureHistory(repository, limit = 50) {
|
|
365
|
+
return db.ciFailureEvents.findByRepository(repository, limit);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Get failure history for a specific PR
|
|
369
|
+
*/
|
|
370
|
+
export async function getPRFailureHistory(repository, prNumber) {
|
|
371
|
+
return db.ciFailureEvents.findByPR(repository, prNumber);
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=ci-agent-spawner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-agent-spawner.js","sourceRoot":"","sources":["../../../src/cloud/services/ci-agent-spawner.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"}
|