@wardby/cli 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/driver.d.ts +21 -3
- package/dist/claude-coding-worker/driver.js +125 -17
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +12 -1
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +1 -0
- package/dist/cli.js +24 -10
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +46 -126
- package/dist/coding/profile.js +45 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +264 -346
- package/dist/coding/protocol.js +235 -12
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +12 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +51 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- package/dist/coding-worker/debug-trace.d.ts +6 -5
- package/dist/coding-worker/debug-trace.js +13 -18
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +116 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +11 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- package/dist/config/test-simulators.d.ts +82 -0
- package/dist/config/test-simulators.js +305 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/dispatch.d.ts +42 -0
- package/dist/core/dispatch.js +131 -56
- package/dist/core/engine-native.js +1 -1
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +168 -0
- package/dist/core/grants.d.ts +19 -6
- package/dist/core/grants.js +55 -6
- package/dist/core/host-events.d.ts +18 -2
- package/dist/core/host-events.js +284 -24
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +298 -20
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +124 -33
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +4 -10
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +54 -26
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +2 -1
- package/dist/core/merge-order-check.js +8 -1
- package/dist/core/notification-templates.d.ts +1 -7
- package/dist/core/notification-templates.js +36 -2
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +4 -3
- package/dist/core/reconciler.js +8 -1
- package/dist/core/related-pull-requests.d.ts +11 -3
- package/dist/core/related-pull-requests.js +27 -14
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/review-fix.d.ts +1 -1
- package/dist/core/review-fix.js +2 -1
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +3 -0
- package/dist/core/review-host-tools.js +99 -13
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +80 -34
- package/dist/core/runner.js +439 -144
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +10 -74
- package/dist/core/secret-guard.d.ts +46 -0
- package/dist/core/secret-guard.js +104 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-events.d.ts +14 -2
- package/dist/core/workflow-events.js +4 -0
- package/dist/core/workflow-run-events.d.ts +5 -3
- package/dist/core/workflow-run-events.js +43 -8
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +34 -3
- package/dist/generated/prisma/client.d.ts +34 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +220 -60
- package/dist/generated/prisma/enums.d.ts +10 -0
- package/dist/generated/prisma/enums.js +8 -0
- package/dist/generated/prisma/internal/class.d.ts +44 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +428 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +92 -1
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +95 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +92 -1
- package/dist/generated/prisma/models/Agent.d.ts +106 -8
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +229 -1
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +1637 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +39 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +738 -2
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models.d.ts +4 -0
- package/dist/help-index.json +1320 -69
- package/dist/import/create.js +32 -3
- package/dist/import/neutral-schema.d.ts +50 -281
- package/dist/import/neutral-schema.js +5 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/host-events/github-ingress.d.ts +2 -0
- package/dist/mcp/host-events/github-ingress.js +2 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +58 -10
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +198 -16
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +9 -3
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.js +2 -2
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/repositories.js +18 -5
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.js +34 -12
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-elicitation-form.js +5 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -61
- package/dist/mcp/tools/secrets.js +2 -2
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +1 -1
- package/dist/mcp/tools/tools.js +25 -9
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/native-worker/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +41 -3
- package/dist/native-worker/gateway-server.js +124 -27
- package/dist/native-worker/gateway.d.ts +27 -1
- package/dist/native-worker/gateway.js +70 -4
- package/dist/native-worker/http-server.d.ts +3 -1
- package/dist/native-worker/http-server.js +11 -7
- package/dist/native-worker/http-transport.js +1 -1
- package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
- package/dist/native-worker/kubernetes-launcher.js +43 -3
- package/dist/native-worker/launch.d.ts +18 -1
- package/dist/native-worker/launch.js +6 -1
- package/dist/native-worker/ledger.d.ts +18 -2
- package/dist/native-worker/ledger.js +57 -4
- package/dist/native-worker/loopback.js +3 -8
- package/dist/native-worker/main.d.ts +2 -1
- package/dist/native-worker/main.js +14 -3
- package/dist/native-worker/protocol.d.ts +129 -577
- package/dist/native-worker/protocol.js +47 -1
- package/dist/native-worker/sandbox-executor.d.ts +17 -2
- package/dist/native-worker/sandbox-executor.js +78 -4
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +1 -1
- package/dist/native-worker/stdio.js +6 -5
- package/dist/native-worker/warm-pool.d.ts +2 -2
- package/dist/native-worker/warm-pool.js +4 -4
- package/dist/native-worker/worker.js +28 -2
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/self-hosted.d.ts +1 -1
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/memory-ledger.js +84 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
- package/dist/providers/coding-proxy/proxy.d.ts +14 -1
- package/dist/providers/coding-proxy/proxy.js +166 -14
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +4 -0
- package/dist/providers/coding-proxy/runtime.js +78 -16
- package/dist/providers/coding-proxy/server.d.ts +6 -1
- package/dist/providers/coding-proxy/server.js +45 -1
- package/dist/providers/coding-proxy/types.d.ts +65 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +17 -2
- package/dist/providers/engine/types.js +17 -0
- package/dist/providers/executor/composition.d.ts +10 -3
- package/dist/providers/executor/composition.js +47 -7
- package/dist/providers/executor/container.d.ts +361 -8
- package/dist/providers/executor/container.js +1136 -91
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +50 -1
- package/dist/providers/executor/dbos.js +207 -20
- package/dist/providers/executor/deferred.d.ts +12 -24
- package/dist/providers/executor/deferred.js +10 -29
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +2 -0
- package/dist/providers/executor/routing.js +4 -0
- package/dist/providers/executor/types.d.ts +13 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +8 -0
- package/dist/providers/jobs/docker-isolation.js +17 -0
- package/dist/providers/jobs/docker.d.ts +1 -0
- package/dist/providers/jobs/docker.js +27 -2
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-api.js +10 -0
- package/dist/providers/jobs/kubernetes-client.js +10 -1
- package/dist/providers/jobs/kubernetes-isolation.d.ts +2 -0
- package/dist/providers/jobs/kubernetes-isolation.js +17 -1
- package/dist/providers/jobs/kubernetes.d.ts +6 -1
- package/dist/providers/jobs/kubernetes.js +105 -16
- package/dist/providers/jobs/types.d.ts +33 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +29 -2
- package/dist/providers/review-host/github.js +224 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +134 -2
- package/dist/providers/review-host/types.js +8 -0
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +33 -2
- package/dist/providers/vcs/git.js +324 -22
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +214 -6
- package/dist/providers/vcs/github.js +447 -45
- package/dist/providers/vcs/index.js +8 -1
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +33 -1
- package/dist/providers/vcs/routing.d.ts +4 -2
- package/dist/providers/vcs/routing.js +6 -0
- package/dist/providers/vcs/types.d.ts +80 -3
- package/dist/quickstart/coding-seed.d.ts +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +1 -0
- package/dist/sandbox/host-functions.js +6 -11
- package/dist/sandbox/secret-broker.js +3 -4
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +8 -1
- package/dist/viewer/api-schema.d.ts +349 -2627
- package/dist/viewer/api-schema.js +7 -0
- package/dist/viewer/build-schemas.js +6 -2
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +10 -0
- package/docs/agent-recipes.md +58 -20
- package/docs/code-review-agents.md +551 -41
- package/docs/coding-agent-setup.md +489 -7
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +20 -0
- package/docs/coding-worker-isolation.md +105 -30
- package/docs/getting-started-gke.md +124 -137
- package/docs/getting-started-identity-provider.md +10 -1
- package/docs/getting-started.md +9 -0
- package/docs/jira-agents.md +17 -8
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/native-sandbox.md +119 -23
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +33 -2
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +42 -10
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +24 -2
- package/help/architecture-agent.md +11 -6
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +177 -6
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +15 -8
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +4 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +3 -2
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/github-app-setup.md +132 -0
- package/help/github.md +22 -0
- package/help/identity-and-access.md +2 -0
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +1 -1
- package/help/low-power-mode.md +7 -1
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +15 -1
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +10 -7
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +33 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +19 -5
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +78 -7
- package/package.json +17 -10
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/schema.prisma +311 -97
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CONTINUATION_CLOSED_ERROR } from "../../coding/continuation-wording.js";
|
|
1
|
+
import { budgetStoppedChangesSentence, CONTINUATION_CLOSED_ERROR } from "../../coding/continuation-wording.js";
|
|
2
2
|
import { normalizeGitHubRepository, normalizeGitRef } from "../../coding/protocol.js";
|
|
3
3
|
import { logger } from "../../core/logger.js";
|
|
4
4
|
import { validateChangedPath } from "./git.js";
|
|
@@ -79,7 +79,57 @@ export class GitHubRemote {
|
|
|
79
79
|
if (!open)
|
|
80
80
|
throw new Error(CONTINUATION_CLOSED_ERROR);
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
/** See GitRemote.pullRequestBase: the root run's open PR's current base branch. Never throws. */
|
|
83
|
+
async pullRequestBase(input) {
|
|
84
|
+
const github = this.options.github;
|
|
85
|
+
if (!input.continuation || !github.openPullRequestBase)
|
|
86
|
+
return null;
|
|
87
|
+
try {
|
|
88
|
+
const found = await github.openPullRequestBase({
|
|
89
|
+
runId: input.continuation.rootRunId,
|
|
90
|
+
repository: input.repository,
|
|
91
|
+
baseRef: input.baseRef,
|
|
92
|
+
headRef: input.headRef,
|
|
93
|
+
});
|
|
94
|
+
return found ? { ref: found.baseRef } : null;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logger.warn({ err: error, runId: input.runId }, "could not read the continuation pull request's base branch; continuing without merging it");
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** See VcsProvider.continuationPullRequestDraft: GitHub's draft flag on the root run's open PR. Never throws. */
|
|
102
|
+
async continuationPullRequestDraft(workspace) {
|
|
103
|
+
const github = this.options.github;
|
|
104
|
+
if (!workspace.continuation || !github.openPullRequestDraft)
|
|
105
|
+
return undefined;
|
|
106
|
+
try {
|
|
107
|
+
const draft = await github.openPullRequestDraft({
|
|
108
|
+
runId: workspace.continuation.rootRunId,
|
|
109
|
+
repository: workspace.repository,
|
|
110
|
+
baseRef: workspace.baseRef,
|
|
111
|
+
headRef: workspace.headRef,
|
|
112
|
+
});
|
|
113
|
+
return draft ?? undefined;
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
logger.warn({ err: error, runId: workspace.runId }, "could not read the continuation pull request's draft state");
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** A continuation's description comment, written before the push (see GitRemote.proposeDescriptionBeforePush). Never throws. */
|
|
121
|
+
async proposeDescriptionBeforePush({ workspace: prepared, details, changedPaths, commitSha, }) {
|
|
122
|
+
const github = this.options.github;
|
|
123
|
+
if (!prepared.continuation || !details?.description || !github.proposeDescriptionComment)
|
|
124
|
+
return;
|
|
125
|
+
try {
|
|
126
|
+
await github.proposeDescriptionComment(this.descriptionInput({ ...prepared, continuation: prepared.continuation }, { ...details, description: details.description }, changedPaths, commitSha));
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
logger.warn({ err: error, runId: prepared.runId }, "pre-push description comment failed");
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async publish({ workspace: prepared, details, changedPaths, commitSha }) {
|
|
83
133
|
// Revision-in-place: identify the PR by the run that originally opened
|
|
84
134
|
// it (createOrFindDraftPullRequest's marker-based lookup keys on that
|
|
85
135
|
// run's id), not this run's own -- this finds the existing open PR and
|
|
@@ -99,11 +149,65 @@ export class GitHubRemote {
|
|
|
99
149
|
tag: details?.tag,
|
|
100
150
|
packages: details?.packages,
|
|
101
151
|
packageRefusals: details?.packageRefusals,
|
|
152
|
+
...(details?.packageAudit ? { packageAudit: details.packageAudit } : {}),
|
|
153
|
+
...(details?.restoredDependencies?.length ? { restoredDependencies: details.restoredDependencies } : {}),
|
|
102
154
|
changedLockfiles: changedPaths.filter(isLockfilePath),
|
|
103
155
|
...(details?.issue ? { issue: details.issue } : {}),
|
|
156
|
+
...(details?.issueNumber !== undefined ? { issueNumber: details.issueNumber } : {}),
|
|
104
157
|
...(details?.related ? { related: details.related } : {}),
|
|
105
158
|
});
|
|
106
|
-
|
|
159
|
+
let description;
|
|
160
|
+
if (prepared.continuation) {
|
|
161
|
+
description = await this.updateDescription(prepared, details, changedPaths, commitSha);
|
|
162
|
+
}
|
|
163
|
+
else if (pullRequest.descriptionSha256) {
|
|
164
|
+
description = { kind: "written", sha256: pullRequest.descriptionSha256 };
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
kind: "pull_request",
|
|
168
|
+
number: pullRequest.number,
|
|
169
|
+
url: pullRequest.url,
|
|
170
|
+
...(description ? { description } : {}),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/** The no-push path: a fix round that changed nothing still re-derives its PR description. */
|
|
174
|
+
async refreshDescription(workspace, details) {
|
|
175
|
+
// No push: the head is the commit the workspace was checked out at.
|
|
176
|
+
return this.updateDescription(workspace, details, [], workspace.baseCommit);
|
|
177
|
+
}
|
|
178
|
+
/** Never throws: a description problem must not fail an already-pushed run. */
|
|
179
|
+
async updateDescription(prepared, details, changedPaths, headSha) {
|
|
180
|
+
const github = this.options.github;
|
|
181
|
+
if (!prepared.continuation || !details?.description || !github.updatePullRequestDescription)
|
|
182
|
+
return undefined;
|
|
183
|
+
try {
|
|
184
|
+
return await github.updatePullRequestDescription(this.descriptionInput({ ...prepared, continuation: prepared.continuation }, { ...details, description: details.description }, changedPaths, headSha));
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
logger.warn({ err: error, runId: prepared.runId }, "pull request description update failed");
|
|
188
|
+
return { kind: "skipped", reason: "error" };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
descriptionInput(prepared, details, changedPaths, headSha) {
|
|
192
|
+
return {
|
|
193
|
+
rootRunId: prepared.continuation.rootRunId,
|
|
194
|
+
runId: prepared.runId,
|
|
195
|
+
repository: prepared.repository,
|
|
196
|
+
baseRef: prepared.baseRef,
|
|
197
|
+
headRef: prepared.headRef,
|
|
198
|
+
...(headSha && /^[0-9a-f]{40}$/.test(headSha) ? { headSha } : {}),
|
|
199
|
+
summary: details.summary,
|
|
200
|
+
tests: details.tests,
|
|
201
|
+
tag: details.tag,
|
|
202
|
+
packages: details.packages,
|
|
203
|
+
packageRefusals: details.packageRefusals,
|
|
204
|
+
...(details.packageAudit ? { packageAudit: details.packageAudit } : {}),
|
|
205
|
+
...(details.restoredDependencies?.length ? { restoredDependencies: details.restoredDependencies } : {}),
|
|
206
|
+
changedLockfiles: changedPaths.filter(isLockfilePath),
|
|
207
|
+
...(details.issue ? { issue: details.issue } : {}),
|
|
208
|
+
...(details.issueNumber !== undefined ? { issueNumber: details.issueNumber } : {}),
|
|
209
|
+
baseline: details.description.baseline,
|
|
210
|
+
};
|
|
107
211
|
}
|
|
108
212
|
/**
|
|
109
213
|
* Best-effort "wardby is working on this PR" signal (see VcsProvider) --
|
|
@@ -163,21 +267,27 @@ export class GitHubRemote {
|
|
|
163
267
|
const summarySuffix = details?.summary ? `\n\n${details.summary}` : "";
|
|
164
268
|
const budgetSuffix = details?.budgetSentence ? ` ${details.budgetSentence}` : "";
|
|
165
269
|
const body = outcome === "succeeded"
|
|
166
|
-
? `✅ ${label} finished.${summarySuffix}`
|
|
167
|
-
: outcome === "budget_exhausted"
|
|
168
|
-
?
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
270
|
+
? `✅ ${label} finished.${details?.mergeSentence ? ` ${details.mergeSentence}` : ""}${details?.overrunSentence ? ` ${details.overrunSentence}` : ""}${summarySuffix}`
|
|
271
|
+
: outcome === "budget_exhausted" && details?.changesPushed
|
|
272
|
+
? `⚠️ ${label} ran out of budget before finishing.${budgetSuffix} ${budgetStoppedChangesSentence(details.changesPushed.pullRequestNumber
|
|
273
|
+
? `#${details.changesPushed.pullRequestNumber}`
|
|
274
|
+
: "this pull request", false)}${details?.mergeSentence ? ` ${details.mergeSentence}` : ""}${summarySuffix}`
|
|
275
|
+
: outcome === "budget_exhausted"
|
|
276
|
+
? `❌ ${label} ran out of budget.${budgetSuffix}${summarySuffix}`
|
|
277
|
+
: details?.serviceSentence
|
|
278
|
+
? `❌ ${label} could not start: ${details.serviceSentence}${summarySuffix}`
|
|
279
|
+
: details?.providerSentence
|
|
280
|
+
? `❌ ${label} could not run: ${details.providerSentence}${summarySuffix}`
|
|
281
|
+
: details?.protectedPathSentence
|
|
282
|
+
? `❌ ${label} could not open its changes: ${details.protectedPathSentence}${summarySuffix}`
|
|
283
|
+
: details?.conflictMarkersSentence
|
|
284
|
+
? `❌ ${label} could not push its changes: ${details.conflictMarkersSentence}${summarySuffix}`
|
|
285
|
+
: `❌ ${label} failed.${summarySuffix}`;
|
|
176
286
|
await Promise.allSettled([
|
|
177
287
|
this.options.github.updateContinuationStatusComment({ ...identity, body }),
|
|
178
288
|
this.options.github.completeContinuationCheckRun({
|
|
179
289
|
repository: workspace.repository,
|
|
180
|
-
headSha: workspace.baseCommit,
|
|
290
|
+
...(workspace.baseCommit ? { headSha: workspace.baseCommit } : { headRef: workspace.headRef }),
|
|
181
291
|
runId: workspace.runId,
|
|
182
292
|
outcome: outcome === "succeeded" ? "succeeded" : "failed",
|
|
183
293
|
}),
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { type PackageAuditReport } from "../../coding/registry/audit-mode.js";
|
|
2
|
+
import { RELATED_SECTION_END, RELATED_SECTION_START } from "./pr-description.js";
|
|
3
|
+
export { RELATED_SECTION_END, RELATED_SECTION_START };
|
|
1
4
|
export interface GitHubAppConfig {
|
|
2
5
|
appId: string;
|
|
3
6
|
privateKey: string;
|
|
@@ -13,6 +16,9 @@ export interface PackageReport {
|
|
|
13
16
|
ecosystem: string;
|
|
14
17
|
name: string;
|
|
15
18
|
version: string;
|
|
19
|
+
/** Blocking advisories the run's packagePolicy.acceptedAdvisories waived
|
|
20
|
+
* to serve it; listed under "Accepted advisories". */
|
|
21
|
+
acceptedAdvisories?: readonly string[];
|
|
16
22
|
}
|
|
17
23
|
/** One package the registry proxy refused during the run (RegistryFetch outcome "refused"). */
|
|
18
24
|
export interface PackageRefusal {
|
|
@@ -32,6 +38,15 @@ export interface PullRequestInput {
|
|
|
32
38
|
/** Deduplicated by the caller isn't required — pullRequestBody dedupes itself (ecosystem+name+version / +reason). */
|
|
33
39
|
packages?: readonly PackageReport[];
|
|
34
40
|
packageRefusals?: readonly PackageRefusal[];
|
|
41
|
+
/**
|
|
42
|
+
* Package audit mode (control-plane records, never model output): rendered
|
|
43
|
+
* as a [!CAUTION] banner with the packages installed outside the allowlist
|
|
44
|
+
* (and, in full mode, versions served past advisories). Kept when the
|
|
45
|
+
* packages section is dropped for size.
|
|
46
|
+
*/
|
|
47
|
+
packageAudit?: PackageAuditReport;
|
|
48
|
+
/** Folders whose node_modules the dependency cache restored from a snapshot ("." for the root); control-plane data. */
|
|
49
|
+
restoredDependencies?: readonly string[];
|
|
35
50
|
/** Lock files the run changed (repository paths); with refusals, the PR body warns they may be incomplete. */
|
|
36
51
|
changedLockfiles?: readonly string[];
|
|
37
52
|
/**
|
|
@@ -55,16 +70,91 @@ export interface PullRequestInput {
|
|
|
55
70
|
url?: string;
|
|
56
71
|
trackerName?: string;
|
|
57
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* The issue in this pull request's own repository the run came from (a
|
|
75
|
+
* mention on a GitHub issue; control-plane data, never model output): the
|
|
76
|
+
* body's first visible line is `From issue #N`, the GitHub issue's form of
|
|
77
|
+
* the issue line above. It links the issue but never closes it: whether
|
|
78
|
+
* merging closes it is the agent's choice (`Resolves #N` or `Refs #N` in
|
|
79
|
+
* its summary). Used only when `issue` renders no line.
|
|
80
|
+
*/
|
|
81
|
+
issueNumber?: number;
|
|
58
82
|
/**
|
|
59
83
|
* The request's other pull requests (control-plane rows only), rendered as
|
|
60
84
|
* the marked "Related pull requests" section. Rendering failures omit it.
|
|
61
85
|
*/
|
|
62
86
|
related?: RelatedPullRequestsInput;
|
|
87
|
+
/**
|
|
88
|
+
* The run that last wrote this description (a fix round), rendered as the
|
|
89
|
+
* hidden `<!-- wardby-latest:<runId> -->` last line. The root run marker
|
|
90
|
+
* stays first. Dropped when it isn't a safe run id.
|
|
91
|
+
*/
|
|
92
|
+
latestRunId?: string;
|
|
93
|
+
/**
|
|
94
|
+
* What the packages list covers: this run (the default), or every run on
|
|
95
|
+
* the pull request (a later run's description update, whose `packages` are
|
|
96
|
+
* cumulative). Only the section title differs.
|
|
97
|
+
*/
|
|
98
|
+
packagesScope?: "run" | "pull_request";
|
|
63
99
|
}
|
|
64
100
|
export interface PullRequestResult {
|
|
65
101
|
number: number;
|
|
66
102
|
url: string;
|
|
103
|
+
/**
|
|
104
|
+
* Hash (descriptionSha256) of the body in GitHub's create response. Set only
|
|
105
|
+
* when this call created the pull request; absent when it found one.
|
|
106
|
+
*/
|
|
107
|
+
descriptionSha256?: string;
|
|
108
|
+
}
|
|
109
|
+
/** What wardby last wrote into a pull request description (control-plane records). */
|
|
110
|
+
export interface DescriptionBaseline {
|
|
111
|
+
/** Null = legacy pull request (no recorded write). */
|
|
112
|
+
recordedSha256: string | null;
|
|
113
|
+
/**
|
|
114
|
+
* Legacy pull requests only: the hash of the body wardby would have written
|
|
115
|
+
* for the root run, rebuilt from stored records. A current body with this
|
|
116
|
+
* hash is unedited. Absent when the records can't rebuild it (then the
|
|
117
|
+
* description counts as edited).
|
|
118
|
+
*/
|
|
119
|
+
legacySha256?: string;
|
|
120
|
+
/** Stored summary of the run whose text the description carries (root run for legacy). */
|
|
121
|
+
previousAgentText?: string;
|
|
122
|
+
/** That run's id. */
|
|
123
|
+
agentTextRunId: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* A fix round's description update. `runId` is this (latest) run; the pull
|
|
127
|
+
* request is re-found by `rootRunId`'s marker. `related` is ignored: the
|
|
128
|
+
* current body's Related block is kept verbatim.
|
|
129
|
+
*/
|
|
130
|
+
export interface UpdateDescriptionInput extends Omit<PullRequestInput, "runId" | "acceptReadyForReview"> {
|
|
131
|
+
rootRunId: string;
|
|
132
|
+
runId: string;
|
|
133
|
+
baseline: DescriptionBaseline;
|
|
134
|
+
/**
|
|
135
|
+
* The head commit this description describes (the run's pushed commit, or
|
|
136
|
+
* the unchanged head of a no-change round); stamped on the fallback
|
|
137
|
+
* comment so a reviewer only trusts a proposal for the head it reviews.
|
|
138
|
+
*/
|
|
139
|
+
headSha?: string;
|
|
67
140
|
}
|
|
141
|
+
/** `agentTextRunId` is the run whose summary the description now carries. */
|
|
142
|
+
export type DescriptionUpdateResult = {
|
|
143
|
+
kind: "replaced" | "unchanged";
|
|
144
|
+
sha256: string;
|
|
145
|
+
agentTextRunId: string;
|
|
146
|
+
} | {
|
|
147
|
+
kind: "refreshed";
|
|
148
|
+
reason: "empty" | "too_short" | "missing_closing_keyword";
|
|
149
|
+
sha256: string;
|
|
150
|
+
agentTextRunId: string;
|
|
151
|
+
} | {
|
|
152
|
+
kind: "edited_by_hand";
|
|
153
|
+
commentPosted: boolean;
|
|
154
|
+
} | {
|
|
155
|
+
kind: "skipped";
|
|
156
|
+
reason: "not_open" | "too_long" | "error";
|
|
157
|
+
};
|
|
68
158
|
/** See VcsProvider.notifyContinuationStarted/Finished (types.ts) — these back that GitHub-specific mechanism. */
|
|
69
159
|
export interface ContinuationStatusCommentInput {
|
|
70
160
|
/** This continuation round's own run id — the comment's identity/marker key. */
|
|
@@ -82,8 +172,18 @@ export interface ContinuationCheckRunInput {
|
|
|
82
172
|
/** Stored as the check run's external_id — the re-lookup key, so no numeric id needs to be cached anywhere. */
|
|
83
173
|
runId: string;
|
|
84
174
|
}
|
|
85
|
-
export interface ContinuationCheckRunCompleteInput
|
|
175
|
+
export interface ContinuationCheckRunCompleteInput {
|
|
176
|
+
repository: string;
|
|
177
|
+
runId: string;
|
|
86
178
|
outcome: "succeeded" | "failed";
|
|
179
|
+
/** The commit the check run was created on. */
|
|
180
|
+
headSha?: string;
|
|
181
|
+
/**
|
|
182
|
+
* Used when headSha is unknown (the run's workspace is gone): the check run is
|
|
183
|
+
* looked up on the pull request's head branch, which a run that pushed nothing
|
|
184
|
+
* left at that commit.
|
|
185
|
+
*/
|
|
186
|
+
headRef?: string;
|
|
87
187
|
}
|
|
88
188
|
/** One file at one ref, read through the API without a clone. */
|
|
89
189
|
export interface RepositoryFileInput {
|
|
@@ -108,6 +208,46 @@ export interface GitHubRepositoryAccess {
|
|
|
108
208
|
baseRef: string;
|
|
109
209
|
headRef: string;
|
|
110
210
|
}): Promise<PullRequestResult | null>;
|
|
211
|
+
/**
|
|
212
|
+
* Whether the root run's marked open pull request is still a draft: true or
|
|
213
|
+
* false, or null when it is not open (merged, closed, or gone). Optional:
|
|
214
|
+
* without it a caller treats the draft state as unknown.
|
|
215
|
+
*/
|
|
216
|
+
openPullRequestDraft?(input: {
|
|
217
|
+
runId: string;
|
|
218
|
+
repository: string;
|
|
219
|
+
baseRef: string;
|
|
220
|
+
headRef: string;
|
|
221
|
+
}): Promise<boolean | null>;
|
|
222
|
+
/**
|
|
223
|
+
* The current base branch of the root run's marked open pull request (it
|
|
224
|
+
* changes when someone retargets the PR), or null when the PR is not open or
|
|
225
|
+
* its head or base is in another repository (a fork). Optional: without it,
|
|
226
|
+
* continuations are not brought up to date with their target branch.
|
|
227
|
+
*/
|
|
228
|
+
openPullRequestBase?(input: {
|
|
229
|
+
runId: string;
|
|
230
|
+
repository: string;
|
|
231
|
+
baseRef: string;
|
|
232
|
+
headRef: string;
|
|
233
|
+
}): Promise<{
|
|
234
|
+
number: number;
|
|
235
|
+
baseRef: string;
|
|
236
|
+
} | null>;
|
|
237
|
+
/**
|
|
238
|
+
* Rewrites the root run's open pull request description for a fix round,
|
|
239
|
+
* or, when a person edited it since wardby last wrote it, upserts a comment
|
|
240
|
+
* carrying the proposed description instead. Never throws. Optional:
|
|
241
|
+
* without it, descriptions are not updated after the first run.
|
|
242
|
+
*/
|
|
243
|
+
updatePullRequestDescription?(input: UpdateDescriptionInput): Promise<DescriptionUpdateResult>;
|
|
244
|
+
/**
|
|
245
|
+
* Before a fix round's push: when wardby can't write the description
|
|
246
|
+
* directly, writes (or updates) the fallback comment stamped with the head
|
|
247
|
+
* about to be pushed, so it already exists when the push starts a review.
|
|
248
|
+
* True when it wrote one. Never throws. Optional.
|
|
249
|
+
*/
|
|
250
|
+
proposeDescriptionComment?(input: UpdateDescriptionInput): Promise<boolean>;
|
|
111
251
|
/** Creates the status comment if none exists yet for this run, else updates it. */
|
|
112
252
|
upsertContinuationStatusComment(input: ContinuationStatusCommentInput): Promise<void>;
|
|
113
253
|
/** Updates the status comment if one already exists for this run; a no-op otherwise (never creates). */
|
|
@@ -132,9 +272,9 @@ export declare function isSafeGitHubInstallationToken(value: unknown): value is
|
|
|
132
272
|
* executor validates with the shared one.
|
|
133
273
|
*/
|
|
134
274
|
export declare const PR_ISSUE_KEY: RegExp;
|
|
275
|
+
/** Same shape as GITHUB_ISSUE_KEY (issue-tracker/types.ts), duplicated likewise. Only the Related section shows one. */
|
|
276
|
+
export declare const PR_GITHUB_ISSUE_KEY: RegExp;
|
|
135
277
|
export declare function pullRequestTitle(input: PullRequestInput): string;
|
|
136
|
-
export declare const RELATED_SECTION_START = "<!-- wardby-related:start -->";
|
|
137
|
-
export declare const RELATED_SECTION_END = "<!-- wardby-related:end -->";
|
|
138
278
|
/** At most this many pull requests are listed; the rest are counted. */
|
|
139
279
|
export declare const MAX_RELATED_PULL_REQUESTS = 20;
|
|
140
280
|
/** GitHub rejects a pull request body longer than this. */
|
|
@@ -204,8 +344,15 @@ export declare function isLockfilePath(path: string): boolean;
|
|
|
204
344
|
*/
|
|
205
345
|
/** Rendered verbatim in refusalWarning's first line, and used to locate it in tests. */
|
|
206
346
|
export declare const DEPENDENCY_INSTALL_INCOMPLETE = "Dependency install incomplete.";
|
|
207
|
-
/**
|
|
208
|
-
|
|
347
|
+
/**
|
|
348
|
+
* The pull request body, within GitHub's MAX_PULL_REQUEST_BODY_CHARS. When it
|
|
349
|
+
* would be longer, the informational Packages section goes first; if that is
|
|
350
|
+
* not enough, the agent's summary is truncated to fit (fitSummary keeps its
|
|
351
|
+
* closing-keyword line). The other sections are bounded and stay whole.
|
|
352
|
+
*/
|
|
353
|
+
export declare function pullRequestBody(input: PullRequestInput, options?: {
|
|
354
|
+
omitPackages?: boolean;
|
|
355
|
+
}): string;
|
|
209
356
|
export declare class GitHubAppClient implements GitHubRepositoryAccess {
|
|
210
357
|
private readonly config;
|
|
211
358
|
private readonly fetchImpl;
|
|
@@ -276,6 +423,59 @@ export declare class GitHubAppClient implements GitHubRepositoryAccess {
|
|
|
276
423
|
baseRef: string;
|
|
277
424
|
headRef: string;
|
|
278
425
|
}): Promise<PullRequestResult | null>;
|
|
426
|
+
/** See GitHubRepositoryAccess.openPullRequestDraft: GitHub's own `draft` flag on the marked open PR. */
|
|
427
|
+
openPullRequestDraft(input: {
|
|
428
|
+
runId: string;
|
|
429
|
+
repository: string;
|
|
430
|
+
baseRef: string;
|
|
431
|
+
headRef: string;
|
|
432
|
+
}): Promise<boolean | null>;
|
|
433
|
+
/** See GitHubRepositoryAccess.openPullRequestBase: the marked open PR's current base, same repository only. */
|
|
434
|
+
openPullRequestBase(input: {
|
|
435
|
+
runId: string;
|
|
436
|
+
repository: string;
|
|
437
|
+
baseRef: string;
|
|
438
|
+
headRef: string;
|
|
439
|
+
}): Promise<{
|
|
440
|
+
number: number;
|
|
441
|
+
baseRef: string;
|
|
442
|
+
} | null>;
|
|
443
|
+
/**
|
|
444
|
+
* A fix round's description update (see GitHubRepositoryAccess). One
|
|
445
|
+
* repository token; every failure becomes `skipped:error`.
|
|
446
|
+
*/
|
|
447
|
+
updatePullRequestDescription(input: UpdateDescriptionInput): Promise<DescriptionUpdateResult>;
|
|
448
|
+
/** See GitHubRepositoryAccess.proposeDescriptionComment. */
|
|
449
|
+
proposeDescriptionComment(input: UpdateDescriptionInput): Promise<boolean>;
|
|
450
|
+
/** The validated repository and refs; throws unless this is wardby's own pull request branch. */
|
|
451
|
+
private descriptionTarget;
|
|
452
|
+
/**
|
|
453
|
+
* The open pull request, the description this run proposes, and whether
|
|
454
|
+
* wardby may write it directly: it is unedited (recorded or rebuilt hash),
|
|
455
|
+
* or a person copied wardby's latest proposal in (taken back). Null when
|
|
456
|
+
* the pull request isn't open. `comments` is set when it was read.
|
|
457
|
+
*/
|
|
458
|
+
private descriptionState;
|
|
459
|
+
/**
|
|
460
|
+
* The rebuilt description: the generated sections from this run with
|
|
461
|
+
* `summary` as the agent text, the latest-run marker last, and the current
|
|
462
|
+
* body's Related block re-inserted verbatim. `proposed` drops the Packages
|
|
463
|
+
* section when `full` exceeds GitHub's limit, and is undefined when it still
|
|
464
|
+
* would.
|
|
465
|
+
*/
|
|
466
|
+
private proposedDescription;
|
|
467
|
+
/**
|
|
468
|
+
* Creates the pull request's one description comment, or edits the newest
|
|
469
|
+
* one this App wrote (unchanged text is not re-sent); older duplicates are
|
|
470
|
+
* rewritten to point at it. A comment anyone else wrote is never edited.
|
|
471
|
+
*/
|
|
472
|
+
private upsertDescriptionComment;
|
|
473
|
+
/** Once a run applied its description, a pending proposal in the description comment is marked applied. */
|
|
474
|
+
private markDescriptionCommentApplied;
|
|
475
|
+
/** Rewrites duplicate description comments to a pointer at the one in use. */
|
|
476
|
+
private supersedeDescriptionComments;
|
|
477
|
+
/** The description comments this App wrote (see findDescriptionComments; the reviewer reads them the same way). */
|
|
478
|
+
private findDescriptionComments;
|
|
279
479
|
private appJwt;
|
|
280
480
|
private mintRepositoryToken;
|
|
281
481
|
/**
|
|
@@ -289,8 +489,17 @@ export declare class GitHubAppClient implements GitHubRepositoryAccess {
|
|
|
289
489
|
private mintScopedToken;
|
|
290
490
|
private revokeToken;
|
|
291
491
|
private findPullRequest;
|
|
492
|
+
/**
|
|
493
|
+
* findPullRequest, plus the matched pull request's raw body and payload. Not
|
|
494
|
+
* filtered by base: a person may retarget the PR, and the head branch plus the
|
|
495
|
+
* run marker already identify it. When several open PRs match, the one on
|
|
496
|
+
* `baseRef` wins.
|
|
497
|
+
*/
|
|
498
|
+
private findMarkedPullRequest;
|
|
292
499
|
private parsePullRequest;
|
|
293
500
|
private findStatusComment;
|
|
501
|
+
/** The first comment on the pull request (first page) whose body `matches`. */
|
|
502
|
+
private findMarkedComment;
|
|
294
503
|
private findCheckRun;
|
|
295
504
|
/** Public for the code-review host, which issues its own REST calls with tokens minted here. */
|
|
296
505
|
requestJson(path: string, bearer: string, init?: RequestInit, expectedStatuses?: number[]): Promise<Response>;
|
|
@@ -300,4 +509,3 @@ export declare class GitHubAppClient implements GitHubRepositoryAccess {
|
|
|
300
509
|
*/
|
|
301
510
|
graphql(bearer: string, query: string, variables: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
302
511
|
}
|
|
303
|
-
export {};
|