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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-relay",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Real-time agent-to-agent communication system",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -39,6 +39,10 @@
|
|
|
39
39
|
"dashboard": "node dist/dashboard-server/start.js",
|
|
40
40
|
"pretest": "npm run build",
|
|
41
41
|
"test": "vitest run",
|
|
42
|
+
"test:integration": "vitest run test/cloud/*.integration.test.ts",
|
|
43
|
+
"test:qa": "./scripts/run-cloud-qa.sh",
|
|
44
|
+
"qa": "./scripts/manual-qa.sh",
|
|
45
|
+
"qa:stop": "./scripts/manual-qa.sh --stop",
|
|
42
46
|
"pretest:coverage": "npm run build",
|
|
43
47
|
"test:coverage": "vitest run --coverage",
|
|
44
48
|
"test:watch": "vitest",
|
|
@@ -51,9 +55,10 @@
|
|
|
51
55
|
"services:up": "docker compose -f docker-compose.dev.yml up -d postgres redis && echo '✓ Postgres and Redis running'",
|
|
52
56
|
"services:down": "docker compose -f docker-compose.dev.yml down",
|
|
53
57
|
"services:logs": "docker compose -f docker-compose.dev.yml logs -f postgres redis",
|
|
54
|
-
"cloud:
|
|
55
|
-
"
|
|
56
|
-
"
|
|
58
|
+
"cloud:setup": "./scripts/cloud-setup.sh",
|
|
59
|
+
"cloud:api": "WORKSPACE_IMAGE=relay-workspace:local WORKSPACE_DEV_MOUNT=true node -r dotenv/config dist/cloud/index.js",
|
|
60
|
+
"precloud": "./scripts/cloud-setup.sh --skip-data",
|
|
61
|
+
"cloud": "concurrently -n api,daemon,dashboard -c cyan,blue,magenta \"npm run cloud:api\" \"npm run dev:daemon\" \"npm run dev:next\""
|
|
57
62
|
},
|
|
58
63
|
"keywords": [
|
|
59
64
|
"agent",
|
|
@@ -69,13 +74,16 @@
|
|
|
69
74
|
"license": "MIT",
|
|
70
75
|
"repository": {
|
|
71
76
|
"type": "git",
|
|
72
|
-
"url": "git+https://github.com/
|
|
77
|
+
"url": "git+https://github.com/AgentWorkforce/relay.git"
|
|
73
78
|
},
|
|
74
79
|
"bugs": {
|
|
75
|
-
"url": "https://github.com/
|
|
80
|
+
"url": "https://github.com/AgentWorkforce/relay/issues"
|
|
76
81
|
},
|
|
77
|
-
"homepage": "https://github.com/
|
|
82
|
+
"homepage": "https://github.com/AgentWorkforce/relay#readme",
|
|
78
83
|
"dependencies": {
|
|
84
|
+
"@nangohq/node": "^0.69.20",
|
|
85
|
+
"@types/jsonwebtoken": "^9.0.10",
|
|
86
|
+
"agent-trajectories": "^0.1.1",
|
|
79
87
|
"better-sqlite3": "^9.4.3",
|
|
80
88
|
"chokidar": "^5.0.0",
|
|
81
89
|
"commander": "^12.1.0",
|
|
@@ -88,6 +96,7 @@
|
|
|
88
96
|
"express-session": "^1.18.2",
|
|
89
97
|
"helmet": "^8.1.0",
|
|
90
98
|
"http-proxy-middleware": "^3.0.5",
|
|
99
|
+
"jsonwebtoken": "^9.0.3",
|
|
91
100
|
"node-pty": "1.0.0",
|
|
92
101
|
"pg": "^8.16.3",
|
|
93
102
|
"redis": "^5.10.0",
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Cloud local development setup script
|
|
3
|
+
# Usage: ./scripts/cloud-setup.sh [--skip-docker] [--skip-migrate] [--skip-data]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
SKIP_DOCKER=false
|
|
8
|
+
SKIP_MIGRATE=false
|
|
9
|
+
SKIP_DATA=false
|
|
10
|
+
|
|
11
|
+
# Parse arguments
|
|
12
|
+
for arg in "$@"; do
|
|
13
|
+
case $arg in
|
|
14
|
+
--skip-docker) SKIP_DOCKER=true ;;
|
|
15
|
+
--skip-migrate) SKIP_MIGRATE=true ;;
|
|
16
|
+
--skip-data) SKIP_DATA=true ;;
|
|
17
|
+
esac
|
|
18
|
+
done
|
|
19
|
+
|
|
20
|
+
echo "🚀 Setting up Agent Relay Cloud (local dev)"
|
|
21
|
+
echo ""
|
|
22
|
+
|
|
23
|
+
# Step 1: Start Docker services
|
|
24
|
+
if [ "$SKIP_DOCKER" = false ]; then
|
|
25
|
+
echo "📦 Starting Docker services (Postgres + Redis)..."
|
|
26
|
+
docker compose -f docker-compose.dev.yml up -d postgres redis
|
|
27
|
+
|
|
28
|
+
# Wait for Postgres to be ready
|
|
29
|
+
echo "⏳ Waiting for Postgres to be ready..."
|
|
30
|
+
until docker compose -f docker-compose.dev.yml exec -T postgres pg_isready -U postgres > /dev/null 2>&1; do
|
|
31
|
+
sleep 1
|
|
32
|
+
done
|
|
33
|
+
echo "✓ Postgres is ready"
|
|
34
|
+
else
|
|
35
|
+
echo "⏭️ Skipping Docker setup"
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Step 2: Build TypeScript
|
|
39
|
+
echo ""
|
|
40
|
+
echo "🔨 Building TypeScript..."
|
|
41
|
+
npm run build > /dev/null 2>&1
|
|
42
|
+
echo "✓ Build complete"
|
|
43
|
+
|
|
44
|
+
# Step 3: Run migrations
|
|
45
|
+
if [ "$SKIP_MIGRATE" = false ]; then
|
|
46
|
+
echo ""
|
|
47
|
+
echo "📊 Running database migrations..."
|
|
48
|
+
npm run db:migrate 2>&1 | grep -E "(Applied|already applied|Error)" || true
|
|
49
|
+
echo "✓ Migrations complete"
|
|
50
|
+
else
|
|
51
|
+
echo "⏭️ Skipping migrations"
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Step 4: Set up test data (only if server is running)
|
|
55
|
+
if [ "$SKIP_DATA" = false ]; then
|
|
56
|
+
echo ""
|
|
57
|
+
echo "🧪 Setting up test data..."
|
|
58
|
+
|
|
59
|
+
# Check if cloud server is running, if not start it temporarily
|
|
60
|
+
if ! curl -s http://localhost:4567/api/health > /dev/null 2>&1; then
|
|
61
|
+
echo " Starting cloud server temporarily for setup..."
|
|
62
|
+
node dist/cloud/index.js &
|
|
63
|
+
SERVER_PID=$!
|
|
64
|
+
sleep 3
|
|
65
|
+
STARTED_SERVER=true
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Create test data
|
|
69
|
+
RESPONSE=$(curl -s -X POST http://localhost:4567/api/test/setup-local-cloud \
|
|
70
|
+
-H "Content-Type: application/json" \
|
|
71
|
+
-c /tmp/relay-cookies.txt \
|
|
72
|
+
-d '{"repoName": "test-org/test-repo", "workspaceName": "Local Dev"}' 2>&1 || echo '{"error": "Failed to connect"}')
|
|
73
|
+
|
|
74
|
+
if echo "$RESPONSE" | grep -q '"success":true'; then
|
|
75
|
+
echo "✓ Test data created"
|
|
76
|
+
echo " Cookie saved to /tmp/relay-cookies.txt"
|
|
77
|
+
else
|
|
78
|
+
echo "⚠️ Could not create test data (server may need to be running)"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# Stop temp server if we started it
|
|
82
|
+
if [ "$STARTED_SERVER" = true ]; then
|
|
83
|
+
kill $SERVER_PID 2>/dev/null || true
|
|
84
|
+
fi
|
|
85
|
+
else
|
|
86
|
+
echo "⏭️ Skipping test data setup"
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
echo ""
|
|
90
|
+
echo "✅ Setup complete!"
|
|
91
|
+
echo ""
|
|
92
|
+
echo "To start the cloud server:"
|
|
93
|
+
echo " npm run cloud"
|
|
94
|
+
echo ""
|
|
95
|
+
echo "Then open: http://localhost:4567/app"
|
|
96
|
+
echo ""
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Agent Relay Cloud - Manual QA Testing Setup
|
|
4
|
+
#
|
|
5
|
+
# This script sets up everything for manual browser-based QA testing:
|
|
6
|
+
# - PostgreSQL and Redis (via Docker)
|
|
7
|
+
# - Cloud API server (local, with test mode)
|
|
8
|
+
# - Daemon simulators generating test data
|
|
9
|
+
# - Creates test user for dashboard access
|
|
10
|
+
#
|
|
11
|
+
# Usage:
|
|
12
|
+
# ./scripts/manual-qa.sh # Start everything
|
|
13
|
+
# ./scripts/manual-qa.sh --stop # Stop all services
|
|
14
|
+
# ./scripts/manual-qa.sh --create-data # Create test data only
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
set -e
|
|
18
|
+
|
|
19
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
20
|
+
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
21
|
+
|
|
22
|
+
# Colors
|
|
23
|
+
RED='\033[0;31m'
|
|
24
|
+
GREEN='\033[0;32m'
|
|
25
|
+
YELLOW='\033[1;33m'
|
|
26
|
+
BLUE='\033[0;34m'
|
|
27
|
+
CYAN='\033[0;36m'
|
|
28
|
+
NC='\033[0m'
|
|
29
|
+
|
|
30
|
+
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
|
31
|
+
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
|
|
32
|
+
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
|
33
|
+
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
|
|
34
|
+
log_header() { echo -e "\n${CYAN}=== $1 ===${NC}\n"; }
|
|
35
|
+
|
|
36
|
+
# Parse arguments
|
|
37
|
+
STOP_ONLY=false
|
|
38
|
+
CREATE_DATA_ONLY=false
|
|
39
|
+
|
|
40
|
+
while [[ "$#" -gt 0 ]]; do
|
|
41
|
+
case $1 in
|
|
42
|
+
--stop) STOP_ONLY=true ;;
|
|
43
|
+
--create-data) CREATE_DATA_ONLY=true ;;
|
|
44
|
+
-h|--help)
|
|
45
|
+
echo "Usage: $0 [options]"
|
|
46
|
+
echo ""
|
|
47
|
+
echo "Options:"
|
|
48
|
+
echo " --stop Stop all services"
|
|
49
|
+
echo " --create-data Create test data only (assumes services running)"
|
|
50
|
+
echo " -h, --help Show this help"
|
|
51
|
+
exit 0
|
|
52
|
+
;;
|
|
53
|
+
*) log_error "Unknown option: $1"; exit 1 ;;
|
|
54
|
+
esac
|
|
55
|
+
shift
|
|
56
|
+
done
|
|
57
|
+
|
|
58
|
+
cd "$PROJECT_DIR"
|
|
59
|
+
|
|
60
|
+
# Stop services
|
|
61
|
+
stop_services() {
|
|
62
|
+
log_header "Stopping Services"
|
|
63
|
+
|
|
64
|
+
# Stop daemon simulators
|
|
65
|
+
pkill -f "daemon-simulator" 2>/dev/null || true
|
|
66
|
+
|
|
67
|
+
# Stop cloud server
|
|
68
|
+
pkill -f "node dist/cloud/index.js" 2>/dev/null || true
|
|
69
|
+
|
|
70
|
+
# Stop Docker services
|
|
71
|
+
docker compose -f docker-compose.dev.yml down 2>/dev/null || true
|
|
72
|
+
|
|
73
|
+
log_success "All services stopped"
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if [ "$STOP_ONLY" = true ]; then
|
|
77
|
+
stop_services
|
|
78
|
+
exit 0
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
# Create test data
|
|
82
|
+
create_test_data() {
|
|
83
|
+
log_header "Creating Test Data"
|
|
84
|
+
|
|
85
|
+
local API_URL="${1:-http://localhost:3000}"
|
|
86
|
+
|
|
87
|
+
# Wait for API to be ready
|
|
88
|
+
log_info "Waiting for API..."
|
|
89
|
+
for i in {1..30}; do
|
|
90
|
+
if curl -sf "$API_URL/health" >/dev/null 2>&1; then
|
|
91
|
+
break
|
|
92
|
+
fi
|
|
93
|
+
if [ $i -eq 30 ]; then
|
|
94
|
+
log_error "API not available"
|
|
95
|
+
return 1
|
|
96
|
+
fi
|
|
97
|
+
sleep 1
|
|
98
|
+
done
|
|
99
|
+
|
|
100
|
+
# Create test user
|
|
101
|
+
log_info "Creating test user..."
|
|
102
|
+
USER_RESPONSE=$(curl -sf -X POST "$API_URL/api/test/create-user" \
|
|
103
|
+
-H "Content-Type: application/json" \
|
|
104
|
+
-d '{"email": "qa@test.local", "name": "QA Tester"}' 2>/dev/null || echo "")
|
|
105
|
+
|
|
106
|
+
if [ -n "$USER_RESPONSE" ]; then
|
|
107
|
+
USER_ID=$(echo "$USER_RESPONSE" | grep -o '"userId":"[^"]*"' | cut -d'"' -f4)
|
|
108
|
+
log_success "Created test user: $USER_ID"
|
|
109
|
+
else
|
|
110
|
+
log_warn "Could not create test user (may already exist or test mode disabled)"
|
|
111
|
+
fi
|
|
112
|
+
|
|
113
|
+
# Create test daemons
|
|
114
|
+
log_info "Creating test daemons..."
|
|
115
|
+
|
|
116
|
+
for i in 1 2 3; do
|
|
117
|
+
DAEMON_RESPONSE=$(curl -sf -X POST "$API_URL/api/test/create-daemon" \
|
|
118
|
+
-H "Content-Type: application/json" \
|
|
119
|
+
-d "{\"name\": \"qa-daemon-$i\", \"machineId\": \"qa-machine-$i\"}" 2>/dev/null || echo "")
|
|
120
|
+
|
|
121
|
+
if [ -n "$DAEMON_RESPONSE" ]; then
|
|
122
|
+
DAEMON_ID=$(echo "$DAEMON_RESPONSE" | grep -o '"daemonId":"[^"]*"' | cut -d'"' -f4)
|
|
123
|
+
API_KEY=$(echo "$DAEMON_RESPONSE" | grep -o '"apiKey":"[^"]*"' | cut -d'"' -f4)
|
|
124
|
+
log_success "Created daemon $i: $DAEMON_ID"
|
|
125
|
+
|
|
126
|
+
# Save API key for simulator
|
|
127
|
+
echo "$API_KEY" > "/tmp/qa-daemon-$i.key"
|
|
128
|
+
fi
|
|
129
|
+
done
|
|
130
|
+
|
|
131
|
+
log_success "Test data created!"
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if [ "$CREATE_DATA_ONLY" = true ]; then
|
|
135
|
+
create_test_data
|
|
136
|
+
exit 0
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
# Main setup
|
|
140
|
+
log_header "Agent Relay - Manual QA Setup"
|
|
141
|
+
|
|
142
|
+
# Check prerequisites
|
|
143
|
+
if ! docker info >/dev/null 2>&1; then
|
|
144
|
+
log_error "Docker is not running"
|
|
145
|
+
exit 1
|
|
146
|
+
fi
|
|
147
|
+
|
|
148
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
149
|
+
log_error "Node.js is required"
|
|
150
|
+
exit 1
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
# Step 1: Build if needed
|
|
154
|
+
if [ ! -d "dist" ]; then
|
|
155
|
+
log_header "Building Project"
|
|
156
|
+
npm run build
|
|
157
|
+
fi
|
|
158
|
+
|
|
159
|
+
# Step 2: Start infrastructure
|
|
160
|
+
log_header "Starting Infrastructure"
|
|
161
|
+
|
|
162
|
+
docker compose -f docker-compose.dev.yml up -d postgres redis
|
|
163
|
+
|
|
164
|
+
log_info "Waiting for PostgreSQL..."
|
|
165
|
+
for i in {1..30}; do
|
|
166
|
+
if docker compose -f docker-compose.dev.yml exec -T postgres pg_isready -U agent_relay >/dev/null 2>&1; then
|
|
167
|
+
log_success "PostgreSQL is ready"
|
|
168
|
+
break
|
|
169
|
+
fi
|
|
170
|
+
if [ $i -eq 30 ]; then
|
|
171
|
+
log_error "PostgreSQL failed to start"
|
|
172
|
+
exit 1
|
|
173
|
+
fi
|
|
174
|
+
sleep 1
|
|
175
|
+
done
|
|
176
|
+
|
|
177
|
+
log_info "Waiting for Redis..."
|
|
178
|
+
for i in {1..30}; do
|
|
179
|
+
if docker compose -f docker-compose.dev.yml exec -T redis redis-cli ping >/dev/null 2>&1; then
|
|
180
|
+
log_success "Redis is ready"
|
|
181
|
+
break
|
|
182
|
+
fi
|
|
183
|
+
if [ $i -eq 30 ]; then
|
|
184
|
+
log_error "Redis failed to start"
|
|
185
|
+
exit 1
|
|
186
|
+
fi
|
|
187
|
+
sleep 1
|
|
188
|
+
done
|
|
189
|
+
|
|
190
|
+
# Step 3: Start Cloud API server
|
|
191
|
+
log_header "Starting Cloud API Server"
|
|
192
|
+
|
|
193
|
+
export NODE_ENV=development
|
|
194
|
+
export PORT=3000
|
|
195
|
+
export PUBLIC_URL=http://localhost:3000
|
|
196
|
+
export DATABASE_URL="postgres://agent_relay:dev_password@localhost:5432/agent_relay"
|
|
197
|
+
export REDIS_URL="redis://localhost:6379"
|
|
198
|
+
export SESSION_SECRET="dev-session-secret"
|
|
199
|
+
export VAULT_MASTER_KEY="ZGV2LXZhdWx0LWtleS1jaGFuZ2UtaW4tcHJvZHVjdGlvbg=="
|
|
200
|
+
export RELAY_CLOUD_ENABLED=true
|
|
201
|
+
export RELAY_MEMORY_MONITORING=true
|
|
202
|
+
|
|
203
|
+
# Start cloud server in background
|
|
204
|
+
node dist/cloud/index.js &
|
|
205
|
+
CLOUD_PID=$!
|
|
206
|
+
echo $CLOUD_PID > /tmp/cloud-server.pid
|
|
207
|
+
|
|
208
|
+
log_info "Cloud server starting (PID: $CLOUD_PID)..."
|
|
209
|
+
|
|
210
|
+
# Wait for cloud server
|
|
211
|
+
for i in {1..60}; do
|
|
212
|
+
if curl -sf http://localhost:3000/health >/dev/null 2>&1; then
|
|
213
|
+
log_success "Cloud API server is ready"
|
|
214
|
+
break
|
|
215
|
+
fi
|
|
216
|
+
if [ $i -eq 60 ]; then
|
|
217
|
+
log_error "Cloud server failed to start"
|
|
218
|
+
exit 1
|
|
219
|
+
fi
|
|
220
|
+
sleep 1
|
|
221
|
+
done
|
|
222
|
+
|
|
223
|
+
# Step 4: Create test data
|
|
224
|
+
create_test_data "http://localhost:3000"
|
|
225
|
+
|
|
226
|
+
# Step 5: Start daemon simulators
|
|
227
|
+
log_header "Starting Daemon Simulators"
|
|
228
|
+
|
|
229
|
+
# Check if tsx is available, otherwise use ts-node or compile
|
|
230
|
+
if command -v tsx >/dev/null 2>&1; then
|
|
231
|
+
TSX_CMD="tsx"
|
|
232
|
+
elif command -v ts-node >/dev/null 2>&1; then
|
|
233
|
+
TSX_CMD="ts-node"
|
|
234
|
+
else
|
|
235
|
+
log_warn "No TypeScript runner found, skipping simulators"
|
|
236
|
+
TSX_CMD=""
|
|
237
|
+
fi
|
|
238
|
+
|
|
239
|
+
if [ -n "$TSX_CMD" ] && [ -f "test/cloud/daemon-simulator.ts" ]; then
|
|
240
|
+
# Start simulator 1 - normal operation
|
|
241
|
+
DAEMON_NAME=qa-daemon-1 \
|
|
242
|
+
CLOUD_API_URL=http://localhost:3000 \
|
|
243
|
+
AGENT_COUNT=3 \
|
|
244
|
+
REPORT_INTERVAL_MS=5000 \
|
|
245
|
+
SIMULATE_MEMORY_GROWTH=false \
|
|
246
|
+
$TSX_CMD test/cloud/daemon-simulator.ts &
|
|
247
|
+
echo $! > /tmp/simulator-1.pid
|
|
248
|
+
log_info "Started simulator 1 (PID: $!)"
|
|
249
|
+
|
|
250
|
+
# Start simulator 2 - memory growth
|
|
251
|
+
DAEMON_NAME=qa-daemon-2 \
|
|
252
|
+
CLOUD_API_URL=http://localhost:3000 \
|
|
253
|
+
AGENT_COUNT=2 \
|
|
254
|
+
REPORT_INTERVAL_MS=5000 \
|
|
255
|
+
SIMULATE_MEMORY_GROWTH=true \
|
|
256
|
+
$TSX_CMD test/cloud/daemon-simulator.ts &
|
|
257
|
+
echo $! > /tmp/simulator-2.pid
|
|
258
|
+
log_info "Started simulator 2 (PID: $!)"
|
|
259
|
+
|
|
260
|
+
sleep 3
|
|
261
|
+
log_success "Daemon simulators running"
|
|
262
|
+
else
|
|
263
|
+
log_warn "Daemon simulators not started (tsx/ts-node not available)"
|
|
264
|
+
fi
|
|
265
|
+
|
|
266
|
+
# Done!
|
|
267
|
+
log_header "Manual QA Environment Ready!"
|
|
268
|
+
|
|
269
|
+
echo -e "${GREEN}Access Points:${NC}"
|
|
270
|
+
echo " - Dashboard: http://localhost:3000"
|
|
271
|
+
echo " - API Health: http://localhost:3000/health"
|
|
272
|
+
echo " - Metrics: http://localhost:3000/metrics"
|
|
273
|
+
echo ""
|
|
274
|
+
echo -e "${GREEN}Test Endpoints:${NC}"
|
|
275
|
+
echo " - GET /api/test/status - Check test mode"
|
|
276
|
+
echo " - POST /api/test/create-user - Create test user"
|
|
277
|
+
echo " - POST /api/test/create-daemon - Create test daemon"
|
|
278
|
+
echo ""
|
|
279
|
+
echo -e "${GREEN}Database Access:${NC}"
|
|
280
|
+
echo " psql postgres://agent_relay:dev_password@localhost:5432/agent_relay"
|
|
281
|
+
echo ""
|
|
282
|
+
echo -e "${GREEN}Redis Access:${NC}"
|
|
283
|
+
echo " redis-cli -h localhost -p 6379"
|
|
284
|
+
echo ""
|
|
285
|
+
echo -e "${YELLOW}Note:${NC} OAuth is bypassed in test mode. Use /api/test endpoints to create users."
|
|
286
|
+
echo ""
|
|
287
|
+
echo -e "To stop: ${CYAN}./scripts/manual-qa.sh --stop${NC}"
|
|
288
|
+
echo ""
|
|
289
|
+
|
|
290
|
+
# Keep script running to show logs
|
|
291
|
+
log_info "Showing cloud server logs (Ctrl+C to exit, services keep running)..."
|
|
292
|
+
echo ""
|
|
293
|
+
tail -f /dev/null
|
package/scripts/postinstall.js
CHANGED
|
@@ -224,10 +224,70 @@ function installDashboardDeps() {
|
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Patch agent-trajectories CLI to record agent info on start
|
|
229
|
+
*/
|
|
230
|
+
function patchAgentTrajectories() {
|
|
231
|
+
const pkgRoot = getPackageRoot();
|
|
232
|
+
const cliPath = path.join(pkgRoot, 'node_modules', 'agent-trajectories', 'dist', 'cli', 'index.js');
|
|
233
|
+
|
|
234
|
+
if (!fs.existsSync(cliPath)) {
|
|
235
|
+
info('agent-trajectories not installed, skipping patch');
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const content = fs.readFileSync(cliPath, 'utf-8');
|
|
240
|
+
|
|
241
|
+
// If already patched, exit early
|
|
242
|
+
if (content.includes('--agent <name>') && content.includes('trajectory.agents.push')) {
|
|
243
|
+
info('agent-trajectories already patched');
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const optionNeedle = '.option("-t, --task <id>", "External task ID").option("-s, --source <system>", "Task system (github, linear, jira, beads)").option("--url <url>", "URL to external task")';
|
|
248
|
+
const optionReplacement = `${optionNeedle}.option("-a, --agent <name>", "Agent name starting the trajectory").option("-r, --role <role>", "Agent role (lead, contributor, reviewer)")`;
|
|
249
|
+
|
|
250
|
+
const createNeedle = ` const trajectory = createTrajectory({
|
|
251
|
+
title,
|
|
252
|
+
source
|
|
253
|
+
});
|
|
254
|
+
await storage.save(trajectory);`;
|
|
255
|
+
|
|
256
|
+
const createReplacement = ` const agentName = options.agent || process.env.AGENT_NAME || process.env.AGENT_RELAY_NAME || process.env.USER || process.env.USERNAME;
|
|
257
|
+
const agentRole = options.role || "lead";
|
|
258
|
+
const trajectory = createTrajectory({
|
|
259
|
+
title,
|
|
260
|
+
source
|
|
261
|
+
});
|
|
262
|
+
if (agentName) {
|
|
263
|
+
trajectory.agents.push({
|
|
264
|
+
name: agentName,
|
|
265
|
+
role: ["lead", "contributor", "reviewer"].includes(agentRole) ? agentRole : "lead",
|
|
266
|
+
joinedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
await storage.save(trajectory);`;
|
|
270
|
+
|
|
271
|
+
if (!content.includes(optionNeedle) || !content.includes(createNeedle)) {
|
|
272
|
+
warn('agent-trajectories CLI format changed, skipping patch');
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const updated = content
|
|
277
|
+
.replace(optionNeedle, optionReplacement)
|
|
278
|
+
.replace(createNeedle, createReplacement);
|
|
279
|
+
|
|
280
|
+
fs.writeFileSync(cliPath, updated, 'utf-8');
|
|
281
|
+
success('Patched agent-trajectories to record agent on trail start');
|
|
282
|
+
}
|
|
283
|
+
|
|
227
284
|
/**
|
|
228
285
|
* Main postinstall routine
|
|
229
286
|
*/
|
|
230
287
|
async function main() {
|
|
288
|
+
// Ensure trail CLI captures agent info on start
|
|
289
|
+
patchAgentTrajectories();
|
|
290
|
+
|
|
231
291
|
// Always install dashboard dependencies (needed for build)
|
|
232
292
|
installDashboardDeps();
|
|
233
293
|
|