@wardby/cli 0.5.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +33 -0
- package/README.md +25 -14
- package/deploy/local/docker-compose.quickstart-coding.yml +13 -0
- package/dist/claude-coding-worker/context.d.ts +22 -0
- package/dist/claude-coding-worker/context.js +92 -0
- package/dist/claude-coding-worker/driver.d.ts +27 -3
- package/dist/claude-coding-worker/driver.js +161 -20
- package/dist/claude-coding-worker/main.js +34 -6
- package/dist/claude-coding-worker/sdk.js +25 -5
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +6 -2
- package/dist/cli-native-mode.d.ts +9 -0
- package/dist/cli-native-mode.js +20 -0
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +161 -11
- package/dist/coding/claude-context.d.ts +45 -0
- package/dist/coding/claude-context.js +434 -0
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +50 -118
- package/dist/coding/profile.js +51 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +292 -270
- package/dist/coding/protocol.js +322 -15
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +12 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +51 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +16 -3
- package/dist/coding-worker/artifact.js +5 -3
- package/dist/coding-worker/debug-trace.d.ts +6 -5
- package/dist/coding-worker/debug-trace.js +13 -18
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +118 -38
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/sdk.d.ts +6 -0
- package/dist/coding-worker/sdk.js +1 -0
- package/dist/coding-worker/skills.d.ts +23 -0
- package/dist/coding-worker/skills.js +117 -0
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +13 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/github-allowed-accounts.d.ts +15 -0
- package/dist/config/github-allowed-accounts.js +36 -0
- package/dist/config/low-power.d.ts +12 -0
- package/dist/config/low-power.js +18 -0
- package/dist/config/mobile.d.ts +12 -0
- package/dist/config/mobile.js +18 -0
- package/dist/config/providers.d.ts +65 -3
- package/dist/config/providers.js +147 -11
- package/dist/config/test-simulators.d.ts +82 -0
- package/dist/config/test-simulators.js +305 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/db.d.ts +16 -6
- package/dist/core/db.js +12 -10
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/dispatch.d.ts +53 -0
- package/dist/core/dispatch.js +167 -57
- package/dist/core/engine-native.js +10 -6
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +168 -0
- package/dist/core/grants.d.ts +19 -6
- package/dist/core/grants.js +55 -6
- package/dist/core/host-events.d.ts +67 -5
- package/dist/core/host-events.js +571 -37
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +298 -20
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +151 -20
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +16 -11
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +68 -29
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +130 -0
- package/dist/core/merge-order-check.js +343 -0
- package/dist/core/notification-dispatcher.d.ts +70 -0
- package/dist/core/notification-dispatcher.js +368 -0
- package/dist/core/notification-templates.d.ts +19 -0
- package/dist/core/notification-templates.js +139 -0
- package/dist/core/notifications.d.ts +10 -0
- package/dist/core/notifications.js +38 -0
- package/dist/core/pg-auth.d.ts +22 -0
- package/dist/core/pg-auth.js +152 -0
- package/dist/core/power-composition.d.ts +16 -0
- package/dist/core/power-composition.js +37 -0
- package/dist/core/power-idle.d.ts +14 -0
- package/dist/core/power-idle.js +30 -0
- package/dist/core/power.d.ts +71 -0
- package/dist/core/power.js +202 -0
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +8 -5
- package/dist/core/reconciler.js +37 -6
- package/dist/core/related-pull-requests.d.ts +59 -7
- package/dist/core/related-pull-requests.js +140 -25
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/repo-access.d.ts +15 -0
- package/dist/core/repo-access.js +66 -0
- package/dist/core/review-fix.d.ts +38 -1
- package/dist/core/review-fix.js +209 -7
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +23 -0
- package/dist/core/review-host-tools.js +156 -14
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +384 -5
- package/dist/core/runner.js +1244 -372
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +39 -0
- package/dist/core/secret-broker-config.js +112 -0
- package/dist/core/secret-guard.d.ts +46 -0
- package/dist/core/secret-guard.js +104 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/secrets.d.ts +39 -4
- package/dist/core/secrets.js +148 -40
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/workflow-event-recorder.d.ts +14 -0
- package/dist/core/workflow-event-recorder.js +120 -0
- package/dist/core/workflow-events.d.ts +94 -0
- package/dist/core/workflow-events.js +48 -0
- package/dist/core/workflow-run-events.d.ts +18 -0
- package/dist/core/workflow-run-events.js +75 -0
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +92 -3
- package/dist/generated/prisma/client.d.ts +92 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +364 -54
- package/dist/generated/prisma/enums.d.ts +37 -0
- package/dist/generated/prisma/enums.js +31 -0
- package/dist/generated/prisma/internal/class.d.ts +132 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +1332 -142
- package/dist/generated/prisma/internal/prismaNamespace.js +227 -5
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +234 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +227 -5
- package/dist/generated/prisma/models/Agent.d.ts +464 -7
- package/dist/generated/prisma/models/AgentRepository.d.ts +42 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +301 -1
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +114 -1
- package/dist/generated/prisma/models/CodingRun.d.ts +1841 -1
- package/dist/generated/prisma/models/DeferredReview.d.ts +78 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +1713 -0
- package/dist/generated/prisma/models/NativeGatewayCall.js +1 -0
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +1551 -0
- package/dist/generated/prisma/models/NativeGatewaySession.js +1 -0
- package/dist/generated/prisma/models/NativeWarmWorker.d.ts +1296 -0
- package/dist/generated/prisma/models/NativeWarmWorker.js +1 -0
- package/dist/generated/prisma/models/NotificationChannel.d.ts +1543 -0
- package/dist/generated/prisma/models/NotificationChannel.js +1 -0
- package/dist/generated/prisma/models/NotificationDelivery.d.ts +1502 -0
- package/dist/generated/prisma/models/NotificationDelivery.js +1 -0
- package/dist/generated/prisma/models/NotificationThread.d.ts +1090 -0
- package/dist/generated/prisma/models/NotificationThread.js +1 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/Run.d.ts +1619 -58
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunHostCheck.d.ts +36 -1
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +37 -1
- package/dist/generated/prisma/models/SecretBrokerChange.d.ts +1101 -0
- package/dist/generated/prisma/models/SecretBrokerChange.js +1 -0
- package/dist/generated/prisma/models/WorkflowEvent.d.ts +1422 -0
- package/dist/generated/prisma/models/WorkflowEvent.js +1 -0
- package/dist/generated/prisma/models.d.ts +12 -0
- package/dist/help/build.js +4 -2
- package/dist/help/catalog.d.ts +1 -1
- package/dist/help/catalog.js +31 -6
- package/dist/help-index.json +2584 -146
- package/dist/import/create.js +49 -3
- package/dist/import/neutral-schema.d.ts +50 -277
- package/dist/import/neutral-schema.js +7 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +11 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/repo-authorization.js +14 -0
- package/dist/mcp/auth/resource-server.d.ts +2 -1
- package/dist/mcp/auth/resource-server.js +7 -2
- package/dist/mcp/auth/self-hosted/browser.d.ts +1 -1
- package/dist/mcp/auth/self-hosted/browser.js +19 -6
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/context.d.ts +6 -0
- package/dist/mcp/host-events/github-ingress.d.ts +25 -1
- package/dist/mcp/host-events/github-ingress.js +70 -1
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.js +117 -20
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +277 -24
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +9 -3
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.d.ts +2 -0
- package/dist/mcp/tools/notification-channels.js +293 -0
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/power.d.ts +2 -0
- package/dist/mcp/tools/power.js +77 -0
- package/dist/mcp/tools/repositories.js +18 -5
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.d.ts +0 -6
- package/dist/mcp/tools/runs.js +41 -14
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-broker-compat.d.ts +12 -0
- package/dist/mcp/tools/secret-broker-compat.js +23 -0
- package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -2
- package/dist/mcp/tools/secret-elicitation-form.js +205 -10
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -54
- package/dist/mcp/tools/secret-elicitation.d.ts +38 -3
- package/dist/mcp/tools/secret-elicitation.js +110 -12
- package/dist/mcp/tools/secrets.js +186 -9
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +2 -2
- package/dist/mcp/tools/tools.js +47 -11
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/native-worker/composition.d.ts +23 -0
- package/dist/native-worker/composition.js +77 -0
- package/dist/native-worker/docker-isolation.d.ts +65 -0
- package/dist/native-worker/docker-isolation.js +183 -0
- package/dist/native-worker/docker-launcher.d.ts +110 -0
- package/dist/native-worker/docker-launcher.js +297 -0
- package/dist/native-worker/gateway-server.d.ts +77 -0
- package/dist/native-worker/gateway-server.js +412 -0
- package/dist/native-worker/gateway.d.ts +70 -0
- package/dist/native-worker/gateway.js +263 -0
- package/dist/native-worker/http-server.d.ts +24 -0
- package/dist/native-worker/http-server.js +113 -0
- package/dist/native-worker/http-transport.d.ts +17 -0
- package/dist/native-worker/http-transport.js +88 -0
- package/dist/native-worker/kubernetes-isolation.d.ts +90 -0
- package/dist/native-worker/kubernetes-isolation.js +218 -0
- package/dist/native-worker/kubernetes-launcher.d.ts +106 -0
- package/dist/native-worker/kubernetes-launcher.js +375 -0
- package/dist/native-worker/launch.d.ts +62 -0
- package/dist/native-worker/launch.js +49 -0
- package/dist/native-worker/ledger.d.ts +125 -0
- package/dist/native-worker/ledger.js +245 -0
- package/dist/native-worker/loopback.d.ts +12 -0
- package/dist/native-worker/loopback.js +44 -0
- package/dist/native-worker/main.d.ts +8 -0
- package/dist/native-worker/main.js +85 -0
- package/dist/native-worker/protocol.d.ts +296 -0
- package/dist/native-worker/protocol.js +246 -0
- package/dist/native-worker/sandbox-executor.d.ts +83 -0
- package/dist/native-worker/sandbox-executor.js +284 -0
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +29 -0
- package/dist/native-worker/stdio.js +189 -0
- package/dist/native-worker/warm-delivery.d.ts +16 -0
- package/dist/native-worker/warm-delivery.js +33 -0
- package/dist/native-worker/warm-pool-ledger.d.ts +39 -0
- package/dist/native-worker/warm-pool-ledger.js +73 -0
- package/dist/native-worker/warm-pool.d.ts +107 -0
- package/dist/native-worker/warm-pool.js +283 -0
- package/dist/native-worker/worker.d.ts +17 -0
- package/dist/native-worker/worker.js +141 -0
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/authorization-server.d.ts +3 -0
- package/dist/providers/auth/index.js +2 -0
- package/dist/providers/auth/self-hosted.d.ts +14 -2
- package/dist/providers/auth/self-hosted.js +54 -4
- package/dist/providers/chat/fake.d.ts +46 -0
- package/dist/providers/chat/fake.js +39 -0
- package/dist/providers/chat/index.d.ts +4 -0
- package/dist/providers/chat/index.js +8 -0
- package/dist/providers/chat/slack.d.ts +37 -0
- package/dist/providers/chat/slack.js +105 -0
- package/dist/providers/chat/types.d.ts +42 -0
- package/dist/providers/chat/types.js +19 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/memory-ledger.js +84 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +179 -67
- package/dist/providers/coding-proxy/proxy.d.ts +14 -1
- package/dist/providers/coding-proxy/proxy.js +166 -14
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +4 -0
- package/dist/providers/coding-proxy/runtime.js +78 -16
- package/dist/providers/coding-proxy/server.d.ts +6 -1
- package/dist/providers/coding-proxy/server.js +45 -1
- package/dist/providers/coding-proxy/types.d.ts +65 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +36 -2
- package/dist/providers/engine/types.js +39 -0
- package/dist/providers/executor/composition.d.ts +31 -1
- package/dist/providers/executor/composition.js +81 -8
- package/dist/providers/executor/container.d.ts +385 -9
- package/dist/providers/executor/container.js +1234 -99
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +91 -0
- package/dist/providers/executor/dbos.js +319 -26
- package/dist/providers/executor/deferred.d.ts +44 -0
- package/dist/providers/executor/deferred.js +100 -0
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +39 -10
- package/dist/providers/executor/routing.js +77 -32
- package/dist/providers/executor/types.d.ts +25 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +8 -0
- package/dist/providers/jobs/docker-isolation.js +17 -0
- package/dist/providers/jobs/docker.d.ts +1 -0
- package/dist/providers/jobs/docker.js +29 -4
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +23 -2
- package/dist/providers/jobs/fake-kubernetes-api.js +45 -1
- package/dist/providers/jobs/kubernetes-api.d.ts +25 -1
- package/dist/providers/jobs/kubernetes-api.js +17 -0
- package/dist/providers/jobs/kubernetes-client.d.ts +10 -1
- package/dist/providers/jobs/kubernetes-client.js +61 -3
- package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +6 -1
- package/dist/providers/jobs/kubernetes-dry-run-fixture.js +6 -3
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +23 -1
- package/dist/providers/jobs/kubernetes-platform.d.ts +4 -1
- package/dist/providers/jobs/kubernetes-platform.js +38 -1
- package/dist/providers/jobs/kubernetes-preflight.d.ts +2 -1
- package/dist/providers/jobs/kubernetes-preflight.js +4 -2
- package/dist/providers/jobs/kubernetes.d.ts +42 -2
- package/dist/providers/jobs/kubernetes.js +178 -19
- package/dist/providers/jobs/metadata-probes.d.ts +11 -0
- package/dist/providers/jobs/metadata-probes.js +13 -0
- package/dist/providers/jobs/types.d.ts +42 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +39 -2
- package/dist/providers/review-host/github.js +274 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +157 -2
- package/dist/providers/review-host/types.js +8 -0
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +33 -2
- package/dist/providers/vcs/git.js +324 -22
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +246 -12
- package/dist/providers/vcs/github.js +521 -61
- package/dist/providers/vcs/index.js +8 -1
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +33 -1
- package/dist/providers/vcs/routing.d.ts +4 -2
- package/dist/providers/vcs/routing.js +6 -0
- package/dist/providers/vcs/types.d.ts +80 -3
- package/dist/quickstart/coding-seed.d.ts +21 -3
- package/dist/quickstart/coding-seed.js +283 -3
- package/dist/quickstart/images.d.ts +2 -0
- package/dist/quickstart/images.js +7 -1
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/brokered-fetch.d.ts +23 -0
- package/dist/sandbox/brokered-fetch.js +37 -0
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +35 -0
- package/dist/sandbox/host-functions.js +150 -91
- package/dist/sandbox/prelude.js +7 -1
- package/dist/sandbox/run-in-sandbox.d.ts +19 -0
- package/dist/sandbox/run-in-sandbox.js +28 -10
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +3 -1
- package/dist/sandbox/secret-broker-sigv4.d.ts +2 -0
- package/dist/sandbox/secret-broker-sigv4.js +49 -0
- package/dist/sandbox/secret-broker.d.ts +34 -0
- package/dist/sandbox/secret-broker.js +161 -0
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/user-tool.d.ts +14 -0
- package/dist/sandbox/user-tool.js +32 -0
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +25 -0
- package/dist/viewer/api-schema.d.ts +372 -2454
- package/dist/viewer/api-schema.js +29 -0
- package/dist/viewer/build-schemas.js +10 -3
- package/dist/viewer/event-bus.d.ts +6 -0
- package/dist/viewer/event-bus.js +16 -7
- package/dist/viewer/graph.d.ts +5 -2
- package/dist/viewer/graph.js +7 -2
- package/dist/viewer/http.d.ts +0 -1
- package/dist/viewer/http.js +2 -2
- package/dist/viewer/infra.js +25 -2
- package/dist/viewer/limits.d.ts +4 -0
- package/dist/viewer/limits.js +4 -0
- package/dist/viewer/openapi.d.ts +15 -0
- package/dist/viewer/openapi.js +170 -0
- package/dist/wardby-bin.js +10 -0
- package/docs/README.md +7 -0
- package/docs/agent-recipes.md +114 -27
- package/docs/architecture-runtime.md +16 -1
- package/docs/code-review-agents.md +689 -45
- package/docs/coding-agent-setup.md +602 -12
- package/docs/coding-packages.md +1037 -92
- package/docs/coding-services.md +30 -13
- package/docs/coding-worker-byo-images.md +218 -6
- package/docs/coding-worker-isolation.md +173 -44
- package/docs/getting-started-gke.md +332 -129
- package/docs/getting-started-identity-provider.md +31 -11
- package/docs/getting-started.md +14 -4
- package/docs/jira-agents.md +22 -9
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/native-sandbox.md +731 -0
- package/docs/observability.md +4 -0
- package/docs/release-verification.md +9 -0
- package/docs/security-deployment.md +146 -14
- package/docs/slack-notifications.md +268 -0
- package/docs/tool-secrets.md +284 -0
- package/docs/viewer-api.md +46 -5
- package/docs/viewer-api.openapi.yml +1404 -0
- package/help/admin-viewer.md +29 -3
- package/help/agent-recipes.md +27 -0
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +79 -0
- package/help/build-claude-code-image.md +131 -0
- package/help/build-worker-image.md +6 -7
- package/help/builder-agent.md +19 -6
- package/help/code-review-agents.md +243 -10
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +23 -9
- package/help/deployment-targets.md +25 -14
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-provider-not-configured.md +2 -2
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/database-auth-invalid.md +28 -0
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +29 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/low-power-disabled.md +29 -0
- package/help/errors/low-power-scale-forbidden.md +35 -0
- package/help/errors/low-power-wake-timeout.md +30 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/mobile-disabled.md +31 -0
- package/help/errors/native-sandbox-capacity.md +22 -0
- package/help/errors/native-sandbox-deadline-exceeded.md +19 -0
- package/help/errors/native-sandbox-docker-failed.md +20 -0
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +21 -0
- package/help/errors/native-sandbox-image-not-pinned.md +19 -0
- package/help/errors/native-sandbox-isolation-mismatch.md +20 -0
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +22 -0
- package/help/errors/native-sandbox-requires-catalog.md +31 -0
- package/help/errors/native-sandbox-unavailable.md +19 -0
- package/help/errors/native-sandbox-warm-delivery-failed.md +21 -0
- package/help/errors/native-sandbox-worker-exited.md +21 -0
- package/help/errors/native-sandbox-worker-lost.md +20 -0
- package/help/errors/native-sandbox-worker-unready.md +22 -0
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-broker-body-invalid.md +26 -0
- package/help/errors/secret-broker-changed.md +20 -0
- package/help/errors/secret-broker-config-invalid.md +30 -0
- package/help/errors/secret-broker-conflict.md +27 -0
- package/help/errors/secret-broker-destination-denied.md +28 -0
- package/help/errors/secret-broker-value-invalid.md +28 -0
- package/help/errors/secret-brokered.md +24 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/secret-not-brokered.md +25 -0
- package/help/errors/slack-auth-failed.md +48 -0
- package/help/errors/slack-channel-unreachable.md +39 -0
- package/help/errors/slack-not-configured.md +33 -0
- package/help/errors/target-merge.md +40 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/getting-started.md +4 -5
- package/help/github-app-setup.md +132 -0
- package/help/github.md +40 -1
- package/help/identity-and-access.md +7 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +3 -4
- package/help/low-power-mode.md +131 -0
- package/help/merge-order-check.md +122 -0
- package/help/mobile-app.md +54 -0
- package/help/native-capabilities.md +29 -1
- package/help/native-sandbox.md +150 -0
- package/help/observability.md +8 -0
- package/help/operating-agents.md +5 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +80 -16
- package/help/repo-instructions-and-skills.md +91 -0
- package/help/resume-runs-locally.md +131 -0
- package/help/review-fix-rounds.md +43 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +76 -0
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +99 -7
- package/package.json +27 -13
- package/prisma/migrations/20261009000003_native_execution_mode/migration.sql +12 -0
- package/prisma/migrations/20261009000004_native_gateway_ledger/migration.sql +65 -0
- package/prisma/migrations/20261009000005_native_gateway_call_child_agent/migration.sql +5 -0
- package/prisma/migrations/20261009000006_run_deferred_start_stop/migration.sql +14 -0
- package/prisma/migrations/20261009000007_native_gateway_network_ready/migration.sql +5 -0
- package/prisma/migrations/20261010000001_workflow_notifications/migration.sql +99 -0
- package/prisma/migrations/20261011000001_native_gateway_session_status_index/migration.sql +2 -0
- package/prisma/migrations/20261012000001_native_warm_worker/migration.sql +32 -0
- package/prisma/migrations/20261013000001_coding_run_merge_order/migration.sql +2 -0
- package/prisma/migrations/20261013000001_secret_broker/migration.sql +17 -0
- package/prisma/migrations/20261013000002_deferred_review_request/migration.sql +4 -0
- package/prisma/migrations/20261014000000_repo_skills/migration.sql +15 -0
- package/prisma/migrations/20261015000001_coding_run_merge_order_index/migration.sql +2 -0
- package/prisma/migrations/20261015000002_no_change_rereview/migration.sql +2 -0
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/schema.prisma +631 -146
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { lastPusher } from "./budget-stopped-head.js";
|
|
2
|
+
import { pullRequestOutcome } from "./host-status.js";
|
|
3
|
+
import { MERGE_ORDER_CHECK_NAME } from "./merge-order-check.js";
|
|
4
|
+
const CI_GREEN = new Set(["passing", "none"]);
|
|
5
|
+
/** How far up the run tree (Run.parentRunId) the opt-in may come from. */
|
|
6
|
+
const MAX_ANCESTOR_HOPS = 10;
|
|
7
|
+
const CODING_RUN_SELECT = {
|
|
8
|
+
runId: true,
|
|
9
|
+
repository: true,
|
|
10
|
+
rootCodingRunId: true,
|
|
11
|
+
markedReadyAt: true,
|
|
12
|
+
result: true,
|
|
13
|
+
run: { select: { agentId: true, parentRunId: true, status: true } },
|
|
14
|
+
};
|
|
15
|
+
const passed = (c) => c !== undefined && c.status === "completed" && c.conclusion === "success";
|
|
16
|
+
export async function maybeMarkReady(deps, repository, prNumber, provider = "github") {
|
|
17
|
+
try {
|
|
18
|
+
const host = deps.hosts?.[provider];
|
|
19
|
+
if (!host?.pullRequestOrigin || !host.readOwnChecks || !host.readCi || !host.markReadyForReview)
|
|
20
|
+
return "off";
|
|
21
|
+
const links = await deps.db.agentRepository.findMany({
|
|
22
|
+
where: { provider, repository },
|
|
23
|
+
select: {
|
|
24
|
+
agentId: true,
|
|
25
|
+
access: true,
|
|
26
|
+
triggers: true,
|
|
27
|
+
checkName: true,
|
|
28
|
+
markReadyWhenPassing: true,
|
|
29
|
+
authorizedVia: true,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
const optedIn = new Set(links
|
|
33
|
+
.filter((l) => l.access === "write" && l.authorizedVia !== null && l.markReadyWhenPassing)
|
|
34
|
+
.map((l) => l.agentId));
|
|
35
|
+
if (optedIn.size === 0)
|
|
36
|
+
return "off";
|
|
37
|
+
const reviewChecks = links
|
|
38
|
+
.filter((l) => l.access === "write" && l.authorizedVia !== null && l.triggers.includes("pull_request") && l.checkName)
|
|
39
|
+
.map((l) => l.checkName);
|
|
40
|
+
if (reviewChecks.length === 0)
|
|
41
|
+
return "not_ready";
|
|
42
|
+
// readOwnChecks reads at most 10 names; MERGE_ORDER_CHECK_NAME plus the reviewer
|
|
43
|
+
// check names must fit, or the merge-order check would silently be read as absent.
|
|
44
|
+
if (reviewChecks.length > 9)
|
|
45
|
+
return "not_ready";
|
|
46
|
+
const origin = await host.pullRequestOrigin(repository, prNumber);
|
|
47
|
+
if (origin.state !== "open" || origin.draft !== true || origin.isFork || !origin.markerRunId)
|
|
48
|
+
return "not_ready";
|
|
49
|
+
const marked = await deps.db.codingRun.findUnique({
|
|
50
|
+
where: { runId: origin.markerRunId },
|
|
51
|
+
select: CODING_RUN_SELECT,
|
|
52
|
+
});
|
|
53
|
+
if (!marked)
|
|
54
|
+
return "not_ready";
|
|
55
|
+
const root = marked.rootCodingRunId
|
|
56
|
+
? await deps.db.codingRun.findUnique({ where: { runId: marked.rootCodingRunId }, select: CODING_RUN_SELECT })
|
|
57
|
+
: marked;
|
|
58
|
+
if (!root || root.repository.toLowerCase() !== repository.toLowerCase())
|
|
59
|
+
return "not_ready";
|
|
60
|
+
if (pullRequestOutcome(root.result)?.pullRequestNumber !== prNumber)
|
|
61
|
+
return "not_ready";
|
|
62
|
+
if (!(await optedInInRunTree(deps.db, root.run, optedIn)))
|
|
63
|
+
return "not_ready";
|
|
64
|
+
if (root.markedReadyAt)
|
|
65
|
+
return "skipped";
|
|
66
|
+
if (await lastPushStoppedAtBudget(deps.db, root, prNumber))
|
|
67
|
+
return "not_ready";
|
|
68
|
+
const checks = await host.readOwnChecks(repository, origin.headSha, [MERGE_ORDER_CHECK_NAME, ...reviewChecks]);
|
|
69
|
+
if (!reviewChecks.every((name) => passed(checks.get(name))))
|
|
70
|
+
return "not_ready";
|
|
71
|
+
const order = checks.get(MERGE_ORDER_CHECK_NAME);
|
|
72
|
+
if (order !== undefined && !passed(order))
|
|
73
|
+
return "not_ready";
|
|
74
|
+
const ci = await host.readCi(repository, origin.headSha);
|
|
75
|
+
if (!CI_GREEN.has(ci.state) || ci.truncated)
|
|
76
|
+
return "not_ready";
|
|
77
|
+
const claimedAt = new Date();
|
|
78
|
+
// CodingRun.updatedAt is @updatedAt, so this claim (and a release below) bumps it, which
|
|
79
|
+
// feeds the merge-order sweep's ordering. Harmless: the sweep re-derives state from the
|
|
80
|
+
// host each time, it doesn't rely on updatedAt being untouched by mark-ready.
|
|
81
|
+
const claim = await deps.db.codingRun.updateMany({
|
|
82
|
+
where: { runId: root.runId, markedReadyAt: null },
|
|
83
|
+
data: { markedReadyAt: claimedAt },
|
|
84
|
+
});
|
|
85
|
+
if (claim.count === 0)
|
|
86
|
+
return "skipped";
|
|
87
|
+
const release = () => deps.db.codingRun
|
|
88
|
+
.updateMany({ where: { runId: root.runId, markedReadyAt: claimedAt }, data: { markedReadyAt: null } })
|
|
89
|
+
.catch((err) => deps.log?.warn({ err, repository, prNumber }, "could not release the mark-ready claim"));
|
|
90
|
+
try {
|
|
91
|
+
const result = await host.markReadyForReview(repository, prNumber, origin.headSha, origin.markerRunId);
|
|
92
|
+
if (result === "marked") {
|
|
93
|
+
deps.log?.info({ repository, prNumber }, "marked the pull request ready for review");
|
|
94
|
+
return "marked";
|
|
95
|
+
}
|
|
96
|
+
await release();
|
|
97
|
+
return "skipped";
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
await release();
|
|
101
|
+
throw err;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
deps.log?.warn({ err, repository, prNumber }, "could not mark the pull request ready for review");
|
|
106
|
+
return "failed";
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Whether the last run that pushed to the pull request (the root, or a later continuation of it)
|
|
111
|
+
* stopped at its budget: its pushed changes are unfinished work, so the draft stays a draft. A
|
|
112
|
+
* continuation that finished the work makes it eligible again.
|
|
113
|
+
*/
|
|
114
|
+
async function lastPushStoppedAtBudget(db, root, prNumber) {
|
|
115
|
+
return (await lastPusher(db, root, prNumber)).status === "budget_exhausted";
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* True when the opener's agent, or an agent up its run tree (bounded, cycle-safe), is opted in.
|
|
119
|
+
* A coding run's parentRunId is set when a lead delegated to it.
|
|
120
|
+
*/
|
|
121
|
+
async function optedInInRunTree(db, opener, optedIn) {
|
|
122
|
+
if (optedIn.has(opener.agentId))
|
|
123
|
+
return true;
|
|
124
|
+
const seen = new Set();
|
|
125
|
+
let next = opener.parentRunId ?? null;
|
|
126
|
+
for (let hop = 0; next && hop < MAX_ANCESTOR_HOPS && !seen.has(next); hop++) {
|
|
127
|
+
seen.add(next);
|
|
128
|
+
const run = await db.run.findUnique({ where: { id: next }, select: { agentId: true, parentRunId: true } });
|
|
129
|
+
if (!run)
|
|
130
|
+
return false;
|
|
131
|
+
if (optedIn.has(run.agentId))
|
|
132
|
+
return true;
|
|
133
|
+
next = run.parentRunId;
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
/** After a reviewer run ends: evaluate the pull request it reviewed. Null when it reviewed none. */
|
|
138
|
+
export async function markReadyAfterRun(deps, runId) {
|
|
139
|
+
try {
|
|
140
|
+
const row = await deps.db.runHostCheck.findUnique({
|
|
141
|
+
where: { runId },
|
|
142
|
+
select: { provider: true, repository: true, prNumber: true, verdict: true },
|
|
143
|
+
});
|
|
144
|
+
if (!row || row.prNumber === null || !row.verdict)
|
|
145
|
+
return null;
|
|
146
|
+
return await maybeMarkReady(deps, row.repository, row.prNumber, row.provider);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
deps.log?.warn({ err, runId }, "could not evaluate mark-ready after the run");
|
|
150
|
+
return "failed";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub-flavoured Markdown with its code removed, so a mention quoted in code
|
|
3
|
+
* (`` `@app` ``, a fenced or indented block) is documentation, not a request.
|
|
4
|
+
* Close to CommonMark, not a full parser: when in doubt it keeps text, so a
|
|
5
|
+
* real mention is never lost to an odd construct.
|
|
6
|
+
*/
|
|
7
|
+
/** `markdown` without its code blocks and inline code spans. */
|
|
8
|
+
export declare function withoutMarkdownCode(markdown: string): string;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub-flavoured Markdown with its code removed, so a mention quoted in code
|
|
3
|
+
* (`` `@app` ``, a fenced or indented block) is documentation, not a request.
|
|
4
|
+
* Close to CommonMark, not a full parser: when in doubt it keeps text, so a
|
|
5
|
+
* real mention is never lost to an odd construct.
|
|
6
|
+
*/
|
|
7
|
+
const FENCE_OPEN = /^ {0,3}(`{3,}|~{3,})/;
|
|
8
|
+
const INDENTED = /^(?: {4}|\t)/;
|
|
9
|
+
const LIST_ITEM = /^ {0,3}(?:[-*+]|\d{1,9}[.)])(?:\s|$)/;
|
|
10
|
+
const BLANK = /^\s*$/;
|
|
11
|
+
/** Up to three spaces, at least the opening run of the fence's character, then only whitespace. */
|
|
12
|
+
function closesFence(line, fence) {
|
|
13
|
+
let index = 0;
|
|
14
|
+
while (index < 3 && line[index] === " ")
|
|
15
|
+
index += 1;
|
|
16
|
+
const start = index;
|
|
17
|
+
while (line[index] === fence.char)
|
|
18
|
+
index += 1;
|
|
19
|
+
return index - start >= fence.length && line.slice(index).trim() === "";
|
|
20
|
+
}
|
|
21
|
+
/** Fenced and indented code blocks blanked out, line count kept. */
|
|
22
|
+
function withoutCodeBlocks(markdown) {
|
|
23
|
+
const out = [];
|
|
24
|
+
let fence = null;
|
|
25
|
+
// Indented code needs a blank line before it, and indented text under a
|
|
26
|
+
// list item is the item's paragraph, not code.
|
|
27
|
+
let previousBlank = true;
|
|
28
|
+
let inIndentedCode = false;
|
|
29
|
+
let inList = false;
|
|
30
|
+
for (const line of markdown.split(/\r?\n/)) {
|
|
31
|
+
if (fence) {
|
|
32
|
+
if (closesFence(line, fence))
|
|
33
|
+
fence = null;
|
|
34
|
+
out.push("");
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const open = FENCE_OPEN.exec(line);
|
|
38
|
+
// A backtick fence's info string cannot contain a backtick (CommonMark).
|
|
39
|
+
if (open && !(open[1][0] === "`" && line.slice(line.indexOf(open[1]) + open[1].length).includes("`"))) {
|
|
40
|
+
fence = { char: open[1][0], length: open[1].length };
|
|
41
|
+
inIndentedCode = false;
|
|
42
|
+
previousBlank = false;
|
|
43
|
+
out.push("");
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (BLANK.test(line)) {
|
|
47
|
+
previousBlank = true;
|
|
48
|
+
out.push(line);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (INDENTED.test(line) && !inList && (previousBlank || inIndentedCode)) {
|
|
52
|
+
inIndentedCode = true;
|
|
53
|
+
previousBlank = false;
|
|
54
|
+
out.push("");
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
inIndentedCode = false;
|
|
58
|
+
if (LIST_ITEM.test(line))
|
|
59
|
+
inList = true;
|
|
60
|
+
else if (!INDENTED.test(line) && previousBlank)
|
|
61
|
+
inList = false;
|
|
62
|
+
previousBlank = false;
|
|
63
|
+
out.push(line);
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/** Inline code spans in one paragraph replaced by a space; an unmatched run of backticks is literal. */
|
|
68
|
+
function withoutCodeSpans(paragraph) {
|
|
69
|
+
const runs = [];
|
|
70
|
+
for (let index = 0; index < paragraph.length;) {
|
|
71
|
+
if (paragraph[index] !== "`") {
|
|
72
|
+
index += 1;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const start = index;
|
|
76
|
+
while (paragraph[index] === "`")
|
|
77
|
+
index += 1;
|
|
78
|
+
runs.push({ start, end: index });
|
|
79
|
+
}
|
|
80
|
+
// A span closes at the next run of exactly the opening run's length.
|
|
81
|
+
const closer = new Array(runs.length).fill(-1);
|
|
82
|
+
const nextOfLength = new Map();
|
|
83
|
+
for (let i = runs.length - 1; i >= 0; i--) {
|
|
84
|
+
const length = runs[i].end - runs[i].start;
|
|
85
|
+
closer[i] = nextOfLength.get(length) ?? -1;
|
|
86
|
+
nextOfLength.set(length, i);
|
|
87
|
+
}
|
|
88
|
+
let result = "";
|
|
89
|
+
let copied = 0;
|
|
90
|
+
for (let i = 0; i < runs.length; i++) {
|
|
91
|
+
const close = closer[i];
|
|
92
|
+
if (close === -1)
|
|
93
|
+
continue;
|
|
94
|
+
result += `${paragraph.slice(copied, runs[i].start)} `;
|
|
95
|
+
copied = runs[close].end;
|
|
96
|
+
i = close;
|
|
97
|
+
}
|
|
98
|
+
return result + paragraph.slice(copied);
|
|
99
|
+
}
|
|
100
|
+
/** `markdown` without its code blocks and inline code spans. */
|
|
101
|
+
export function withoutMarkdownCode(markdown) {
|
|
102
|
+
return withoutCodeBlocks(markdown)
|
|
103
|
+
.join("\n")
|
|
104
|
+
.split(/(\n[ \t]*\n)/)
|
|
105
|
+
.map((part, i) => (i % 2 === 1 ? part : withoutCodeSpans(part)))
|
|
106
|
+
.join("");
|
|
107
|
+
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* agents' data.
|
|
11
11
|
*/
|
|
12
12
|
import { z } from "zod";
|
|
13
|
+
import { SecretInValueError, SecretCheckUnavailableError } from "./secret-guard.js";
|
|
13
14
|
import { MEMORY_CONTENT_MAX_BYTES, MEMORY_KEY_MAX_BYTES, MEMORY_MAX_KEYS_PER_AGENT, MEMORY_SEARCH_MAX_LIMIT, } from "../providers/memory/types.js";
|
|
14
15
|
export const MEMORY_TOOL_NAMES = new Set([
|
|
15
16
|
"memory_get",
|
|
@@ -116,6 +117,12 @@ export async function handleMemoryTool(name, argsJson, agentId, memory) {
|
|
|
116
117
|
message: err.issues.map((issue) => `${issue.path.join(".") || "input"}: ${issue.message}`).join("; "),
|
|
117
118
|
});
|
|
118
119
|
}
|
|
120
|
+
if (err instanceof SecretInValueError) {
|
|
121
|
+
return JSON.stringify({ error: err.code, message: err.message, secretNames: err.secretNames });
|
|
122
|
+
}
|
|
123
|
+
if (err instanceof SecretCheckUnavailableError) {
|
|
124
|
+
return JSON.stringify({ error: err.code, message: err.message });
|
|
125
|
+
}
|
|
119
126
|
const code = err instanceof Error ? err.message : "memory_error";
|
|
120
127
|
return JSON.stringify({ error: code, message: MEMORY_ERROR_MESSAGES[code] ?? code });
|
|
121
128
|
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `wardby merge order` check: pure state computation from a related
|
|
3
|
+
* pull request set's declared merge order (CodingRun.mergeOrder, see
|
|
4
|
+
* related-pull-requests.ts). See
|
|
5
|
+
* docs/private/2026-10-10-delegated-merge-order-design.md Part 3.
|
|
6
|
+
*
|
|
7
|
+
* For a member with order *k*, its dependencies are the set's members with
|
|
8
|
+
* a strictly lower, non-null order; equal-order peers are not dependencies,
|
|
9
|
+
* and a null-order member is never a dependency (and has none of its own).
|
|
10
|
+
* The check is posted only when the set has more than one distinct non-null
|
|
11
|
+
* order; otherwise (or when `self` itself has no order) there is nothing to
|
|
12
|
+
* gate and the verdict is "skip".
|
|
13
|
+
*
|
|
14
|
+
* syncMergeOrderChecks keeps the check current on every open pull request
|
|
15
|
+
* of a set: at the lead's end (syncMergeOrderChecksAfterRun), when a pull
|
|
16
|
+
* request closes or gets a new head (syncMergeOrderChecksForPullRequest,
|
|
17
|
+
* from host-events), and from the reconciler (sweepMergeOrderChecks) for
|
|
18
|
+
* missed events. State is read fresh from the host each time; nothing is
|
|
19
|
+
* stored. Best effort: none of these ever throws.
|
|
20
|
+
*/
|
|
21
|
+
import type { Run } from "#prisma";
|
|
22
|
+
import type { PullRequestOrigin, ReviewHostRegistry, UpsertNamedCheckInput } from "../providers/review-host/types.js";
|
|
23
|
+
import { type Logger } from "./logger.js";
|
|
24
|
+
import { type MarkReadyDb } from "./mark-ready.js";
|
|
25
|
+
import { type RelatedPullRequestsDb } from "./related-pull-requests.js";
|
|
26
|
+
export declare const MERGE_ORDER_CHECK_NAME = "wardby merge order";
|
|
27
|
+
export interface MergeOrderMember {
|
|
28
|
+
repository: string;
|
|
29
|
+
number: number;
|
|
30
|
+
mergeOrder: number | null;
|
|
31
|
+
state: "open" | "draft" | "merged" | "closed";
|
|
32
|
+
url?: string;
|
|
33
|
+
}
|
|
34
|
+
export type MergeOrderVerdict = {
|
|
35
|
+
status: "skip";
|
|
36
|
+
} | {
|
|
37
|
+
status: "in_progress";
|
|
38
|
+
waitingFor: MergeOrderMember[];
|
|
39
|
+
} | {
|
|
40
|
+
status: "success";
|
|
41
|
+
dependencies: MergeOrderMember[];
|
|
42
|
+
} | {
|
|
43
|
+
status: "failure";
|
|
44
|
+
closedUnmerged: MergeOrderMember[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* `set` may include or omit `self`: self's own order always counts toward
|
|
48
|
+
* the distinct orders, and self is never its own dependency (dependencies
|
|
49
|
+
* have a strictly lower order). `self` need not be the same object instance
|
|
50
|
+
* as its entry in `set`; only `mergeOrder` is read from it.
|
|
51
|
+
*/
|
|
52
|
+
export declare function mergeOrderVerdict(self: MergeOrderMember, set: readonly MergeOrderMember[]): MergeOrderVerdict;
|
|
53
|
+
export type MergeOrderDb = RelatedPullRequestsDb & MarkReadyDb;
|
|
54
|
+
export interface MergeOrderSyncDeps {
|
|
55
|
+
db: MergeOrderDb;
|
|
56
|
+
hosts: ReviewHostRegistry | undefined;
|
|
57
|
+
log?: Logger;
|
|
58
|
+
}
|
|
59
|
+
export interface MergeOrderSyncOptions {
|
|
60
|
+
/** A pull request this event already read: reused instead of reading it a second time. */
|
|
61
|
+
origin?: {
|
|
62
|
+
repository: string;
|
|
63
|
+
number: number;
|
|
64
|
+
read: () => Promise<PullRequestOrigin>;
|
|
65
|
+
};
|
|
66
|
+
/** A pull request this event reports closed: its state comes from the event, and it is not read. */
|
|
67
|
+
closed?: {
|
|
68
|
+
repository: string;
|
|
69
|
+
number: number;
|
|
70
|
+
merged: boolean;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Sets already synced in this event or sweep pass, keyed by their sorted
|
|
74
|
+
* members: seeds from different roots of one set (an original request
|
|
75
|
+
* and a follow-up) collect the same set, which is then written once.
|
|
76
|
+
*/
|
|
77
|
+
synced?: Set<string>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The check run's text for one verdict: step label, then the pull requests
|
|
81
|
+
* it depends on, as links. While the delegating run is still running
|
|
82
|
+
* (`leadRunning`) it may still add or reorder steps, so a success for any
|
|
83
|
+
* step above the set's lowest is posted as in_progress, waiting for it.
|
|
84
|
+
*/
|
|
85
|
+
export declare function mergeOrderCheckInput(self: MergeOrderMember, verdict: Exclude<MergeOrderVerdict, {
|
|
86
|
+
status: "skip";
|
|
87
|
+
}>, steps: readonly number[], headSha: string, leadRunning?: boolean): UpsertNamedCheckInput;
|
|
88
|
+
/**
|
|
89
|
+
* Recomputes and posts the `wardby merge order` check on every open (or
|
|
90
|
+
* draft) pull request of the set `seedRunId` belongs to (any run of the
|
|
91
|
+
* request's tree). Nothing happens unless the set has more than one
|
|
92
|
+
* distinct merge order. Each member's state is read live from the host
|
|
93
|
+
* (a stored "merged" is final and not re-read); the check is posted only on
|
|
94
|
+
* an open or draft pull request the App opened whose marker names a coding
|
|
95
|
+
* run this deployment recorded for that repository, on its current head.
|
|
96
|
+
* A member that can't be read holds back only the checks that depend on it.
|
|
97
|
+
* Never throws.
|
|
98
|
+
*/
|
|
99
|
+
export declare function syncMergeOrderChecks(deps: MergeOrderSyncDeps, seedRunId: string, opts?: MergeOrderSyncOptions): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* At a run's end: a tree root (the lead) that delegated anything syncs its
|
|
102
|
+
* set. A run that delegated nothing costs one indexed lookup. Never throws.
|
|
103
|
+
*/
|
|
104
|
+
export declare function syncMergeOrderChecksAfterRun(deps: MergeOrderSyncDeps, run: Pick<Run, "id" | "parentRunId">): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* A pull request closed or got a new head: syncs every set it is an
|
|
107
|
+
* ordered member of. Only a pull request a coding run with a merge order
|
|
108
|
+
* opened or continued can change any verdict (a member without an order is
|
|
109
|
+
* no one's dependency and gets no check), so anything else costs one query
|
|
110
|
+
* and no host call. Never throws.
|
|
111
|
+
*/
|
|
112
|
+
export declare function syncMergeOrderChecksForPullRequest(deps: MergeOrderSyncDeps, pr: {
|
|
113
|
+
repository: string;
|
|
114
|
+
number: number;
|
|
115
|
+
}, opts?: MergeOrderSyncOptions): Promise<void>;
|
|
116
|
+
/** The sweep runs at most this often per process (the reconciler ticks every 15 s). */
|
|
117
|
+
export declare const MERGE_ORDER_SWEEP_INTERVAL_MS: number;
|
|
118
|
+
/** Coding runs with a merge order updated within this long are swept. */
|
|
119
|
+
export declare const MERGE_ORDER_SWEEP_MAX_AGE_MS: number;
|
|
120
|
+
/** Most sets synced per sweep pass; the least recently synced go first. */
|
|
121
|
+
export declare const MERGE_ORDER_SWEEP_BATCH = 10;
|
|
122
|
+
export declare function resetMergeOrderSweepForTests(): void;
|
|
123
|
+
/**
|
|
124
|
+
* The reconciler's half, for missed pr_closed/pr_updated events: syncs the
|
|
125
|
+
* sets of pull requests that coding runs with a merge order opened or
|
|
126
|
+
* continued in the last 7 days, a bounded batch per pass, at most once per
|
|
127
|
+
* MERGE_ORDER_SWEEP_INTERVAL_MS per process. Returns the number of sets
|
|
128
|
+
* synced. Never throws.
|
|
129
|
+
*/
|
|
130
|
+
export declare function sweepMergeOrderChecks(deps: MergeOrderSyncDeps, now?: Date): Promise<number>;
|