@wardby/cli 0.6.0 → 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/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/driver.d.ts +21 -3
- package/dist/claude-coding-worker/driver.js +125 -17
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +12 -1
- 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 +1 -0
- package/dist/cli.js +24 -10
- 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 +46 -126
- package/dist/coding/profile.js +45 -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 +264 -346
- package/dist/coding/protocol.js +235 -12
- 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 +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- 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 +116 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -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 +11 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- 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/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 +42 -0
- package/dist/core/dispatch.js +131 -56
- package/dist/core/engine-native.js +1 -1
- 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 +18 -2
- package/dist/core/host-events.js +284 -24
- 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 +124 -33
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +4 -10
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +54 -26
- 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 +2 -1
- package/dist/core/merge-order-check.js +8 -1
- package/dist/core/notification-templates.d.ts +1 -7
- package/dist/core/notification-templates.js +36 -2
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +4 -3
- package/dist/core/reconciler.js +8 -1
- package/dist/core/related-pull-requests.d.ts +11 -3
- package/dist/core/related-pull-requests.js +27 -14
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/review-fix.d.ts +1 -1
- package/dist/core/review-fix.js +2 -1
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +3 -0
- package/dist/core/review-host-tools.js +99 -13
- 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 +80 -34
- package/dist/core/runner.js +439 -144
- 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 +10 -74
- 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/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-events.d.ts +14 -2
- package/dist/core/workflow-events.js +4 -0
- package/dist/core/workflow-run-events.d.ts +5 -3
- package/dist/core/workflow-run-events.js +43 -8
- 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 +34 -3
- package/dist/generated/prisma/client.d.ts +34 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +220 -60
- package/dist/generated/prisma/enums.d.ts +10 -0
- package/dist/generated/prisma/enums.js +8 -0
- package/dist/generated/prisma/internal/class.d.ts +44 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +428 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +92 -1
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +95 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +92 -1
- package/dist/generated/prisma/models/Agent.d.ts +106 -8
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +229 -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 +1637 -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 +39 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- 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 +738 -2
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models.d.ts +4 -0
- package/dist/help-index.json +1320 -69
- package/dist/import/create.js +32 -3
- package/dist/import/neutral-schema.d.ts +50 -281
- package/dist/import/neutral-schema.js +5 -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 +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- 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/host-events/github-ingress.d.ts +2 -0
- package/dist/mcp/host-events/github-ingress.js +2 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +58 -10
- 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 +198 -16
- 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.js +2 -2
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -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.js +34 -12
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-elicitation-form.js +5 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -61
- package/dist/mcp/tools/secrets.js +2 -2
- 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 +1 -1
- package/dist/mcp/tools/tools.js +25 -9
- 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/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +41 -3
- package/dist/native-worker/gateway-server.js +124 -27
- package/dist/native-worker/gateway.d.ts +27 -1
- package/dist/native-worker/gateway.js +70 -4
- package/dist/native-worker/http-server.d.ts +3 -1
- package/dist/native-worker/http-server.js +11 -7
- package/dist/native-worker/http-transport.js +1 -1
- package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
- package/dist/native-worker/kubernetes-launcher.js +43 -3
- package/dist/native-worker/launch.d.ts +18 -1
- package/dist/native-worker/launch.js +6 -1
- package/dist/native-worker/ledger.d.ts +18 -2
- package/dist/native-worker/ledger.js +57 -4
- package/dist/native-worker/loopback.js +3 -8
- package/dist/native-worker/main.d.ts +2 -1
- package/dist/native-worker/main.js +14 -3
- package/dist/native-worker/protocol.d.ts +129 -577
- package/dist/native-worker/protocol.js +47 -1
- package/dist/native-worker/sandbox-executor.d.ts +17 -2
- package/dist/native-worker/sandbox-executor.js +78 -4
- 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 +1 -1
- package/dist/native-worker/stdio.js +6 -5
- package/dist/native-worker/warm-pool.d.ts +2 -2
- package/dist/native-worker/warm-pool.js +4 -4
- package/dist/native-worker/worker.js +28 -2
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/self-hosted.d.ts +1 -1
- 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 +17 -2
- package/dist/providers/engine/types.js +17 -0
- package/dist/providers/executor/composition.d.ts +10 -3
- package/dist/providers/executor/composition.js +47 -7
- package/dist/providers/executor/container.d.ts +361 -8
- package/dist/providers/executor/container.js +1136 -91
- 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 +50 -1
- package/dist/providers/executor/dbos.js +207 -20
- package/dist/providers/executor/deferred.d.ts +12 -24
- package/dist/providers/executor/deferred.js +10 -29
- 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 +2 -0
- package/dist/providers/executor/routing.js +4 -0
- package/dist/providers/executor/types.d.ts +13 -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 +27 -2
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-api.js +10 -0
- package/dist/providers/jobs/kubernetes-client.js +10 -1
- package/dist/providers/jobs/kubernetes-isolation.d.ts +2 -0
- package/dist/providers/jobs/kubernetes-isolation.js +17 -1
- package/dist/providers/jobs/kubernetes.d.ts +6 -1
- package/dist/providers/jobs/kubernetes.js +105 -16
- package/dist/providers/jobs/types.d.ts +33 -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 +29 -2
- package/dist/providers/review-host/github.js +224 -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 +134 -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 +214 -6
- package/dist/providers/vcs/github.js +447 -45
- 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 +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- 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/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +1 -0
- package/dist/sandbox/host-functions.js +6 -11
- package/dist/sandbox/secret-broker.js +3 -4
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +8 -1
- package/dist/viewer/api-schema.d.ts +349 -2627
- package/dist/viewer/api-schema.js +7 -0
- package/dist/viewer/build-schemas.js +6 -2
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +10 -0
- package/docs/agent-recipes.md +58 -20
- package/docs/code-review-agents.md +551 -41
- package/docs/coding-agent-setup.md +489 -7
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +20 -0
- package/docs/coding-worker-isolation.md +105 -30
- package/docs/getting-started-gke.md +124 -137
- package/docs/getting-started-identity-provider.md +10 -1
- package/docs/getting-started.md +9 -0
- package/docs/jira-agents.md +17 -8
- 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 +119 -23
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +33 -2
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +42 -10
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +24 -2
- package/help/architecture-agent.md +11 -6
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +177 -6
- 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 +15 -8
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- 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/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 +4 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +3 -2
- 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-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/github-app-setup.md +132 -0
- package/help/github.md +22 -0
- package/help/identity-and-access.md +2 -0
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +1 -1
- package/help/low-power-mode.md +7 -1
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +15 -1
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +10 -7
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +33 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +19 -5
- 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 +78 -7
- package/package.json +17 -10
- 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 +311 -97
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow notifications a run's finalizer emits: run_failed for a top-level
|
|
3
|
-
* run that did not succeed
|
|
3
|
+
* run that did not succeed, run_blocked for package refusals without changes
|
|
4
|
+
* (children are summarized by their parent), packages_audited when its coding
|
|
5
|
+
* children installed anything under package audit mode, and
|
|
4
6
|
* review_posted when the run published a verdict on its own check. Called
|
|
5
7
|
* only by the finalizer that made the run terminal. Never throws.
|
|
6
8
|
*/
|
|
7
9
|
import type { PrismaClient } from "#prisma";
|
|
8
|
-
export type RunEventsDb = Pick<PrismaClient, "agent" | "runHostCheck">;
|
|
9
|
-
/** Emits
|
|
10
|
+
export type RunEventsDb = Pick<PrismaClient, "agent" | "runHostCheck" | "run" | "runBudgetEvent" | "registryFetch" | "registryAuditRecord">;
|
|
11
|
+
/** Emits top-level run outcomes and published review verdicts. Never throws. */
|
|
10
12
|
export declare function emitRunFinishedEvents(db: RunEventsDb, run: {
|
|
11
13
|
id: string;
|
|
12
14
|
agentId: string;
|
|
@@ -1,19 +1,54 @@
|
|
|
1
|
+
import { packageAuditDigest } from "../coding/registry/audit-mode.js";
|
|
2
|
+
import { blockingRefusals, collectPackageAudit, collectRunOutcome, isBlockedByRefusals } from "./host-status.js";
|
|
1
3
|
import { logger } from "./logger.js";
|
|
2
4
|
import { dedupeKeys, emitWorkflowEvent, shortReason } from "./workflow-events.js";
|
|
3
5
|
const log = logger.child({ module: "workflow-run-events" });
|
|
4
6
|
const FAILED = new Set(["failed", "budget_exhausted", "cancelled", "lost", "refused"]);
|
|
5
7
|
const VERDICTS = new Set(["APPROVE", "CHANGES_REQUESTED", "COMMENT"]);
|
|
6
|
-
/** Emits
|
|
8
|
+
/** Emits top-level run outcomes and published review verdicts. Never throws. */
|
|
7
9
|
export async function emitRunFinishedEvents(db, run) {
|
|
8
10
|
try {
|
|
9
11
|
const agentName = (await db.agent.findUnique({ where: { id: run.agentId }, select: { name: true } }))?.name ?? run.agentId;
|
|
10
|
-
if (!run.parentRunId
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
if (!run.parentRunId) {
|
|
13
|
+
try {
|
|
14
|
+
// Only a succeeded run can be blocked (isBlockedByRefusals), so only it needs its children read.
|
|
15
|
+
const succeeded = { id: run.id, status: "succeeded", finalText: null };
|
|
16
|
+
const outcome = run.status === "succeeded" ? await collectRunOutcome(db, succeeded) : null;
|
|
17
|
+
if (outcome && isBlockedByRefusals(succeeded, outcome)) {
|
|
18
|
+
await emitWorkflowEvent({
|
|
19
|
+
dedupeKey: dedupeKeys.runBlocked(run.id),
|
|
20
|
+
runId: run.id,
|
|
21
|
+
agentId: run.agentId,
|
|
22
|
+
payload: { kind: "run_blocked", agentName, packageRefusals: blockingRefusals(outcome) },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// Any terminal status: what audit mode let in is worth knowing whether or not the run succeeded.
|
|
26
|
+
const audit = outcome ? outcome.packageAudit : await collectPackageAudit(db, run.id);
|
|
27
|
+
if (audit && audit.summary.entries.length > 0) {
|
|
28
|
+
await emitWorkflowEvent({
|
|
29
|
+
dedupeKey: dedupeKeys.packagesAudited(run.id),
|
|
30
|
+
runId: run.id,
|
|
31
|
+
agentId: run.agentId,
|
|
32
|
+
payload: {
|
|
33
|
+
kind: "packages_audited",
|
|
34
|
+
agentName,
|
|
35
|
+
mode: audit.mode,
|
|
36
|
+
...packageAuditDigest(audit.mode, audit.summary),
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// A reporting read failure must not prevent other workflow events.
|
|
43
|
+
}
|
|
44
|
+
if (FAILED.has(run.status)) {
|
|
45
|
+
await emitWorkflowEvent({
|
|
46
|
+
dedupeKey: dedupeKeys.runFailed(run.id),
|
|
47
|
+
runId: run.id,
|
|
48
|
+
agentId: run.agentId,
|
|
49
|
+
payload: { kind: "run_failed", agentName, status: run.status, reason: shortReason(run.error) },
|
|
50
|
+
});
|
|
51
|
+
}
|
|
17
52
|
}
|
|
18
53
|
const check = await db.runHostCheck.findUnique({ where: { runId: run.id } });
|
|
19
54
|
if (check?.verdict && VERDICTS.has(check.verdict) && check.prNumber !== null) {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
function isStringKeySchema(value) {
|
|
2
|
+
return (!!value &&
|
|
3
|
+
typeof value === "object" &&
|
|
4
|
+
!Array.isArray(value) &&
|
|
5
|
+
Object.keys(value).length === 1 &&
|
|
6
|
+
value.type === "string");
|
|
7
|
+
}
|
|
8
|
+
export function legacyJsonSchema(node, options = {}) {
|
|
9
|
+
if (Array.isArray(node))
|
|
10
|
+
return node.map((item) => legacyJsonSchema(item, options));
|
|
11
|
+
if (!node || typeof node !== "object")
|
|
12
|
+
return node;
|
|
13
|
+
const source = node;
|
|
14
|
+
const out = {};
|
|
15
|
+
for (const [key, value] of Object.entries(source)) {
|
|
16
|
+
if (source.type === "integer" && key === "minimum" && value === Number.MIN_SAFE_INTEGER)
|
|
17
|
+
continue;
|
|
18
|
+
if (source.type === "integer" && key === "maximum" && value === Number.MAX_SAFE_INTEGER)
|
|
19
|
+
continue;
|
|
20
|
+
if (key === "propertyNames" && isStringKeySchema(value))
|
|
21
|
+
continue;
|
|
22
|
+
if (options.closeObjects &&
|
|
23
|
+
key === "additionalProperties" &&
|
|
24
|
+
value &&
|
|
25
|
+
typeof value === "object" &&
|
|
26
|
+
Object.keys(value).length === 0) {
|
|
27
|
+
out[key] = true;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
// A `properties` map's keys are names, not keywords: only its values are schemas.
|
|
31
|
+
out[key === "oneOf" ? "anyOf" : key] =
|
|
32
|
+
key === "properties" && value && typeof value === "object"
|
|
33
|
+
? Object.fromEntries(Object.entries(value).map(([name, sub]) => [name, legacyJsonSchema(sub, options)]))
|
|
34
|
+
: legacyJsonSchema(value, options);
|
|
35
|
+
}
|
|
36
|
+
if (options.closeObjects && source.type === "object" && "properties" in source && !("additionalProperties" in source))
|
|
37
|
+
out.additionalProperties = false;
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PrismaClient } from "#prisma";
|
|
2
|
+
import { type Zod4Compatibility } from "../sandbox/zod-params.js";
|
|
3
|
+
import type { SandboxResult } from "../sandbox/eval-core.js";
|
|
4
|
+
export declare const ZOD3_WINDOW_ENDS = "Zod 3 schemas stop working in the next release";
|
|
5
|
+
/** The warning for one paramsZod, or undefined when Zod 4 compiles it (or there is nothing to say). */
|
|
6
|
+
export declare function zod3WindowWarning(subject: string, compatibility: Zod4Compatibility): string | undefined;
|
|
7
|
+
/** How a warning names a tool. */
|
|
8
|
+
export declare function toolSubject(name: string): string;
|
|
9
|
+
export declare function cachedZod4Compatibility(paramsZod: string): Promise<Zod4Compatibility>;
|
|
10
|
+
/** Test hook: empties the compatibility cache. */
|
|
11
|
+
export declare function clearZod4CompatibilityCache(): void;
|
|
12
|
+
/** The warnings for one tool's paramsZod (empty or one entry), ready for a result's `warnings`. */
|
|
13
|
+
export declare function zod3ToolWarnings(subject: string, paramsZod: string): Promise<string[]>;
|
|
14
|
+
/**
|
|
15
|
+
* A tool row with its Zod 3 window warnings, for a caller who owns it (and so
|
|
16
|
+
* already sees its paramsZod). Rows projected for anyone else, which carry no
|
|
17
|
+
* paramsZod, pass through unchanged: a warning would reveal part of the schema.
|
|
18
|
+
*/
|
|
19
|
+
export declare function withZod3ToolWarnings<T extends object>(projected: T): Promise<T | (T & {
|
|
20
|
+
warnings: string[];
|
|
21
|
+
})>;
|
|
22
|
+
/**
|
|
23
|
+
* dry_run_tool's check of a schema Zod 4 does compile: whether Zod 4 treats
|
|
24
|
+
* the sample arguments as the current release does. Names no values.
|
|
25
|
+
*/
|
|
26
|
+
export declare function zod3SampleArgsWarning(subject: string, current: SandboxResult, zod4: SandboxResult): string | undefined;
|
|
27
|
+
interface WarnLog {
|
|
28
|
+
warn(fields: object, message: string): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Logs one warning per stored tool whose paramsZod Zod 4 can't compile. Runs
|
|
32
|
+
* in the background at startup; never throws.
|
|
33
|
+
*/
|
|
34
|
+
export declare function logZod3ToolWarnings(db: Pick<PrismaClient, "tool">, log: WarnLog): Promise<number>;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Zod 3 compatibility window's warnings (one release; see
|
|
3
|
+
* sandbox/zod-params.ts). A custom tool whose paramsZod Zod 4 can't compile
|
|
4
|
+
* still works this release, compiled with Zod 3, and stops working in the
|
|
5
|
+
* next. The operator hears about it in create_tool, update_tool,
|
|
6
|
+
* dry_run_tool, list_tools and get_agent results (on tools the caller owns),
|
|
7
|
+
* in import results, from `wardby tool create`, and once per tool in the
|
|
8
|
+
* server log at startup.
|
|
9
|
+
*
|
|
10
|
+
* A warning names only the tool and the removed Zod 3 API it uses (fixed
|
|
11
|
+
* labels from zod-params.ts): never the schema's text or anything else from
|
|
12
|
+
* the tool.
|
|
13
|
+
*/
|
|
14
|
+
import { createHash } from "node:crypto";
|
|
15
|
+
import { zod4Compatibility } from "../sandbox/zod-params.js";
|
|
16
|
+
export const ZOD3_WINDOW_ENDS = "Zod 3 schemas stop working in the next release";
|
|
17
|
+
/** The warning for one paramsZod, or undefined when Zod 4 compiles it (or there is nothing to say). */
|
|
18
|
+
export function zod3WindowWarning(subject, compatibility) {
|
|
19
|
+
if (compatibility.compatible !== false)
|
|
20
|
+
return undefined;
|
|
21
|
+
const what = compatibility.removed.length
|
|
22
|
+
? `uses Zod 3 API that Zod 4 removed: ${compatibility.removed.join(", ")}`
|
|
23
|
+
: "does not compile with Zod 4";
|
|
24
|
+
return (`${subject} ${what}. Wardby still compiles it with Zod 3 in this release, but ${ZOD3_WINDOW_ENDS}: ` +
|
|
25
|
+
"rewrite it with the Zod 4 API and check it with dry_run_tool.");
|
|
26
|
+
}
|
|
27
|
+
/** How a warning names a tool. */
|
|
28
|
+
export function toolSubject(name) {
|
|
29
|
+
return `Tool ${JSON.stringify(name)}'s paramsZod`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compatibility depends on the paramsZod text alone, so results are cached in
|
|
33
|
+
* memory keyed by a SHA-256 of that text: a changed paramsZod is a different
|
|
34
|
+
* key and is always probed afresh, so the cache can never hide a warning for
|
|
35
|
+
* it. The tool's name is not part of the result (the warning text is built
|
|
36
|
+
* from the current name each time). The startup scan fills the cache, so
|
|
37
|
+
* list_tools usually probes nothing. Bounded; the oldest entry goes first.
|
|
38
|
+
* An "unknown" result (a probe that hit a sandbox limit) is not cached.
|
|
39
|
+
*/
|
|
40
|
+
const COMPATIBILITY_CACHE_LIMIT = 2000;
|
|
41
|
+
const compatibilityCache = new Map();
|
|
42
|
+
export function cachedZod4Compatibility(paramsZod) {
|
|
43
|
+
const key = createHash("sha256").update(paramsZod).digest("hex");
|
|
44
|
+
const hit = compatibilityCache.get(key);
|
|
45
|
+
if (hit)
|
|
46
|
+
return hit;
|
|
47
|
+
const pending = zod4Compatibility(paramsZod).then((result) => {
|
|
48
|
+
if (result.compatible === "unknown")
|
|
49
|
+
compatibilityCache.delete(key);
|
|
50
|
+
return result;
|
|
51
|
+
}, (err) => {
|
|
52
|
+
compatibilityCache.delete(key);
|
|
53
|
+
throw err;
|
|
54
|
+
});
|
|
55
|
+
compatibilityCache.set(key, pending);
|
|
56
|
+
while (compatibilityCache.size > COMPATIBILITY_CACHE_LIMIT) {
|
|
57
|
+
compatibilityCache.delete(compatibilityCache.keys().next().value);
|
|
58
|
+
}
|
|
59
|
+
return pending;
|
|
60
|
+
}
|
|
61
|
+
/** Test hook: empties the compatibility cache. */
|
|
62
|
+
export function clearZod4CompatibilityCache() {
|
|
63
|
+
compatibilityCache.clear();
|
|
64
|
+
}
|
|
65
|
+
/** The warnings for one tool's paramsZod (empty or one entry), ready for a result's `warnings`. */
|
|
66
|
+
export async function zod3ToolWarnings(subject, paramsZod) {
|
|
67
|
+
const warning = zod3WindowWarning(subject, await cachedZod4Compatibility(paramsZod));
|
|
68
|
+
return warning ? [warning] : [];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* A tool row with its Zod 3 window warnings, for a caller who owns it (and so
|
|
72
|
+
* already sees its paramsZod). Rows projected for anyone else, which carry no
|
|
73
|
+
* paramsZod, pass through unchanged: a warning would reveal part of the schema.
|
|
74
|
+
*/
|
|
75
|
+
export async function withZod3ToolWarnings(projected) {
|
|
76
|
+
const row = projected;
|
|
77
|
+
if (typeof row.paramsZod !== "string" || typeof row.name !== "string")
|
|
78
|
+
return projected;
|
|
79
|
+
const warnings = await zod3ToolWarnings(toolSubject(row.name), row.paramsZod);
|
|
80
|
+
return warnings.length ? { ...projected, warnings } : projected;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* dry_run_tool's check of a schema Zod 4 does compile: whether Zod 4 treats
|
|
84
|
+
* the sample arguments as the current release does. Names no values.
|
|
85
|
+
*/
|
|
86
|
+
export function zod3SampleArgsWarning(subject, current, zod4) {
|
|
87
|
+
let how;
|
|
88
|
+
if (current.ok && zod4.ok) {
|
|
89
|
+
if (JSON.stringify(current.value) === JSON.stringify(zod4.value))
|
|
90
|
+
return undefined;
|
|
91
|
+
how = "parses the sample arguments to a different value with Zod 4";
|
|
92
|
+
}
|
|
93
|
+
else if (current.ok !== zod4.ok) {
|
|
94
|
+
how = current.ok ? "rejects the sample arguments with Zod 4" : "accepts the sample arguments with Zod 4";
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
return (`${subject} ${how}. Wardby still compiles it with Zod 3 in this release, but ${ZOD3_WINDOW_ENDS}: ` +
|
|
100
|
+
"check the schema against the Zod 4 API.");
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Logs one warning per stored tool whose paramsZod Zod 4 can't compile. Runs
|
|
104
|
+
* in the background at startup; never throws.
|
|
105
|
+
*/
|
|
106
|
+
export async function logZod3ToolWarnings(db, log) {
|
|
107
|
+
let warned = 0;
|
|
108
|
+
try {
|
|
109
|
+
const tools = await db.tool.findMany({ select: { id: true, name: true, paramsZod: true }, orderBy: { id: "asc" } });
|
|
110
|
+
for (const tool of tools) {
|
|
111
|
+
const compatibility = await cachedZod4Compatibility(tool.paramsZod);
|
|
112
|
+
const warning = zod3WindowWarning(toolSubject(tool.name), compatibility);
|
|
113
|
+
if (!warning)
|
|
114
|
+
continue;
|
|
115
|
+
const removed = compatibility.compatible === false ? compatibility.removed : [];
|
|
116
|
+
log.warn({ toolId: tool.id, toolName: tool.name, removed }, warning);
|
|
117
|
+
warned += 1;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
log.warn({ errorName: err instanceof Error ? err.name : typeof err }, "zod3_window_check_failed");
|
|
122
|
+
}
|
|
123
|
+
return warned;
|
|
124
|
+
}
|
|
@@ -111,6 +111,12 @@ export type CodingAgentProfile = Prisma.CodingAgentProfileModel;
|
|
|
111
111
|
* one coding run. Policy is copied from the profile before work starts.
|
|
112
112
|
*/
|
|
113
113
|
export type CodingRun = Prisma.CodingRunModel;
|
|
114
|
+
/**
|
|
115
|
+
* Model RunTranscript
|
|
116
|
+
* A coding run's session transcript for local resume: metadata only. The redacted content lives in
|
|
117
|
+
* the blob store under blobKey; the unredacted transcript is never stored.
|
|
118
|
+
*/
|
|
119
|
+
export type RunTranscript = Prisma.RunTranscriptModel;
|
|
114
120
|
/**
|
|
115
121
|
* Model CodingService
|
|
116
122
|
* Coding-run services (docs/coding-services.md): the catalog a repository's
|
|
@@ -134,6 +140,14 @@ export type CodingService = Prisma.CodingServiceModel;
|
|
|
134
140
|
* never probe output.
|
|
135
141
|
*/
|
|
136
142
|
export type CodingRunServiceStatus = Prisma.CodingRunServiceStatusModel;
|
|
143
|
+
/**
|
|
144
|
+
* Model RunBudgetEvent
|
|
145
|
+
* One budget decision about a run: a refusal by the coding proxy or at
|
|
146
|
+
* dispatch, or an overrun top-up with no room, with the numbers behind it.
|
|
147
|
+
* `limit` names what refused it: run, run-tree, day, week or month. `details`
|
|
148
|
+
* holds amounts, the model and the turn; never secrets or message text.
|
|
149
|
+
*/
|
|
150
|
+
export type RunBudgetEvent = Prisma.RunBudgetEventModel;
|
|
137
151
|
/**
|
|
138
152
|
* Model NativeGatewaySession
|
|
139
153
|
* The trusted gateway's record of one sandbox-mode native run (native
|
|
@@ -170,10 +184,17 @@ export type NativeGatewayCall = Prisma.NativeGatewayCallModel;
|
|
|
170
184
|
export type CodingProxySession = Prisma.CodingProxySessionModel;
|
|
171
185
|
/**
|
|
172
186
|
* Model CodingProxyRequest
|
|
173
|
-
* Monotonic per-upstream-call ledger.
|
|
174
|
-
*
|
|
187
|
+
* Monotonic per-upstream-call ledger. An uncertain request without an
|
|
188
|
+
* estimate stays held in full; one the proxy estimated (costEstimated) counts
|
|
189
|
+
* at that estimate.
|
|
175
190
|
*/
|
|
176
191
|
export type CodingProxyRequest = Prisma.CodingProxyRequestModel;
|
|
192
|
+
/**
|
|
193
|
+
* Model RegistryAuditRecord
|
|
194
|
+
* One package version a run's registry served only because of package audit mode (or, in full mode,
|
|
195
|
+
* served despite blocking advisories). Insert-only for the proxy.
|
|
196
|
+
*/
|
|
197
|
+
export type RegistryAuditRecord = Prisma.RegistryAuditRecordModel;
|
|
177
198
|
/**
|
|
178
199
|
* Model RegistryAllowance
|
|
179
200
|
* One package a run's profile has approved from a given ecosystem, resolved
|
|
@@ -211,6 +232,15 @@ export type RegistryApprovedVersion = Prisma.RegistryApprovedVersionModel;
|
|
|
211
232
|
* from here with the same code and reason, without a graph walk.
|
|
212
233
|
*/
|
|
213
234
|
export type RegistryPlanRefusal = Prisma.RegistryPlanRefusalModel;
|
|
235
|
+
/**
|
|
236
|
+
* Model DependencySnapshot
|
|
237
|
+
* A cached node_modules snapshot for one npm project of a repository, keyed
|
|
238
|
+
* server-side by the coding proxy. The archive lives in the blob store under
|
|
239
|
+
* blobKey; only trusted wardby code writes it, before a run's agent starts.
|
|
240
|
+
* Outlives the run that created it (createdByRunId is cleared when that run is
|
|
241
|
+
* deleted); evicted least-recently-used.
|
|
242
|
+
*/
|
|
243
|
+
export type DependencySnapshot = Prisma.DependencySnapshotModel;
|
|
214
244
|
/**
|
|
215
245
|
* Model SchedulerLease
|
|
216
246
|
* Phase 2: single-row-per-scope lease so exactly one scheduler process
|
|
@@ -398,7 +428,8 @@ export type AgentIssueProject = Prisma.AgentIssueProjectModel;
|
|
|
398
428
|
export type IssueFingerprint = Prisma.IssueFingerprintModel;
|
|
399
429
|
/**
|
|
400
430
|
* Model IssuePullRequest
|
|
401
|
-
* A pull request wardby opened for
|
|
431
|
+
* A pull request wardby opened for an issue (a Jira issue, a GitHub issue): one shape for every issue
|
|
432
|
+
* provider. Provider-neutral on both sides.
|
|
402
433
|
* Deliberately no foreign keys to Agent or Run: audit-style rows that survive agent/run deletion.
|
|
403
434
|
*/
|
|
404
435
|
export type IssuePullRequest = Prisma.IssuePullRequestModel;
|
|
@@ -130,6 +130,12 @@ export type CodingAgentProfile = Prisma.CodingAgentProfileModel;
|
|
|
130
130
|
* one coding run. Policy is copied from the profile before work starts.
|
|
131
131
|
*/
|
|
132
132
|
export type CodingRun = Prisma.CodingRunModel;
|
|
133
|
+
/**
|
|
134
|
+
* Model RunTranscript
|
|
135
|
+
* A coding run's session transcript for local resume: metadata only. The redacted content lives in
|
|
136
|
+
* the blob store under blobKey; the unredacted transcript is never stored.
|
|
137
|
+
*/
|
|
138
|
+
export type RunTranscript = Prisma.RunTranscriptModel;
|
|
133
139
|
/**
|
|
134
140
|
* Model CodingService
|
|
135
141
|
* Coding-run services (docs/coding-services.md): the catalog a repository's
|
|
@@ -153,6 +159,14 @@ export type CodingService = Prisma.CodingServiceModel;
|
|
|
153
159
|
* never probe output.
|
|
154
160
|
*/
|
|
155
161
|
export type CodingRunServiceStatus = Prisma.CodingRunServiceStatusModel;
|
|
162
|
+
/**
|
|
163
|
+
* Model RunBudgetEvent
|
|
164
|
+
* One budget decision about a run: a refusal by the coding proxy or at
|
|
165
|
+
* dispatch, or an overrun top-up with no room, with the numbers behind it.
|
|
166
|
+
* `limit` names what refused it: run, run-tree, day, week or month. `details`
|
|
167
|
+
* holds amounts, the model and the turn; never secrets or message text.
|
|
168
|
+
*/
|
|
169
|
+
export type RunBudgetEvent = Prisma.RunBudgetEventModel;
|
|
156
170
|
/**
|
|
157
171
|
* Model NativeGatewaySession
|
|
158
172
|
* The trusted gateway's record of one sandbox-mode native run (native
|
|
@@ -189,10 +203,17 @@ export type NativeGatewayCall = Prisma.NativeGatewayCallModel;
|
|
|
189
203
|
export type CodingProxySession = Prisma.CodingProxySessionModel;
|
|
190
204
|
/**
|
|
191
205
|
* Model CodingProxyRequest
|
|
192
|
-
* Monotonic per-upstream-call ledger.
|
|
193
|
-
*
|
|
206
|
+
* Monotonic per-upstream-call ledger. An uncertain request without an
|
|
207
|
+
* estimate stays held in full; one the proxy estimated (costEstimated) counts
|
|
208
|
+
* at that estimate.
|
|
194
209
|
*/
|
|
195
210
|
export type CodingProxyRequest = Prisma.CodingProxyRequestModel;
|
|
211
|
+
/**
|
|
212
|
+
* Model RegistryAuditRecord
|
|
213
|
+
* One package version a run's registry served only because of package audit mode (or, in full mode,
|
|
214
|
+
* served despite blocking advisories). Insert-only for the proxy.
|
|
215
|
+
*/
|
|
216
|
+
export type RegistryAuditRecord = Prisma.RegistryAuditRecordModel;
|
|
196
217
|
/**
|
|
197
218
|
* Model RegistryAllowance
|
|
198
219
|
* One package a run's profile has approved from a given ecosystem, resolved
|
|
@@ -230,6 +251,15 @@ export type RegistryApprovedVersion = Prisma.RegistryApprovedVersionModel;
|
|
|
230
251
|
* from here with the same code and reason, without a graph walk.
|
|
231
252
|
*/
|
|
232
253
|
export type RegistryPlanRefusal = Prisma.RegistryPlanRefusalModel;
|
|
254
|
+
/**
|
|
255
|
+
* Model DependencySnapshot
|
|
256
|
+
* A cached node_modules snapshot for one npm project of a repository, keyed
|
|
257
|
+
* server-side by the coding proxy. The archive lives in the blob store under
|
|
258
|
+
* blobKey; only trusted wardby code writes it, before a run's agent starts.
|
|
259
|
+
* Outlives the run that created it (createdByRunId is cleared when that run is
|
|
260
|
+
* deleted); evicted least-recently-used.
|
|
261
|
+
*/
|
|
262
|
+
export type DependencySnapshot = Prisma.DependencySnapshotModel;
|
|
233
263
|
/**
|
|
234
264
|
* Model SchedulerLease
|
|
235
265
|
* Phase 2: single-row-per-scope lease so exactly one scheduler process
|
|
@@ -417,7 +447,8 @@ export type AgentIssueProject = Prisma.AgentIssueProjectModel;
|
|
|
417
447
|
export type IssueFingerprint = Prisma.IssueFingerprintModel;
|
|
418
448
|
/**
|
|
419
449
|
* Model IssuePullRequest
|
|
420
|
-
* A pull request wardby opened for
|
|
450
|
+
* A pull request wardby opened for an issue (a Jira issue, a GitHub issue): one shape for every issue
|
|
451
|
+
* provider. Provider-neutral on both sides.
|
|
421
452
|
* Deliberately no foreign keys to Agent or Run: audit-style rows that survive agent/run deletion.
|
|
422
453
|
*/
|
|
423
454
|
export type IssuePullRequest = Prisma.IssuePullRequestModel;
|