@wardby/cli 0.5.3 → 0.7.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/.env.example +33 -0
- package/README.md +25 -14
- package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/context.d.ts +22 -0
- package/dist/claude-coding-worker/context.js +92 -0
- package/dist/claude-coding-worker/driver.d.ts +27 -3
- package/dist/claude-coding-worker/driver.js +161 -20
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +25 -5
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +6 -2
- package/dist/cli-native-mode.d.ts +9 -0
- package/dist/cli-native-mode.js +20 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +161 -11
- package/dist/coding/claude-context.d.ts +45 -0
- package/dist/coding/claude-context.js +434 -0
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +50 -118
- package/dist/coding/profile.js +51 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +292 -270
- package/dist/coding/protocol.js +322 -15
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +12 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +51 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +16 -3
- package/dist/coding-worker/artifact.js +5 -3
- package/dist/coding-worker/debug-trace.d.ts +6 -5
- package/dist/coding-worker/debug-trace.js +13 -18
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +118 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/sdk.d.ts +6 -0
- package/dist/coding-worker/sdk.js +1 -0
- package/dist/coding-worker/skills.d.ts +23 -0
- package/dist/coding-worker/skills.js +117 -0
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +13 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/github-allowed-accounts.d.ts +15 -0
- package/dist/config/github-allowed-accounts.js +36 -0
- package/dist/config/low-power.d.ts +12 -0
- package/dist/config/low-power.js +18 -0
- package/dist/config/mobile.d.ts +12 -0
- package/dist/config/mobile.js +18 -0
- package/dist/config/providers.d.ts +65 -3
- package/dist/config/providers.js +147 -11
- package/dist/config/test-simulators.d.ts +82 -0
- package/dist/config/test-simulators.js +305 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/db.d.ts +16 -6
- package/dist/core/db.js +12 -10
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/dispatch.d.ts +53 -0
- package/dist/core/dispatch.js +167 -57
- package/dist/core/engine-native.js +10 -6
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +168 -0
- package/dist/core/grants.d.ts +19 -6
- package/dist/core/grants.js +55 -6
- package/dist/core/host-events.d.ts +67 -5
- package/dist/core/host-events.js +571 -37
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +298 -20
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +151 -20
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +16 -11
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +68 -29
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +130 -0
- package/dist/core/merge-order-check.js +343 -0
- package/dist/core/notification-dispatcher.d.ts +70 -0
- package/dist/core/notification-dispatcher.js +368 -0
- package/dist/core/notification-templates.d.ts +19 -0
- package/dist/core/notification-templates.js +139 -0
- package/dist/core/notifications.d.ts +10 -0
- package/dist/core/notifications.js +38 -0
- package/dist/core/pg-auth.d.ts +22 -0
- package/dist/core/pg-auth.js +152 -0
- package/dist/core/power-composition.d.ts +16 -0
- package/dist/core/power-composition.js +37 -0
- package/dist/core/power-idle.d.ts +14 -0
- package/dist/core/power-idle.js +30 -0
- package/dist/core/power.d.ts +71 -0
- package/dist/core/power.js +202 -0
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +8 -5
- package/dist/core/reconciler.js +37 -6
- package/dist/core/related-pull-requests.d.ts +59 -7
- package/dist/core/related-pull-requests.js +140 -25
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/repo-access.d.ts +15 -0
- package/dist/core/repo-access.js +66 -0
- package/dist/core/review-fix.d.ts +38 -1
- package/dist/core/review-fix.js +209 -7
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +23 -0
- package/dist/core/review-host-tools.js +156 -14
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +384 -5
- package/dist/core/runner.js +1244 -372
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +39 -0
- package/dist/core/secret-broker-config.js +112 -0
- package/dist/core/secret-guard.d.ts +46 -0
- package/dist/core/secret-guard.js +104 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/secrets.d.ts +39 -4
- package/dist/core/secrets.js +148 -40
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-event-recorder.d.ts +14 -0
- package/dist/core/workflow-event-recorder.js +120 -0
- package/dist/core/workflow-events.d.ts +94 -0
- package/dist/core/workflow-events.js +48 -0
- package/dist/core/workflow-run-events.d.ts +18 -0
- package/dist/core/workflow-run-events.js +75 -0
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +92 -3
- package/dist/generated/prisma/client.d.ts +92 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +364 -54
- package/dist/generated/prisma/enums.d.ts +37 -0
- package/dist/generated/prisma/enums.js +31 -0
- package/dist/generated/prisma/internal/class.d.ts +132 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +1332 -142
- package/dist/generated/prisma/internal/prismaNamespace.js +227 -5
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +234 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +227 -5
- package/dist/generated/prisma/models/Agent.d.ts +464 -7
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +301 -1
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +1841 -1
- package/dist/generated/prisma/models/DeferredReview.d.ts +78 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1713 -0
- package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1551 -0
- package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
- package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
- package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
- package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
- package/dist/generated/prisma/models/NotificationChannel.js +1 -0
- package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
- package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
- package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
- package/dist/generated/prisma/models/NotificationThread.js +1 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +1619 -58
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +37 -1
- package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
- package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
- package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
- package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
- package/dist/generated/prisma/models.d.ts +12 -0
- package/dist/help/build.js +4 -2
- package/dist/help/catalog.d.ts +1 -1
- package/dist/help/catalog.js +31 -6
- package/dist/help-index.json +2584 -146
- package/dist/import/create.js +49 -3
- package/dist/import/neutral-schema.d.ts +50 -277
- package/dist/import/neutral-schema.js +7 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +11 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/repo-authorization.js +14 -0
- package/dist/mcp/auth/resource-server.d.ts +2 -1
- package/dist/mcp/auth/resource-server.js +7 -2
- package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
- package/dist/mcp/auth/self-hosted/browser.js +19 -6
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/context.d.ts +6 -0
- package/dist/mcp/host-events/github-ingress.d.ts +25 -1
- package/dist/mcp/host-events/github-ingress.js +70 -1
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.js +117 -20
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +277 -24
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +9 -3
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.d.ts +2 -0
- package/dist/mcp/tools/notification-channels.js +293 -0
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/power.d.ts +2 -0
- package/dist/mcp/tools/power.js +77 -0
- package/dist/mcp/tools/repositories.js +18 -5
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.d.ts +0 -6
- package/dist/mcp/tools/runs.js +41 -14
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
- package/dist/mcp/tools/secret-broker-compat.js +23 -0
- package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
- package/dist/mcp/tools/secret-elicitation-form.js +205 -10
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -54
- package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
- package/dist/mcp/tools/secret-elicitation.js +110 -12
- package/dist/mcp/tools/secrets.js +186 -9
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +2 -2
- package/dist/mcp/tools/tools.js +47 -11
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/native-worker/composition.d.ts +23 -0
- package/dist/native-worker/composition.js +77 -0
- package/dist/native-worker/docker-isolation.d.ts +65 -0
- package/dist/native-worker/docker-isolation.js +183 -0
- package/dist/native-worker/docker-launcher.d.ts +110 -0
- package/dist/native-worker/docker-launcher.js +297 -0
- package/dist/native-worker/gateway-server.d.ts +77 -0
- package/dist/native-worker/gateway-server.js +412 -0
- package/dist/native-worker/gateway.d.ts +70 -0
- package/dist/native-worker/gateway.js +263 -0
- package/dist/native-worker/http-server.d.ts +24 -0
- package/dist/native-worker/http-server.js +113 -0
- package/dist/native-worker/http-transport.d.ts +17 -0
- package/dist/native-worker/http-transport.js +88 -0
- package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
- package/dist/native-worker/kubernetes-isolation.js +218 -0
- package/dist/native-worker/kubernetes-launcher.d.ts +106 -0
- package/dist/native-worker/kubernetes-launcher.js +375 -0
- package/dist/native-worker/launch.d.ts +62 -0
- package/dist/native-worker/launch.js +49 -0
- package/dist/native-worker/ledger.d.ts +125 -0
- package/dist/native-worker/ledger.js +245 -0
- package/dist/native-worker/loopback.d.ts +12 -0
- package/dist/native-worker/loopback.js +44 -0
- package/dist/native-worker/main.d.ts +8 -0
- package/dist/native-worker/main.js +85 -0
- package/dist/native-worker/protocol.d.ts +296 -0
- package/dist/native-worker/protocol.js +246 -0
- package/dist/native-worker/sandbox-executor.d.ts +83 -0
- package/dist/native-worker/sandbox-executor.js +284 -0
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +29 -0
- package/dist/native-worker/stdio.js +189 -0
- package/dist/native-worker/warm-delivery.d.ts +16 -0
- package/dist/native-worker/warm-delivery.js +33 -0
- package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
- package/dist/native-worker/warm-pool-ledger.js +73 -0
- package/dist/native-worker/warm-pool.d.ts +107 -0
- package/dist/native-worker/warm-pool.js +283 -0
- package/dist/native-worker/worker.d.ts +17 -0
- package/dist/native-worker/worker.js +141 -0
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/authorization-server.d.ts +3 -0
- package/dist/providers/auth/index.js +2 -0
- package/dist/providers/auth/self-hosted.d.ts +14 -2
- package/dist/providers/auth/self-hosted.js +54 -4
- package/dist/providers/chat/fake.d.ts +46 -0
- package/dist/providers/chat/fake.js +39 -0
- package/dist/providers/chat/index.d.ts +4 -0
- package/dist/providers/chat/index.js +8 -0
- package/dist/providers/chat/slack.d.ts +37 -0
- package/dist/providers/chat/slack.js +105 -0
- package/dist/providers/chat/types.d.ts +42 -0
- package/dist/providers/chat/types.js +19 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/memory-ledger.js +84 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
- package/dist/providers/coding-proxy/proxy.d.ts +14 -1
- package/dist/providers/coding-proxy/proxy.js +166 -14
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +4 -0
- package/dist/providers/coding-proxy/runtime.js +78 -16
- package/dist/providers/coding-proxy/server.d.ts +6 -1
- package/dist/providers/coding-proxy/server.js +45 -1
- package/dist/providers/coding-proxy/types.d.ts +65 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +36 -2
- package/dist/providers/engine/types.js +39 -0
- package/dist/providers/executor/composition.d.ts +31 -1
- package/dist/providers/executor/composition.js +81 -8
- package/dist/providers/executor/container.d.ts +385 -9
- package/dist/providers/executor/container.js +1234 -99
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +91 -0
- package/dist/providers/executor/dbos.js +319 -26
- package/dist/providers/executor/deferred.d.ts +44 -0
- package/dist/providers/executor/deferred.js +100 -0
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +39 -10
- package/dist/providers/executor/routing.js +77 -32
- package/dist/providers/executor/types.d.ts +25 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +8 -0
- package/dist/providers/jobs/docker-isolation.js +17 -0
- package/dist/providers/jobs/docker.d.ts +1 -0
- package/dist/providers/jobs/docker.js +29 -4
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +23 -2
- package/dist/providers/jobs/fake-kubernetes-api.js +45 -1
- package/dist/providers/jobs/kubernetes-api.d.ts +25 -1
- package/dist/providers/jobs/kubernetes-api.js +17 -0
- package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
- package/dist/providers/jobs/kubernetes-client.js +61 -3
- package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
- package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +23 -1
- package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
- package/dist/providers/jobs/kubernetes-platform.js +38 -1
- package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
- package/dist/providers/jobs/kubernetes-preflight.js +4 -2
- package/dist/providers/jobs/kubernetes.d.ts +42 -2
- package/dist/providers/jobs/kubernetes.js +178 -19
- package/dist/providers/jobs/metadata-probes.d.ts +11 -0
- package/dist/providers/jobs/metadata-probes.js +13 -0
- package/dist/providers/jobs/types.d.ts +42 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +39 -2
- package/dist/providers/review-host/github.js +274 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +157 -2
- package/dist/providers/review-host/types.js +8 -0
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +33 -2
- package/dist/providers/vcs/git.js +324 -22
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +246 -12
- package/dist/providers/vcs/github.js +521 -61
- package/dist/providers/vcs/index.js +8 -1
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +33 -1
- package/dist/providers/vcs/routing.d.ts +4 -2
- package/dist/providers/vcs/routing.js +6 -0
- package/dist/providers/vcs/types.d.ts +80 -3
- package/dist/quickstart/coding-seed.d.ts +21 -3
- package/dist/quickstart/coding-seed.js +283 -3
- package/dist/quickstart/images.d.ts +2 -0
- package/dist/quickstart/images.js +7 -1
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/brokered-fetch.d.ts +23 -0
- package/dist/sandbox/brokered-fetch.js +37 -0
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +35 -0
- package/dist/sandbox/host-functions.js +150 -91
- package/dist/sandbox/prelude.js +7 -1
- package/dist/sandbox/run-in-sandbox.d.ts +19 -0
- package/dist/sandbox/run-in-sandbox.js +28 -10
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +3 -1
- package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
- package/dist/sandbox/secret-broker-sigv4.js +49 -0
- package/dist/sandbox/secret-broker.d.ts +34 -0
- package/dist/sandbox/secret-broker.js +161 -0
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/user-tool.d.ts +14 -0
- package/dist/sandbox/user-tool.js +32 -0
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +25 -0
- package/dist/viewer/api-schema.d.ts +372 -2454
- package/dist/viewer/api-schema.js +29 -0
- package/dist/viewer/build-schemas.js +10 -3
- package/dist/viewer/event-bus.d.ts +6 -0
- package/dist/viewer/event-bus.js +16 -7
- package/dist/viewer/graph.d.ts +5 -2
- package/dist/viewer/graph.js +7 -2
- package/dist/viewer/http.d.ts +0 -1
- package/dist/viewer/http.js +2 -2
- package/dist/viewer/infra.js +25 -2
- package/dist/viewer/limits.d.ts +4 -0
- package/dist/viewer/limits.js +4 -0
- package/dist/viewer/openapi.d.ts +15 -0
- package/dist/viewer/openapi.js +170 -0
- package/dist/wardby-bin.js +10 -0
- package/docs/README.md +7 -0
- package/docs/agent-recipes.md +114 -27
- package/docs/architecture-runtime.md +16 -1
- package/docs/code-review-agents.md +689 -45
- package/docs/coding-agent-setup.md +602 -12
- package/docs/coding-packages.md +1037 -92
- package/docs/coding-services.md +30 -13
- package/docs/coding-worker-byo-images.md +218 -6
- package/docs/coding-worker-isolation.md +173 -44
- package/docs/getting-started-gke.md +332 -129
- package/docs/getting-started-identity-provider.md +31 -11
- package/docs/getting-started.md +14 -4
- package/docs/jira-agents.md +22 -9
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/native-sandbox.md +731 -0
- package/docs/observability.md +4 -0
- package/docs/release-verification.md +9 -0
- package/docs/security-deployment.md +146 -14
- package/docs/slack-notifications.md +268 -0
- package/docs/tool-secrets.md +284 -0
- package/docs/viewer-api.md +46 -5
- package/docs/viewer-api.openapi.yml +1404 -0
- package/help/admin-viewer.md +29 -3
- package/help/agent-recipes.md +27 -0
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +79 -0
- package/help/build-claude-code-image.md +131 -0
- package/help/build-worker-image.md +6 -7
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +243 -10
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +23 -9
- package/help/deployment-targets.md +25 -14
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-provider-not-configured.md +2 -2
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/database-auth-invalid.md +28 -0
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +29 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/low-power-disabled.md +29 -0
- package/help/errors/low-power-scale-forbidden.md +35 -0
- package/help/errors/low-power-wake-timeout.md +30 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/mobile-disabled.md +31 -0
- package/help/errors/native-sandbox-capacity.md +22 -0
- package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
- package/help/errors/native-sandbox-docker-failed.md +20 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
- package/help/errors/native-sandbox-image-not-pinned.md +19 -0
- package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +22 -0
- package/help/errors/native-sandbox-requires-catalog.md +31 -0
- package/help/errors/native-sandbox-unavailable.md +19 -0
- package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +21 -0
- package/help/errors/native-sandbox-worker-lost.md +20 -0
- package/help/errors/native-sandbox-worker-unready.md +22 -0
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-broker-body-invalid.md +26 -0
- package/help/errors/secret-broker-changed.md +20 -0
- package/help/errors/secret-broker-config-invalid.md +30 -0
- package/help/errors/secret-broker-conflict.md +27 -0
- package/help/errors/secret-broker-destination-denied.md +28 -0
- package/help/errors/secret-broker-value-invalid.md +28 -0
- package/help/errors/secret-brokered.md +24 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/secret-not-brokered.md +25 -0
- package/help/errors/slack-auth-failed.md +48 -0
- package/help/errors/slack-channel-unreachable.md +39 -0
- package/help/errors/slack-not-configured.md +33 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/getting-started.md +4 -5
- package/help/github-app-setup.md +132 -0
- package/help/github.md +40 -1
- package/help/identity-and-access.md +7 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +3 -4
- package/help/low-power-mode.md +131 -0
- package/help/merge-order-check.md +122 -0
- package/help/mobile-app.md +54 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +150 -0
- package/help/observability.md +8 -0
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +80 -16
- package/help/repo-instructions-and-skills.md +91 -0
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +43 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +76 -0
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +99 -7
- package/package.json +27 -13
- package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
- package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
- package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
- package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
- package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
- package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
- package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
- package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
- package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
- package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
- package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
- package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
- package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
- package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/schema.prisma +631 -146
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
package/dist/mcp/index.js
CHANGED
|
@@ -13,8 +13,11 @@
|
|
|
13
13
|
* missing `AUTH_JWKS_URI`/`AUTH_SIGNING_KEY` a deployment running stdio-only
|
|
14
14
|
* never needed to set.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { startupTestSimulators } from "../config/test-simulators.js";
|
|
17
|
+
import { loadProviderConfig, loadMcpConfig, loadShutdownDrainSeconds, loadAuthConfig, loadGitHubEventConfig, loadJiraConfig, loadGitHubVcsConfig, loadBlobStoreConfig, } from "../config/providers.js";
|
|
17
18
|
import { prisma } from "../core/db.js";
|
|
19
|
+
import { guardDatastore, guardAgentMemory } from "../core/secret-guarded-stores.js";
|
|
20
|
+
import { createDbSecretWriteGuard } from "../core/secret-guard.js";
|
|
18
21
|
import { waitForInFlightRuns } from "../core/in-flight-runs.js";
|
|
19
22
|
import { NativeEngine } from "../core/engine-native.js";
|
|
20
23
|
import { resolveLlmRegistrations, RoutingLlmProvider } from "../providers/llm/index.js";
|
|
@@ -22,15 +25,20 @@ import { startModelCatalog } from "../providers/llm/catalog-store.js";
|
|
|
22
25
|
import { PostgresDatastore } from "../providers/datastore/index.js";
|
|
23
26
|
import { PostgresAgentMemory } from "../providers/memory/index.js";
|
|
24
27
|
import { buildConfiguredExecutor, buildExecutor } from "../providers/executor/index.js";
|
|
28
|
+
import { buildNativeSandboxExecutor } from "../native-worker/composition.js";
|
|
25
29
|
import { buildSecretCipher } from "../providers/secrets/index.js";
|
|
26
30
|
import { buildIssueTrackers } from "../providers/issue-tracker/index.js";
|
|
27
31
|
import { buildHostUserAuthorizers, buildReviewHosts } from "../providers/review-host/index.js";
|
|
32
|
+
import { buildChatProviders } from "../providers/chat/index.js";
|
|
28
33
|
import { createRepoAccessGate } from "../core/repo-access.js";
|
|
29
34
|
import { userCallbackPath } from "../core/host-identity-links.js";
|
|
30
35
|
import { buildAuthProvider } from "../providers/auth/index.js";
|
|
31
36
|
import { GitHubAppClient } from "../providers/vcs/github.js";
|
|
37
|
+
import { loadGitHubAllowedAccounts } from "../config/github-allowed-accounts.js";
|
|
32
38
|
import { buildMcpServer } from "./server.js";
|
|
39
|
+
import { buildPower } from "../core/power-composition.js";
|
|
33
40
|
import { countUnattendedSchedules, unattendedSchedulesWarning } from "./unattended-schedules.js";
|
|
41
|
+
import { logZod3ToolWarnings } from "../core/zod3-window.js";
|
|
34
42
|
import { runStdioServer } from "./transport/stdio.js";
|
|
35
43
|
import { startHttpServer } from "./transport/streamable-http.js";
|
|
36
44
|
import { resolvePrincipal } from "./auth/principal.js";
|
|
@@ -43,23 +51,32 @@ import { registerAgentTools } from "./tools/agents.js";
|
|
|
43
51
|
import { registerServiceTools } from "./tools/services.js";
|
|
44
52
|
import { registerBudgetGroupTools } from "./tools/budget-groups.js";
|
|
45
53
|
import { registerModelCatalogTools } from "./tools/model-catalog.js";
|
|
54
|
+
import { registerPowerTools } from "./tools/power.js";
|
|
46
55
|
import { registerHelpTools } from "./tools/help.js";
|
|
47
56
|
import { registerTriggerTool } from "./tools/trigger.js";
|
|
48
57
|
import { registerToolAuthoringTools } from "./tools/tools.js";
|
|
49
58
|
import { registerSchedulingTools } from "./tools/scheduling.js";
|
|
50
59
|
import { registerRunTools } from "./tools/runs.js";
|
|
60
|
+
import { registerStopRunTool } from "./tools/stop-run.js";
|
|
51
61
|
import { registerCostReportTools } from "./tools/cost-report.js";
|
|
52
62
|
import { registerDatastoreTools } from "./tools/datastore.js";
|
|
53
63
|
import { registerSubAgentTools } from "./tools/subagents.js";
|
|
54
64
|
import { registerGrantTools } from "./tools/grants.js";
|
|
55
65
|
import { registerRepositoryTools } from "./tools/repositories.js";
|
|
56
66
|
import { registerIssueProjectTools } from "./tools/issue-projects.js";
|
|
67
|
+
import { registerNotificationChannelTools } from "./tools/notification-channels.js";
|
|
57
68
|
import { registerHostAccountTools } from "./tools/host-accounts.js";
|
|
58
69
|
import { registerMemoryTools } from "./tools/memory.js";
|
|
70
|
+
import { registerPackageTools } from "./tools/packages.js";
|
|
59
71
|
import { registerSecretsTools } from "./tools/secrets.js";
|
|
60
72
|
import { registerWebhookTools } from "./tools/webhooks.js";
|
|
61
|
-
import {
|
|
73
|
+
import { STDIO_SECRET_PATH, secretFormRoute } from "./tools/secret-elicitation-server.js";
|
|
74
|
+
import { createStdioLinkHost } from "./transport/stdio-link-host.js";
|
|
75
|
+
import { registerRunTranscriptTool } from "./tools/run-transcript.js";
|
|
76
|
+
import { handleRunTranscriptDownload, RUN_TRANSCRIPT_DOWNLOAD_PATH } from "./tools/run-transcript-download.js";
|
|
77
|
+
import { createBlobStore } from "../providers/storage/index.js";
|
|
62
78
|
import { SECRET_ELICITATION_PATH } from "./tools/secret-elicitation-form.js";
|
|
79
|
+
import { installWorkflowEventRecorder } from "../core/notifications.js";
|
|
63
80
|
import { logger } from "../core/logger.js";
|
|
64
81
|
const mcpLog = logger.child({ module: "mcp-index" });
|
|
65
82
|
const SELF_HOSTED_CLEANUP_INTERVAL_MS = 60 * 60 * 1000; // hourly
|
|
@@ -105,19 +122,29 @@ export function registerAllTools(mcp, opts) {
|
|
|
105
122
|
registerServiceTools(mcp);
|
|
106
123
|
registerBudgetGroupTools(mcp);
|
|
107
124
|
registerModelCatalogTools(mcp, { refresh: opts.refreshModelCatalog });
|
|
125
|
+
registerPowerTools(mcp);
|
|
108
126
|
registerHelpTools(mcp);
|
|
109
127
|
registerTriggerTool(mcp);
|
|
110
128
|
registerToolAuthoringTools(mcp);
|
|
111
129
|
registerSchedulingTools(mcp);
|
|
112
130
|
registerRunTools(mcp);
|
|
131
|
+
const runTranscriptUrl = opts.runTranscriptUrl;
|
|
132
|
+
registerRunTranscriptTool(mcp, {
|
|
133
|
+
downloadUrl: runTranscriptUrl ?? (() => Promise.reject(new Error("run transcripts are not served here"))),
|
|
134
|
+
blobStoreConfigured: runTranscriptUrl !== undefined && opts.blobStoreConfigured === true,
|
|
135
|
+
audience: opts.runTranscriptAudience ?? "http",
|
|
136
|
+
});
|
|
137
|
+
registerStopRunTool(mcp);
|
|
113
138
|
registerCostReportTools(mcp);
|
|
114
139
|
registerDatastoreTools(mcp);
|
|
115
140
|
registerSubAgentTools(mcp);
|
|
116
141
|
registerGrantTools(mcp);
|
|
117
142
|
registerRepositoryTools(mcp);
|
|
118
143
|
registerIssueProjectTools(mcp);
|
|
144
|
+
registerNotificationChannelTools(mcp);
|
|
119
145
|
registerHostAccountTools(mcp);
|
|
120
146
|
registerMemoryTools(mcp);
|
|
147
|
+
registerPackageTools(mcp);
|
|
121
148
|
registerSecretsTools(mcp, {
|
|
122
149
|
buildElicitationUrl: opts.secretElicitationUrl,
|
|
123
150
|
protocolElicitation: opts.secretElicitationProtocol,
|
|
@@ -134,11 +161,17 @@ export function buildMcpProviders() {
|
|
|
134
161
|
const llm = new RoutingLlmProvider(llmResult.registrations);
|
|
135
162
|
const engine = new NativeEngine();
|
|
136
163
|
const secrets = buildSecretCipher(providerConfig);
|
|
137
|
-
const
|
|
138
|
-
const
|
|
164
|
+
const secretGuard = createDbSecretWriteGuard(prisma, secrets);
|
|
165
|
+
const datastore = guardDatastore(new PostgresDatastore(prisma, secrets), secretGuard);
|
|
166
|
+
const memory = guardAgentMemory(new PostgresAgentMemory(prisma), secretGuard);
|
|
139
167
|
const reviewHosts = buildReviewHosts(process.env, prisma);
|
|
140
168
|
const issueTrackers = buildIssueTrackers();
|
|
141
169
|
const hostUserAuthorizers = buildHostUserAuthorizers();
|
|
170
|
+
// Installed here (not just serve/scheduler) so `wardby mcp`, which handles
|
|
171
|
+
// webhooks, records events too; only serve and the scheduler command start
|
|
172
|
+
// the dispatcher.
|
|
173
|
+
const chat = buildChatProviders();
|
|
174
|
+
installWorkflowEventRecorder(prisma, chat);
|
|
142
175
|
// One gate (and one cache) for the whole process: set-time checks in the
|
|
143
176
|
// MCP tools, repo_* calls in native runs, coding runs, and host events.
|
|
144
177
|
const repoAccess = createRepoAccessGate({ db: prisma, hosts: reviewHosts });
|
|
@@ -161,7 +194,18 @@ export function buildMcpProviders() {
|
|
|
161
194
|
repoAccess,
|
|
162
195
|
};
|
|
163
196
|
const nativeExecutor = buildExecutor(providerConfig, nativeProviders, prisma);
|
|
164
|
-
|
|
197
|
+
// One Power for the process, shared by both executors (wake) and the scheduler leader (sleep).
|
|
198
|
+
const power = buildPower({ env: process.env, db: prisma });
|
|
199
|
+
const executor = buildConfiguredExecutor({
|
|
200
|
+
native: nativeExecutor,
|
|
201
|
+
db: prisma,
|
|
202
|
+
providerConfig,
|
|
203
|
+
repoAccess,
|
|
204
|
+
power,
|
|
205
|
+
secretCipher: secrets,
|
|
206
|
+
// Sandbox-mode native runs (docs/native-sandbox.md); undefined when NATIVE_SANDBOX_LAUNCHER is unset.
|
|
207
|
+
nativeSandbox: buildNativeSandboxExecutor({ db: prisma, providers: nativeProviders, power }),
|
|
208
|
+
});
|
|
165
209
|
nativeProviders.executor = executor;
|
|
166
210
|
return {
|
|
167
211
|
providers: {
|
|
@@ -175,6 +219,8 @@ export function buildMcpProviders() {
|
|
|
175
219
|
issueTrackers,
|
|
176
220
|
hostUserAuthorizers,
|
|
177
221
|
repoAccess,
|
|
222
|
+
chat,
|
|
223
|
+
power,
|
|
178
224
|
},
|
|
179
225
|
};
|
|
180
226
|
}
|
|
@@ -187,11 +233,33 @@ async function closeQuietly(promise, what) {
|
|
|
187
233
|
mcpLog.warn({ err }, `${what} failed during MCP shutdown`);
|
|
188
234
|
}
|
|
189
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Fire-and-forget: starts the executor's start-up warm-up (e.g. KubernetesJobLauncher's memoized
|
|
238
|
+
* cluster preflight, via RoutingExecutor -> ContainerExecutor -> the job launcher's own `warmUp`)
|
|
239
|
+
* right when a long-running server process starts, so its first coding run doesn't pay for it.
|
|
240
|
+
* Never awaited by its caller and never throws: `warmUp()` on every implementation already swallows
|
|
241
|
+
* its own failure (logging it instead), but this still guards the call site against a surprise
|
|
242
|
+
* rejection, since nothing here may block or fail server start-up. Called from `startMcp` below —
|
|
243
|
+
* i.e. from `wardby mcp` (stdio and HTTP) and from `wardby serve`, which shares this same start-up
|
|
244
|
+
* path — and, separately, from `cli.ts`'s `scheduler()` (`wardby scheduler`), which dispatches
|
|
245
|
+
* scheduled coding runs through its own Kubernetes executor but never starts an MCP server. Never
|
|
246
|
+
* called from a one-shot CLI command (`wardby run`, `coding preflight`, migrations, imports).
|
|
247
|
+
*/
|
|
248
|
+
export function warmUpExecutor(executor) {
|
|
249
|
+
void executor.warmUp?.()?.catch((err) => {
|
|
250
|
+
mcpLog.warn({ err }, "executor warm-up failed unexpectedly");
|
|
251
|
+
});
|
|
252
|
+
}
|
|
190
253
|
/** The real CLI entry point: `wardby mcp`. Reads config from the environment, starts stdio or HTTP per MCP_TRANSPORT. */
|
|
191
254
|
export async function startMcp(options = {}) {
|
|
192
255
|
const mcpConfig = loadMcpConfig();
|
|
256
|
+
// WARDBY_TEST_SIMULATORS (test only): refuses to start beside production configuration.
|
|
257
|
+
startupTestSimulators("server");
|
|
193
258
|
// Parsed up front so a malformed value fails at startup, not at shutdown.
|
|
194
259
|
const drainSeconds = loadShutdownDrainSeconds();
|
|
260
|
+
// Parsed now so a malformed list stops startup instead of failing every event.
|
|
261
|
+
const allowedAccounts = loadGitHubAllowedAccounts();
|
|
262
|
+
mcpLog.info({ additionalAccounts: [...allowedAccounts] }, "GitHub App serves its owner plus WARDBY_GITHUB_ALLOWED_ACCOUNTS");
|
|
195
263
|
// Loads the model catalog before anything else: running on the shipped
|
|
196
264
|
// catalog alone (the fallback currentModelCatalog() uses before a store
|
|
197
265
|
// is installed) would quietly re-enable models an admin turned off.
|
|
@@ -202,17 +270,35 @@ export async function startMcp(options = {}) {
|
|
|
202
270
|
const modelCatalog = await startModelCatalog(prisma);
|
|
203
271
|
const providers = options.providers ?? buildMcpProviders().providers;
|
|
204
272
|
await providers.executor.launch?.();
|
|
273
|
+
warmUpExecutor(providers.executor);
|
|
205
274
|
if (!options.schedulerAttached)
|
|
206
275
|
await warnIfNothingWillFireSchedules();
|
|
276
|
+
// Zod 3 compatibility window: one warning per custom tool the next release breaks. In the background.
|
|
277
|
+
void logZod3ToolWarnings(prisma, mcpLog);
|
|
278
|
+
// Run transcripts (get_run_transcript) are served from the blob store they were stored in.
|
|
279
|
+
const blobStoreConfig = loadBlobStoreConfig();
|
|
280
|
+
const blobs = blobStoreConfig ? createBlobStore(blobStoreConfig) : undefined;
|
|
207
281
|
if (mcpConfig.transport === "stdio") {
|
|
208
282
|
const mcp = buildMcpServer({ providers, db: prisma, config: { canonicalUri: STDIO_PLACEHOLDER_URI } });
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
283
|
+
// One loopback server for every signed link a stdio tool hands out.
|
|
284
|
+
const linkHost = createStdioLinkHost({
|
|
285
|
+
[STDIO_SECRET_PATH]: secretFormRoute({
|
|
286
|
+
verify: (token) => mcp.verifyRequestState(token),
|
|
287
|
+
secrets: providers.secrets,
|
|
288
|
+
db: prisma,
|
|
289
|
+
}),
|
|
290
|
+
[RUN_TRANSCRIPT_DOWNLOAD_PATH]: (req, res, token) => handleRunTranscriptDownload(req.method, token, res, {
|
|
291
|
+
verify: (t) => mcp.verifyRequestState(t),
|
|
292
|
+
audience: "stdio",
|
|
293
|
+
db: prisma,
|
|
294
|
+
blobs,
|
|
295
|
+
}),
|
|
213
296
|
});
|
|
214
297
|
registerAllTools(mcp, {
|
|
215
|
-
secretElicitationUrl: (token) =>
|
|
298
|
+
secretElicitationUrl: (token) => linkHost.urlFor(STDIO_SECRET_PATH, token),
|
|
299
|
+
runTranscriptUrl: (token) => linkHost.urlFor(RUN_TRANSCRIPT_DOWNLOAD_PATH, token),
|
|
300
|
+
runTranscriptAudience: "stdio",
|
|
301
|
+
blobStoreConfigured: blobs !== undefined,
|
|
216
302
|
secretElicitationProtocol: mcpConfig.secretElicitationProtocol,
|
|
217
303
|
refreshModelCatalog: () => modelCatalog.refreshNow(),
|
|
218
304
|
});
|
|
@@ -244,17 +330,31 @@ export async function startMcp(options = {}) {
|
|
|
244
330
|
const authProviderKind = providerConfig.auth === "self-hosted" ? "self-hosted" : "delegating";
|
|
245
331
|
const authProvider = buildAuthProvider(providerConfig.auth, authConfig, prisma);
|
|
246
332
|
const selfHosted = authProviderKind === "self-hosted" ? authProvider : undefined;
|
|
247
|
-
const mcp = buildMcpServer({
|
|
333
|
+
const mcp = buildMcpServer({
|
|
334
|
+
providers,
|
|
335
|
+
db: prisma,
|
|
336
|
+
config: { canonicalUri: mcpConfig.canonicalUri },
|
|
337
|
+
deriveRequestStateKey: true,
|
|
338
|
+
});
|
|
248
339
|
const httpOrigin = canonicalUrl(mcpConfig.canonicalUri).origin;
|
|
249
340
|
registerAllTools(mcp, {
|
|
250
341
|
secretElicitationUrl: (token) => Promise.resolve(`${httpOrigin}${SECRET_ELICITATION_PATH}?t=${encodeURIComponent(token)}`),
|
|
342
|
+
runTranscriptUrl: (token) => Promise.resolve(`${httpOrigin}${RUN_TRANSCRIPT_DOWNLOAD_PATH}?t=${encodeURIComponent(token)}`),
|
|
343
|
+
blobStoreConfigured: blobs !== undefined,
|
|
251
344
|
secretElicitationProtocol: mcpConfig.secretElicitationProtocol,
|
|
252
345
|
refreshModelCatalog: () => modelCatalog.refreshNow(),
|
|
253
346
|
});
|
|
254
347
|
const eventConfig = loadGitHubEventConfig();
|
|
255
348
|
const githubConfig = loadGitHubVcsConfig();
|
|
256
349
|
const reviewHosts = providers.reviewHosts;
|
|
257
|
-
const
|
|
350
|
+
const githubApp = githubConfig.appId && githubConfig.privateKey
|
|
351
|
+
? new GitHubAppClient({
|
|
352
|
+
appId: githubConfig.appId,
|
|
353
|
+
privateKey: githubConfig.privateKey,
|
|
354
|
+
apiVersion: githubConfig.apiVersion,
|
|
355
|
+
})
|
|
356
|
+
: undefined;
|
|
357
|
+
const githubEvents = eventConfig.webhookSecret && reviewHosts?.github && githubApp
|
|
258
358
|
? {
|
|
259
359
|
github: {
|
|
260
360
|
db: prisma,
|
|
@@ -263,14 +363,10 @@ export async function startMcp(options = {}) {
|
|
|
263
363
|
repoAccess: providers.repoAccess ?? createRepoAccessGate({ db: prisma, hosts: reviewHosts }),
|
|
264
364
|
...(providers.issueTrackers ? { issueTrackers: providers.issueTrackers } : {}),
|
|
265
365
|
webhookSecret: eventConfig.webhookSecret,
|
|
266
|
-
appIdentity: (
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
apiVersion: githubConfig.apiVersion,
|
|
271
|
-
});
|
|
272
|
-
return () => client.appIdentity();
|
|
273
|
-
})(),
|
|
366
|
+
appIdentity: (opts) => githubApp.appIdentity(opts),
|
|
367
|
+
allowedAccounts: () => allowedAccounts,
|
|
368
|
+
mentionExplanations: eventConfig.mentionExplanations,
|
|
369
|
+
uninstallInstallation: (id) => githubApp.deleteInstallation(id),
|
|
274
370
|
},
|
|
275
371
|
}
|
|
276
372
|
: undefined;
|
|
@@ -336,6 +432,7 @@ export async function startMcp(options = {}) {
|
|
|
336
432
|
hostEvents,
|
|
337
433
|
hostUserAuth,
|
|
338
434
|
viewer,
|
|
435
|
+
blobs,
|
|
339
436
|
});
|
|
340
437
|
const cleanupTimer = selfHosted
|
|
341
438
|
? setInterval(() => {
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -25,6 +25,14 @@
|
|
|
25
25
|
import { type McpServerFactory, type InputRequiredResult } from "@modelcontextprotocol/server";
|
|
26
26
|
import type { PrismaClient } from "#prisma";
|
|
27
27
|
import type { McpRequestContext, McpProviders } from "./context.js";
|
|
28
|
+
/**
|
|
29
|
+
* Most array elements plus object members one `tools/call` may carry
|
|
30
|
+
* (GHSA-46jr-4wx8-v453). Validating an argument tree costs memory per node, so
|
|
31
|
+
* without a bound one request inside the 1 MiB body limit could hold a very
|
|
32
|
+
* large tree. The largest legitimate input is a datastore value, itself capped
|
|
33
|
+
* at 1 MiB; 100,000 nodes leaves ample room for any realistic value.
|
|
34
|
+
*/
|
|
35
|
+
export declare const MAX_TOOL_INPUT_ELEMENTS = 100000;
|
|
28
36
|
export interface ToolSpec<Args = Record<string, unknown>> {
|
|
29
37
|
name: string;
|
|
30
38
|
description?: string;
|
|
@@ -58,6 +66,11 @@ export interface BuildMcpServerOptions {
|
|
|
58
66
|
config: McpServerConfig;
|
|
59
67
|
/** Testability hook for REQUEST_STATE_KEY — defaults to process.env, matching buildSecretCipher's convention. */
|
|
60
68
|
env?: NodeJS.ProcessEnv;
|
|
69
|
+
/**
|
|
70
|
+
* HTTP transport: with REQUEST_STATE_KEY unset, derive the requestState key from SECRET_APP_KEY so
|
|
71
|
+
* every instance sharing that key verifies every other instance's tokens. stdio leaves it off.
|
|
72
|
+
*/
|
|
73
|
+
deriveRequestStateKey?: boolean;
|
|
61
74
|
}
|
|
62
75
|
export interface DiscoverResultLike {
|
|
63
76
|
capabilities: {
|
package/dist/mcp/server.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* whole connection.
|
|
24
24
|
*/
|
|
25
25
|
import { McpServer, fromJsonSchema, createRequestStateCodec, CLIENT_CAPABILITIES_META_KEY, } from "@modelcontextprotocol/server";
|
|
26
|
-
import { randomBytes } from "node:crypto";
|
|
26
|
+
import { hkdfSync, randomBytes } from "node:crypto";
|
|
27
27
|
import { readFileSync } from "node:fs";
|
|
28
28
|
import { requireScope } from "./auth/resource-server.js";
|
|
29
29
|
import { McpError, mapPrismaError } from "./errors.js";
|
|
@@ -33,17 +33,35 @@ import { grantedIds } from "../core/grants.js";
|
|
|
33
33
|
import { logger } from "../core/logger.js";
|
|
34
34
|
/** The package version, reported in MCP server info (package.json sits two levels up from src/mcp and dist/mcp). */
|
|
35
35
|
const SERVER_VERSION = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8")).version;
|
|
36
|
+
/**
|
|
37
|
+
* Most array elements plus object members one `tools/call` may carry
|
|
38
|
+
* (GHSA-46jr-4wx8-v453). Validating an argument tree costs memory per node, so
|
|
39
|
+
* without a bound one request inside the 1 MiB body limit could hold a very
|
|
40
|
+
* large tree. The largest legitimate input is a datastore value, itself capped
|
|
41
|
+
* at 1 MiB; 100,000 nodes leaves ample room for any realistic value.
|
|
42
|
+
*/
|
|
43
|
+
export const MAX_TOOL_INPUT_ELEMENTS = 100_000;
|
|
36
44
|
const REQUEST_STATE_KEY_BYTES = 32;
|
|
45
|
+
/** HKDF info for the requestState key derived from SECRET_APP_KEY; never reused for another key. */
|
|
46
|
+
const REQUEST_STATE_KEY_INFO = "wardby/mcp/request-state/http/v1";
|
|
37
47
|
/**
|
|
38
48
|
* REQUEST_STATE_KEY (hex, 32 bytes) shares the requestState HMAC key across
|
|
39
|
-
* instances — see the requestStateCodec construction below. Unset
|
|
40
|
-
*
|
|
41
|
-
*
|
|
49
|
+
* instances — see the requestStateCodec construction below. Unset, the HTTP
|
|
50
|
+
* transport derives it from SECRET_APP_KEY (HKDF-SHA256, a label of its own),
|
|
51
|
+
* which every instance of one deployment already shares, so a multi-instance
|
|
52
|
+
* deployment needs no extra setting; the derived key reveals nothing about
|
|
53
|
+
* SECRET_APP_KEY. Without either, or on stdio, it is a fresh random key per
|
|
54
|
+
* process, which is correct when nothing outside that process verifies its
|
|
55
|
+
* tokens (and keeps stdio tokens from verifying on the HTTP server).
|
|
42
56
|
*/
|
|
43
|
-
function loadRequestStateKey(env) {
|
|
57
|
+
function loadRequestStateKey(env, derive) {
|
|
44
58
|
const hex = env.REQUEST_STATE_KEY;
|
|
45
|
-
if (!hex)
|
|
46
|
-
|
|
59
|
+
if (!hex) {
|
|
60
|
+
const appKey = derive && env.SECRET_APP_KEY ? Buffer.from(env.SECRET_APP_KEY, "hex") : undefined;
|
|
61
|
+
if (appKey?.length !== REQUEST_STATE_KEY_BYTES)
|
|
62
|
+
return randomBytes(REQUEST_STATE_KEY_BYTES);
|
|
63
|
+
return new Uint8Array(hkdfSync("sha256", appKey, Buffer.alloc(0), REQUEST_STATE_KEY_INFO, REQUEST_STATE_KEY_BYTES));
|
|
64
|
+
}
|
|
47
65
|
const key = Buffer.from(hex, "hex");
|
|
48
66
|
if (key.length !== REQUEST_STATE_KEY_BYTES) {
|
|
49
67
|
throw new Error(`REQUEST_STATE_KEY must be ${REQUEST_STATE_KEY_BYTES} bytes of hex (${REQUEST_STATE_KEY_BYTES * 2} hex chars); got ${key.length} bytes.`);
|
|
@@ -76,16 +94,16 @@ export function buildMcpServer(opts) {
|
|
|
76
94
|
// against the codec's implementation) — safe to call verifyRequestState()
|
|
77
95
|
// from outside a real MCP request (the secret-elicitation browser form).
|
|
78
96
|
//
|
|
79
|
-
// REQUEST_STATE_KEY,
|
|
80
|
-
// on another — required for the
|
|
81
|
-
// browser-form POST, polling retry)
|
|
97
|
+
// REQUEST_STATE_KEY (or, over HTTP, the key derived from SECRET_APP_KEY)
|
|
98
|
+
// lets a token minted by one process verify on another — required for the
|
|
99
|
+
// secret-elicitation round trip (mint, browser-form POST, polling retry)
|
|
100
|
+
// and the run-transcript download to work under a multi-instance HTTP
|
|
82
101
|
// deployment, where those three legs can land on three different
|
|
83
102
|
// processes (see secret-elicitation.ts's matching Postgres-backed outcome
|
|
84
|
-
// store). stdio
|
|
85
|
-
//
|
|
86
|
-
// outside this same running server ever needs to verify a token it minted.
|
|
103
|
+
// store). stdio needs no configuration: a fresh random key per process is
|
|
104
|
+
// fine, since nothing outside that running server verifies its tokens.
|
|
87
105
|
const requestStateCodec = createRequestStateCodec({
|
|
88
|
-
key: loadRequestStateKey(opts.env ?? process.env),
|
|
106
|
+
key: loadRequestStateKey(opts.env ?? process.env, opts.deriveRequestStateKey ?? false),
|
|
89
107
|
ttlSeconds: 600,
|
|
90
108
|
});
|
|
91
109
|
function mcpReqOf(sdkCtx) {
|
|
@@ -125,6 +143,7 @@ export function buildMcpServer(opts) {
|
|
|
125
143
|
const mcpServer = new McpServer({ name: "wardby", version: SERVER_VERSION }, {
|
|
126
144
|
requestState: { verify: (state, ctx) => requestStateCodec.verify(state, ctx) },
|
|
127
145
|
instructions: SERVER_INSTRUCTIONS,
|
|
146
|
+
maxToolInputElements: MAX_TOOL_INPUT_ELEMENTS,
|
|
128
147
|
});
|
|
129
148
|
mcpServer.server.registerCapabilities({ extensions: { [TASKS_EXTENSION_ID]: {} } });
|
|
130
149
|
for (const spec of specs) {
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import type { WardbyMcpServer } from "../server.js";
|
|
2
|
+
/** The warning create_agent / update_agent return (not a refusal): wardby can't tell how old a custom image is. */
|
|
3
|
+
export declare const DEPENDENCY_CACHE_IMAGE_WARNING = "dependencyCache is on and this agent runs its own worker image (workerImageRef): rebuild that image FROM the wardby release that includes the dependency cache before its next run, or the run fails at input (worker_input_failed). See the dependency-cache help article.";
|
|
4
|
+
export declare const SESSION_RESUME_IMAGE_WARNING = "sessionResume is on and this agent runs its own worker image (workerImageRef): rebuild that image FROM the wardby release that includes session resume before its next run, or the run fails at input (worker_input_failed).";
|
|
5
|
+
export declare const SESSION_RESUME_NO_STORE_WARNING = "sessionResume is on but this server has no blob store (BLOB_STORE), so transcripts are not kept. See the resume-runs-locally help article.";
|
|
2
6
|
export declare function registerAgentTools(mcp: WardbyMcpServer): void;
|