@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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isPackageAuditMode, parsePackageAuditVerdict } from "../../../coding/registry/audit-mode.js";
|
|
1
2
|
import { extraAllowanceName, extraOfAllowanceName } from "./store.js";
|
|
2
3
|
/** Versions looked up per query, so a 5000-entry lockfile is a handful of
|
|
3
4
|
* bounded queries rather than one enormous OR. */
|
|
@@ -14,7 +15,17 @@ export class PrismaRegistryStore {
|
|
|
14
15
|
runId: true,
|
|
15
16
|
status: true,
|
|
16
17
|
deadlineAt: true,
|
|
17
|
-
run: {
|
|
18
|
+
run: {
|
|
19
|
+
select: {
|
|
20
|
+
packageAllowlist: true,
|
|
21
|
+
packagePolicy: true,
|
|
22
|
+
repository: true,
|
|
23
|
+
workerImage: true,
|
|
24
|
+
toolImage: true,
|
|
25
|
+
dependencyCache: true,
|
|
26
|
+
packageAuditMode: true,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
18
29
|
},
|
|
19
30
|
});
|
|
20
31
|
if (!session || session.status !== "active" || session.deadlineAt <= now)
|
|
@@ -24,6 +35,10 @@ export class PrismaRegistryStore {
|
|
|
24
35
|
deadlineAt: session.deadlineAt,
|
|
25
36
|
allowlist: (session.run.packageAllowlist ?? {}),
|
|
26
37
|
policy: session.run.packagePolicy,
|
|
38
|
+
repository: session.run.repository,
|
|
39
|
+
cacheImage: session.run.toolImage ?? session.run.workerImage,
|
|
40
|
+
dependencyCache: session.run.dependencyCache,
|
|
41
|
+
packageAudit: isPackageAuditMode(session.run.packageAuditMode) ? session.run.packageAuditMode : null,
|
|
27
42
|
};
|
|
28
43
|
}
|
|
29
44
|
async isAllowedDependency(runId, ecosystem, name) {
|
|
@@ -36,6 +51,15 @@ export class PrismaRegistryStore {
|
|
|
36
51
|
});
|
|
37
52
|
return row !== null;
|
|
38
53
|
}
|
|
54
|
+
async findAllowance(runId, ecosystem, name) {
|
|
55
|
+
// An extra's row (`name[extra]`) is never a package allowance.
|
|
56
|
+
if (name.includes("["))
|
|
57
|
+
return null;
|
|
58
|
+
return this.db.registryAllowance.findUnique({
|
|
59
|
+
where: { runId_ecosystem_name: { runId, ecosystem, name } },
|
|
60
|
+
select: { auditedVia: true },
|
|
61
|
+
});
|
|
62
|
+
}
|
|
39
63
|
async addAllowances(runId, ecosystem, names) {
|
|
40
64
|
if (names.length === 0)
|
|
41
65
|
return;
|
|
@@ -44,6 +68,32 @@ export class PrismaRegistryStore {
|
|
|
44
68
|
skipDuplicates: true,
|
|
45
69
|
});
|
|
46
70
|
}
|
|
71
|
+
async addAuditedAllowances(runId, ecosystem, names, auditedVia) {
|
|
72
|
+
if (names.length === 0)
|
|
73
|
+
return;
|
|
74
|
+
// Insert-only (the proxy has no UPDATE): an existing row keeps its first writer.
|
|
75
|
+
await this.db.registryAllowance.createMany({
|
|
76
|
+
data: [...new Set(names)].map((name) => ({ runId, ecosystem, name, auditedVia })),
|
|
77
|
+
skipDuplicates: true,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
async recordAudit(record) {
|
|
81
|
+
await this.db.registryAuditRecord.createMany({
|
|
82
|
+
data: [
|
|
83
|
+
{
|
|
84
|
+
runId: record.runId,
|
|
85
|
+
ecosystem: record.ecosystem,
|
|
86
|
+
name: record.name,
|
|
87
|
+
version: record.version,
|
|
88
|
+
relation: record.relation,
|
|
89
|
+
via: record.via ?? null,
|
|
90
|
+
sizeBytes: record.sizeBytes ?? null,
|
|
91
|
+
advisories: record.advisories.map(({ id, severity, summary }) => ({ id, severity, summary })),
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
skipDuplicates: true,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
47
97
|
async allowedExtras(runId, ecosystem, name) {
|
|
48
98
|
const rows = await this.db.registryAllowance.findMany({
|
|
49
99
|
where: { runId, ecosystem, name: { startsWith: `${name}[` } },
|
|
@@ -73,18 +123,15 @@ export class PrismaRegistryStore {
|
|
|
73
123
|
}
|
|
74
124
|
async listFetches(runId) {
|
|
75
125
|
const rows = await this.db.registryFetch.findMany({ where: { runId }, orderBy: { createdAt: "asc" } });
|
|
76
|
-
return rows.map(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
reason: row.reason ?? undefined,
|
|
86
|
-
createdAt: row.createdAt,
|
|
87
|
-
}));
|
|
126
|
+
return rows.map(fetchRecordOf);
|
|
127
|
+
}
|
|
128
|
+
async listRecentRefusals(runId, since, limit) {
|
|
129
|
+
const rows = await this.db.registryFetch.findMany({
|
|
130
|
+
where: { runId, outcome: "refused", createdAt: { gte: since } },
|
|
131
|
+
orderBy: { createdAt: "desc" },
|
|
132
|
+
take: limit,
|
|
133
|
+
});
|
|
134
|
+
return rows.map(fetchRecordOf);
|
|
88
135
|
}
|
|
89
136
|
async getVersionFacts(ecosystem, versions) {
|
|
90
137
|
const facts = [];
|
|
@@ -117,7 +164,13 @@ export class PrismaRegistryStore {
|
|
|
117
164
|
publishedAt: fact.publishedAt,
|
|
118
165
|
integrity: fact.integrity,
|
|
119
166
|
downloadUrl: fact.downloadUrl,
|
|
120
|
-
dependencies: fact.dependencies.map(({ key, name, range }) => ({
|
|
167
|
+
dependencies: fact.dependencies.map(({ key, name, range, extras, when }) => ({
|
|
168
|
+
key,
|
|
169
|
+
name,
|
|
170
|
+
range,
|
|
171
|
+
...(extras ? { extras: [...extras] } : {}),
|
|
172
|
+
...(when ? { when: [...when] } : {}),
|
|
173
|
+
})),
|
|
121
174
|
})),
|
|
122
175
|
skipDuplicates: true,
|
|
123
176
|
});
|
|
@@ -126,14 +179,32 @@ export class PrismaRegistryStore {
|
|
|
126
179
|
if (versions.length === 0)
|
|
127
180
|
return;
|
|
128
181
|
await this.db.registryApprovedVersion.createMany({
|
|
129
|
-
data: versions.map(({ name, version, integrity }) => ({
|
|
182
|
+
data: versions.map(({ name, version, integrity, acceptedAdvisories, audit }) => ({
|
|
183
|
+
runId,
|
|
184
|
+
ecosystem,
|
|
185
|
+
name,
|
|
186
|
+
version,
|
|
187
|
+
integrity,
|
|
188
|
+
acceptedAdvisories: [...(acceptedAdvisories ?? [])],
|
|
189
|
+
...(audit
|
|
190
|
+
? {
|
|
191
|
+
audit: {
|
|
192
|
+
relation: audit.relation,
|
|
193
|
+
...(audit.via ? { via: audit.via } : {}),
|
|
194
|
+
...(audit.advisories?.length
|
|
195
|
+
? { advisories: audit.advisories.map(({ id, severity, summary }) => ({ id, severity, summary })) }
|
|
196
|
+
: {}),
|
|
197
|
+
},
|
|
198
|
+
}
|
|
199
|
+
: {}),
|
|
200
|
+
})),
|
|
130
201
|
skipDuplicates: true,
|
|
131
202
|
});
|
|
132
203
|
}
|
|
133
204
|
async findApprovedVersion(runId, ecosystem, name, version) {
|
|
134
205
|
const approval = await this.db.registryApprovedVersion.findUnique({
|
|
135
206
|
where: { runId_ecosystem_name_version: { runId, ecosystem, name, version } },
|
|
136
|
-
select: { integrity: true },
|
|
207
|
+
select: { integrity: true, acceptedAdvisories: true, audit: true },
|
|
137
208
|
});
|
|
138
209
|
if (!approval)
|
|
139
210
|
return null;
|
|
@@ -141,7 +212,15 @@ export class PrismaRegistryStore {
|
|
|
141
212
|
where: { ecosystem_name_version: { ecosystem, name, version } },
|
|
142
213
|
select: { downloadUrl: true },
|
|
143
214
|
});
|
|
144
|
-
|
|
215
|
+
const audit = parsePackageAuditVerdict(approval.audit);
|
|
216
|
+
return fact
|
|
217
|
+
? {
|
|
218
|
+
integrity: approval.integrity,
|
|
219
|
+
downloadUrl: fact.downloadUrl,
|
|
220
|
+
acceptedAdvisories: approval.acceptedAdvisories,
|
|
221
|
+
...(audit ? { audit } : {}),
|
|
222
|
+
}
|
|
223
|
+
: null;
|
|
145
224
|
}
|
|
146
225
|
async refusePlanVersions(runId, ecosystem, versions) {
|
|
147
226
|
if (versions.length === 0)
|
|
@@ -165,4 +244,28 @@ export class PrismaRegistryStore {
|
|
|
165
244
|
select: { code: true, reason: true, publishedAt: true },
|
|
166
245
|
});
|
|
167
246
|
}
|
|
247
|
+
async recordDependencyCacheLockHash(runId, lockHash, max) {
|
|
248
|
+
// One statement, so a concurrent seal or plan can never slip past a check.
|
|
249
|
+
await this.db.$executeRaw `
|
|
250
|
+
UPDATE "CodingProxySession"
|
|
251
|
+
SET "dependencyCacheLockHashes" = array_append("dependencyCacheLockHashes", ${lockHash})
|
|
252
|
+
WHERE "runId" = ${runId}
|
|
253
|
+
AND "dependencyCacheSealedAt" IS NULL
|
|
254
|
+
AND NOT (${lockHash} = ANY("dependencyCacheLockHashes"))
|
|
255
|
+
AND cardinality("dependencyCacheLockHashes") < ${max}`;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function fetchRecordOf(row) {
|
|
259
|
+
return {
|
|
260
|
+
runId: row.runId,
|
|
261
|
+
ecosystem: row.ecosystem,
|
|
262
|
+
name: row.name,
|
|
263
|
+
version: row.version ?? undefined,
|
|
264
|
+
filename: row.filename ?? undefined,
|
|
265
|
+
integrity: row.integrity ?? undefined,
|
|
266
|
+
sizeBytes: row.sizeBytes ?? undefined,
|
|
267
|
+
outcome: row.outcome,
|
|
268
|
+
reason: row.reason ?? undefined,
|
|
269
|
+
createdAt: row.createdAt,
|
|
270
|
+
};
|
|
168
271
|
}
|
|
@@ -1,15 +1,32 @@
|
|
|
1
|
-
import { RegistryError, type Integrity, type RegistryAdapter, type UpstreamFetch } from "../../../coding/registry/types.js";
|
|
1
|
+
import { RegistryError, type Integrity, type PackageMetadata, type RegistryAdapter, type UpstreamFetch } from "../../../coding/registry/types.js";
|
|
2
2
|
import type { OsvAudit } from "./audit.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type RegistryStore } from "./store.js";
|
|
4
4
|
export declare const DEFAULT_MAX_GRAPH_PACKAGES = 3000;
|
|
5
5
|
export declare const DEFAULT_GRAPH_TIMEOUT_MS = 180000;
|
|
6
6
|
/** Graph-walk expansions in flight at once across every run, so one run's
|
|
7
7
|
* walk cannot starve the others' upstream fetches -- or the proxy's event
|
|
8
8
|
* loop: parsing packuments is CPU work on the same loop that carries model
|
|
9
9
|
* traffic (per-walk 2 and global 3 since a live install at 4/6 on 500m
|
|
10
|
-
* expired a ledger transaction). The walk is only the fallback now
|
|
11
|
-
*
|
|
10
|
+
* expired a ledger transaction). The walk is only the fallback now: a
|
|
11
|
+
* download of a version the run has not resolved starts one (and a
|
|
12
|
+
* metadata miss, only after a failed or partial lockfile plan), and
|
|
13
|
+
* lockfile verification answers most of those without it. */
|
|
12
14
|
export declare const DEFAULT_MAX_GRAPH_CONCURRENCY = 3;
|
|
15
|
+
/** Byte budget of the graph walk's memo of expanded packages (kept
|
|
16
|
+
* versions and their declared dependencies), across every run. */
|
|
17
|
+
export declare const DEFAULT_GRAPH_MEMO_BYTES: number;
|
|
18
|
+
/** How long a memoized expansion is reused. Safe for that long: a kept
|
|
19
|
+
* version depends on the release-age cutoff, which only moves forward (a
|
|
20
|
+
* stale entry can only omit a version that has since become old enough,
|
|
21
|
+
* which fails closed), and on the OSV audit, which is itself cached for an
|
|
22
|
+
* hour (audit.ts). The walk's view of advisories can therefore lag by the
|
|
23
|
+
* audit cache TTL plus 15 minutes; that only affects which names the walk
|
|
24
|
+
* allows, because every served version is re-audited through keptVersions
|
|
25
|
+
* and malware is never allowed. A version published upstream within the TTL is
|
|
26
|
+
* too new to be kept under any non-zero minReleaseAgeDays; with
|
|
27
|
+
* minReleaseAgeDays 0 it is omitted until the entry expires (fails
|
|
28
|
+
* closed). */
|
|
29
|
+
export declare const GRAPH_MEMO_TTL_MS: number;
|
|
13
30
|
/** Lockfile plans read and verified at once across every run: with the
|
|
14
31
|
* 20 MiB body cap, this bounds the lockfile text held at once. */
|
|
15
32
|
export declare const DEFAULT_PLAN_CONCURRENCY = 2;
|
|
@@ -47,6 +64,13 @@ export interface RegistryRequest {
|
|
|
47
64
|
token: string;
|
|
48
65
|
signal: AbortSignal;
|
|
49
66
|
}
|
|
67
|
+
export interface RegistryRefusalsRequest {
|
|
68
|
+
token: string;
|
|
69
|
+
/** Only refusals recorded at or after this time; the last 15 minutes when absent or invalid. */
|
|
70
|
+
since?: Date;
|
|
71
|
+
}
|
|
72
|
+
/** The most refusals `GET /registry/-/refusals` returns (distinct, newest first). */
|
|
73
|
+
export declare const MAX_LISTED_REFUSALS = 20;
|
|
50
74
|
export interface RegistryPlanRequest {
|
|
51
75
|
ecosystem: string;
|
|
52
76
|
token: string;
|
|
@@ -57,7 +81,16 @@ export interface RegistryPlanRequest {
|
|
|
57
81
|
readBody(): Promise<string>;
|
|
58
82
|
signal: AbortSignal;
|
|
59
83
|
}
|
|
60
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Why kept versions leave nothing to download, or null when some file is
|
|
86
|
+
* servable: every allowed file newer than the release-age limit
|
|
87
|
+
* (`wardby_version_filtered`), or no allowed file at all, such as a Python
|
|
88
|
+
* package with only source distributions (`wardby_file_not_allowed`).
|
|
89
|
+
*/
|
|
90
|
+
export declare function unservableReason(meta: PackageMetadata, keep: ReadonlySet<string>, keptFiles: ReadonlySet<string>): "wardby_version_filtered" | "wardby_file_not_allowed" | null;
|
|
91
|
+
export declare function errorResponse(error: RegistryError): Extract<RegistryResponse, {
|
|
92
|
+
body: string;
|
|
93
|
+
}>;
|
|
61
94
|
export declare const DEFAULT_METADATA_CACHE_ENTRIES = 500;
|
|
62
95
|
/** Byte budget of the metadata cache, by each entry's approximate retained
|
|
63
96
|
* size. Entries are trimmed (an npm package's is a few MB at most, for
|
|
@@ -93,6 +126,17 @@ export declare class RegistryService {
|
|
|
93
126
|
* across replicas. */
|
|
94
127
|
private readonly inFlight;
|
|
95
128
|
private readonly tallies;
|
|
129
|
+
/** Expanded packages of the graph walks (`runId\0ecosystem\0name`),
|
|
130
|
+
* least recently used first, so a package reached again under a new
|
|
131
|
+
* range, in a later request of the same run, is not read again.
|
|
132
|
+
* Run-scoped by key: a package's kept versions depend on the run's
|
|
133
|
+
* policy and allowlist range. Bounded to `graphMemoBytes`; entries
|
|
134
|
+
* expire GRAPH_MEMO_TTL_MS after they are computed, and a run's entries
|
|
135
|
+
* are dropped when the run is released. */
|
|
136
|
+
private readonly graphMemo;
|
|
137
|
+
/** Sum of the memo entries' `bytes`. */
|
|
138
|
+
private graphMemoTotal;
|
|
139
|
+
private readonly graphMemoBytes;
|
|
96
140
|
private readonly walkSlots;
|
|
97
141
|
private readonly planSlots;
|
|
98
142
|
private readonly versionUpstream;
|
|
@@ -119,28 +163,47 @@ export declare class RegistryService {
|
|
|
119
163
|
/** Time one on-demand graph walk may take (default 180 s). */
|
|
120
164
|
graphTimeoutMs?: number;
|
|
121
165
|
/** Graph-walk expansions in flight at once across every run
|
|
122
|
-
* (default
|
|
166
|
+
* (default 3). */
|
|
123
167
|
maxGraphConcurrency?: number;
|
|
124
168
|
/** Entries a lockfile plan may have (default 5000). */
|
|
125
169
|
planMaxEntries?: number;
|
|
126
170
|
/** Time one lockfile plan may take (default 120 s). */
|
|
127
171
|
planTimeoutMs?: number;
|
|
172
|
+
/** Time reading one pnpm or yarn lockfile (in a worker thread) may
|
|
173
|
+
* take (default 15 s). */
|
|
174
|
+
planParseTimeoutMs?: number;
|
|
128
175
|
/** Lockfile plans read and verified at once across every run (default 2). */
|
|
129
176
|
planConcurrency?: number;
|
|
130
177
|
/** Lockfile plans one run may make (default 20). */
|
|
131
178
|
planMaxPerRun?: number;
|
|
132
179
|
});
|
|
180
|
+
/**
|
|
181
|
+
* `GET /registry/-/refusals`: the run's recent refusals (package, code and the
|
|
182
|
+
* shared hint), for a client that does not print the registry's 403 body
|
|
183
|
+
* (pip, uv). Authenticated with the run's registry token. Names come from the
|
|
184
|
+
* run's own requests; nothing else (no URL, no token) is returned.
|
|
185
|
+
*/
|
|
186
|
+
refusals(request: RegistryRefusalsRequest): Promise<Extract<RegistryResponse, {
|
|
187
|
+
body: string;
|
|
188
|
+
}>>;
|
|
133
189
|
/** `POST /registry/<ecosystem>/-/plan`: verifies a lockfile against the
|
|
134
190
|
* registry and approves exactly its verified, reachable name@version
|
|
135
191
|
* pairs for the run (plan.ts). Answers `{ approved, refused }`. */
|
|
136
192
|
plan(request: RegistryPlanRequest): Promise<RegistryResponse>;
|
|
137
193
|
private planLockfile;
|
|
194
|
+
private runPlan;
|
|
138
195
|
private verifyPlan;
|
|
139
196
|
/** One refused row per plan refusal, within the run's refusal cap, and
|
|
140
197
|
* once per run however often the same lockfile is planned. */
|
|
141
198
|
private recordPlanRefusals;
|
|
142
199
|
handle(request: RegistryRequest): Promise<RegistryResponse>;
|
|
143
200
|
private dispatch;
|
|
201
|
+
/** The allowances serving a package's metadata grows: its kept versions'
|
|
202
|
+
* dependencies, and, for an audited package, each tagged with the
|
|
203
|
+
* top-level audited package that declared it (its own name for a
|
|
204
|
+
* top-level one, which is also recorded for itself so its later
|
|
205
|
+
* downloads read as top-level). */
|
|
206
|
+
private allowServed;
|
|
144
207
|
private hostAllowed;
|
|
145
208
|
/** Served usage for the run, seeded once from the store and then kept
|
|
146
209
|
* current in-process as downloads complete. */
|
|
@@ -151,23 +214,38 @@ export declare class RegistryService {
|
|
|
151
214
|
* version (the same filter the metadata path applies: root range,
|
|
152
215
|
* release age, advisories), transitively. Each newly found name is
|
|
153
216
|
* recorded as an allowance as the walk goes, exactly as if its
|
|
154
|
-
* parent's metadata had been served.
|
|
155
|
-
*
|
|
217
|
+
* parent's metadata had been served. Only a download asks, or a
|
|
218
|
+
* metadata miss after a failed or partial lockfile plan (see
|
|
219
|
+
* `authorize`). A scoped wildcard root cannot be enumerated, so it is
|
|
220
|
+
* never a starting point. */
|
|
156
221
|
private resolveInGraph;
|
|
157
222
|
/** The answer for a name the walk did not find: unavailable while any
|
|
158
223
|
* node could not be expanded (the audit, if any failure was the
|
|
159
224
|
* audit's), otherwise absent. */
|
|
160
225
|
private graphMiss;
|
|
226
|
+
/** One walk, logged once when it stops, with its progress (and, on a
|
|
227
|
+
* timeout, its frontier) taken before `running` is cleared. */
|
|
161
228
|
private walkGraph;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
229
|
+
private expandGraph;
|
|
230
|
+
/** The kept versions of one package inside any of the ranges that reached
|
|
231
|
+
* it, and each one's declared dependencies, through the same metadata
|
|
232
|
+
* cache and `keptVersions` filter the metadata path uses (a root's
|
|
233
|
+
* allowlist range applies there), within the process-wide walk
|
|
234
|
+
* concurrency cap. A `"*"` edge selects every kept version; a range no
|
|
235
|
+
* kept version satisfies selects none. A package npm doesn't have, or
|
|
236
|
+
* whose metadata is too large, definitively selects nothing; any other
|
|
237
|
+
* failure (upstream error or timeout, audit unavailable) is transient
|
|
238
|
+
* and reported for retry. */
|
|
170
239
|
private graphNode;
|
|
240
|
+
/** A package's kept versions for the run's walk, from the memo or
|
|
241
|
+
* computed (and memoized). A failed computation is not memoized, so its
|
|
242
|
+
* retry really retries. */
|
|
243
|
+
private keptForGraph;
|
|
244
|
+
private dropMemo;
|
|
245
|
+
private putMemo;
|
|
246
|
+
/** Memoizes an expansion, least recently used evicted first, within the
|
|
247
|
+
* byte budget. An entry larger than the whole budget is not kept. */
|
|
248
|
+
private memoize;
|
|
171
249
|
/** A package's metadata, cached. `render` asks for the form
|
|
172
250
|
* `renderMetadata` can serve; a cached entry fetched without it (by the
|
|
173
251
|
* graph walk or a download) is fetched again with it, and replaces it. */
|
|
@@ -213,5 +291,8 @@ export declare class RegistryService {
|
|
|
213
291
|
* plus those a served parent's dependency line asked of it. They decide
|
|
214
292
|
* which of the package's extra-gated dependencies its files allow. */
|
|
215
293
|
private allowedExtras;
|
|
294
|
+
/** One RegistryAuditRecord (the first served file of a version wins) and
|
|
295
|
+
* its `registry.audited` log line. */
|
|
296
|
+
private recordAudit;
|
|
216
297
|
private download;
|
|
217
298
|
}
|