@wardby/cli 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +5 -5
- package/README.md +6 -1
- package/deploy/local/docker-compose.quickstart-coding.yml +19 -0
- package/dist/claude-coding-worker/driver.d.ts +33 -3
- package/dist/claude-coding-worker/driver.js +151 -21
- package/dist/claude-coding-worker/main.js +38 -6
- package/dist/claude-coding-worker/sdk.js +29 -2
- package/dist/claude-coding-worker/tool-socket.d.ts +27 -0
- package/dist/claude-coding-worker/tool-socket.js +111 -0
- package/dist/claude-coding-worker/transcript.d.ts +18 -0
- package/dist/claude-coding-worker/transcript.js +77 -0
- package/dist/claude-plugin/command.d.ts +61 -0
- package/dist/claude-plugin/command.js +376 -0
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +3 -1
- package/dist/cli.js +71 -13
- package/dist/coding/code-host.d.ts +16 -0
- package/dist/coding/code-host.js +60 -0
- package/dist/coding/continuation-wording.d.ts +35 -0
- package/dist/coding/continuation-wording.js +73 -0
- package/dist/coding/linked-issue-note.d.ts +23 -0
- package/dist/coding/linked-issue-note.js +47 -0
- package/dist/coding/mcp-token.d.ts +12 -0
- package/dist/coding/mcp-token.js +26 -0
- package/dist/coding/merge-wording.d.ts +28 -0
- package/dist/coding/merge-wording.js +78 -0
- package/dist/coding/pr-description-note.d.ts +9 -0
- package/dist/coding/pr-description-note.js +32 -0
- package/dist/coding/profile.d.ts +46 -126
- package/dist/coding/profile.js +45 -4
- package/dist/coding/protected-path-wording.d.ts +8 -0
- package/dist/coding/protected-path-wording.js +1 -1
- package/dist/coding/protocol.d.ts +264 -346
- package/dist/coding/protocol.js +237 -12
- package/dist/coding/redact.d.ts +3 -0
- package/dist/coding/redact.js +17 -0
- package/dist/coding/registry/allowlist.d.ts +12 -0
- package/dist/coding/registry/allowlist.js +14 -1
- package/dist/coding/registry/audit-mode.d.ts +153 -0
- package/dist/coding/registry/audit-mode.js +304 -0
- package/dist/coding/registry/lockfile-shared.d.ts +36 -0
- package/dist/coding/registry/lockfile-shared.js +128 -0
- package/dist/coding/registry/lockfiles.js +1 -1
- package/dist/coding/registry/npm-lockfile-formats.d.ts +11 -0
- package/dist/coding/registry/npm-lockfile-formats.js +41 -0
- package/dist/coding/registry/npm-lockfile.d.ts +8 -4
- package/dist/coding/registry/npm-lockfile.js +4 -6
- package/dist/coding/registry/npm.js +78 -8
- package/dist/coding/registry/pnpm-lockfile.d.ts +17 -0
- package/dist/coding/registry/pnpm-lockfile.js +189 -0
- package/dist/coding/registry/pypi-plan.d.ts +50 -0
- package/dist/coding/registry/pypi-plan.js +406 -0
- package/dist/coding/registry/pypi-requirements.d.ts +58 -0
- package/dist/coding/registry/pypi-requirements.js +155 -0
- package/dist/coding/registry/pypi.d.ts +3 -27
- package/dist/coding/registry/pypi.js +40 -154
- package/dist/coding/registry/refusal-hints.d.ts +20 -0
- package/dist/coding/registry/refusal-hints.js +61 -0
- package/dist/coding/registry/refusal-wording.d.ts +11 -0
- package/dist/coding/registry/refusal-wording.js +56 -0
- package/dist/coding/registry/report.d.ts +70 -8
- package/dist/coding/registry/report.js +112 -5
- package/dist/coding/registry/types.d.ts +58 -8
- package/dist/coding/registry/yarn-lockfile.d.ts +30 -0
- package/dist/coding/registry/yarn-lockfile.js +367 -0
- package/dist/coding/services/catalog.d.ts +37 -351
- package/dist/coding/transcript/claude-code.d.ts +13 -0
- package/dist/coding/transcript/claude-code.js +273 -0
- package/dist/coding/transcript/download-protocol.d.ts +30 -0
- package/dist/coding/transcript/download-protocol.js +18 -0
- package/dist/coding/transcript/format.d.ts +20 -0
- package/dist/coding/transcript/format.js +32 -0
- package/dist/coding/transcript/recorder.d.ts +52 -0
- package/dist/coding/transcript/recorder.js +225 -0
- package/dist/coding/transcript/resume/checkout.d.ts +31 -0
- package/dist/coding/transcript/resume/checkout.js +203 -0
- package/dist/coding/transcript/resume/command.d.ts +17 -0
- package/dist/coding/transcript/resume/command.js +176 -0
- package/dist/coding/transcript/resume/download.d.ts +20 -0
- package/dist/coding/transcript/resume/download.js +153 -0
- package/dist/coding/transcript/resume/launch.d.ts +38 -0
- package/dist/coding/transcript/resume/launch.js +128 -0
- package/dist/coding/transcript/resume/session-file.d.ts +13 -0
- package/dist/coding/transcript/resume/session-file.js +79 -0
- package/dist/coding/transcript/resume/stand-in.d.ts +11 -0
- package/dist/coding/transcript/resume/stand-in.js +49 -0
- package/dist/coding-worker/artifact.d.ts +8 -3
- package/dist/coding-worker/artifact.js +3 -1
- package/dist/coding-worker/debug-trace.d.ts +9 -6
- package/dist/coding-worker/debug-trace.js +16 -19
- package/dist/coding-worker/dependency-cache.d.mts +229 -0
- package/dist/coding-worker/dependency-cache.mjs +2123 -0
- package/dist/coding-worker/driver.d.ts +4 -3
- package/dist/coding-worker/driver.js +124 -39
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +32 -0
- package/dist/coding-worker/main.js +5 -1
- package/dist/coding-worker/mcp-config.d.ts +27 -0
- package/dist/coding-worker/mcp-config.js +32 -0
- package/dist/coding-worker/sdk.d.ts +36 -0
- package/dist/coding-worker/sdk.js +28 -1
- package/dist/coding-worker/task-note.d.ts +11 -0
- package/dist/coding-worker/task-note.js +13 -0
- package/dist/coding-worker/types.d.ts +15 -0
- package/dist/config/dependency-cache.d.ts +23 -0
- package/dist/config/dependency-cache.js +32 -0
- package/dist/config/mcp-call-limit.d.ts +8 -0
- package/dist/config/mcp-call-limit.js +18 -0
- package/dist/config/mcp-servers.d.ts +8 -0
- package/dist/config/mcp-servers.js +12 -0
- package/dist/config/providers.d.ts +12 -3
- package/dist/config/providers.js +55 -5
- package/dist/config/test-simulators.d.ts +92 -0
- package/dist/config/test-simulators.js +333 -0
- package/dist/config/tool-timeout.d.ts +1 -0
- package/dist/config/tool-timeout.js +18 -0
- package/dist/core/async-context.d.ts +2 -0
- package/dist/core/async-context.js +12 -0
- package/dist/core/budget-events.d.ts +108 -0
- package/dist/core/budget-events.js +346 -0
- package/dist/core/budget-groups.d.ts +50 -1
- package/dist/core/budget-groups.js +236 -27
- package/dist/core/budget-stopped-head.d.ts +46 -0
- package/dist/core/budget-stopped-head.js +81 -0
- package/dist/core/budget-topup.d.ts +51 -0
- package/dist/core/budget-topup.js +156 -0
- package/dist/core/budget-wording.d.ts +16 -2
- package/dist/core/budget-wording.js +40 -2
- package/dist/core/coding-mcp.d.ts +36 -0
- package/dist/core/coding-mcp.js +253 -0
- package/dist/core/coding-queue.d.ts +2 -1
- package/dist/core/coding-queue.js +7 -0
- package/dist/core/coding-repository.d.ts +46 -0
- package/dist/core/coding-repository.js +92 -0
- package/dist/core/cron.d.ts +19 -1
- package/dist/core/cron.js +17 -0
- package/dist/core/datastores.js +1 -1
- package/dist/core/deferred-coding.d.ts +14 -0
- package/dist/core/deferred-coding.js +62 -0
- package/dist/core/delegation-child.d.ts +25 -0
- package/dist/core/delegation-child.js +37 -0
- package/dist/core/delegation-slots.d.ts +27 -0
- package/dist/core/delegation-slots.js +44 -0
- package/dist/core/dispatch.d.ts +48 -2
- package/dist/core/dispatch.js +166 -66
- package/dist/core/engine-native.js +1 -1
- package/dist/core/error-code.d.ts +38 -0
- package/dist/core/error-code.js +169 -0
- package/dist/core/grants.d.ts +46 -8
- package/dist/core/grants.js +99 -8
- package/dist/core/host-events.d.ts +18 -2
- package/dist/core/host-events.js +291 -27
- package/dist/core/host-status.d.ts +85 -3
- package/dist/core/host-status.js +300 -22
- package/dist/core/issue-bridge.d.ts +50 -6
- package/dist/core/issue-bridge.js +124 -33
- package/dist/core/issue-events.d.ts +1 -1
- package/dist/core/issue-events.js +4 -10
- package/dist/core/issue-status.d.ts +1 -1
- package/dist/core/issue-status.js +58 -29
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +14 -1
- package/dist/core/lost-run-children.d.ts +6 -0
- package/dist/core/lost-run-children.js +32 -0
- package/dist/core/mark-ready.d.ts +34 -0
- package/dist/core/mark-ready.js +152 -0
- package/dist/core/markdown-code.d.ts +8 -0
- package/dist/core/markdown-code.js +107 -0
- package/dist/core/mcp-client/client.d.ts +47 -0
- package/dist/core/mcp-client/client.js +141 -0
- package/dist/core/mcp-client/jsonrpc.d.ts +15 -0
- package/dist/core/mcp-client/jsonrpc.js +54 -0
- package/dist/core/mcp-client/results.d.ts +13 -0
- package/dist/core/mcp-client/results.js +42 -0
- package/dist/core/mcp-servers.d.ts +90 -0
- package/dist/core/mcp-servers.js +230 -0
- package/dist/core/mcp-tools.d.ts +108 -0
- package/dist/core/mcp-tools.js +287 -0
- package/dist/core/memory-tools.js +7 -0
- package/dist/core/merge-order-check.d.ts +2 -1
- package/dist/core/merge-order-check.js +44 -18
- package/dist/core/notification-dispatcher.js +2 -1
- package/dist/core/notification-templates.d.ts +1 -7
- package/dist/core/notification-templates.js +36 -2
- package/dist/core/pull-request-state-sync.js +2 -2
- package/dist/core/reconciler.d.ts +4 -3
- package/dist/core/reconciler.js +8 -1
- package/dist/core/related-pull-requests.d.ts +11 -3
- package/dist/core/related-pull-requests.js +49 -20
- package/dist/core/reply-parts.d.ts +21 -0
- package/dist/core/reply-parts.js +73 -0
- package/dist/core/review-fix.d.ts +1 -1
- package/dist/core/review-fix.js +4 -3
- package/dist/core/review-host-checks.d.ts +1 -1
- package/dist/core/review-host-tools.d.ts +3 -0
- package/dist/core/review-host-tools.js +102 -14
- package/dist/core/review-reads.d.ts +55 -0
- package/dist/core/review-reads.js +233 -0
- package/dist/core/run-status.d.ts +12 -0
- package/dist/core/run-status.js +12 -0
- package/dist/core/runner.d.ts +145 -49
- package/dist/core/runner.js +719 -216
- package/dist/core/schedule-start.d.ts +12 -0
- package/dist/core/schedule-start.js +14 -0
- package/dist/core/secret-broker-config.d.ts +12 -74
- package/dist/core/secret-broker-config.js +1 -1
- package/dist/core/secret-guard.d.ts +49 -0
- package/dist/core/secret-guard.js +119 -0
- package/dist/core/secret-guarded-stores.d.ts +12 -0
- package/dist/core/secret-guarded-stores.js +41 -0
- package/dist/core/secret-spans.d.ts +50 -0
- package/dist/core/secret-spans.js +94 -0
- package/dist/core/secrets.d.ts +11 -1
- package/dist/core/secrets.js +27 -1
- package/dist/core/serializable-retry.d.ts +18 -0
- package/dist/core/serializable-retry.js +43 -0
- package/dist/core/stop-run.d.ts +46 -0
- package/dist/core/stop-run.js +61 -0
- package/dist/core/tool-admin.d.ts +5 -1
- package/dist/core/tool-admin.js +7 -2
- package/dist/core/tool-names.d.ts +13 -0
- package/dist/core/tool-names.js +20 -0
- package/dist/core/webhooks.d.ts +4 -0
- package/dist/core/webhooks.js +68 -49
- package/dist/core/workflow-events.d.ts +14 -2
- package/dist/core/workflow-events.js +4 -0
- package/dist/core/workflow-run-events.d.ts +5 -3
- package/dist/core/workflow-run-events.js +45 -9
- package/dist/core/zod-json-schema.d.ts +4 -0
- package/dist/core/zod-json-schema.js +39 -0
- package/dist/core/zod3-window.d.ts +35 -0
- package/dist/core/zod3-window.js +124 -0
- package/dist/generated/prisma/browser.d.ts +65 -3
- package/dist/generated/prisma/client.d.ts +65 -3
- package/dist/generated/prisma/commonInputTypes.d.ts +266 -106
- package/dist/generated/prisma/enums.d.ts +10 -0
- package/dist/generated/prisma/enums.js +8 -0
- package/dist/generated/prisma/internal/class.d.ts +110 -0
- package/dist/generated/prisma/internal/class.js +4 -4
- package/dist/generated/prisma/internal/prismaNamespace.d.ts +957 -9
- package/dist/generated/prisma/internal/prismaNamespace.js +166 -2
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.d.ts +174 -0
- package/dist/generated/prisma/internal/prismaNamespaceBrowser.js +166 -2
- package/dist/generated/prisma/models/Agent.d.ts +377 -8
- package/dist/generated/prisma/models/AgentMcpServer.d.ts +1412 -0
- package/dist/generated/prisma/models/AgentMcpServer.js +1 -0
- package/dist/generated/prisma/models/AgentRepository.d.ts +81 -1
- package/dist/generated/prisma/models/AuthUser.d.ts +1 -1
- package/dist/generated/prisma/models/CodingAgentProfile.d.ts +228 -7
- package/dist/generated/prisma/models/CodingProxyRequest.d.ts +207 -3
- package/dist/generated/prisma/models/CodingProxySession.d.ts +232 -2
- package/dist/generated/prisma/models/CodingRun.d.ts +1712 -1
- package/dist/generated/prisma/models/DependencySnapshot.d.ts +1668 -0
- package/dist/generated/prisma/models/DependencySnapshot.js +1 -0
- package/dist/generated/prisma/models/HostProvider.d.ts +2176 -0
- package/dist/generated/prisma/models/HostProvider.js +1 -0
- package/dist/generated/prisma/models/HostProviderCredential.d.ts +1285 -0
- package/dist/generated/prisma/models/HostProviderCredential.js +1 -0
- package/dist/generated/prisma/models/HostProviderOperation.d.ts +1470 -0
- package/dist/generated/prisma/models/HostProviderOperation.js +1 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.d.ts +1145 -0
- package/dist/generated/prisma/models/HostProviderTrustedAccount.js +1 -0
- package/dist/generated/prisma/models/IssuePullRequest.d.ts +6 -2
- package/dist/generated/prisma/models/LocalReview.d.ts +40 -1
- package/dist/generated/prisma/models/McpServer.d.ts +1500 -0
- package/dist/generated/prisma/models/McpServer.js +1 -0
- package/dist/generated/prisma/models/NativeGatewayCall.d.ts +77 -1
- package/dist/generated/prisma/models/NativeGatewaySession.d.ts +35 -1
- package/dist/generated/prisma/models/Principal.d.ts +167 -0
- package/dist/generated/prisma/models/RegistryAllowance.d.ts +41 -1
- package/dist/generated/prisma/models/RegistryApprovedVersion.d.ts +75 -1
- package/dist/generated/prisma/models/RegistryAuditRecord.d.ts +1364 -0
- package/dist/generated/prisma/models/RegistryAuditRecord.js +1 -0
- package/dist/generated/prisma/models/ResourceGrant.d.ts +1 -1
- package/dist/generated/prisma/models/Run.d.ts +738 -2
- package/dist/generated/prisma/models/RunBudgetEvent.d.ts +1211 -0
- package/dist/generated/prisma/models/RunBudgetEvent.js +1 -0
- package/dist/generated/prisma/models/RunTranscript.d.ts +1339 -0
- package/dist/generated/prisma/models/RunTranscript.js +1 -0
- package/dist/generated/prisma/models/Secret.d.ts +387 -0
- package/dist/generated/prisma/models/Tool.d.ts +223 -1
- package/dist/generated/prisma/models.d.ts +10 -0
- package/dist/help/search.js +12 -3
- package/dist/help-index.json +2033 -110
- package/dist/import/create.js +48 -4
- package/dist/import/neutral-schema.d.ts +51 -281
- package/dist/import/neutral-schema.js +7 -4
- package/dist/knowledge/check.d.ts +1 -1
- package/dist/knowledge/cli.d.ts +11 -1
- package/dist/knowledge/cli.js +37 -4
- package/dist/knowledge/concept.d.ts +3 -19
- package/dist/knowledge/location.d.ts +31 -0
- package/dist/knowledge/location.js +78 -0
- package/dist/mcp/auth/access.d.ts +10 -2
- package/dist/mcp/auth/access.js +15 -1
- package/dist/mcp/auth/grants-cli.d.ts +6 -4
- package/dist/mcp/auth/grants-cli.js +42 -3
- package/dist/mcp/auth/ownership.d.ts +7 -7
- package/dist/mcp/auth/resource-server.d.ts +3 -1
- package/dist/mcp/auth/resource-server.js +17 -2
- package/dist/mcp/auth/self-hosted/credentials.d.ts +3 -3
- package/dist/mcp/auth/self-hosted/session.d.ts +2 -2
- package/dist/mcp/context.d.ts +3 -0
- package/dist/mcp/host-events/github-ingress.d.ts +2 -0
- package/dist/mcp/host-events/github-ingress.js +2 -1
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.js +69 -10
- package/dist/mcp/server.d.ts +13 -0
- package/dist/mcp/server.js +33 -14
- package/dist/mcp/tools/agents.d.ts +4 -0
- package/dist/mcp/tools/agents.js +295 -28
- package/dist/mcp/tools/datastore.js +17 -8
- package/dist/mcp/tools/grants.js +73 -29
- package/dist/mcp/tools/host-providers.d.ts +2 -0
- package/dist/mcp/tools/host-providers.js +215 -0
- package/dist/mcp/tools/mcp-servers.d.ts +26 -0
- package/dist/mcp/tools/mcp-servers.js +481 -0
- package/dist/mcp/tools/memory.js +11 -1
- package/dist/mcp/tools/notification-channels.js +2 -2
- package/dist/mcp/tools/packages.d.ts +2 -0
- package/dist/mcp/tools/packages.js +195 -0
- package/dist/mcp/tools/repositories.js +65 -12
- package/dist/mcp/tools/run-access.d.ts +16 -0
- package/dist/mcp/tools/run-access.js +25 -0
- package/dist/mcp/tools/run-transcript-download.d.ts +30 -0
- package/dist/mcp/tools/run-transcript-download.js +129 -0
- package/dist/mcp/tools/run-transcript.d.ts +19 -0
- package/dist/mcp/tools/run-transcript.js +70 -0
- package/dist/mcp/tools/runs.js +209 -27
- package/dist/mcp/tools/scheduling.js +3 -1
- package/dist/mcp/tools/secret-elicitation-form.js +5 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +6 -0
- package/dist/mcp/tools/secret-elicitation-server.js +10 -61
- package/dist/mcp/tools/secret-elicitation.d.ts +2 -0
- package/dist/mcp/tools/secret-elicitation.js +25 -2
- package/dist/mcp/tools/secrets.js +40 -6
- package/dist/mcp/tools/stop-run.d.ts +2 -0
- package/dist/mcp/tools/stop-run.js +82 -0
- package/dist/mcp/tools/subagents.js +2 -2
- package/dist/mcp/tools/tools.d.ts +7 -5
- package/dist/mcp/tools/tools.js +64 -16
- package/dist/mcp/tools/trigger.js +28 -6
- package/dist/mcp/transport/http-limits.d.ts +2 -0
- package/dist/mcp/transport/http-limits.js +6 -2
- package/dist/mcp/transport/stdio-link-host.d.ts +20 -0
- package/dist/mcp/transport/stdio-link-host.js +67 -0
- package/dist/mcp/transport/streamable-http.d.ts +13 -0
- package/dist/mcp/transport/streamable-http.js +41 -1
- package/dist/mcp/webhooks/ingress.js +10 -0
- package/dist/native-worker/docker-launcher.d.ts +38 -2
- package/dist/native-worker/docker-launcher.js +65 -5
- package/dist/native-worker/gateway-server.d.ts +55 -3
- package/dist/native-worker/gateway-server.js +152 -34
- package/dist/native-worker/gateway.d.ts +29 -1
- package/dist/native-worker/gateway.js +74 -4
- package/dist/native-worker/http-server.d.ts +7 -1
- package/dist/native-worker/http-server.js +62 -7
- package/dist/native-worker/http-transport.js +1 -1
- package/dist/native-worker/kubernetes-launcher.d.ts +7 -3
- package/dist/native-worker/kubernetes-launcher.js +43 -3
- package/dist/native-worker/launch.d.ts +18 -1
- package/dist/native-worker/launch.js +6 -1
- package/dist/native-worker/ledger.d.ts +24 -4
- package/dist/native-worker/ledger.js +62 -8
- package/dist/native-worker/loopback.js +3 -8
- package/dist/native-worker/main.d.ts +2 -1
- package/dist/native-worker/main.js +14 -3
- package/dist/native-worker/protocol.d.ts +130 -577
- package/dist/native-worker/protocol.js +51 -2
- package/dist/native-worker/sandbox-executor.d.ts +17 -2
- package/dist/native-worker/sandbox-executor.js +78 -4
- package/dist/native-worker/stderr-redaction.d.ts +77 -0
- package/dist/native-worker/stderr-redaction.js +237 -0
- package/dist/native-worker/stdio.d.ts +1 -1
- package/dist/native-worker/stdio.js +6 -5
- package/dist/native-worker/warm-pool.d.ts +2 -2
- package/dist/native-worker/warm-pool.js +4 -4
- package/dist/native-worker/worker.js +28 -2
- package/dist/observability/metrics.js +6 -1
- package/dist/providers/auth/self-hosted.d.ts +1 -1
- package/dist/providers/coding-proxy/capability-hash.d.ts +2 -0
- package/dist/providers/coding-proxy/capability-hash.js +5 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.d.ts +29 -0
- package/dist/providers/coding-proxy/dependency-cache/eviction.js +87 -0
- package/dist/providers/coding-proxy/dependency-cache/key.d.ts +33 -0
- package/dist/providers/coding-proxy/dependency-cache/key.js +86 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.d.ts +18 -0
- package/dist/providers/coding-proxy/dependency-cache/model-request-seal.js +40 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.d.ts +25 -0
- package/dist/providers/coding-proxy/dependency-cache/prisma-store.js +131 -0
- package/dist/providers/coding-proxy/dependency-cache/service.d.ts +70 -0
- package/dist/providers/coding-proxy/dependency-cache/service.js +409 -0
- package/dist/providers/coding-proxy/dependency-cache/store.d.ts +85 -0
- package/dist/providers/coding-proxy/dependency-cache/store.js +95 -0
- package/dist/providers/coding-proxy/hold.d.ts +32 -0
- package/dist/providers/coding-proxy/hold.js +86 -0
- package/dist/providers/coding-proxy/interrupted.d.ts +70 -0
- package/dist/providers/coding-proxy/interrupted.js +104 -0
- package/dist/providers/coding-proxy/mcp-route.d.ts +34 -0
- package/dist/providers/coding-proxy/mcp-route.js +166 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -2
- package/dist/providers/coding-proxy/memory-ledger.js +99 -8
- package/dist/providers/coding-proxy/metering.d.ts +16 -0
- package/dist/providers/coding-proxy/metering.js +27 -4
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +16 -2
- package/dist/providers/coding-proxy/prisma-ledger.js +209 -69
- package/dist/providers/coding-proxy/proxy.d.ts +21 -2
- package/dist/providers/coding-proxy/proxy.js +300 -48
- package/dist/providers/coding-proxy/registry/audit.d.ts +53 -10
- package/dist/providers/coding-proxy/registry/audit.js +94 -17
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.d.ts +36 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse-worker.js +67 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.d.ts +16 -0
- package/dist/providers/coding-proxy/registry/lockfile-parse.js +110 -0
- package/dist/providers/coding-proxy/registry/plan.d.ts +9 -0
- package/dist/providers/coding-proxy/registry/plan.js +201 -48
- package/dist/providers/coding-proxy/registry/prisma-store.d.ts +11 -5
- package/dist/providers/coding-proxy/registry/prisma-store.js +120 -17
- package/dist/providers/coding-proxy/registry/service.d.ts +97 -16
- package/dist/providers/coding-proxy/registry/service.js +579 -112
- package/dist/providers/coding-proxy/registry/store.d.ts +84 -9
- package/dist/providers/coding-proxy/registry/store.js +54 -1
- package/dist/providers/coding-proxy/runtime.d.ts +10 -0
- package/dist/providers/coding-proxy/runtime.js +109 -16
- package/dist/providers/coding-proxy/server.d.ts +9 -1
- package/dist/providers/coding-proxy/server.js +55 -1
- package/dist/providers/coding-proxy/types.d.ts +78 -1
- package/dist/providers/datastore/types.d.ts +5 -0
- package/dist/providers/engine/types.d.ts +17 -2
- package/dist/providers/engine/types.js +17 -0
- package/dist/providers/executor/composition.d.ts +10 -3
- package/dist/providers/executor/composition.js +52 -7
- package/dist/providers/executor/container.d.ts +394 -9
- package/dist/providers/executor/container.js +1210 -96
- package/dist/providers/executor/dbos-status.d.ts +31 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +50 -1
- package/dist/providers/executor/dbos.js +207 -20
- package/dist/providers/executor/deferred.d.ts +12 -24
- package/dist/providers/executor/deferred.js +10 -29
- package/dist/providers/executor/in-process.d.ts +9 -1
- package/dist/providers/executor/in-process.js +14 -4
- package/dist/providers/executor/linked-issue-reader.d.ts +16 -0
- package/dist/providers/executor/linked-issue-reader.js +30 -0
- package/dist/providers/executor/routing.d.ts +2 -0
- package/dist/providers/executor/routing.js +4 -0
- package/dist/providers/executor/types.d.ts +13 -0
- package/dist/providers/host-tools/invoke.d.ts +37 -0
- package/dist/providers/host-tools/invoke.js +117 -0
- package/dist/providers/host-tools/operations.d.ts +65 -0
- package/dist/providers/host-tools/operations.js +149 -0
- package/dist/providers/host-tools/registry.d.ts +79 -0
- package/dist/providers/host-tools/registry.js +362 -0
- package/dist/providers/host-tools/request-guard.d.ts +17 -0
- package/dist/providers/host-tools/request-guard.js +99 -0
- package/dist/providers/host-tools/self-test.d.ts +64 -0
- package/dist/providers/host-tools/self-test.js +142 -0
- package/dist/providers/index.d.ts +2 -1
- package/dist/providers/issue-tracker/types.d.ts +17 -0
- package/dist/providers/issue-tracker/types.js +39 -1
- package/dist/providers/jobs/claude-tool-setup.d.ts +4 -0
- package/dist/providers/jobs/claude-tool-setup.js +5 -2
- package/dist/providers/jobs/docker-isolation.d.ts +10 -2
- package/dist/providers/jobs/docker-isolation.js +47 -8
- package/dist/providers/jobs/docker.d.ts +9 -0
- package/dist/providers/jobs/docker.js +60 -11
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +2 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +3 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +8 -0
- package/dist/providers/jobs/kubernetes-api.js +10 -0
- package/dist/providers/jobs/kubernetes-client.js +10 -1
- package/dist/providers/jobs/kubernetes-isolation.d.ts +5 -1
- package/dist/providers/jobs/kubernetes-isolation.js +32 -3
- package/dist/providers/jobs/kubernetes.d.ts +11 -1
- package/dist/providers/jobs/kubernetes.js +111 -17
- package/dist/providers/jobs/types.d.ts +39 -0
- package/dist/providers/jobs/types.js +13 -1
- package/dist/providers/llm/anthropic.js +5 -1
- package/dist/providers/llm/bedrock.d.ts +0 -12
- package/dist/providers/llm/bedrock.js +4 -0
- package/dist/providers/llm/claude-messages.d.ts +3 -1
- package/dist/providers/llm/claude-messages.js +4 -1
- package/dist/providers/llm/claude-provider.d.ts +2 -2
- package/dist/providers/llm/claude-provider.js +2 -2
- package/dist/providers/llm/openai.d.ts +2 -2
- package/dist/providers/llm/openai.js +6 -2
- package/dist/providers/llm/routing.d.ts +2 -2
- package/dist/providers/llm/routing.js +2 -2
- package/dist/providers/llm/types.d.ts +12 -2
- package/dist/providers/review-host/github-events.d.ts +9 -1
- package/dist/providers/review-host/github-events.js +34 -12
- package/dist/providers/review-host/github.d.ts +29 -2
- package/dist/providers/review-host/github.js +224 -29
- package/dist/providers/review-host/local.d.ts +8 -4
- package/dist/providers/review-host/local.js +49 -31
- package/dist/providers/review-host/patch-pages.d.ts +41 -0
- package/dist/providers/review-host/patch-pages.js +176 -0
- package/dist/providers/review-host/review-format.d.ts +19 -1
- package/dist/providers/review-host/review-format.js +38 -7
- package/dist/providers/review-host/types.d.ts +140 -6
- package/dist/providers/review-host/types.js +9 -1
- package/dist/providers/storage/gcs.d.ts +63 -0
- package/dist/providers/storage/gcs.js +69 -0
- package/dist/providers/storage/index.d.ts +15 -0
- package/dist/providers/storage/index.js +14 -0
- package/dist/providers/storage/local.d.ts +24 -0
- package/dist/providers/storage/local.js +92 -0
- package/dist/providers/storage/meter.d.ts +14 -0
- package/dist/providers/storage/meter.js +34 -0
- package/dist/providers/storage/s3.d.ts +41 -0
- package/dist/providers/storage/s3.js +107 -0
- package/dist/providers/storage/types.d.ts +37 -3
- package/dist/providers/storage/types.js +21 -4
- package/dist/providers/vcs/git.d.ts +39 -4
- package/dist/providers/vcs/git.js +339 -26
- package/dist/providers/vcs/github-remote.d.ts +26 -3
- package/dist/providers/vcs/github-remote.js +124 -14
- package/dist/providers/vcs/github.d.ts +183 -44
- package/dist/providers/vcs/github.js +455 -56
- package/dist/providers/vcs/index.d.ts +1 -1
- package/dist/providers/vcs/index.js +9 -2
- package/dist/providers/vcs/pr-description.d.ts +127 -0
- package/dist/providers/vcs/pr-description.js +270 -0
- package/dist/providers/vcs/remote.d.ts +37 -1
- package/dist/providers/vcs/remote.js +7 -1
- package/dist/providers/vcs/routing.d.ts +16 -8
- package/dist/providers/vcs/routing.js +27 -6
- package/dist/providers/vcs/types.d.ts +150 -5
- package/dist/quickstart/coding-seed.d.ts +14 -3
- package/dist/quickstart/coding-seed.js +213 -4
- package/dist/quickstart/index.d.ts +5 -0
- package/dist/quickstart/index.js +21 -0
- package/dist/quickstart/reviewer-prompt.d.ts +1 -1
- package/dist/quickstart/reviewer-prompt.js +6 -6
- package/dist/quickstart-images.json +1 -1
- package/dist/sandbox/eval-core.d.ts +12 -2
- package/dist/sandbox/eval-core.js +20 -4
- package/dist/sandbox/generated/zod.bundle.js +62 -1
- package/dist/sandbox/generated/zod3.bundle.js +5 -0
- package/dist/sandbox/host-functions.d.ts +5 -0
- package/dist/sandbox/host-functions.js +13 -13
- package/dist/sandbox/limits.d.ts +4 -1
- package/dist/sandbox/limits.js +4 -1
- package/dist/sandbox/run-in-sandbox.d.ts +6 -0
- package/dist/sandbox/run-in-sandbox.js +14 -2
- package/dist/sandbox/safe-fetch.d.ts +2 -0
- package/dist/sandbox/safe-fetch.js +1 -1
- package/dist/sandbox/secret-broker.d.ts +1 -0
- package/dist/sandbox/secret-broker.js +4 -5
- package/dist/sandbox/tool-capabilities.d.ts +10 -30
- package/dist/sandbox/tool-timeout.d.ts +32 -0
- package/dist/sandbox/tool-timeout.js +52 -0
- package/dist/sandbox/user-tool.d.ts +8 -1
- package/dist/sandbox/user-tool.js +9 -3
- package/dist/sandbox/zod-params.d.ts +37 -5
- package/dist/sandbox/zod-params.js +181 -26
- package/dist/serve.js +8 -1
- package/dist/viewer/api-schema.d.ts +349 -2627
- package/dist/viewer/api-schema.js +7 -0
- package/dist/viewer/build-schemas.js +6 -2
- package/dist/viewer/graph.js +2 -1
- package/dist/viewer/openapi.js +2 -4
- package/dist/wardby-bin.js +15 -0
- package/docs/README.md +11 -1
- package/docs/agent-recipes.md +95 -24
- package/docs/architecture-runtime.md +1 -1
- package/docs/claude-code-plugin.md +164 -0
- package/docs/code-review-agents.md +557 -41
- package/docs/coding-agent-setup.md +566 -8
- package/docs/coding-packages.md +1033 -90
- package/docs/coding-services.md +27 -12
- package/docs/coding-worker-byo-images.md +24 -2
- package/docs/coding-worker-isolation.md +183 -37
- package/docs/debugging-agent-runs.md +242 -0
- package/docs/getting-started-gke.md +129 -141
- package/docs/getting-started-identity-provider.md +53 -38
- package/docs/getting-started.md +17 -0
- package/docs/host-providers.md +294 -0
- package/docs/jira-agents.md +17 -8
- package/docs/knowledge/blob-not-found-semantics.md +41 -0
- package/docs/knowledge/bounded-file-descriptor.md +52 -0
- package/docs/knowledge/delegation-admission-slots.md +52 -0
- package/docs/knowledge/http-dispatcher-bootstrap.md +61 -0
- package/docs/knowledge/import-rename-target.md +52 -0
- package/docs/knowledge/index.md +57 -0
- package/docs/knowledge/log.md +9 -0
- package/docs/knowledge/mcp-cancelled-task-precedence.md +41 -0
- package/docs/knowledge/mcp-http-prompt-discovery.md +41 -0
- package/docs/knowledge/mcp-schema-module-boundary.md +41 -0
- package/docs/knowledge/nullable-tool-uniqueness.md +52 -0
- package/docs/knowledge/overview-cli.md +74 -0
- package/docs/knowledge/overview-coding-proxy.md +72 -0
- package/docs/knowledge/overview-coding.md +72 -0
- package/docs/knowledge/overview-config.md +60 -0
- package/docs/knowledge/overview-core.md +72 -0
- package/docs/knowledge/overview-deploy.md +83 -0
- package/docs/knowledge/overview-mcp.md +61 -0
- package/docs/knowledge/overview-prisma.md +72 -0
- package/docs/knowledge/overview-providers.md +89 -0
- package/docs/knowledge/overview-sandbox.md +83 -0
- package/docs/knowledge/overview-surfaces.md +83 -0
- package/docs/knowledge/private-datastore-shared-boundary.md +54 -0
- package/docs/knowledge/proxy-settlement-projections.md +41 -0
- package/docs/knowledge/run-pricing-first-writer.md +43 -0
- package/docs/knowledge/schedule-claim-transaction.md +41 -0
- package/docs/knowledge/secret-entry-replica-contract.md +52 -0
- package/docs/knowledge/terminal-run-first-writer.md +41 -0
- package/docs/knowledge/transactional-agent-authorization.md +52 -0
- package/docs/knowledge/viewer-notify-write-isolation.md +30 -0
- package/docs/knowledge/warm-input-publication.md +30 -0
- package/docs/knowledge/workspace-staging-failure.md +54 -0
- package/docs/knowledge.md +54 -14
- package/docs/mcp-servers.md +254 -0
- package/docs/native-sandbox.md +143 -31
- package/docs/observability.md +4 -0
- package/docs/security-deployment.md +139 -29
- package/docs/slack-notifications.md +35 -19
- package/docs/tool-secrets.md +45 -10
- package/docs/viewer-api.md +6 -0
- package/docs/viewer-api.openapi.yml +1 -1
- package/help/admin-viewer.md +28 -2
- package/help/agent-recipes.md +33 -2
- package/help/architecture-agent.md +11 -6
- package/help/brokered-secrets.md +3 -0
- package/help/build-claude-code-image.md +1 -1
- package/help/build-worker-image.md +3 -1
- package/help/builder-agent.md +19 -6
- package/help/claude-code-run-pane.md +40 -0
- package/help/code-review-agents.md +177 -6
- package/help/coding-packages.md +156 -6
- package/help/cost-attribution.md +9 -5
- package/help/creating-agents.md +14 -1
- package/help/dependency-cache.md +143 -0
- package/help/deploy-gke.md +15 -8
- package/help/errors/budget-exhausted.md +187 -0
- package/help/errors/budget-group-exhausted.md +5 -1
- package/help/errors/coding-mcp-pins-unavailable.md +35 -0
- package/help/errors/coding-stream-quota-exceeded.md +33 -0
- package/help/errors/coding-workspace-disk-exceeds-limit.md +39 -0
- package/help/errors/continuation-closed.md +9 -12
- package/help/errors/database-auth-invalid.md +1 -1
- package/help/errors/delegation-conflict.md +24 -0
- package/help/errors/file-list-truncated.md +45 -0
- package/help/errors/full-read-required.md +49 -0
- package/help/errors/github-account-not-allowed.md +4 -0
- package/help/errors/graph-incomplete.md +43 -0
- package/help/errors/graph-limit.md +43 -0
- package/help/errors/host-provider-error.md +40 -0
- package/help/errors/host-tool-failed.md +36 -0
- package/help/errors/mcp-call-limit.md +22 -0
- package/help/errors/mcp-call-timeout.md +22 -0
- package/help/errors/mcp-server-auth-failed.md +22 -0
- package/help/errors/mcp-server-credentials-unavailable.md +45 -0
- package/help/errors/mcp-server-error.md +28 -0
- package/help/errors/mcp-server-unreachable.md +22 -0
- package/help/errors/mcp-servers-off.md +21 -0
- package/help/errors/mcp-tool-not-allowed.md +26 -0
- package/help/errors/mcp-tool-removed.md +22 -0
- package/help/errors/mcp-unavailable.md +25 -0
- package/help/errors/merge-conflict.md +49 -0
- package/help/errors/native-sandbox-capacity.md +1 -1
- package/help/errors/native-sandbox-deadline-exceeded.md +1 -1
- package/help/errors/native-sandbox-docker-failed.md +1 -1
- package/help/errors/native-sandbox-gateway-error.md +20 -0
- package/help/errors/native-sandbox-gateway-unavailable.md +1 -1
- package/help/errors/native-sandbox-image-not-pinned.md +1 -1
- package/help/errors/native-sandbox-isolation-mismatch.md +1 -1
- package/help/errors/native-sandbox-launch-abandoned.md +21 -0
- package/help/errors/native-sandbox-network-unenforced.md +1 -1
- package/help/errors/native-sandbox-requires-catalog.md +1 -1
- package/help/errors/native-sandbox-unavailable.md +1 -1
- package/help/errors/native-sandbox-warm-delivery-failed.md +1 -1
- package/help/errors/native-sandbox-worker-exited.md +4 -3
- package/help/errors/native-sandbox-worker-lost.md +1 -1
- package/help/errors/native-sandbox-worker-unready.md +1 -1
- package/help/errors/package-not-allowed-pending.md +52 -0
- package/help/errors/package-not-allowed.md +51 -0
- package/help/errors/package-refusals.md +43 -0
- package/help/errors/patch-cursor-malformed.md +31 -0
- package/help/errors/repository-not-listed.md +36 -0
- package/help/errors/repository-required.md +36 -0
- package/help/errors/run-lost.md +39 -0
- package/help/errors/run-transcript-download.md +44 -0
- package/help/errors/secret-in-value.md +69 -0
- package/help/errors/target-merge.md +40 -0
- package/help/errors/tool-timeout.md +38 -0
- package/help/fix-merge-conflicts.md +73 -0
- package/help/github-app-setup.md +132 -0
- package/help/github.md +22 -0
- package/help/host-providers.md +40 -0
- package/help/identity-and-access.md +6 -1
- package/help/jira.md +23 -6
- package/help/knowledge.md +16 -7
- package/help/local-repositories.md +1 -1
- package/help/low-power-mode.md +7 -1
- package/help/mcp-servers.md +73 -0
- package/help/mcp.md +7 -2
- package/help/merge-order-check.md +5 -0
- package/help/native-capabilities.md +55 -1
- package/help/native-sandbox.md +16 -2
- package/help/operating-agents.md +21 -0
- package/help/package-audit-mode.md +91 -0
- package/help/related-pull-requests.md +17 -10
- package/help/repo-instructions-and-skills.md +3 -1
- package/help/resume-runs-locally.md +134 -0
- package/help/review-fix-rounds.md +33 -1
- package/help/sharing-agents.md +59 -0
- package/help/slack-notifications.md +19 -5
- package/help/status-comments.md +31 -0
- package/help/stop-run.md +58 -0
- package/help/troubleshooting/budgets.md +28 -0
- package/help/troubleshooting/coding-workers.md +86 -7
- package/help/troubleshooting/debugging-agent-runs.md +29 -0
- package/package.json +18 -10
- package/prisma/migrations/20261016000000_registry_approved_accepted_advisories/migration.sql +3 -0
- package/prisma/migrations/20261016000001_mark_ready_when_passing/migration.sql +3 -0
- package/prisma/migrations/20261017000000_debug_trace_max_mb/migration.sql +4 -0
- package/prisma/migrations/20261018000000_dependency_cache/migration.sql +53 -0
- package/prisma/migrations/20261019000000_claude_max_output_tokens/migration.sql +5 -0
- package/prisma/migrations/20261021000000_pr_description_hash/migration.sql +4 -0
- package/prisma/migrations/20261022000000_dependency_snapshot_validation_metadata/migration.sql +4 -0
- package/prisma/migrations/20261023000000_package_audit_mode/migration.sql +27 -0
- package/prisma/migrations/20261024000000_budget_events/migration.sql +26 -0
- package/prisma/migrations/20261025000000_cache_aware_holds/migration.sql +9 -0
- package/prisma/migrations/20261026000000_budget_overrun/migration.sql +4 -0
- package/prisma/migrations/20261027000000_coding_run_request/migration.sql +1 -0
- package/prisma/migrations/20261028000000_native_gateway_review_reads/migration.sql +6 -0
- package/prisma/migrations/20261029000000_lead_survives_deploy/migration.sql +6 -0
- package/prisma/migrations/20261030000000_local_review_covered_sha/migration.sql +2 -0
- package/prisma/migrations/20261031000000_coding_run_budget_limit/migration.sql +9 -0
- package/prisma/migrations/20261101000000_run_transcripts/migration.sql +22 -0
- package/prisma/migrations/20261102000000_host_providers/migration.sql +56 -0
- package/prisma/migrations/20261104000000_coding_agent_repository_list/migration.sql +5 -0
- package/prisma/migrations/20261106000000_tool_timeout/migration.sql +4 -0
- package/prisma/migrations/20261107000000_mcp_servers/migration.sql +33 -0
- package/prisma/migrations/20261108000000_coding_mcp/migration.sql +5 -0
- package/prisma/migrations/20261109000000_task_run_index/migration.sql +3 -0
- package/prisma/schema.prisma +468 -109
- package/scripts/git-askpass.sh +1 -1
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +0 -5
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Private datastore wrappers must reject shared methods
|
|
4
|
+
description: Prefix restrictions on private keys cannot authorize the provider shared-store methods.
|
|
5
|
+
tags: [datastores, capabilities, isolation]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-17T08:24:27.356Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: deny
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/providers/datastore/scoped.ts#L33-L52
|
|
11
|
+
- id: wiring
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/core/runner.ts#L1368-L1388
|
|
13
|
+
- id: shared
|
|
14
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/core/datastores.ts#L119-L151
|
|
15
|
+
wardby:
|
|
16
|
+
schema: 1
|
|
17
|
+
roles: [planner, builder, reviewer]
|
|
18
|
+
affects: ["src/providers/datastore/scoped.ts", "src/core/datastores.ts", "src/core/runner.ts", "src/sandbox/**"]
|
|
19
|
+
citations:
|
|
20
|
+
- id: deny
|
|
21
|
+
repo: github:wardby/wardby
|
|
22
|
+
path: src/providers/datastore/scoped.ts
|
|
23
|
+
lines: [33, 52]
|
|
24
|
+
symbol: scopeDatastore shared methods
|
|
25
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
26
|
+
spanHash: sha256:ab019d2d34268011795717728e7d3a3f37b0e9c106c6f515b935abd4e94a8760
|
|
27
|
+
- id: wiring
|
|
28
|
+
repo: github:wardby/wardby
|
|
29
|
+
path: src/core/runner.ts
|
|
30
|
+
lines: [1368, 1388]
|
|
31
|
+
symbol: createNativeRunTools.scopedHost
|
|
32
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
33
|
+
spanHash: sha256:61bb446c6ed2a1fde4c53951680588ac75de28d6b3219eebb8ae801cd4438816
|
|
34
|
+
- id: shared
|
|
35
|
+
repo: github:wardby/wardby
|
|
36
|
+
path: src/core/datastores.ts
|
|
37
|
+
lines: [119, 151]
|
|
38
|
+
symbol: scopeSharedDatastoreAccessor
|
|
39
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
40
|
+
spanHash: sha256:508ad8dbaa811b4528d626431b84eda9dd6fe5a2929ffc6005106c9b2eb23703
|
|
41
|
+
confidence: high
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
Private and shared datastore operations originate from the same provider interface but pass through different authorization wrappers. The runner gives a tool a private prefix-scoped datastore and a separately scoped shared accessor; forwarding shared methods through the private wrapper would bypass the shared accessor's bound-name and prefix checks.[^wiring][^shared]
|
|
45
|
+
|
|
46
|
+
The private wrapper therefore rejects every shared method, including reads, even though those methods are unreachable through its current call sites. This prevents a future wiring change from silently inheriting the unscoped provider's shared-store authority.[^deny]
|
|
47
|
+
|
|
48
|
+
**What to do:** retain the rejecting shared methods when extending the provider interface. Construct shared access through its dedicated accessor instead of treating private key prefixes as a grant on shared stores. The [native capabilities guide](../../help/native-capabilities.md) describes attachment scope; this concept records the consequence at the provider boundary. See [native isolation](overview-sandbox.md) and [providers](overview-providers.md).
|
|
49
|
+
|
|
50
|
+
[^deny]: src/providers/datastore/scoped.ts, lines 33-52.
|
|
51
|
+
|
|
52
|
+
[^wiring]: src/core/runner.ts, lines 1368-1388.
|
|
53
|
+
|
|
54
|
+
[^shared]: src/core/datastores.ts, lines 119-151.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Proxy usage projections must not govern settlement
|
|
4
|
+
description: Run totals are rebuilt from settled requests while per-model reporting failures are isolated by a savepoint.
|
|
5
|
+
tags: [proxy, budgets, transactions]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-16T18:34:00.557Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: settle
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/providers/coding-proxy/prisma-ledger.ts#L274-L309
|
|
11
|
+
- id: totals
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/providers/coding-proxy/prisma-ledger.ts#L316-L369
|
|
13
|
+
wardby:
|
|
14
|
+
schema: 1
|
|
15
|
+
roles: [builder, reviewer]
|
|
16
|
+
affects: ["src/providers/coding-proxy/prisma-ledger.ts", "deploy/gke/database-grants.sql"]
|
|
17
|
+
citations:
|
|
18
|
+
- id: settle
|
|
19
|
+
repo: github:wardby/wardby
|
|
20
|
+
path: src/providers/coding-proxy/prisma-ledger.ts
|
|
21
|
+
lines: [274, 309]
|
|
22
|
+
symbol: complete
|
|
23
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
24
|
+
spanHash: sha256:1e1afa8d2b3ac5786e85308f314d76d5cb955b81a05320bad70d37ab398026d1
|
|
25
|
+
- id: totals
|
|
26
|
+
repo: github:wardby/wardby
|
|
27
|
+
path: src/providers/coding-proxy/prisma-ledger.ts
|
|
28
|
+
lines: [316, 369]
|
|
29
|
+
symbol: recomputeRunTotals
|
|
30
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
31
|
+
spanHash: sha256:f43cf2ec538c24cd65f4a454e6940007226750e06b3cb3ee6668f6ffe2b48a06
|
|
32
|
+
confidence: high
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
Completion locks the session before changing the request. Totals are assigned from completed requests and estimated uncertain requests, rather than incremented; RunModelUsage is also rebuilt, but its write runs inside a savepoint and rolls back independently on failure.[^settle][^totals]
|
|
36
|
+
|
|
37
|
+
**Why:** settling an uncertain request can replace an estimate with actual usage. Incrementing would count both, while allowing a reporting-table failure to abort the transaction would discard the authoritative settlement. Keep ledger and Run writes authoritative and the per-model projection best effort.
|
|
38
|
+
|
|
39
|
+
[^settle]: src/providers/coding-proxy/prisma-ledger.ts, lines 274-309.
|
|
40
|
+
|
|
41
|
+
[^totals]: src/providers/coding-proxy/prisma-ledger.ts, lines 316-369.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Pricing races must use the persisted winner
|
|
4
|
+
description: Concurrent native attempts must reuse the catalog terms that won the conditional pricing write.
|
|
5
|
+
tags: [pricing, concurrency, models]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-17T08:24:27.356Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: pin
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/core/run-pricing.ts#L45-L69
|
|
11
|
+
- id: adapter
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/providers/llm/routing.ts#L74-L79
|
|
13
|
+
wardby:
|
|
14
|
+
schema: 1
|
|
15
|
+
roles: [planner, builder, reviewer]
|
|
16
|
+
affects: ["src/core/run-pricing.ts", "src/providers/llm/routing.ts", "src/core/runner.ts"]
|
|
17
|
+
citations:
|
|
18
|
+
- id: pin
|
|
19
|
+
repo: github:wardby/wardby
|
|
20
|
+
path: src/core/run-pricing.ts
|
|
21
|
+
lines: [45, 69]
|
|
22
|
+
symbol: pinNativeRunPricing
|
|
23
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
24
|
+
spanHash: sha256:ceb81fd7d2aa2c29b19b333e93f3838a002aa45498f2b90f6d1aca1f6aed0385
|
|
25
|
+
- id: adapter
|
|
26
|
+
repo: github:wardby/wardby
|
|
27
|
+
path: src/providers/llm/routing.ts
|
|
28
|
+
lines: [74, 79]
|
|
29
|
+
symbol: RoutingLlmProvider.forRun
|
|
30
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
31
|
+
spanHash: sha256:5511b7ed50630042519c07b0ef699eaa44cf10951933aeb1db69434f5160f278
|
|
32
|
+
confidence: high
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
[Model guidance](../models.md) already describes retaining a run's original catalog terms. The additional concurrency consequence is that two attempts can resolve different live entries before either pins the run. Pricing is written only while pricingVersion is null; an attempt that loses that write reads the stored terms back rather than using its local resolution.[^pin]
|
|
36
|
+
|
|
37
|
+
The router can bind an adapter to the stored entry, so request shaping and prices stay coupled to the same terms.[^adapter]
|
|
38
|
+
|
|
39
|
+
**What to do:** preserve both the conditional write and read-back when refactoring load or resume paths. An unconditional update can reprice an active run; ignoring the winning row can make an attempt's provider behavior disagree with durable accounting. See [core execution](overview-core.md).
|
|
40
|
+
|
|
41
|
+
[^pin]: src/core/run-pricing.ts, lines 45-69.
|
|
42
|
+
|
|
43
|
+
[^adapter]: src/providers/llm/routing.ts, lines 74-79.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Schedule deduplication belongs to the transaction
|
|
4
|
+
description: A scheduler lease cannot replace the atomic schedule-window claim and run creation.
|
|
5
|
+
tags: [scheduling, concurrency]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-15T10:22:57.651Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: claim
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/9c0f910f919dec4f1a2149bae78612cda41f6007/src/core/scheduler.ts#L50-L82
|
|
11
|
+
- id: lock
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/core/dispatch.ts#L667-L684
|
|
13
|
+
wardby:
|
|
14
|
+
schema: 1
|
|
15
|
+
roles: [builder, reviewer, planner]
|
|
16
|
+
affects: ["src/core/scheduler.ts", "src/core/dispatch.ts"]
|
|
17
|
+
citations:
|
|
18
|
+
- id: claim
|
|
19
|
+
repo: github:wardby/wardby
|
|
20
|
+
path: src/core/scheduler.ts
|
|
21
|
+
lines: [50, 82]
|
|
22
|
+
symbol: claimDueRun
|
|
23
|
+
sha: 9c0f910f919dec4f1a2149bae78612cda41f6007
|
|
24
|
+
spanHash: sha256:1464539e5b1ac8acf09d9869aaab0fd7ce71ff9647384366537280c850de7b89
|
|
25
|
+
- id: lock
|
|
26
|
+
repo: github:wardby/wardby
|
|
27
|
+
path: src/core/dispatch.ts
|
|
28
|
+
lines: [667, 684]
|
|
29
|
+
symbol: dispatchRun
|
|
30
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
31
|
+
spanHash: sha256:88f506bcf07c8b1df9dfd039c4a694fbdd658c9d93948eab6db9575626af0515
|
|
32
|
+
confidence: high
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
The scheduler rechecks the due window under an agent row lock, advances `lastScheduledAt`, and creates the run in the same dispatch transaction.[^claim][^lock]
|
|
36
|
+
|
|
37
|
+
**Why:** the lease coordinates ticking processes, but cannot prevent overlapping claims within a process. Moving the schedule advance outside the transaction can consume a window without a run or admit the same window twice. Keep the claim and persistence together.
|
|
38
|
+
|
|
39
|
+
[^claim]: src/core/scheduler.ts, lines 50-82.
|
|
40
|
+
|
|
41
|
+
[^lock]: src/core/dispatch.ts, lines 667-684.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Secret entry replicas must share token verification
|
|
4
|
+
description: A shared outcome database cannot complete a secret-entry round trip when replicas use independent signing keys.
|
|
5
|
+
tags: [mcp, secrets, configuration]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-15T11:18:44.473Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: key
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/0cd83fece6e5dafbb229aee4c293953e354cb42d/src/mcp/server.ts#L139-L155
|
|
11
|
+
- id: codec
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/0cd83fece6e5dafbb229aee4c293953e354cb42d/src/mcp/server.ts#L191-L202
|
|
13
|
+
- id: outcome
|
|
14
|
+
url: https://github.com/wardby/wardby/blob/0cd83fece6e5dafbb229aee4c293953e354cb42d/src/mcp/tools/secret-elicitation.ts#L79-L104
|
|
15
|
+
wardby:
|
|
16
|
+
schema: 1
|
|
17
|
+
roles: [builder, reviewer]
|
|
18
|
+
affects: ["src/mcp/server.ts", "src/mcp/tools/secret-elicitation*"]
|
|
19
|
+
citations:
|
|
20
|
+
- id: key
|
|
21
|
+
repo: github:wardby/wardby
|
|
22
|
+
path: src/mcp/server.ts
|
|
23
|
+
lines: [139, 155]
|
|
24
|
+
symbol: loadRequestStateKey
|
|
25
|
+
sha: 0cd83fece6e5dafbb229aee4c293953e354cb42d
|
|
26
|
+
spanHash: sha256:09a8e266ca81faa6a3af750f87ab4b7892dba80a2fde187a3af16df22e3e8aa9
|
|
27
|
+
- id: codec
|
|
28
|
+
repo: github:wardby/wardby
|
|
29
|
+
path: src/mcp/server.ts
|
|
30
|
+
lines: [191, 202]
|
|
31
|
+
symbol: buildMcpServer
|
|
32
|
+
sha: 0cd83fece6e5dafbb229aee4c293953e354cb42d
|
|
33
|
+
spanHash: sha256:32779f2edf44c96fb4b295df8feceecaf9f9034c67513ac7074ad6423abf766b
|
|
34
|
+
- id: outcome
|
|
35
|
+
repo: github:wardby/wardby
|
|
36
|
+
path: src/mcp/tools/secret-elicitation.ts
|
|
37
|
+
lines: [79, 104]
|
|
38
|
+
symbol: recordOutcome
|
|
39
|
+
sha: 0cd83fece6e5dafbb229aee4c293953e354cb42d
|
|
40
|
+
spanHash: sha256:1733171e7240fc8f206a4c0b3a4e45a4e587c252a9f72e0a2d8fc25f2ceae9fd
|
|
41
|
+
confidence: high
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
Secret entry can mint a link, accept the browser submission, and poll the result on different HTTP replicas. Outcomes are stored in Postgres, but request-state verification still requires the same signing key on those replicas: `REQUEST_STATE_KEY` when set, otherwise a key each HTTP replica derives from the `SECRET_APP_KEY` they share (a stdio server keeps a random key of its own).[^key][^codec][^outcome]
|
|
45
|
+
|
|
46
|
+
**What to do:** preserve both shared verification and shared outcome storage when scaling this flow. Database sharing alone leaves browser links unverifiable on another replica. [Secrets and tools](../tool-secrets.md) already describes browser entry; this concept records the replica contract.
|
|
47
|
+
|
|
48
|
+
[^key]: src/mcp/server.ts, lines 139-155.
|
|
49
|
+
|
|
50
|
+
[^codec]: src/mcp/server.ts, lines 191-202.
|
|
51
|
+
|
|
52
|
+
[^outcome]: src/mcp/tools/secret-elicitation.ts, lines 79-104.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Terminal run state belongs to the first writer
|
|
4
|
+
description: Run completion must conditionally write pending or running rows and read back the persisted winner.
|
|
5
|
+
tags: [execution, recovery, concurrency]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-15T10:22:57.651Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: states
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/core/runner.ts#L460-L472
|
|
11
|
+
- id: finish
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/core/runner.ts#L499-L516
|
|
13
|
+
wardby:
|
|
14
|
+
schema: 1
|
|
15
|
+
roles: [builder, reviewer, planner]
|
|
16
|
+
affects: ["src/core/runner.ts", "src/core/reconciler.ts", "src/core/dispatch.ts"]
|
|
17
|
+
citations:
|
|
18
|
+
- id: states
|
|
19
|
+
repo: github:wardby/wardby
|
|
20
|
+
path: src/core/runner.ts
|
|
21
|
+
lines: [460, 472]
|
|
22
|
+
symbol: DRIVABLE
|
|
23
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
24
|
+
spanHash: sha256:77bd85d5b8025e9319afba8477923d068afa0e9bfaea46be28d68b2c41996e7b
|
|
25
|
+
- id: finish
|
|
26
|
+
repo: github:wardby/wardby
|
|
27
|
+
path: src/core/runner.ts
|
|
28
|
+
lines: [499, 516]
|
|
29
|
+
symbol: finishRunClaimed
|
|
30
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
31
|
+
spanHash: sha256:258b0ccb1bf328fef95a5e459858eb3f02ecc3d600f6ff4a7aae562a6416936c
|
|
32
|
+
confidence: high
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
`finishRunClaimed` restricts its update to pending or running rows, then reads the stored run even when its update lost the race.[^states][^finish] The step-ownership behavior is already described in [Durable executor](../security-deployment.md#durable-executor); this contract covers the terminal database write and its return value.
|
|
36
|
+
|
|
37
|
+
**What to do:** preserve the status predicate and read-back when adding completion paths. An unconditional write can overwrite a completed or lost run; returning a locally assembled result can report an outcome that never became authoritative.
|
|
38
|
+
|
|
39
|
+
[^states]: src/core/runner.ts, lines 460-472.
|
|
40
|
+
|
|
41
|
+
[^finish]: src/core/runner.ts, lines 499-516.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Agent authorization must share the mutation transaction
|
|
4
|
+
description: Using the default access client inside a transaction disconnects grant reads from mutation isolation.
|
|
5
|
+
tags: [access, transactions]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-15T10:20:14.397Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: access
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/9c0f910f919dec4f1a2149bae78612cda41f6007/src/mcp/auth/access.ts#L47-L70
|
|
11
|
+
- id: mutation
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/mcp/tools/agents.ts#L847-L857
|
|
13
|
+
- id: isolation
|
|
14
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/mcp/tools/agents.ts#L975-L985
|
|
15
|
+
wardby:
|
|
16
|
+
schema: 1
|
|
17
|
+
roles: [builder, reviewer]
|
|
18
|
+
affects: ["src/mcp/auth/**", "src/mcp/tools/**"]
|
|
19
|
+
citations:
|
|
20
|
+
- id: access
|
|
21
|
+
repo: github:wardby/wardby
|
|
22
|
+
path: src/mcp/auth/access.ts
|
|
23
|
+
lines: [47, 70]
|
|
24
|
+
symbol: assertAgentAccess
|
|
25
|
+
sha: 9c0f910f919dec4f1a2149bae78612cda41f6007
|
|
26
|
+
spanHash: sha256:04c8d3accf60339956706f501fbf628ae620e8f368bd93c20825f6ef4f915cbb
|
|
27
|
+
- id: mutation
|
|
28
|
+
repo: github:wardby/wardby
|
|
29
|
+
path: src/mcp/tools/agents.ts
|
|
30
|
+
lines: [847, 857]
|
|
31
|
+
symbol: update_agent
|
|
32
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
33
|
+
spanHash: sha256:f6b5789fc562f8de5ad3e905513cd239c4ac447229ee1ee6bf4378cadffaeaa6
|
|
34
|
+
- id: isolation
|
|
35
|
+
repo: github:wardby/wardby
|
|
36
|
+
path: src/mcp/tools/agents.ts
|
|
37
|
+
lines: [975, 985]
|
|
38
|
+
symbol: update_agent
|
|
39
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
40
|
+
spanHash: sha256:d3c25b8684e11ec56311649d617f6e933d380d4d063257e2f21804f502b2b832
|
|
41
|
+
confidence: high
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
The access helpers default to `ctx.db`; callers inside a mutation transaction must explicitly pass `tx` so grant reads participate in the same isolation boundary.[^access] Agent updates re-check write access through `tx` and commit under Serializable isolation.[^mutation][^isolation]
|
|
45
|
+
|
|
46
|
+
**Why:** checking access only before a mutation, or using the default client within it, lets a concurrent grant revocation escape the transaction’s conflict detection. The operator-facing revocation behavior is described in [Security deployment, Sharing agents](../security-deployment.md); this concept records the transaction contract behind that behavior.
|
|
47
|
+
|
|
48
|
+
[^access]: src/mcp/auth/access.ts, lines 47-70.
|
|
49
|
+
|
|
50
|
+
[^mutation]: src/mcp/tools/agents.ts, lines 847-857.
|
|
51
|
+
|
|
52
|
+
[^isolation]: src/mcp/tools/agents.ts, lines 975-985.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Viewer notifications must not abort authoritative writes
|
|
4
|
+
description: The viewer trigger contains notification errors so event delivery cannot fail run persistence.
|
|
5
|
+
tags: [database, viewer, observability]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-16T18:34:00.557Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: notify
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/prisma/migrations/20261003030000_viewer_notify_fixes/migration.sql#L1-L47
|
|
11
|
+
wardby:
|
|
12
|
+
schema: 1
|
|
13
|
+
roles: [builder, reviewer]
|
|
14
|
+
affects: ["prisma/migrations/**", "src/viewer/**"]
|
|
15
|
+
citations:
|
|
16
|
+
- id: notify
|
|
17
|
+
repo: github:wardby/wardby
|
|
18
|
+
path: prisma/migrations/20261003030000_viewer_notify_fixes/migration.sql
|
|
19
|
+
lines: [1, 47]
|
|
20
|
+
symbol: wardby_viewer_notify
|
|
21
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
22
|
+
spanHash: sha256:8c16b83ca66d420cd0ccc5824e496625baa8ebc6b1010a0721e4ac36d6419b93
|
|
23
|
+
confidence: high
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
The trigger formats the already-UTC timestamp without time-zone conversion and catches errors around pg_notify, including oversized payload failures. Its notification is a projection of the write, not a prerequisite for it.[^notify]
|
|
27
|
+
|
|
28
|
+
**What to do:** preserve the exception boundary when changing event payloads. [Viewer API](../viewer-api.md) already documents resynchronizing after stream gaps; this concept records the database consequence: viewer delivery must never roll back the write it observes.
|
|
29
|
+
|
|
30
|
+
[^notify]: prisma/migrations/20261003030000_viewer_notify_fixes/migration.sql, lines 1-47.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Warm input publication must refuse replacement
|
|
4
|
+
description: Atomic visibility alone is insufficient when one warm worker may receive its capability only once.
|
|
5
|
+
tags: [native, isolation, workers]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-16T18:34:00.557Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: publish
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be/src/native-worker/warm-delivery.ts#L19-L36
|
|
11
|
+
wardby:
|
|
12
|
+
schema: 1
|
|
13
|
+
roles: [builder, reviewer]
|
|
14
|
+
affects: ["src/native-worker/warm-delivery.ts", "src/native-worker/main.ts"]
|
|
15
|
+
citations:
|
|
16
|
+
- id: publish
|
|
17
|
+
repo: github:wardby/wardby
|
|
18
|
+
path: src/native-worker/warm-delivery.ts
|
|
19
|
+
lines: [19, 36]
|
|
20
|
+
symbol: warmDeliveryCommand
|
|
21
|
+
sha: 744d27eb926ccf7eafe52c98ac2af7f9bcd5c1be
|
|
22
|
+
spanHash: sha256:cfb11a192eec28b8296f9e7d56d79dd9b70c2aae4f57ef888c7e4173e1f1219b
|
|
23
|
+
confidence: high
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
Warm delivery writes stdin to an exclusive temporary file, then hard-links it to the input filename. Unlike rename, the link cannot replace an input already published by another delivery.[^publish]
|
|
27
|
+
|
|
28
|
+
**What to do:** retain both complete-file visibility and no-replacement semantics. [Native sandbox, claim isolation](../native-sandbox.md#how-claims-keep-the-isolation-guarantees) already documents single-use workers and capability delivery over stdin; this is the file-publication consequence of that contract.
|
|
29
|
+
|
|
30
|
+
[^publish]: src/native-worker/warm-delivery.ts, lines 19-36.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: invariant
|
|
3
|
+
title: Failed workspace fills must remain untrusted
|
|
4
|
+
description: Collection failure must not expose a partially materialized worker tree to validation or trusted replacement.
|
|
5
|
+
tags: [coding, collection, isolation]
|
|
6
|
+
status: stable
|
|
7
|
+
generated: { by: wardby-architect/gpt-6.1-sol, at: 2026-10-17T08:24:27.356Z }
|
|
8
|
+
sources:
|
|
9
|
+
- id: swap
|
|
10
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/providers/jobs/workspace-swap.ts#L16-L51
|
|
11
|
+
- id: docker
|
|
12
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/providers/jobs/docker.ts#L385-L400
|
|
13
|
+
- id: kubernetes
|
|
14
|
+
url: https://github.com/wardby/wardby/blob/f4ac917fb05fd1118053462c98379c51289fed46/src/providers/jobs/kubernetes.ts#L738-L750
|
|
15
|
+
wardby:
|
|
16
|
+
schema: 1
|
|
17
|
+
roles: [planner, builder, reviewer]
|
|
18
|
+
affects: ["src/providers/jobs/workspace-swap.ts", "src/providers/jobs/docker.ts", "src/providers/jobs/kubernetes.ts"]
|
|
19
|
+
citations:
|
|
20
|
+
- id: swap
|
|
21
|
+
repo: github:wardby/wardby
|
|
22
|
+
path: src/providers/jobs/workspace-swap.ts
|
|
23
|
+
lines: [16, 51]
|
|
24
|
+
symbol: replaceDirectoryFromStaging
|
|
25
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
26
|
+
spanHash: sha256:0d7e951e15553a190b064604ec72c49998f79ebff84b8983aae37b212cc56069
|
|
27
|
+
- id: docker
|
|
28
|
+
repo: github:wardby/wardby
|
|
29
|
+
path: src/providers/jobs/docker.ts
|
|
30
|
+
lines: [385, 400]
|
|
31
|
+
symbol: DockerJobLauncher.materializeWorkspace
|
|
32
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
33
|
+
spanHash: sha256:3e9525156cbd3c0791e79ff7ce86b16c92b0d62d8acc92a104b604fc6f54c08f
|
|
34
|
+
- id: kubernetes
|
|
35
|
+
repo: github:wardby/wardby
|
|
36
|
+
path: src/providers/jobs/kubernetes.ts
|
|
37
|
+
lines: [738, 750]
|
|
38
|
+
symbol: KubernetesJobLauncher.materializeWorkspace
|
|
39
|
+
sha: f4ac917fb05fd1118053462c98379c51289fed46
|
|
40
|
+
spanHash: sha256:44a85cadf23fdb1d77c0f4e1738873327756c029ce114c4efb47276d18abac84
|
|
41
|
+
confidence: high
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
Both job launchers materialize collected worker content through a sibling staging directory. Only a successful fill proceeds to validation and replacement of the trusted workspace; a rejected fill can leave escaping symlinks and must go straight to removal without walking that tree.[^swap][^docker][^kubernetes]
|
|
45
|
+
|
|
46
|
+
The swap keeps the original workspace until filling and validation succeed, then uses a backup during renames. Failure after moving the original attempts to restore it before cleanup; restoration is best effort, so this is not a crash-safe transaction.[^swap]
|
|
47
|
+
|
|
48
|
+
**What to do:** keep fill, validation and replacement in that order. Never catch a collection error and continue validating or publishing the partial tree. Preserve cleanup that unlinks symlinks rather than traversing them. This complements [descriptor-bound reads](bounded-file-descriptor.md) at the directory boundary; see [coding execution](overview-coding.md).
|
|
49
|
+
|
|
50
|
+
[^swap]: src/providers/jobs/workspace-swap.ts, lines 16-51.
|
|
51
|
+
|
|
52
|
+
[^docker]: src/providers/jobs/docker.ts, lines 385-400.
|
|
53
|
+
|
|
54
|
+
[^kubernetes]: src/providers/jobs/kubernetes.ts, lines 738-750.
|
package/docs/knowledge.md
CHANGED
|
@@ -21,7 +21,43 @@ docs/knowledge/
|
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
`index.md` and `log.md` are reserved names and are never concepts. The default
|
|
24
|
-
bundle path is `docs/knowledge
|
|
24
|
+
bundle path is `docs/knowledge`; a repository can choose another folder (see
|
|
25
|
+
[Where the bundle lives](#where-the-bundle-lives)).
|
|
26
|
+
|
|
27
|
+
## Where the bundle lives
|
|
28
|
+
|
|
29
|
+
Wardby itself reads the bundle in three places: the knowledge note it adds to
|
|
30
|
+
every coding run, the merge watcher's drift scoping, and `wardby knowledge
|
|
31
|
+
check`. For those, it uses the first of these that applies:
|
|
32
|
+
|
|
33
|
+
1. **`.wardby/knowledge.yaml` on the branch names a folder.** The file has one
|
|
34
|
+
key:
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
path: .okf
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`path` is a folder relative to the repository root (a leading `./` and a
|
|
41
|
+
trailing `/` are ignored). It may not be absolute, contain `..`, or point
|
|
42
|
+
into `.wardby/` or `.git/`.
|
|
43
|
+
|
|
44
|
+
2. **Otherwise, `docs/knowledge/`.** This is also used when
|
|
45
|
+
`.wardby/knowledge.yaml` cannot be used (invalid YAML, an unknown key, or a
|
|
46
|
+
path that breaks the rules above): Wardby logs a warning and falls back to
|
|
47
|
+
`docs/knowledge/`, and `wardby knowledge check` reports
|
|
48
|
+
`knowledge_config_invalid`. A bad file never fails a run or a dispatch.
|
|
49
|
+
|
|
50
|
+
3. **No bundle at either place.** Wardby adds no knowledge note and the merge
|
|
51
|
+
watcher finds no concepts. Your agents can still keep knowledge in any folder
|
|
52
|
+
you like: say where in their system prompts or in `AGENTS.md`, and they read
|
|
53
|
+
and write it there. You give up only the automatic note and drift scoping on
|
|
54
|
+
merge; a scheduled architecture agent still re-verifies every citation on
|
|
55
|
+
its next run.
|
|
56
|
+
|
|
57
|
+
Coding runs cannot change `.wardby/knowledge.yaml` (everything under `.wardby/`
|
|
58
|
+
except `.wardby/services.yaml` is protected), so a person sets it, in a normal
|
|
59
|
+
commit. Prompts that name the bundle folder, such as the architecture agent's
|
|
60
|
+
below, should use the folder you chose.
|
|
25
61
|
|
|
26
62
|
## Concept format
|
|
27
63
|
|
|
@@ -108,7 +144,9 @@ The `spanHash` above is a placeholder; compute the real one from the cited lines
|
|
|
108
144
|
|
|
109
145
|
## How coding runs use the bundle
|
|
110
146
|
|
|
111
|
-
When `
|
|
147
|
+
When the bundle's `index.md` (in `docs/knowledge/`, or the folder
|
|
148
|
+
[`.wardby/knowledge.yaml`](#where-the-bundle-lives) names) exists on the run's
|
|
149
|
+
base branch, Wardby adds a
|
|
112
150
|
knowledge note to the coding run's task automatically. The note tells the agent
|
|
113
151
|
that the knowledge is recalled context rather than authority (the repository's
|
|
114
152
|
own instructions, such as `AGENTS.md`, win on conflict), includes the index, and
|
|
@@ -116,8 +154,8 @@ asks the agent to read the concepts covering files it will touch and to update a
|
|
|
116
154
|
concept's prose if its change alters the behavior the concept describes.
|
|
117
155
|
|
|
118
156
|
- The note is capped at 8 KiB. When the index does not fit it is cut at a line
|
|
119
|
-
boundary and
|
|
120
|
-
is added. The note always ends with an `[end of architecture knowledge]` line.
|
|
157
|
+
boundary and an `[index truncated — list <bundle folder>/ for the rest]`
|
|
158
|
+
marker is added. The note always ends with an `[end of architecture knowledge]` line.
|
|
121
159
|
- It is dropped when the task leaves no room for it.
|
|
122
160
|
- It never fails or changes a dispatch: an unreadable or oversized index, or any
|
|
123
161
|
problem reading the branch, simply means no note.
|
|
@@ -138,21 +176,23 @@ Anything that writes citations must take the `sha` value from this line.
|
|
|
138
176
|
wardby knowledge check [dir] [--root <repo root>] [--strict] [--json]
|
|
139
177
|
```
|
|
140
178
|
|
|
141
|
-
`dir` defaults to
|
|
179
|
+
`dir` defaults to the folder `.wardby/knowledge.yaml` under `--root` names, else
|
|
180
|
+
`docs/knowledge`, and `--root` to the current directory;
|
|
142
181
|
citation paths resolve against `--root`. The command prints one line per issue
|
|
143
182
|
(`<severity> <code> <file>: <message>`) and a summary. It exits 1 when there is
|
|
144
183
|
any error, or, with `--strict`, any warning. `--json` prints
|
|
145
184
|
`{ "issues": [...] }` instead.
|
|
146
185
|
|
|
147
|
-
| Code
|
|
148
|
-
|
|
|
149
|
-
| `concept_invalid`
|
|
150
|
-
| `concept_secret`
|
|
151
|
-
| `index_missing`
|
|
152
|
-
| `index_link_broken`
|
|
153
|
-
| `concept_not_indexed`
|
|
154
|
-
| `citation_unverifiable`
|
|
155
|
-
| `citation_stale`
|
|
186
|
+
| Code | Severity | Meaning | Fix |
|
|
187
|
+
| -------------------------- | -------- | --------------------------------------------------------------------------------- | -------------------------------------------------- |
|
|
188
|
+
| `concept_invalid` | error | Front-matter is missing, is not valid YAML, or fails the schema | Fix the field the message names |
|
|
189
|
+
| `concept_secret` | error | The file contains a secret-shaped value | Remove it and rotate the credential |
|
|
190
|
+
| `index_missing` | error | The bundle has no root `index.md` | Create it |
|
|
191
|
+
| `index_link_broken` | error | An index links to a file that does not exist | Fix or remove the link |
|
|
192
|
+
| `concept_not_indexed` | warning | A concept is not linked from any `index.md` | Add its line to the index |
|
|
193
|
+
| `citation_unverifiable` | warning | The cited file is missing or the lines are out of range | Re-anchor the citation, or deprecate the concept |
|
|
194
|
+
| `citation_stale` | warning | The cited span no longer matches `spanHash` | Re-read the code, update the claim, then re-anchor |
|
|
195
|
+
| `knowledge_config_invalid` | error | `.wardby/knowledge.yaml` cannot be used, so `docs/knowledge/` was checked instead | Fix the file as the message says |
|
|
156
196
|
|
|
157
197
|
Use plain `wardby knowledge check` while editing and `--strict` for the agent or
|
|
158
198
|
CI job that maintains the bundle.
|