@wardby/cli 0.6.0 → 0.8.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 +5 -5
- package/README.md +6 -1
- package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
- package/dist/claude-coding-worker/driver.d.ts +33 -3
- package/dist/claude-coding-worker/driver.js +151 -21
- package/dist/claude-coding-worker/main.js +38 -6
- package/dist/claude-coding-worker/sdk.js +29 -2
- 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/claude-plugin/command.d.ts +61 -0
- package/dist/claude-plugin/command.js +376 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +3 -1
- package/dist/cli.js +71 -13
- package/dist/coding/code-host.d.ts +16 -0
- package/dist/coding/code-host.js +60 -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/mcp-token.d.ts +12 -0
- package/dist/coding/mcp-token.js +26 -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 +237 -12
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +17 -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 +52 -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 +9 -6
- package/dist/coding-worker/debug-trace.js +16 -19
- 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 +124 -39
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/main.js +5 -1
- package/dist/coding-worker/mcp-config.d.ts +27 -0
- package/dist/coding-worker/mcp-config.js +32 -0
- package/dist/coding-worker/sdk.d.ts +36 -0
- package/dist/coding-worker/sdk.js +28 -1
- 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 +15 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/mcp-call-limit.d.ts +8 -0
- package/dist/config/mcp-call-limit.js +18 -0
- package/dist/config/mcp-servers.d.ts +8 -0
- package/dist/config/mcp-servers.js +12 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- package/dist/config/test-simulators.d.ts +92 -0
- package/dist/config/test-simulators.js +333 -0
- package/dist/config/tool-timeout.d.ts +1 -0
- package/dist/config/tool-timeout.js +18 -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-mcp.d.ts +36 -0
- package/dist/core/coding-mcp.js +253 -0
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/coding-repository.d.ts +46 -0
- package/dist/core/coding-repository.js +92 -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/delegation-slots.d.ts +27 -0
- package/dist/core/delegation-slots.js +44 -0
- package/dist/core/dispatch.d.ts +48 -2
- package/dist/core/dispatch.js +166 -66
- package/dist/core/engine-native.js +1 -1
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +169 -0
- package/dist/core/grants.d.ts +46 -8
- package/dist/core/grants.js +99 -8
- package/dist/core/host-events.d.ts +18 -2
- package/dist/core/host-events.js +291 -27
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +300 -22
- 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 +58 -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/mcp-client/client.d.ts +47 -0
- package/dist/core/mcp-client/client.js +141 -0
- package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
- package/dist/core/mcp-client/jsonrpc.js +54 -0
- package/dist/core/mcp-client/results.d.ts +13 -0
- package/dist/core/mcp-client/results.js +42 -0
- package/dist/core/mcp-servers.d.ts +90 -0
- package/dist/core/mcp-servers.js +230 -0
- package/dist/core/mcp-tools.d.ts +108 -0
- package/dist/core/mcp-tools.js +287 -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 +44 -18
- package/dist/core/notification-dispatcher.js +2 -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 +49 -20
- 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 +4 -3
- 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 +102 -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 +145 -49
- package/dist/core/runner.js +719 -216
- 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 +12 -74
- package/dist/core/secret-broker-config.js +1 -1
- package/dist/core/secret-guard.d.ts +49 -0
- package/dist/core/secret-guard.js +119 -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 +11 -1
- package/dist/core/secrets.js +27 -1
- package/dist/core/serializable-retry.d.ts +18 -0
- package/dist/core/serializable-retry.js +43 -0
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/tool-admin.d.ts +5 -1
- package/dist/core/tool-admin.js +7 -2
- package/dist/core/tool-names.d.ts +13 -0
- package/dist/core/tool-names.js +20 -0
- package/dist/core/webhooks.d.ts +4 -0
- package/dist/core/webhooks.js +68 -49
- 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 +45 -9
- 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 +65 -3
- package/dist/generated/prisma/client.d.ts +65 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
- 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 +110 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
- package/dist/generated/prisma/models/Agent.d.ts +377 -8
- package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
- package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
- package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
- package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
- package/dist/generated/prisma/models/CodingRun.d.ts +1712 -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/HostProvider.d.ts +2176 -0
- package/dist/generated/prisma/models/HostProvider.js +1 -0
- package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
- package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
- package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
- package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.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/McpServer.d.ts +1500 -0
- package/dist/generated/prisma/models/McpServer.js +1 -0
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- package/dist/generated/prisma/models/Principal.d.ts +167 -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/ResourceGrant.d.ts +1 -1
- 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/Secret.d.ts +387 -0
- package/dist/generated/prisma/models/Tool.d.ts +223 -1
- package/dist/generated/prisma/models.d.ts +10 -0
- package/dist/help/search.js +12 -3
- package/dist/help-index.json +2033 -110
- package/dist/import/create.js +48 -4
- package/dist/import/neutral-schema.d.ts +51 -281
- 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 +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/grants-cli.d.ts +6 -4
- package/dist/mcp/auth/grants-cli.js +42 -3
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/resource-server.d.ts +3 -1
- package/dist/mcp/auth/resource-server.js +17 -2
- 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 +3 -0
- 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 +69 -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 +295 -28
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +73 -29
- package/dist/mcp/tools/host-providers.d.ts +2 -0
- package/dist/mcp/tools/host-providers.js +215 -0
- package/dist/mcp/tools/mcp-servers.d.ts +26 -0
- package/dist/mcp/tools/mcp-servers.js +481 -0
- 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 +65 -12
- 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 +209 -27
- 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/secret-elicitation.d.ts +2 -0
- package/dist/mcp/tools/secret-elicitation.js +25 -2
- package/dist/mcp/tools/secrets.js +40 -6
- 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 +7 -5
- package/dist/mcp/tools/tools.js +64 -16
- package/dist/mcp/tools/trigger.js +28 -6
- package/dist/mcp/transport/http-limits.d.ts +2 -0
- package/dist/mcp/transport/http-limits.js +6 -2
- 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/mcp/webhooks/ingress.js +10 -0
- 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 +55 -3
- package/dist/native-worker/gateway-server.js +152 -34
- package/dist/native-worker/gateway.d.ts +29 -1
- package/dist/native-worker/gateway.js +74 -4
- package/dist/native-worker/http-server.d.ts +7 -1
- package/dist/native-worker/http-server.js +62 -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 +24 -4
- package/dist/native-worker/ledger.js +62 -8
- 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 +130 -577
- package/dist/native-worker/protocol.js +51 -2
- 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/capability-hash.d.ts +2 -0
- package/dist/providers/coding-proxy/capability-hash.js +5 -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/mcp-route.d.ts +34 -0
- package/dist/providers/coding-proxy/mcp-route.js +166 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
- package/dist/providers/coding-proxy/memory-ledger.js +99 -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 +16 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
- package/dist/providers/coding-proxy/proxy.d.ts +21 -2
- package/dist/providers/coding-proxy/proxy.js +300 -48
- 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 +10 -0
- package/dist/providers/coding-proxy/runtime.js +109 -16
- package/dist/providers/coding-proxy/server.d.ts +9 -1
- package/dist/providers/coding-proxy/server.js +55 -1
- package/dist/providers/coding-proxy/types.d.ts +78 -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 +52 -7
- package/dist/providers/executor/container.d.ts +394 -9
- package/dist/providers/executor/container.js +1210 -96
- 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/host-tools/invoke.d.ts +37 -0
- package/dist/providers/host-tools/invoke.js +117 -0
- package/dist/providers/host-tools/operations.d.ts +65 -0
- package/dist/providers/host-tools/operations.js +149 -0
- package/dist/providers/host-tools/registry.d.ts +79 -0
- package/dist/providers/host-tools/registry.js +362 -0
- package/dist/providers/host-tools/request-guard.d.ts +17 -0
- package/dist/providers/host-tools/request-guard.js +99 -0
- package/dist/providers/host-tools/self-test.d.ts +64 -0
- package/dist/providers/host-tools/self-test.js +142 -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 +10 -2
- package/dist/providers/jobs/docker-isolation.js +47 -8
- package/dist/providers/jobs/docker.d.ts +9 -0
- package/dist/providers/jobs/docker.js +60 -11
- 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 +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +32 -3
- package/dist/providers/jobs/kubernetes.d.ts +11 -1
- package/dist/providers/jobs/kubernetes.js +111 -17
- package/dist/providers/jobs/types.d.ts +39 -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 +140 -6
- package/dist/providers/review-host/types.js +9 -1
- 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 +39 -4
- package/dist/providers/vcs/git.js +339 -26
- 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 +183 -44
- package/dist/providers/vcs/github.js +455 -56
- package/dist/providers/vcs/index.d.ts +1 -1
- package/dist/providers/vcs/index.js +9 -2
- 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 +37 -1
- package/dist/providers/vcs/remote.js +7 -1
- package/dist/providers/vcs/routing.d.ts +16 -8
- package/dist/providers/vcs/routing.js +27 -6
- package/dist/providers/vcs/types.d.ts +150 -5
- package/dist/quickstart/coding-seed.d.ts +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- package/dist/quickstart/index.d.ts +5 -0
- package/dist/quickstart/index.js +21 -0
- 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/eval-core.d.ts +12 -2
- package/dist/sandbox/eval-core.js +20 -4
- 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 +5 -0
- package/dist/sandbox/host-functions.js +13 -13
- package/dist/sandbox/limits.d.ts +4 -1
- package/dist/sandbox/limits.js +4 -1
- package/dist/sandbox/run-in-sandbox.d.ts +6 -0
- package/dist/sandbox/run-in-sandbox.js +14 -2
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +1 -1
- package/dist/sandbox/secret-broker.d.ts +1 -0
- package/dist/sandbox/secret-broker.js +4 -5
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/tool-timeout.d.ts +32 -0
- package/dist/sandbox/tool-timeout.js +52 -0
- package/dist/sandbox/user-tool.d.ts +8 -1
- package/dist/sandbox/user-tool.js +9 -3
- 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/graph.js +2 -1
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +15 -0
- package/docs/README.md +11 -1
- package/docs/agent-recipes.md +95 -24
- package/docs/architecture-runtime.md +1 -1
- package/docs/claude-code-plugin.md +164 -0
- package/docs/code-review-agents.md +557 -41
- package/docs/coding-agent-setup.md +566 -8
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +24 -2
- package/docs/coding-worker-isolation.md +183 -37
- package/docs/debugging-agent-runs.md +242 -0
- package/docs/getting-started-gke.md +129 -141
- package/docs/getting-started-identity-provider.md +53 -38
- package/docs/getting-started.md +17 -0
- package/docs/host-providers.md +294 -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/mcp-servers.md +254 -0
- package/docs/native-sandbox.md +143 -31
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +139 -29
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +45 -10
- package/docs/viewer-api.md +6 -0
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +28 -2
- package/help/agent-recipes.md +33 -2
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +3 -0
- package/help/build-claude-code-image.md +1 -1
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/claude-code-run-pane.md +40 -0
- 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-mcp-pins-unavailable.md +35 -0
- 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 +1 -1
- 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/host-provider-error.md +40 -0
- package/help/errors/host-tool-failed.md +36 -0
- package/help/errors/mcp-call-limit.md +22 -0
- package/help/errors/mcp-call-timeout.md +22 -0
- package/help/errors/mcp-server-auth-failed.md +22 -0
- package/help/errors/mcp-server-credentials-unavailable.md +45 -0
- package/help/errors/mcp-server-error.md +28 -0
- package/help/errors/mcp-server-unreachable.md +22 -0
- package/help/errors/mcp-servers-off.md +21 -0
- package/help/errors/mcp-tool-not-allowed.md +26 -0
- package/help/errors/mcp-tool-removed.md +22 -0
- package/help/errors/mcp-unavailable.md +25 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-capacity.md +1 -1
- package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
- package/help/errors/native-sandbox-docker-failed.md +1 -1
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
- package/help/errors/native-sandbox-image-not-pinned.md +1 -1
- package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +1 -1
- package/help/errors/native-sandbox-requires-catalog.md +1 -1
- package/help/errors/native-sandbox-unavailable.md +1 -1
- package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
- package/help/errors/native-sandbox-worker-exited.md +4 -3
- package/help/errors/native-sandbox-worker-lost.md +1 -1
- package/help/errors/native-sandbox-worker-unready.md +1 -1
- 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/repository-not-listed.md +36 -0
- package/help/errors/repository-required.md +36 -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/errors/tool-timeout.md +38 -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/host-providers.md +40 -0
- package/help/identity-and-access.md +6 -1
- 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/mcp-servers.md +73 -0
- package/help/mcp.md +7 -2
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +55 -1
- package/help/native-sandbox.md +16 -2
- package/help/operating-agents.md +21 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +17 -10
- package/help/repo-instructions-and-skills.md +3 -1
- package/help/resume-runs-locally.md +134 -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 +86 -7
- package/help/troubleshooting/debugging-agent-runs.md +29 -0
- package/package.json +18 -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/migrations/20261102000000_host_providers/migration.sql +56 -0
- package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
- package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
- package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
- package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
- package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
- package/prisma/schema.prisma +468 -109
- package/scripts/git-askpass.sh +1 -1
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* npm registry adapter: parses npm allowlist syntax and semver ranges,
|
|
3
3
|
* routes proxy requests against the npm HTTP protocol (packuments,
|
|
4
4
|
* `-/tarball/<name>/<version>` downloads, and the standard
|
|
5
|
-
* `<name>/-/<unscoped>-<version>.tgz` path lockfiles record), and configures npm
|
|
6
|
-
* the sandboxed worker to use the proxy with
|
|
5
|
+
* `<name>/-/<unscoped>-<version>.tgz` path lockfiles record), and configures npm, pnpm,
|
|
6
|
+
* yarn (classic and Berry) and corepack in the sandboxed worker to use the proxy with
|
|
7
|
+
* install-time scripts disabled.
|
|
7
8
|
*/
|
|
8
9
|
import semver from "semver";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
10
|
+
import { npmClientLockfilePlan, npmClientLockfiles } from "./npm-lockfile-formats.js";
|
|
11
|
+
import { registryDependencyEdges } from "./npm-plan.js";
|
|
11
12
|
import { AllowlistEntryError, RegistryError, } from "./types.js";
|
|
12
13
|
/** Scoped names are lower case (npm never allowed capitals in them); an
|
|
13
14
|
* unscoped legacy name may contain capitals, and npm treats it as a
|
|
@@ -81,6 +82,19 @@ function standardTarball(name, filename) {
|
|
|
81
82
|
return null;
|
|
82
83
|
return { kind: "download", name, version, filename: `${version}.tgz` };
|
|
83
84
|
}
|
|
85
|
+
/** The download URL the proxy hands out: the registry's usual tarball path,
|
|
86
|
+
* `<name>/-/<unscoped>-<version>.tgz`, under the proxy's base (routed by
|
|
87
|
+
* `standardTarball`). pnpm and yarn 2+ record a download URL in their
|
|
88
|
+
* lockfile (and yarn in .pnp.cjs and its cache names) only when it isn't
|
|
89
|
+
* that usual one, so they record nothing of the proxy. */
|
|
90
|
+
function proxyTarballUrl(proxyBase, name, version) {
|
|
91
|
+
// The usual path routes only a canonically spelled version (standardTarball);
|
|
92
|
+
// any other kept version (build metadata, `1.0.0+build`) keeps the proxy's
|
|
93
|
+
// own route, which the collection rewrite turns public all the same.
|
|
94
|
+
if (semver.valid(version) !== version)
|
|
95
|
+
return `${proxyBase}-/tarball/${encodeURIComponent(name)}/${encodeURIComponent(version)}`;
|
|
96
|
+
return `${proxyBase}${name}/-/${name.slice(name.indexOf("/") + 1)}-${version}.tgz`;
|
|
97
|
+
}
|
|
84
98
|
function validName(name) {
|
|
85
99
|
if (!NAME.test(name))
|
|
86
100
|
throw new AllowlistEntryError(`"${name}" is not a valid npm package name`);
|
|
@@ -138,8 +152,8 @@ export const npmAdapter = {
|
|
|
138
152
|
upstreamHosts: ["registry.npmjs.org"],
|
|
139
153
|
collectExclude: ["node_modules"],
|
|
140
154
|
dependenciesInMetadata: true,
|
|
141
|
-
lockfiles:
|
|
142
|
-
lockfilePlan:
|
|
155
|
+
lockfiles: npmClientLockfiles,
|
|
156
|
+
lockfilePlan: npmClientLockfilePlan,
|
|
143
157
|
parseAllowlistEntry(raw) {
|
|
144
158
|
const value = raw.trim();
|
|
145
159
|
// Scopes are always lower case on npm, so folding one cannot select a
|
|
@@ -173,6 +187,9 @@ export const npmAdapter = {
|
|
|
173
187
|
// one segment (`react`, `@scope%2fpkg`) or a literal scope plus name
|
|
174
188
|
// (`@scope/pkg`); the filename is one raw segment.
|
|
175
189
|
const standard = subpath.match(/^((?:@[^/]+\/)?[^/]+)\/-\/([^/]+)$/);
|
|
190
|
+
// One version's document, `<name>/<version>` (corepack reads these to
|
|
191
|
+
// download a pinned pnpm or yarn), for an exact version only.
|
|
192
|
+
const versionDocument = subpath.match(/^((?:@[^/]+\/)?[^/]+)\/([^/]+)$/);
|
|
176
193
|
try {
|
|
177
194
|
if (tarball) {
|
|
178
195
|
const name = decodeURIComponent(tarball[1]);
|
|
@@ -183,6 +200,14 @@ export const npmAdapter = {
|
|
|
183
200
|
}
|
|
184
201
|
if (standard)
|
|
185
202
|
return standardTarball(decodeURIComponent(standard[1]), decodeURIComponent(standard[2]));
|
|
203
|
+
if (versionDocument) {
|
|
204
|
+
// `@scope/pkg` matches too (as name `@scope`, version `pkg`), and
|
|
205
|
+
// falls through: no package name is a scope alone.
|
|
206
|
+
const name = decodeURIComponent(versionDocument[1]);
|
|
207
|
+
const version = decodeURIComponent(versionDocument[2]);
|
|
208
|
+
if (NAME.test(name) && semver.valid(version) === version)
|
|
209
|
+
return { kind: "metadata", name, version };
|
|
210
|
+
}
|
|
186
211
|
const name = decodeURIComponent(subpath);
|
|
187
212
|
return NAME.test(name) ? { kind: "metadata", name } : null;
|
|
188
213
|
}
|
|
@@ -214,7 +239,7 @@ export const npmAdapter = {
|
|
|
214
239
|
const info = JSON.parse(manifest);
|
|
215
240
|
versions[version] = {
|
|
216
241
|
...info,
|
|
217
|
-
dist: { ...info.dist, tarball:
|
|
242
|
+
dist: { ...info.dist, tarball: proxyTarballUrl(proxyBase, meta.name, version) },
|
|
218
243
|
};
|
|
219
244
|
const published = raw.times.get(version);
|
|
220
245
|
if (published !== undefined)
|
|
@@ -229,13 +254,37 @@ export const npmAdapter = {
|
|
|
229
254
|
body: JSON.stringify({ name: raw.name, "dist-tags": tags, time, versions }),
|
|
230
255
|
};
|
|
231
256
|
},
|
|
257
|
+
renderVersion(meta, version, keptFiles, proxyBase) {
|
|
258
|
+
const raw = meta.raw;
|
|
259
|
+
if (!raw)
|
|
260
|
+
throw new Error(`npm metadata for "${meta.name}" was fetched without render data`);
|
|
261
|
+
const manifest = raw.manifests.get(version);
|
|
262
|
+
if (manifest === undefined || !keptFiles.has(`${version}.tgz`))
|
|
263
|
+
return null;
|
|
264
|
+
const info = JSON.parse(manifest);
|
|
265
|
+
return {
|
|
266
|
+
contentType: "application/json",
|
|
267
|
+
body: JSON.stringify({
|
|
268
|
+
...info,
|
|
269
|
+
dist: { ...info.dist, tarball: proxyTarballUrl(proxyBase, meta.name, version) },
|
|
270
|
+
}),
|
|
271
|
+
};
|
|
272
|
+
},
|
|
232
273
|
resolveDownload(route, meta) {
|
|
233
274
|
return meta.versions.get(route.version)?.files.find((file) => file.filename === route.filename) ?? null;
|
|
234
275
|
},
|
|
235
276
|
workerConfig({ registryUrl, token, cacheDir }) {
|
|
236
277
|
const npmrc = `${cacheDir}/npmrc`;
|
|
278
|
+
// yarn Berry and corepack append paths to a registry without a trailing slash.
|
|
279
|
+
const registryServer = registryUrl.replace(/\/+$/, "");
|
|
280
|
+
const proxy = new URL(registryUrl);
|
|
237
281
|
return {
|
|
238
282
|
env: {
|
|
283
|
+
// npm, and pnpm (which reads the same npm_config_* settings and
|
|
284
|
+
// npmrc). Only settings npm knows: npm warns about any other on
|
|
285
|
+
// every command, so pnpm's store and cache and yarn classic's cache
|
|
286
|
+
// folder are set by the shim for that tool alone (npm-shim.mjs),
|
|
287
|
+
// under npm_config_cache.
|
|
239
288
|
npm_config_registry: registryUrl,
|
|
240
289
|
npm_config_userconfig: npmrc,
|
|
241
290
|
npm_config_ignore_scripts: "true",
|
|
@@ -243,7 +292,28 @@ export const npmAdapter = {
|
|
|
243
292
|
npm_config_audit: "false",
|
|
244
293
|
npm_config_fund: "false",
|
|
245
294
|
npm_config_update_notifier: "false",
|
|
246
|
-
//
|
|
295
|
+
// yarn classic (1.x): the registry and token from the npm settings
|
|
296
|
+
// above, and its own switch for install scripts. Nothing here is a
|
|
297
|
+
// YARN_ setting yarn Berry would reject as unknown.
|
|
298
|
+
YARN_IGNORE_SCRIPTS: "true",
|
|
299
|
+
// yarn Berry (2+) ignores npm's settings. Its global folder holds its
|
|
300
|
+
// shared cache; the per-project cacheFolder is left alone, so a
|
|
301
|
+
// repository that commits its cache (zero-install) keeps it.
|
|
302
|
+
YARN_NPM_REGISTRY_SERVER: registryServer,
|
|
303
|
+
YARN_NPM_AUTH_TOKEN: token,
|
|
304
|
+
YARN_NPM_ALWAYS_AUTH: "true",
|
|
305
|
+
...(proxy.protocol === "http:" ? { YARN_UNSAFE_HTTP_WHITELIST: proxy.hostname } : {}),
|
|
306
|
+
YARN_ENABLE_TELEMETRY: "0",
|
|
307
|
+
YARN_ENABLE_SCRIPTS: "false",
|
|
308
|
+
YARN_GLOBAL_FOLDER: `${cacheDir}/yarn-berry`,
|
|
309
|
+
// corepack, which downloads the pnpm or yarn release a project pins.
|
|
310
|
+
COREPACK_NPM_REGISTRY: registryServer,
|
|
311
|
+
COREPACK_NPM_TOKEN: token,
|
|
312
|
+
COREPACK_HOME: `${cacheDir}/corepack`,
|
|
313
|
+
COREPACK_ENABLE_DOWNLOAD_PROMPT: "0",
|
|
314
|
+
COREPACK_ENABLE_AUTO_PIN: "0",
|
|
315
|
+
COREPACK_DEFAULT_TO_LATEST: "0",
|
|
316
|
+
// The only registry the package-manager shim (npm-shim.mjs) sends a lockfile to.
|
|
247
317
|
WARDBY_NPM_PLAN_REGISTRY: registryUrl,
|
|
248
318
|
},
|
|
249
319
|
files: [{ path: npmrc, content: `${registryUrl.replace(/^https?:/, "")}:_authToken=${token}\n`, mode: 0o600 }],
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ParsedLockfile } from "./types.js";
|
|
2
|
+
export declare function parsePnpmLockfile(body: string, options: {
|
|
3
|
+
maxEntries: number;
|
|
4
|
+
proxyRegistryUrl: string;
|
|
5
|
+
}): ParsedLockfile;
|
|
6
|
+
/** Whether `body` is a pnpm lockfile: a top-level `lockfileVersion:` key
|
|
7
|
+
* (a Berry yarn.lock has `__metadata:` instead, and npm's is JSON). */
|
|
8
|
+
export declare function isPnpmLockfile(body: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Rewrites what pnpm records of the proxy in a `pnpm-lock.yaml`. pnpm
|
|
11
|
+
* records a package's `tarball` only when the registry's download URL is
|
|
12
|
+
* not the conventional one, which the proxy's own route is not: a proxy
|
|
13
|
+
* `tarball` next to an `integrity` is dropped (exactly what pnpm writes for
|
|
14
|
+
* a package from the public registry), and one without an integrity is
|
|
15
|
+
* rewritten to the public registry URL. Only matched values change.
|
|
16
|
+
*/
|
|
17
|
+
export declare function normalizePnpmLockfile(content: string, registryUrl: string): string;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pnpm-lock.yaml` for npm lockfile plans (`POST /registry/npm/-/plan`) and
|
|
3
|
+
* for the rewrite of proxy URLs before collection.
|
|
4
|
+
*
|
|
5
|
+
* Supported: lockfileVersion 9 (pnpm 9+: `packages` holds each
|
|
6
|
+
* name@version's resolution and integrity, `snapshots` each installed
|
|
7
|
+
* instance with its resolved dependencies) and 6 (pnpm 8: `packages` keyed
|
|
8
|
+
* `/name@version`, holding both). An entry is one installed instance (a
|
|
9
|
+
* snapshot, or a v6 package key), so the same name@version with different
|
|
10
|
+
* peers is several entries; plans approve per name@version anyway.
|
|
11
|
+
*
|
|
12
|
+
* pnpm resolves a dependency by the reference the parent's entry records
|
|
13
|
+
* (`ms: 2.1.3`, an alias's `string-width@4.2.3`, both possibly with a
|
|
14
|
+
* `(peer@x)` suffix): `resolve` follows exactly that. `link:` and `file:`
|
|
15
|
+
* references and `directory` resolutions are local and skipped; git and
|
|
16
|
+
* non-registry tarballs are refused. Nothing here decides anything: plan.ts
|
|
17
|
+
* verifies every claim against the registry.
|
|
18
|
+
*
|
|
19
|
+
* Kept free of imports from npm.ts, which imports this module.
|
|
20
|
+
*/
|
|
21
|
+
import { parseProxyPath, publicNpmTarballUrl } from "./npm-lockfile.js";
|
|
22
|
+
import { registryDependencyEdges } from "./npm-plan.js";
|
|
23
|
+
import { buildResolve, entryOf, fromRegistry, mapOf, parseLockfileYaml, splitDescriptor, stringOf, tooLarge, yamlEntryLines, } from "./lockfile-shared.js";
|
|
24
|
+
import { RegistryError } from "./types.js";
|
|
25
|
+
/** Two-space-indented keys a pnpm lockfile may have per entry (a package
|
|
26
|
+
* and its snapshot, plus slack for importers), for the cheap pre-check. */
|
|
27
|
+
const KEY_LINES_PER_ENTRY = 4;
|
|
28
|
+
/** `name@1.0.0(peer@2.0.0)(other@3)` without its peer suffix. */
|
|
29
|
+
function withoutPeers(reference) {
|
|
30
|
+
const open = reference.indexOf("(");
|
|
31
|
+
return open < 0 ? reference : reference.slice(0, open);
|
|
32
|
+
}
|
|
33
|
+
/** The string-valued dependencies of a snapshot or package entry. */
|
|
34
|
+
function referencesOf(entry) {
|
|
35
|
+
const references = new Map();
|
|
36
|
+
for (const field of ["dependencies", "optionalDependencies"]) {
|
|
37
|
+
for (const [key, value] of Object.entries(mapOf(entry[field]))) {
|
|
38
|
+
const reference = stringOf(value);
|
|
39
|
+
if (reference !== undefined && !references.has(key))
|
|
40
|
+
references.set(key, reference);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return references;
|
|
44
|
+
}
|
|
45
|
+
const IMPORTER_FIELDS = ["dependencies", "devDependencies", "optionalDependencies"];
|
|
46
|
+
/** An importer's declared dependencies (`{ specifier, version }` per name). */
|
|
47
|
+
function importerDeclarations(importer) {
|
|
48
|
+
const specs = {};
|
|
49
|
+
for (const field of IMPORTER_FIELDS) {
|
|
50
|
+
for (const [key, value] of Object.entries(mapOf(importer[field]))) {
|
|
51
|
+
const specifier = stringOf(mapOf(value).specifier) ?? stringOf(value);
|
|
52
|
+
if (specifier !== undefined && !(key in specs))
|
|
53
|
+
specs[key] = specifier;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return registryDependencyEdges(specs);
|
|
57
|
+
}
|
|
58
|
+
/** The reference (`version`) an importer records for each dependency it
|
|
59
|
+
* declares, which `resolve` follows like a snapshot's. */
|
|
60
|
+
function importerReferences(importer) {
|
|
61
|
+
const references = new Map();
|
|
62
|
+
for (const field of IMPORTER_FIELDS) {
|
|
63
|
+
for (const [key, value] of Object.entries(mapOf(importer[field]))) {
|
|
64
|
+
const reference = stringOf(mapOf(value).version);
|
|
65
|
+
if (reference !== undefined && !references.has(key))
|
|
66
|
+
references.set(key, reference);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return references;
|
|
70
|
+
}
|
|
71
|
+
/** The entry for one installed instance: local (null), or registry or
|
|
72
|
+
* refused by its resolution. */
|
|
73
|
+
function classify(path, name, version, resolution, proxyRegistryUrl) {
|
|
74
|
+
if (version.startsWith("link:") || version.startsWith("file:"))
|
|
75
|
+
return null;
|
|
76
|
+
const fields = mapOf(resolution);
|
|
77
|
+
const type = stringOf(fields.type);
|
|
78
|
+
if (type === "directory")
|
|
79
|
+
return null;
|
|
80
|
+
const tarball = stringOf(fields.tarball);
|
|
81
|
+
if (tarball?.startsWith("file:"))
|
|
82
|
+
return null;
|
|
83
|
+
const integrity = stringOf(fields.integrity) ?? null;
|
|
84
|
+
const elsewhere = type !== undefined || (tarball !== undefined && !fromRegistry(tarball, proxyRegistryUrl));
|
|
85
|
+
return entryOf(path, name, version, integrity, elsewhere ? "elsewhere" : "registry");
|
|
86
|
+
}
|
|
87
|
+
export function parsePnpmLockfile(body, options) {
|
|
88
|
+
const lines = yamlEntryLines(body);
|
|
89
|
+
if (lines > (options.maxEntries + 1) * KEY_LINES_PER_ENTRY)
|
|
90
|
+
throw tooLarge(lines, options.maxEntries);
|
|
91
|
+
const document = parseLockfileYaml(body);
|
|
92
|
+
const lockfileVersion = stringOf(document.lockfileVersion) ?? "";
|
|
93
|
+
const major = Number.parseInt(lockfileVersion, 10);
|
|
94
|
+
if (major !== 6 && major !== 9)
|
|
95
|
+
throw new RegistryError(400, "wardby_lockfile_unsupported", `pnpm lockfileVersion ${JSON.stringify(lockfileVersion)} is not supported; regenerate the lockfile with pnpm 8 or later (lockfileVersion 6 or 9)`);
|
|
96
|
+
const packages = mapOf(document.packages);
|
|
97
|
+
const snapshots = mapOf(document.snapshots);
|
|
98
|
+
// v9 lists every installed instance under `snapshots`; v6 has only `packages`.
|
|
99
|
+
const instances = major === 9 && Object.keys(snapshots).length > 0 ? snapshots : packages;
|
|
100
|
+
const count = Object.keys(instances).length;
|
|
101
|
+
if (count > options.maxEntries)
|
|
102
|
+
throw tooLarge(count, options.maxEntries);
|
|
103
|
+
const entries = [];
|
|
104
|
+
const byPath = new Map();
|
|
105
|
+
const byKey = new Map();
|
|
106
|
+
for (const [path, raw] of Object.entries(instances)) {
|
|
107
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
108
|
+
throw new RegistryError(400, "wardby_bad_request", `pnpm-lock.yaml entry "${path}" is not a mapping`);
|
|
109
|
+
const instance = raw;
|
|
110
|
+
let target;
|
|
111
|
+
if (major === 9) {
|
|
112
|
+
const base = withoutPeers(path);
|
|
113
|
+
const { name, range: version } = splitDescriptor(base);
|
|
114
|
+
target = classify(path, name, version, mapOf(packages[base]).resolution, options.proxyRegistryUrl);
|
|
115
|
+
}
|
|
116
|
+
else if (path.startsWith("/")) {
|
|
117
|
+
const { name, range: version } = splitDescriptor(withoutPeers(path.slice(1)));
|
|
118
|
+
target = classify(path, name, version, instance.resolution, options.proxyRegistryUrl);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// A v6 key without a leading slash is a package from outside the
|
|
122
|
+
// registry (a git host, a URL, a local path); pnpm records its
|
|
123
|
+
// name and version as fields.
|
|
124
|
+
target = classify(path, stringOf(instance.name) ?? path, stringOf(instance.version) ?? "", { type: "elsewhere", ...mapOf(instance.resolution) }, options.proxyRegistryUrl);
|
|
125
|
+
}
|
|
126
|
+
if (target)
|
|
127
|
+
entries.push(target);
|
|
128
|
+
byPath.set(path, { dependencies: referencesOf(instance) });
|
|
129
|
+
byKey.set(path, target);
|
|
130
|
+
}
|
|
131
|
+
const importers = mapOf(document.importers);
|
|
132
|
+
const importerOf = Object.keys(importers).length > 0
|
|
133
|
+
? Object.entries(importers).map(([path, importer]) => [path, mapOf(importer)])
|
|
134
|
+
: [[".", document]];
|
|
135
|
+
const projects = importerOf.map(([path, importer]) => ({ path, dependencies: importerDeclarations(importer) }));
|
|
136
|
+
// A project resolves what it declares like an instance does (an importer
|
|
137
|
+
// path that is also an instance key keeps the instance's references).
|
|
138
|
+
for (const [path, importer] of importerOf)
|
|
139
|
+
if (!byPath.has(path))
|
|
140
|
+
byPath.set(path, { dependencies: importerReferences(importer) });
|
|
141
|
+
const candidates = (key, reference) => {
|
|
142
|
+
if (reference.startsWith("link:"))
|
|
143
|
+
return [];
|
|
144
|
+
if (major === 9) {
|
|
145
|
+
// An alias records `name@version`; anything else is this key's version.
|
|
146
|
+
return withoutPeers(reference).indexOf("@", 1) > 0 ? [reference] : [`${key}@${reference}`];
|
|
147
|
+
}
|
|
148
|
+
if (reference.startsWith("/"))
|
|
149
|
+
return [reference];
|
|
150
|
+
return /^\d/.test(reference) ? [`/${key}@${reference}`] : [reference];
|
|
151
|
+
};
|
|
152
|
+
return { entries, projects, ...buildResolve(byPath, byKey, candidates) };
|
|
153
|
+
}
|
|
154
|
+
/** Whether `body` is a pnpm lockfile: a top-level `lockfileVersion:` key
|
|
155
|
+
* (a Berry yarn.lock has `__metadata:` instead, and npm's is JSON). */
|
|
156
|
+
export function isPnpmLockfile(body) {
|
|
157
|
+
return /^lockfileVersion:/m.test(body);
|
|
158
|
+
}
|
|
159
|
+
/** A `resolution: {…}` flow mapping on one line of a pnpm lockfile. */
|
|
160
|
+
const RESOLUTION = /^(\s+resolution:\s*\{)([^}\n]*)(\}\s*)$/gm;
|
|
161
|
+
/**
|
|
162
|
+
* Rewrites what pnpm records of the proxy in a `pnpm-lock.yaml`. pnpm
|
|
163
|
+
* records a package's `tarball` only when the registry's download URL is
|
|
164
|
+
* not the conventional one, which the proxy's own route is not: a proxy
|
|
165
|
+
* `tarball` next to an `integrity` is dropped (exactly what pnpm writes for
|
|
166
|
+
* a package from the public registry), and one without an integrity is
|
|
167
|
+
* rewritten to the public registry URL. Only matched values change.
|
|
168
|
+
*/
|
|
169
|
+
export function normalizePnpmLockfile(content, registryUrl) {
|
|
170
|
+
const base = registryUrl.endsWith("/") ? registryUrl : `${registryUrl}/`;
|
|
171
|
+
return content.replace(RESOLUTION, (match, open, inner, close) => {
|
|
172
|
+
const parts = inner.split(",").map((part) => part.trim());
|
|
173
|
+
const tarballAt = parts.findIndex((part) => part.startsWith("tarball:"));
|
|
174
|
+
if (tarballAt < 0)
|
|
175
|
+
return match;
|
|
176
|
+
const url = parts[tarballAt]
|
|
177
|
+
.slice("tarball:".length)
|
|
178
|
+
.trim()
|
|
179
|
+
.replace(/^(['"])(.*)\1$/, "$2");
|
|
180
|
+
const target = url.startsWith(base) ? parseProxyPath(url.slice(base.length)) : null;
|
|
181
|
+
if (!target)
|
|
182
|
+
return match;
|
|
183
|
+
if (parts.some((part) => part.startsWith("integrity:")))
|
|
184
|
+
parts.splice(tarballAt, 1);
|
|
185
|
+
else
|
|
186
|
+
parts[tarballAt] = `tarball: ${publicNpmTarballUrl(target.name, target.version)}`;
|
|
187
|
+
return `${open}${parts.join(", ")}${close}`;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type DeclaredDependency, type LockfilePlanSupport, type ParsedLockfile, type UpstreamFetch, type VersionFact } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* A pinned requirements file: every `name==version` (or `===`) line is an
|
|
4
|
+
* entry; a direct reference (`name @ url`) is an unsupported one. Options
|
|
5
|
+
* (`-r`, `-c`, `--index-url`, …), editable or local projects and unpinned
|
|
6
|
+
* lines are not entries: pip resolves those the usual way. The file records
|
|
7
|
+
* no dependency graph, so a parent's dependency resolves to every entry of
|
|
8
|
+
* that name (marker-split pins).
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseRequirements(body: string, maxEntries: number): ParsedLockfile;
|
|
11
|
+
/**
|
|
12
|
+
* A uv.lock (`version = 1`). A package from PyPI (or the proxy) is an
|
|
13
|
+
* entry; the lock's own projects (editable, virtual and directory sources)
|
|
14
|
+
* are its projects; one from git, a URL, a path or another index is
|
|
15
|
+
* unsupported. A dependency resolves to the version the lock names for it
|
|
16
|
+
* when the lock pins the name at several versions.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseUvLock(body: string, maxEntries: number, proxyRegistryUrl: string): ParsedLockfile;
|
|
19
|
+
/** Which file a plan body is: a uv.lock, a requirements file, or one this registry cannot verify. */
|
|
20
|
+
export declare function parsePypiLockfile(body: string, options: {
|
|
21
|
+
maxEntries: number;
|
|
22
|
+
proxyRegistryUrl: string;
|
|
23
|
+
}): ParsedLockfile;
|
|
24
|
+
/** One release's facts: its dependency lines (with their extras and extra
|
|
25
|
+
* gates), and its earliest wheel's upload time, URL and sha256. A release
|
|
26
|
+
* with no wheel is refused (`wardby_file_not_allowed`): nothing in it may
|
|
27
|
+
* be installed. */
|
|
28
|
+
export declare function fetchPypiVersionFact(name: string, version: string, upstream: UpstreamFetch, signal?: AbortSignal): Promise<VersionFact | null>;
|
|
29
|
+
/** Publish times for releases whose fact carried none (no wheel recorded an upload time). */
|
|
30
|
+
export declare function fetchPypiPublishTimes(name: string, versions: readonly string[], upstream: UpstreamFetch, options: {
|
|
31
|
+
signal: AbortSignal;
|
|
32
|
+
}): Promise<Map<string, Date>>;
|
|
33
|
+
/** Whether a locked version is inside a dependency line's specifier, a
|
|
34
|
+
* pinned pre-release included. */
|
|
35
|
+
export declare function pypiEdgeSatisfies(version: string, range: string): boolean;
|
|
36
|
+
/** The dependencies a release installed with `extras` follows, under the
|
|
37
|
+
* same extras policy as the graph walk (pypi-requirements.ts). */
|
|
38
|
+
export declare function pypiDependenciesOf(fact: VersionFact, extras: readonly string[]): DeclaredDependency[];
|
|
39
|
+
export declare const pypiLockfilePlan: LockfilePlanSupport;
|
|
40
|
+
/** PyPI's own path for a file by project and filename, which redirects to the
|
|
41
|
+
* file (a wheel's python tag, or `source` for an sdist). */
|
|
42
|
+
export declare function publicFileUrl(name: string, filename: string): string | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* A uv.lock with the proxy's URLs (which uv records when it locks through
|
|
45
|
+
* the proxy) put back to PyPI's: its index as `https://pypi.org/simple`, each
|
|
46
|
+
* file as PyPI's redirecting path (publicFileUrl). Credentials are never in
|
|
47
|
+
* them (uv records none), but any userinfo before the proxy host is dropped
|
|
48
|
+
* with the URL anyway. Everything else is left exactly as it was.
|
|
49
|
+
*/
|
|
50
|
+
export declare function normalizeUvLock(content: string, registryUrl: string): string;
|