@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
package/dist/import/create.js
CHANGED
|
@@ -3,12 +3,18 @@
|
|
|
3
3
|
* attachments, secrets, datastores, webhooks, budget groups) to the database
|
|
4
4
|
* from a validated bundle + reconciliation.
|
|
5
5
|
*/
|
|
6
|
+
import { toolTimeoutProblem } from "../sandbox/tool-timeout.js";
|
|
7
|
+
import { loadToolMaxTimeoutMs } from "../config/tool-timeout.js";
|
|
6
8
|
import { Prisma } from "#prisma";
|
|
9
|
+
import { scheduleStartFields } from "../core/schedule-start.js";
|
|
7
10
|
import { createSecret, attachSecret } from "../core/secrets.js";
|
|
8
11
|
import { createDatastore, attachDatastore } from "../core/datastores.js";
|
|
12
|
+
import { guardDatastore } from "../core/secret-guarded-stores.js";
|
|
13
|
+
import { SecretCheckUnavailableError, SecretInValueError, createDbSecretWriteGuard, loadAgentSecretValues, secretNamesIn, } from "../core/secret-guard.js";
|
|
9
14
|
import { createWebhook } from "../core/webhooks.js";
|
|
10
15
|
import { deriveJsonSchema } from "../sandbox/zod-params.js";
|
|
11
|
-
import {
|
|
16
|
+
import { toolSubject, zod3ToolWarnings } from "../core/zod3-window.js";
|
|
17
|
+
import { findSameNamedAttachedTool, findSameNamedMcpTool, reservedToolNameReason } from "../core/tool-names.js";
|
|
12
18
|
import { ToolCapabilitiesPatchSchema, FETCH_WILDCARD } from "../sandbox/tool-capabilities.js";
|
|
13
19
|
import { PostgresDatastore } from "../providers/datastore/postgres.js";
|
|
14
20
|
import { decryptTransferEnvelope } from "../providers/secrets/transfer-envelope.js";
|
|
@@ -24,6 +30,10 @@ function nativeSandboxConfigured() {
|
|
|
24
30
|
return false;
|
|
25
31
|
}
|
|
26
32
|
}
|
|
33
|
+
/** A seeded entry's key for a warning; withheld when the entry was refused over a secret (the key may hold it). */
|
|
34
|
+
function seedKeyLabel(key, err) {
|
|
35
|
+
return err instanceof SecretInValueError || err instanceof SecretCheckUnavailableError ? "<key withheld>" : key;
|
|
36
|
+
}
|
|
27
37
|
export async function createFromBundle(bundle, recon, opts) {
|
|
28
38
|
const { db, cipher, ownerId, secretMode, transferPrivateKey, allowOpenFetch } = opts;
|
|
29
39
|
const agentOwnerId = opts.agentOwnerId === undefined ? ownerId : opts.agentOwnerId;
|
|
@@ -62,6 +72,13 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
62
72
|
warnings.push(`tool ${t.name}: failed to derive JSON schema, skipping`);
|
|
63
73
|
continue;
|
|
64
74
|
}
|
|
75
|
+
const timeoutProblem = t.timeoutMs === undefined || t.timeoutMs === null
|
|
76
|
+
? undefined
|
|
77
|
+
: toolTimeoutProblem(t.timeoutMs, loadToolMaxTimeoutMs());
|
|
78
|
+
if (timeoutProblem) {
|
|
79
|
+
warnings.push(`tool ${t.name}: ${timeoutProblem} Skipping`);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
65
82
|
// Names are unique per owner: reuse the target owner's own same-named
|
|
66
83
|
// tool (what upsert-by-name used to do), never another owner's. A
|
|
67
84
|
// compound unique with a nullable column can't key an upsert, hence
|
|
@@ -75,9 +92,12 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
75
92
|
code: t.code,
|
|
76
93
|
jsonSchema: schema.value,
|
|
77
94
|
ownerId,
|
|
95
|
+
...(t.timeoutMs !== undefined && t.timeoutMs !== null ? { timeoutMs: t.timeoutMs } : {}),
|
|
78
96
|
},
|
|
79
97
|
}));
|
|
80
98
|
toolIdMap.set(t.name, tool.id);
|
|
99
|
+
if (tool.paramsZod === t.paramsZod)
|
|
100
|
+
warnings.push(...(await zod3ToolWarnings(toolSubject(tool.name), t.paramsZod)));
|
|
81
101
|
toolsCreated++;
|
|
82
102
|
}
|
|
83
103
|
// Step 2: Agents
|
|
@@ -100,6 +120,11 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
100
120
|
timezone: a.timezone,
|
|
101
121
|
maxTurns: a.maxTurns,
|
|
102
122
|
scheduleEnabled,
|
|
123
|
+
...(await scheduleStartFields(db, null, {
|
|
124
|
+
schedule: a.schedule || null,
|
|
125
|
+
timezone: a.timezone,
|
|
126
|
+
scheduleEnabled,
|
|
127
|
+
})),
|
|
103
128
|
ownerId: agentOwnerId,
|
|
104
129
|
...(a.nativeExecutionMode
|
|
105
130
|
? { nativeExecutionMode: a.nativeExecutionMode === "sandbox" ? "sandbox" : "control_plane" }
|
|
@@ -165,6 +190,11 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
165
190
|
warnings.push(`agent-tool ${at.agentName}/${at.toolName}: skipped — the agent already has a different tool with the same name (${clash.id})`);
|
|
166
191
|
continue;
|
|
167
192
|
}
|
|
193
|
+
const mcpClash = await findSameNamedMcpTool(db, agentId, eff(at.toolName));
|
|
194
|
+
if (mcpClash) {
|
|
195
|
+
warnings.push(`agent-tool ${at.agentName}/${at.toolName}: skipped — the agent already has a tool with this name from MCP server "${mcpClash.serverName}"`);
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
168
198
|
const caps = capsPatch.data;
|
|
169
199
|
// The importing operator is trusted with the database, so on an agent
|
|
170
200
|
// this import owns it grants the bundle's capabilities in the owner's
|
|
@@ -259,7 +289,7 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
259
289
|
}
|
|
260
290
|
}
|
|
261
291
|
// Step 6: Per-agent datastore seed
|
|
262
|
-
const ds = new PostgresDatastore(db, cipher);
|
|
292
|
+
const ds = guardDatastore(new PostgresDatastore(db, cipher), createDbSecretWriteGuard(db, cipher));
|
|
263
293
|
for (const d of bundle.readSingleDatastores()) {
|
|
264
294
|
const agentId = agentIdMap.get(d.agentName);
|
|
265
295
|
if (!agentId)
|
|
@@ -270,7 +300,7 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
270
300
|
datastoreEntries++;
|
|
271
301
|
}
|
|
272
302
|
catch (err) {
|
|
273
|
-
warnings.push(`datastore ${d.agentName}/${entry.key}: failed to set (${err instanceof Error ? err.message : String(err)})`);
|
|
303
|
+
warnings.push(`datastore ${d.agentName}/${seedKeyLabel(entry.key, err)}: failed to set (${err instanceof Error ? err.message : String(err)})`);
|
|
274
304
|
}
|
|
275
305
|
}
|
|
276
306
|
}
|
|
@@ -283,6 +313,10 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
283
313
|
}
|
|
284
314
|
else {
|
|
285
315
|
const owner = ownerId; // hasOwner guarantees non-null
|
|
316
|
+
// The import is one writer for shared seeds: check them against the secrets
|
|
317
|
+
// of every agent it created, loaded once and fail closed if unreadable.
|
|
318
|
+
let importedSecrets;
|
|
319
|
+
const loadImportedSecrets = () => (importedSecrets ??= Promise.all([...agentIdMap.values()].map((id) => loadAgentSecretValues(db, cipher, id))).then((all) => all.flat()));
|
|
286
320
|
for (const sd of bundle.readSharedDatastores()) {
|
|
287
321
|
let created;
|
|
288
322
|
try {
|
|
@@ -302,12 +336,22 @@ export async function createFromBundle(bundle, recon, opts) {
|
|
|
302
336
|
datastoresSharedCreated++;
|
|
303
337
|
for (const entry of sd.entries) {
|
|
304
338
|
try {
|
|
339
|
+
let named;
|
|
340
|
+
try {
|
|
341
|
+
named = await loadImportedSecrets();
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
throw new SecretCheckUnavailableError();
|
|
345
|
+
}
|
|
346
|
+
const names = secretNamesIn([entry.key, entry.value], named);
|
|
347
|
+
if (names.length > 0)
|
|
348
|
+
throw new SecretInValueError(names);
|
|
305
349
|
await db.datastoreEntry.create({
|
|
306
350
|
data: { datastoreId: created.id, key: entry.key, value: entry.value, pii: false },
|
|
307
351
|
});
|
|
308
352
|
}
|
|
309
353
|
catch (err) {
|
|
310
|
-
warnings.push(`shared-datastore ${sd.name}/${entry.key}: failed to seed (${err instanceof Error ? err.message : String(err)})`);
|
|
354
|
+
warnings.push(`shared-datastore ${sd.name}/${seedKeyLabel(entry.key, err)}: failed to seed (${err instanceof Error ? err.message : String(err)})`);
|
|
311
355
|
}
|
|
312
356
|
}
|
|
313
357
|
for (const agentName of sd.attachedAgentNames) {
|
|
@@ -6,83 +6,38 @@ export declare const CiphertextSchema: z.ZodObject<{
|
|
|
6
6
|
nonce: z.ZodString;
|
|
7
7
|
ct: z.ZodString;
|
|
8
8
|
tag: z.ZodString;
|
|
9
|
-
},
|
|
10
|
-
tag: string;
|
|
11
|
-
alg: string;
|
|
12
|
-
v: number;
|
|
13
|
-
epk: string;
|
|
14
|
-
nonce: string;
|
|
15
|
-
ct: string;
|
|
16
|
-
}, {
|
|
17
|
-
tag: string;
|
|
18
|
-
alg: string;
|
|
19
|
-
v: number;
|
|
20
|
-
epk: string;
|
|
21
|
-
nonce: string;
|
|
22
|
-
ct: string;
|
|
23
|
-
}>;
|
|
9
|
+
}, z.core.$strip>;
|
|
24
10
|
export declare const ManifestSchema: z.ZodObject<{
|
|
25
11
|
bundleVersion: z.ZodNumber;
|
|
26
12
|
source: z.ZodObject<{
|
|
27
13
|
product: z.ZodString;
|
|
28
14
|
exporterVersion: z.ZodString;
|
|
29
15
|
exportedAt: z.ZodString;
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}, {
|
|
35
|
-
product: string;
|
|
36
|
-
exporterVersion: string;
|
|
37
|
-
exportedAt: string;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
secretMode: z.ZodEnum<{
|
|
18
|
+
references: "references";
|
|
19
|
+
envelope: "envelope";
|
|
38
20
|
}>;
|
|
39
|
-
secretMode: z.ZodEnum<["references", "envelope"]>;
|
|
40
21
|
transferKeyId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
41
22
|
contentWindowDays: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
42
23
|
contentSince: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
43
|
-
toolCallDetail: z.ZodDefault<z.ZodEnum<
|
|
24
|
+
toolCallDetail: z.ZodDefault<z.ZodEnum<{
|
|
25
|
+
metadata: "metadata";
|
|
26
|
+
full: "full";
|
|
27
|
+
}>>;
|
|
44
28
|
runAuditWindowDays: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
|
|
45
29
|
runAuditSince: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
46
|
-
capabilities: z.ZodArray<z.ZodString
|
|
30
|
+
capabilities: z.ZodArray<z.ZodString>;
|
|
47
31
|
counts: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
48
|
-
},
|
|
49
|
-
source: {
|
|
50
|
-
product: string;
|
|
51
|
-
exporterVersion: string;
|
|
52
|
-
exportedAt: string;
|
|
53
|
-
};
|
|
54
|
-
capabilities: string[];
|
|
55
|
-
bundleVersion: number;
|
|
56
|
-
secretMode: "references" | "envelope";
|
|
57
|
-
transferKeyId: string | null;
|
|
58
|
-
contentWindowDays: number | null;
|
|
59
|
-
contentSince: string | null;
|
|
60
|
-
toolCallDetail: "metadata" | "full";
|
|
61
|
-
runAuditWindowDays: number | null;
|
|
62
|
-
runAuditSince: string | null;
|
|
63
|
-
counts: Record<string, number>;
|
|
64
|
-
}, {
|
|
65
|
-
source: {
|
|
66
|
-
product: string;
|
|
67
|
-
exporterVersion: string;
|
|
68
|
-
exportedAt: string;
|
|
69
|
-
};
|
|
70
|
-
capabilities: string[];
|
|
71
|
-
bundleVersion: number;
|
|
72
|
-
secretMode: "references" | "envelope";
|
|
73
|
-
counts: Record<string, number>;
|
|
74
|
-
transferKeyId?: string | null | undefined;
|
|
75
|
-
contentWindowDays?: number | null | undefined;
|
|
76
|
-
contentSince?: string | null | undefined;
|
|
77
|
-
toolCallDetail?: "metadata" | "full" | undefined;
|
|
78
|
-
runAuditWindowDays?: number | null | undefined;
|
|
79
|
-
runAuditSince?: string | null | undefined;
|
|
80
|
-
}>;
|
|
32
|
+
}, z.core.$strip>;
|
|
81
33
|
export type Manifest = z.infer<typeof ManifestSchema>;
|
|
82
34
|
export declare const NeutralAgentSchema: z.ZodObject<{
|
|
83
35
|
name: z.ZodString;
|
|
84
36
|
systemPrompt: z.ZodString;
|
|
85
|
-
provider: z.ZodEnum<
|
|
37
|
+
provider: z.ZodEnum<{
|
|
38
|
+
openai: "openai";
|
|
39
|
+
bedrock: "bedrock";
|
|
40
|
+
}>;
|
|
86
41
|
model: z.ZodString;
|
|
87
42
|
region: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
88
43
|
schedule: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
@@ -91,64 +46,20 @@ export declare const NeutralAgentSchema: z.ZodObject<{
|
|
|
91
46
|
maxTurns: z.ZodNumber;
|
|
92
47
|
budgetUsd: z.ZodString;
|
|
93
48
|
ownerEmail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
94
|
-
kind: z.ZodDefault<z.ZodEnum<
|
|
49
|
+
kind: z.ZodDefault<z.ZodEnum<{
|
|
50
|
+
native: "native";
|
|
51
|
+
}>>;
|
|
95
52
|
memoryEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
description: z.ZodOptional<z.ZodDefault<z.ZodNullable<z.ZodString>>>;
|
|
100
|
-
slug: z.ZodOptional<z.ZodDefault<z.ZodNullable<z.ZodString>>>;
|
|
101
|
-
emailAllowlist: z.ZodOptional<z.ZodDefault<z.ZodNullable<z.ZodUnknown>>>;
|
|
102
|
-
}, "strip", z.ZodTypeAny, {
|
|
103
|
-
description?: string | null | undefined;
|
|
104
|
-
slug?: string | null | undefined;
|
|
105
|
-
emailAllowlist?: unknown;
|
|
106
|
-
}, {
|
|
107
|
-
description?: string | null | undefined;
|
|
108
|
-
slug?: string | null | undefined;
|
|
109
|
-
emailAllowlist?: unknown;
|
|
53
|
+
nativeExecutionMode: z.ZodOptional<z.ZodEnum<{
|
|
54
|
+
sandbox: "sandbox";
|
|
55
|
+
"control-plane": "control-plane";
|
|
110
56
|
}>>;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
kind: "native";
|
|
118
|
-
systemPrompt: string;
|
|
119
|
-
schedule: string | null;
|
|
120
|
-
timezone: string;
|
|
121
|
-
scheduleEnabled: boolean;
|
|
122
|
-
memoryEnabled: boolean;
|
|
123
|
-
region: string | null;
|
|
124
|
-
ownerEmail: string | null;
|
|
125
|
-
unmodeled: {
|
|
126
|
-
description?: string | null | undefined;
|
|
127
|
-
slug?: string | null | undefined;
|
|
128
|
-
emailAllowlist?: unknown;
|
|
129
|
-
};
|
|
130
|
-
nativeExecutionMode?: "sandbox" | "control-plane" | undefined;
|
|
131
|
-
}, {
|
|
132
|
-
name: string;
|
|
133
|
-
model: string;
|
|
134
|
-
budgetUsd: string;
|
|
135
|
-
maxTurns: number;
|
|
136
|
-
provider: "openai" | "bedrock";
|
|
137
|
-
systemPrompt: string;
|
|
138
|
-
scheduleEnabled: boolean;
|
|
139
|
-
kind?: "native" | undefined;
|
|
140
|
-
nativeExecutionMode?: "sandbox" | "control-plane" | undefined;
|
|
141
|
-
schedule?: string | null | undefined;
|
|
142
|
-
timezone?: string | undefined;
|
|
143
|
-
memoryEnabled?: boolean | undefined;
|
|
144
|
-
region?: string | null | undefined;
|
|
145
|
-
ownerEmail?: string | null | undefined;
|
|
146
|
-
unmodeled?: {
|
|
147
|
-
description?: string | null | undefined;
|
|
148
|
-
slug?: string | null | undefined;
|
|
149
|
-
emailAllowlist?: unknown;
|
|
150
|
-
} | undefined;
|
|
151
|
-
}>;
|
|
57
|
+
unmodeled: z.ZodDefault<z.ZodObject<{
|
|
58
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
59
|
+
slug: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
60
|
+
emailAllowlist: z.ZodOptional<z.ZodNullable<z.ZodUnknown>>;
|
|
61
|
+
}, z.core.$strip>>;
|
|
62
|
+
}, z.core.$strip>;
|
|
152
63
|
export type NeutralAgent = z.infer<typeof NeutralAgentSchema>;
|
|
153
64
|
export declare const NeutralToolSchema: z.ZodObject<{
|
|
154
65
|
name: z.ZodString;
|
|
@@ -157,47 +68,18 @@ export declare const NeutralToolSchema: z.ZodObject<{
|
|
|
157
68
|
jsonSchema: z.ZodDefault<z.ZodNullable<z.ZodUnknown>>;
|
|
158
69
|
code: z.ZodString;
|
|
159
70
|
secretSchema: z.ZodDefault<z.ZodString>;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
code: string;
|
|
163
|
-
description: string;
|
|
164
|
-
paramsZod: string;
|
|
165
|
-
secretSchema: string;
|
|
166
|
-
jsonSchema?: unknown;
|
|
167
|
-
}, {
|
|
168
|
-
name: string;
|
|
169
|
-
code: string;
|
|
170
|
-
paramsZod: string;
|
|
171
|
-
description?: string | undefined;
|
|
172
|
-
jsonSchema?: unknown;
|
|
173
|
-
secretSchema?: string | undefined;
|
|
174
|
-
}>;
|
|
71
|
+
timeoutMs: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
72
|
+
}, z.core.$strip>;
|
|
175
73
|
export type NeutralTool = z.infer<typeof NeutralToolSchema>;
|
|
176
74
|
export declare const NeutralAgentToolSchema: z.ZodObject<{
|
|
177
75
|
agentName: z.ZodString;
|
|
178
76
|
toolName: z.ZodString;
|
|
179
|
-
allowedSecrets: z.ZodDefault<z.ZodArray<z.ZodString
|
|
180
|
-
allowedDatastorePrefixes: z.ZodDefault<z.ZodArray<z.ZodString
|
|
181
|
-
allowedHosts: z.ZodDefault<z.ZodArray<z.ZodString
|
|
182
|
-
allowedSharedDatastorePrefixes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString
|
|
77
|
+
allowedSecrets: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
78
|
+
allowedDatastorePrefixes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
79
|
+
allowedHosts: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
80
|
+
allowedSharedDatastorePrefixes: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
|
|
183
81
|
hostsSource: z.ZodOptional<z.ZodString>;
|
|
184
|
-
},
|
|
185
|
-
allowedSecrets: string[];
|
|
186
|
-
allowedDatastorePrefixes: string[];
|
|
187
|
-
allowedHosts: string[];
|
|
188
|
-
allowedSharedDatastorePrefixes: Record<string, string[]>;
|
|
189
|
-
agentName: string;
|
|
190
|
-
toolName: string;
|
|
191
|
-
hostsSource?: string | undefined;
|
|
192
|
-
}, {
|
|
193
|
-
agentName: string;
|
|
194
|
-
toolName: string;
|
|
195
|
-
allowedSecrets?: string[] | undefined;
|
|
196
|
-
allowedDatastorePrefixes?: string[] | undefined;
|
|
197
|
-
allowedHosts?: string[] | undefined;
|
|
198
|
-
allowedSharedDatastorePrefixes?: Record<string, string[]> | undefined;
|
|
199
|
-
hostsSource?: string | undefined;
|
|
200
|
-
}>;
|
|
82
|
+
}, z.core.$strip>;
|
|
201
83
|
export type NeutralAgentTool = z.infer<typeof NeutralAgentToolSchema>;
|
|
202
84
|
export declare const NeutralSecretSchema: z.ZodObject<{
|
|
203
85
|
name: z.ZodString;
|
|
@@ -210,60 +92,14 @@ export declare const NeutralSecretSchema: z.ZodObject<{
|
|
|
210
92
|
nonce: z.ZodString;
|
|
211
93
|
ct: z.ZodString;
|
|
212
94
|
tag: z.ZodString;
|
|
213
|
-
},
|
|
214
|
-
|
|
215
|
-
alg: string;
|
|
216
|
-
v: number;
|
|
217
|
-
epk: string;
|
|
218
|
-
nonce: string;
|
|
219
|
-
ct: string;
|
|
220
|
-
}, {
|
|
221
|
-
tag: string;
|
|
222
|
-
alg: string;
|
|
223
|
-
v: number;
|
|
224
|
-
epk: string;
|
|
225
|
-
nonce: string;
|
|
226
|
-
ct: string;
|
|
227
|
-
}>>;
|
|
228
|
-
}, "strip", z.ZodTypeAny, {
|
|
229
|
-
name: string;
|
|
230
|
-
description: string | null;
|
|
231
|
-
ownerEmail: string | null;
|
|
232
|
-
ciphertext?: {
|
|
233
|
-
tag: string;
|
|
234
|
-
alg: string;
|
|
235
|
-
v: number;
|
|
236
|
-
epk: string;
|
|
237
|
-
nonce: string;
|
|
238
|
-
ct: string;
|
|
239
|
-
} | undefined;
|
|
240
|
-
}, {
|
|
241
|
-
name: string;
|
|
242
|
-
description?: string | null | undefined;
|
|
243
|
-
ciphertext?: {
|
|
244
|
-
tag: string;
|
|
245
|
-
alg: string;
|
|
246
|
-
v: number;
|
|
247
|
-
epk: string;
|
|
248
|
-
nonce: string;
|
|
249
|
-
ct: string;
|
|
250
|
-
} | undefined;
|
|
251
|
-
ownerEmail?: string | null | undefined;
|
|
252
|
-
}>;
|
|
95
|
+
}, z.core.$strip>>;
|
|
96
|
+
}, z.core.$strip>;
|
|
253
97
|
export type NeutralSecret = z.infer<typeof NeutralSecretSchema>;
|
|
254
98
|
export declare const NeutralAgentSecretSchema: z.ZodObject<{
|
|
255
99
|
agentName: z.ZodString;
|
|
256
100
|
secretName: z.ZodString;
|
|
257
101
|
alias: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
258
|
-
},
|
|
259
|
-
secretName: string;
|
|
260
|
-
agentName: string;
|
|
261
|
-
alias: string | null;
|
|
262
|
-
}, {
|
|
263
|
-
secretName: string;
|
|
264
|
-
agentName: string;
|
|
265
|
-
alias?: string | null | undefined;
|
|
266
|
-
}>;
|
|
102
|
+
}, z.core.$strip>;
|
|
267
103
|
export type NeutralAgentSecret = z.infer<typeof NeutralAgentSecretSchema>;
|
|
268
104
|
export declare const NeutralSingleDatastoreSchema: z.ZodObject<{
|
|
269
105
|
agentName: z.ZodString;
|
|
@@ -272,102 +108,36 @@ export declare const NeutralSingleDatastoreSchema: z.ZodObject<{
|
|
|
272
108
|
key: z.ZodString;
|
|
273
109
|
value: z.ZodUnknown;
|
|
274
110
|
pii: z.ZodDefault<z.ZodBoolean>;
|
|
275
|
-
},
|
|
276
|
-
|
|
277
|
-
pii: boolean;
|
|
278
|
-
value?: unknown;
|
|
279
|
-
}, {
|
|
280
|
-
key: string;
|
|
281
|
-
value?: unknown;
|
|
282
|
-
pii?: boolean | undefined;
|
|
283
|
-
}>, "many">>;
|
|
284
|
-
}, "strip", z.ZodTypeAny, {
|
|
285
|
-
entries: {
|
|
286
|
-
key: string;
|
|
287
|
-
pii: boolean;
|
|
288
|
-
value?: unknown;
|
|
289
|
-
}[];
|
|
290
|
-
agentName: string;
|
|
291
|
-
name?: string | undefined;
|
|
292
|
-
}, {
|
|
293
|
-
agentName: string;
|
|
294
|
-
name?: string | undefined;
|
|
295
|
-
entries?: {
|
|
296
|
-
key: string;
|
|
297
|
-
value?: unknown;
|
|
298
|
-
pii?: boolean | undefined;
|
|
299
|
-
}[] | undefined;
|
|
300
|
-
}>;
|
|
111
|
+
}, z.core.$strip>>>;
|
|
112
|
+
}, z.core.$strip>;
|
|
301
113
|
export type NeutralSingleDatastore = z.infer<typeof NeutralSingleDatastoreSchema>;
|
|
302
114
|
export declare const NeutralSharedDatastoreSchema: z.ZodObject<{
|
|
303
115
|
name: z.ZodString;
|
|
304
116
|
ownerEmail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
305
|
-
attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString
|
|
117
|
+
attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
306
118
|
entries: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
307
119
|
key: z.ZodString;
|
|
308
120
|
value: z.ZodUnknown;
|
|
309
|
-
},
|
|
310
|
-
|
|
311
|
-
value?: unknown;
|
|
312
|
-
}, {
|
|
313
|
-
key: string;
|
|
314
|
-
value?: unknown;
|
|
315
|
-
}>, "many">>;
|
|
316
|
-
}, "strip", z.ZodTypeAny, {
|
|
317
|
-
name: string;
|
|
318
|
-
entries: {
|
|
319
|
-
key: string;
|
|
320
|
-
value?: unknown;
|
|
321
|
-
}[];
|
|
322
|
-
ownerEmail: string | null;
|
|
323
|
-
attachedAgentNames: string[];
|
|
324
|
-
}, {
|
|
325
|
-
name: string;
|
|
326
|
-
entries?: {
|
|
327
|
-
key: string;
|
|
328
|
-
value?: unknown;
|
|
329
|
-
}[] | undefined;
|
|
330
|
-
ownerEmail?: string | null | undefined;
|
|
331
|
-
attachedAgentNames?: string[] | undefined;
|
|
332
|
-
}>;
|
|
121
|
+
}, z.core.$strip>>>;
|
|
122
|
+
}, z.core.$strip>;
|
|
333
123
|
export type NeutralSharedDatastore = z.infer<typeof NeutralSharedDatastoreSchema>;
|
|
334
124
|
export declare const NeutralWebhookSchema: z.ZodObject<{
|
|
335
125
|
agentName: z.ZodString;
|
|
336
126
|
enabled: z.ZodBoolean;
|
|
337
|
-
},
|
|
338
|
-
enabled: boolean;
|
|
339
|
-
agentName: string;
|
|
340
|
-
}, {
|
|
341
|
-
enabled: boolean;
|
|
342
|
-
agentName: string;
|
|
343
|
-
}>;
|
|
127
|
+
}, z.core.$strip>;
|
|
344
128
|
export type NeutralWebhook = z.infer<typeof NeutralWebhookSchema>;
|
|
345
129
|
export declare const NeutralBudgetSchema: z.ZodObject<{
|
|
346
130
|
name: z.ZodString;
|
|
347
131
|
ownerEmail: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
348
|
-
period: z.ZodEnum<
|
|
132
|
+
period: z.ZodEnum<{
|
|
133
|
+
daily: "daily";
|
|
134
|
+
weekly: "weekly";
|
|
135
|
+
monthly: "monthly";
|
|
136
|
+
}>;
|
|
349
137
|
alertThreshold: z.ZodString;
|
|
350
138
|
blockThreshold: z.ZodString;
|
|
351
|
-
alertEmails: z.ZodDefault<z.ZodArray<z.ZodString
|
|
139
|
+
alertEmails: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
352
140
|
enabled: z.ZodBoolean;
|
|
353
|
-
attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString
|
|
354
|
-
},
|
|
355
|
-
name: string;
|
|
356
|
-
enabled: boolean;
|
|
357
|
-
period: "daily" | "weekly" | "monthly";
|
|
358
|
-
ownerEmail: string | null;
|
|
359
|
-
attachedAgentNames: string[];
|
|
360
|
-
alertThreshold: string;
|
|
361
|
-
blockThreshold: string;
|
|
362
|
-
alertEmails: string[];
|
|
363
|
-
}, {
|
|
364
|
-
name: string;
|
|
365
|
-
enabled: boolean;
|
|
366
|
-
period: "daily" | "weekly" | "monthly";
|
|
367
|
-
alertThreshold: string;
|
|
368
|
-
blockThreshold: string;
|
|
369
|
-
ownerEmail?: string | null | undefined;
|
|
370
|
-
attachedAgentNames?: string[] | undefined;
|
|
371
|
-
alertEmails?: string[] | undefined;
|
|
372
|
-
}>;
|
|
141
|
+
attachedAgentNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
142
|
+
}, z.core.$strip>;
|
|
373
143
|
export type NeutralBudget = z.infer<typeof NeutralBudgetSchema>;
|
|
@@ -36,13 +36,14 @@ export const NeutralAgentSchema = z.object({
|
|
|
36
36
|
memoryEnabled: z.boolean().default(false),
|
|
37
37
|
/** Where the agent's runs execute; absent = control-plane. Native agents only (every imported agent is native). */
|
|
38
38
|
nativeExecutionMode: z.enum(["control-plane", "sandbox"]).optional(),
|
|
39
|
+
// Each field optional with no default: Zod 4 would apply a default inside
|
|
40
|
+
// .partial(), where Zod 3 left an absent field absent.
|
|
39
41
|
unmodeled: z
|
|
40
42
|
.object({
|
|
41
|
-
description: z.string().nullable().
|
|
42
|
-
slug: z.string().nullable().
|
|
43
|
-
emailAllowlist: z.unknown().nullable().
|
|
43
|
+
description: z.string().nullable().optional(),
|
|
44
|
+
slug: z.string().nullable().optional(),
|
|
45
|
+
emailAllowlist: z.unknown().nullable().optional(),
|
|
44
46
|
})
|
|
45
|
-
.partial()
|
|
46
47
|
.default({}),
|
|
47
48
|
});
|
|
48
49
|
export const NeutralToolSchema = z.object({
|
|
@@ -52,6 +53,8 @@ export const NeutralToolSchema = z.object({
|
|
|
52
53
|
jsonSchema: z.unknown().nullable().default(null), // ignored; we re-derive (ruling 2)
|
|
53
54
|
code: z.string(),
|
|
54
55
|
secretSchema: z.string().default(""),
|
|
56
|
+
/** The tool's own time limit (ms); absent or null keeps the default. Checked against WARDBY_TOOL_MAX_TIMEOUT_MS on import. */
|
|
57
|
+
timeoutMs: z.number().int().nullable().optional(),
|
|
55
58
|
});
|
|
56
59
|
export const NeutralAgentToolSchema = z.object({
|
|
57
60
|
agentName: z.string(),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type CheckSeverity = "error" | "warning";
|
|
2
|
-
export type CheckCode = "concept_invalid" | "concept_secret" | "index_missing" | "index_link_broken" | "concept_not_indexed" | "citation_unverifiable" | "citation_stale";
|
|
2
|
+
export type CheckCode = "concept_invalid" | "concept_secret" | "index_missing" | "index_link_broken" | "concept_not_indexed" | "citation_unverifiable" | "citation_stale" | "knowledge_config_invalid";
|
|
3
3
|
export interface CheckIssue {
|
|
4
4
|
severity: CheckSeverity;
|
|
5
5
|
code: CheckCode;
|
package/dist/knowledge/cli.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare function parseKnowledgeArgs(args: string[]): {
|
|
2
|
-
|
|
2
|
+
/** Unset: the folder `.wardby/knowledge.yaml` names under `root`, else the default. */
|
|
3
|
+
dir: string | undefined;
|
|
3
4
|
root: string;
|
|
4
5
|
strict: boolean;
|
|
5
6
|
json: boolean;
|
|
@@ -11,4 +12,13 @@ export declare function parseKnowledgeArgs(args: string[]): {
|
|
|
11
12
|
* a bundle is plain files, and following links could loop or leave the bundle.
|
|
12
13
|
*/
|
|
13
14
|
export declare function loadBundle(dir: string): Map<string, string>;
|
|
15
|
+
/**
|
|
16
|
+
* The bundle folder when no `dir` is given: the one `.wardby/knowledge.yaml`
|
|
17
|
+
* under `root` names, else the default. An unusable file is reported as an
|
|
18
|
+
* error (the server would ignore it) and the default is checked instead.
|
|
19
|
+
*/
|
|
20
|
+
export declare function bundleDirFromConfig(root: string): {
|
|
21
|
+
dir: string;
|
|
22
|
+
configError?: string;
|
|
23
|
+
};
|
|
14
24
|
export declare function knowledgeCommand(args: string[]): Promise<void>;
|
package/dist/knowledge/cli.js
CHANGED
|
@@ -3,6 +3,7 @@ import { join, relative, resolve, sep } from "node:path";
|
|
|
3
3
|
import { parseArgs } from "node:util";
|
|
4
4
|
import { checkBundle } from "./check.js";
|
|
5
5
|
import { DEFAULT_KNOWLEDGE_BUNDLE_PATH } from "./concept.js";
|
|
6
|
+
import { KNOWLEDGE_CONFIG_PATH, parseKnowledgeConfig } from "./location.js";
|
|
6
7
|
const USAGE = "usage: wardby knowledge check [dir] [--root <repo root>] [--strict] [--json]";
|
|
7
8
|
export function parseKnowledgeArgs(args) {
|
|
8
9
|
const [sub, ...rest] = args;
|
|
@@ -16,7 +17,7 @@ export function parseKnowledgeArgs(args) {
|
|
|
16
17
|
if (positionals.length > 1)
|
|
17
18
|
throw new Error(USAGE);
|
|
18
19
|
return {
|
|
19
|
-
dir: positionals[0]
|
|
20
|
+
dir: positionals[0],
|
|
20
21
|
root: values.root ?? ".",
|
|
21
22
|
strict: values.strict ?? false,
|
|
22
23
|
json: values.json ?? false,
|
|
@@ -43,10 +44,38 @@ export function loadBundle(dir) {
|
|
|
43
44
|
walk(dir);
|
|
44
45
|
return files;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* The bundle folder when no `dir` is given: the one `.wardby/knowledge.yaml`
|
|
49
|
+
* under `root` names, else the default. An unusable file is reported as an
|
|
50
|
+
* error (the server would ignore it) and the default is checked instead.
|
|
51
|
+
*/
|
|
52
|
+
export function bundleDirFromConfig(root) {
|
|
53
|
+
let text;
|
|
54
|
+
try {
|
|
55
|
+
text = readFileSync(join(root, KNOWLEDGE_CONFIG_PATH), "utf8");
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (err.code === "ENOENT")
|
|
59
|
+
return { dir: DEFAULT_KNOWLEDGE_BUNDLE_PATH };
|
|
60
|
+
return { dir: DEFAULT_KNOWLEDGE_BUNDLE_PATH, configError: `it could not be read (${err.message})` };
|
|
61
|
+
}
|
|
62
|
+
const parsed = parseKnowledgeConfig(text);
|
|
63
|
+
return parsed.ok ? { dir: parsed.bundlePath } : { dir: DEFAULT_KNOWLEDGE_BUNDLE_PATH, configError: parsed.error };
|
|
64
|
+
}
|
|
46
65
|
export async function knowledgeCommand(args) {
|
|
47
66
|
const options = parseKnowledgeArgs(args);
|
|
48
67
|
const root = resolve(options.root);
|
|
49
|
-
const
|
|
68
|
+
const located = options.dir === undefined ? bundleDirFromConfig(root) : { dir: options.dir };
|
|
69
|
+
const dir = located.dir;
|
|
70
|
+
const configIssue = located.configError
|
|
71
|
+
? {
|
|
72
|
+
severity: "error",
|
|
73
|
+
code: "knowledge_config_invalid",
|
|
74
|
+
file: KNOWLEDGE_CONFIG_PATH,
|
|
75
|
+
message: `ignored because ${located.configError}; checked ${DEFAULT_KNOWLEDGE_BUNDLE_PATH}/ instead`,
|
|
76
|
+
}
|
|
77
|
+
: undefined;
|
|
78
|
+
const files = loadBundle(resolve(root, dir));
|
|
50
79
|
const issues = checkBundle({ files }, (path) => {
|
|
51
80
|
try {
|
|
52
81
|
return readFileSync(join(root, path), "utf8");
|
|
@@ -55,11 +84,15 @@ export async function knowledgeCommand(args) {
|
|
|
55
84
|
return null;
|
|
56
85
|
}
|
|
57
86
|
});
|
|
87
|
+
if (configIssue)
|
|
88
|
+
issues.unshift(configIssue);
|
|
58
89
|
if (options.json)
|
|
59
90
|
process.stdout.write(`${JSON.stringify({ issues }, null, 2)}\n`);
|
|
60
91
|
else {
|
|
61
|
-
for (const issue of issues)
|
|
62
|
-
|
|
92
|
+
for (const issue of issues) {
|
|
93
|
+
const where = issue === configIssue ? issue.file : `${dir}/${issue.file}`;
|
|
94
|
+
process.stdout.write(`${issue.severity} ${issue.code} ${where}: ${issue.message}\n`);
|
|
95
|
+
}
|
|
63
96
|
process.stdout.write(`${files.size} files checked, ${issues.filter((i) => i.severity === "error").length} errors, ${issues.filter((i) => i.severity === "warning").length} warnings\n`);
|
|
64
97
|
}
|
|
65
98
|
if (issues.some((i) => i.severity === "error" || (options.strict && i.severity === "warning")))
|