@wardby/cli 0.1.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 +131 -0
- package/LICENSE +202 -0
- package/NOTICE +2 -0
- package/README.md +282 -0
- package/bin/wardby.js +3 -0
- package/deploy/local/docker-compose.yml +19 -0
- package/dist/claude-coding-worker/driver.d.ts +70 -0
- package/dist/claude-coding-worker/driver.js +128 -0
- package/dist/claude-coding-worker/main.d.ts +2 -0
- package/dist/claude-coding-worker/main.js +41 -0
- package/dist/claude-coding-worker/sdk.d.ts +4 -0
- package/dist/claude-coding-worker/sdk.js +43 -0
- package/dist/claude-coding-worker/tool-relay.d.ts +1 -0
- package/dist/claude-coding-worker/tool-relay.js +9 -0
- package/dist/cli-help.d.ts +1 -0
- package/dist/cli-help.js +20 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.js +629 -0
- package/dist/coding/observability.d.ts +59 -0
- package/dist/coding/observability.js +77 -0
- package/dist/coding/profile.d.ts +88 -0
- package/dist/coding/profile.js +137 -0
- package/dist/coding/protocol.d.ts +345 -0
- package/dist/coding/protocol.js +445 -0
- package/dist/coding/provider.d.ts +4 -0
- package/dist/coding/provider.js +18 -0
- package/dist/coding-proxy/main.d.ts +1 -0
- package/dist/coding-proxy/main.js +51 -0
- package/dist/coding-worker/artifact.d.ts +16 -0
- package/dist/coding-worker/artifact.js +37 -0
- package/dist/coding-worker/driver.d.ts +46 -0
- package/dist/coding-worker/driver.js +158 -0
- package/dist/coding-worker/errors.d.ts +1 -0
- package/dist/coding-worker/errors.js +23 -0
- package/dist/coding-worker/isolation-probe.d.ts +1 -0
- package/dist/coding-worker/isolation-probe.js +146 -0
- package/dist/coding-worker/keeper.d.ts +4 -0
- package/dist/coding-worker/keeper.js +29 -0
- package/dist/coding-worker/main.d.ts +2 -0
- package/dist/coding-worker/main.js +43 -0
- package/dist/coding-worker/sdk.d.ts +26 -0
- package/dist/coding-worker/sdk.js +28 -0
- package/dist/coding-worker/types.d.ts +64 -0
- package/dist/coding-worker/types.js +1 -0
- package/dist/config/providers.d.ts +158 -0
- package/dist/config/providers.js +162 -0
- package/dist/core/budget-groups.d.ts +72 -0
- package/dist/core/budget-groups.js +149 -0
- package/dist/core/budget.d.ts +63 -0
- package/dist/core/budget.js +69 -0
- package/dist/core/coding-queue.d.ts +32 -0
- package/dist/core/coding-queue.js +54 -0
- package/dist/core/cron.d.ts +31 -0
- package/dist/core/cron.js +43 -0
- package/dist/core/datastores.d.ts +41 -0
- package/dist/core/datastores.js +105 -0
- package/dist/core/db.d.ts +2 -0
- package/dist/core/db.js +2 -0
- package/dist/core/dispatch.d.ts +81 -0
- package/dist/core/dispatch.js +184 -0
- package/dist/core/engine-native.d.ts +29 -0
- package/dist/core/engine-native.js +259 -0
- package/dist/core/http-runtime.d.ts +7 -0
- package/dist/core/http-runtime.js +101 -0
- package/dist/core/lease.d.ts +13 -0
- package/dist/core/lease.js +22 -0
- package/dist/core/logger.d.ts +13 -0
- package/dist/core/logger.js +45 -0
- package/dist/core/memory-tools.d.ts +11 -0
- package/dist/core/memory-tools.js +122 -0
- package/dist/core/reconciler.d.ts +45 -0
- package/dist/core/reconciler.js +152 -0
- package/dist/core/runner.d.ts +87 -0
- package/dist/core/runner.js +529 -0
- package/dist/core/scheduler.d.ts +47 -0
- package/dist/core/scheduler.js +121 -0
- package/dist/core/secrets.d.ts +46 -0
- package/dist/core/secrets.js +100 -0
- package/dist/core/subagent-memory-tools.d.ts +18 -0
- package/dist/core/subagent-memory-tools.js +121 -0
- package/dist/core/timing.d.ts +7 -0
- package/dist/core/timing.js +7 -0
- package/dist/core/webhooks.d.ts +23 -0
- package/dist/core/webhooks.js +113 -0
- package/dist/env.d.ts +11 -0
- package/dist/env.js +13 -0
- package/dist/import/budgets.d.ts +16 -0
- package/dist/import/budgets.js +21 -0
- package/dist/import/bundle.d.ts +16 -0
- package/dist/import/bundle.js +61 -0
- package/dist/import/cli-args.d.ts +2 -0
- package/dist/import/cli-args.js +44 -0
- package/dist/import/create.d.ts +34 -0
- package/dist/import/create.js +363 -0
- package/dist/import/index.d.ts +25 -0
- package/dist/import/index.js +130 -0
- package/dist/import/model-gate.d.ts +1 -0
- package/dist/import/model-gate.js +3 -0
- package/dist/import/neutral-schema.d.ts +369 -0
- package/dist/import/neutral-schema.js +109 -0
- package/dist/import/preflight.d.ts +41 -0
- package/dist/import/preflight.js +71 -0
- package/dist/import/report.d.ts +5 -0
- package/dist/import/report.js +98 -0
- package/dist/import/tool-scan.d.ts +8 -0
- package/dist/import/tool-scan.js +20 -0
- package/dist/mcp/auth/ownership.d.ts +113 -0
- package/dist/mcp/auth/ownership.js +87 -0
- package/dist/mcp/auth/principal.d.ts +9 -0
- package/dist/mcp/auth/principal.js +9 -0
- package/dist/mcp/auth/resource-server.d.ts +47 -0
- package/dist/mcp/auth/resource-server.js +82 -0
- package/dist/mcp/auth/self-hosted/browser.d.ts +3 -0
- package/dist/mcp/auth/self-hosted/browser.js +273 -0
- package/dist/mcp/auth/self-hosted/cli.d.ts +2 -0
- package/dist/mcp/auth/self-hosted/cli.js +39 -0
- package/dist/mcp/auth/self-hosted/credentials.d.ts +58 -0
- package/dist/mcp/auth/self-hosted/credentials.js +106 -0
- package/dist/mcp/auth/self-hosted/rate-limit.d.ts +13 -0
- package/dist/mcp/auth/self-hosted/rate-limit.js +20 -0
- package/dist/mcp/auth/self-hosted/session.d.ts +36 -0
- package/dist/mcp/auth/self-hosted/session.js +110 -0
- package/dist/mcp/capabilities.d.ts +11 -0
- package/dist/mcp/capabilities.js +10 -0
- package/dist/mcp/context.d.ts +46 -0
- package/dist/mcp/context.js +1 -0
- package/dist/mcp/errors.d.ts +13 -0
- package/dist/mcp/errors.js +22 -0
- package/dist/mcp/index.d.ts +32 -0
- package/dist/mcp/index.js +187 -0
- package/dist/mcp/jsonrpc.d.ts +8 -0
- package/dist/mcp/jsonrpc.js +1 -0
- package/dist/mcp/server.d.ts +107 -0
- package/dist/mcp/server.js +203 -0
- package/dist/mcp/tasks/manager.d.ts +63 -0
- package/dist/mcp/tasks/manager.js +103 -0
- package/dist/mcp/tools/agents.d.ts +2 -0
- package/dist/mcp/tools/agents.js +375 -0
- package/dist/mcp/tools/budget-groups.d.ts +2 -0
- package/dist/mcp/tools/budget-groups.js +136 -0
- package/dist/mcp/tools/datastore.d.ts +2 -0
- package/dist/mcp/tools/datastore.js +217 -0
- package/dist/mcp/tools/memory.d.ts +3 -0
- package/dist/mcp/tools/memory.js +60 -0
- package/dist/mcp/tools/models.d.ts +8 -0
- package/dist/mcp/tools/models.js +15 -0
- package/dist/mcp/tools/runs.d.ts +2 -0
- package/dist/mcp/tools/runs.js +61 -0
- package/dist/mcp/tools/scheduling.d.ts +2 -0
- package/dist/mcp/tools/scheduling.js +48 -0
- package/dist/mcp/tools/secret-elicitation-form.d.ts +22 -0
- package/dist/mcp/tools/secret-elicitation-form.js +93 -0
- package/dist/mcp/tools/secret-elicitation-server.d.ts +5 -0
- package/dist/mcp/tools/secret-elicitation-server.js +57 -0
- package/dist/mcp/tools/secret-elicitation.d.ts +38 -0
- package/dist/mcp/tools/secret-elicitation.js +52 -0
- package/dist/mcp/tools/secrets.d.ts +13 -0
- package/dist/mcp/tools/secrets.js +124 -0
- package/dist/mcp/tools/subagents.d.ts +2 -0
- package/dist/mcp/tools/subagents.js +133 -0
- package/dist/mcp/tools/text-result.d.ts +6 -0
- package/dist/mcp/tools/text-result.js +3 -0
- package/dist/mcp/tools/tools.d.ts +2 -0
- package/dist/mcp/tools/tools.js +211 -0
- package/dist/mcp/tools/trigger.d.ts +2 -0
- package/dist/mcp/tools/trigger.js +120 -0
- package/dist/mcp/tools/webhooks.d.ts +2 -0
- package/dist/mcp/tools/webhooks.js +34 -0
- package/dist/mcp/transport/http-limits.d.ts +17 -0
- package/dist/mcp/transport/http-limits.js +92 -0
- package/dist/mcp/transport/stdio.d.ts +23 -0
- package/dist/mcp/transport/stdio.js +6 -0
- package/dist/mcp/transport/streamable-http.d.ts +34 -0
- package/dist/mcp/transport/streamable-http.js +158 -0
- package/dist/mcp/unattended-schedules.d.ts +15 -0
- package/dist/mcp/unattended-schedules.js +21 -0
- package/dist/mcp/webhooks/ingress.d.ts +17 -0
- package/dist/mcp/webhooks/ingress.js +33 -0
- package/dist/observability/config.d.ts +6 -0
- package/dist/observability/config.js +20 -0
- package/dist/observability/metrics-server.d.ts +11 -0
- package/dist/observability/metrics-server.js +47 -0
- package/dist/observability/metrics.d.ts +36 -0
- package/dist/observability/metrics.js +158 -0
- package/dist/providers/auth/authorization-server.d.ts +41 -0
- package/dist/providers/auth/authorization-server.js +1 -0
- package/dist/providers/auth/delegating.d.ts +44 -0
- package/dist/providers/auth/delegating.js +105 -0
- package/dist/providers/auth/index.d.ts +11 -0
- package/dist/providers/auth/index.js +20 -0
- package/dist/providers/auth/release-gate.d.ts +1 -0
- package/dist/providers/auth/release-gate.js +4 -0
- package/dist/providers/auth/self-hosted.d.ts +78 -0
- package/dist/providers/auth/self-hosted.js +377 -0
- package/dist/providers/auth/subject.d.ts +1 -0
- package/dist/providers/auth/subject.js +6 -0
- package/dist/providers/auth/types.d.ts +63 -0
- package/dist/providers/auth/types.js +22 -0
- package/dist/providers/coding-proxy/deny-port.d.ts +5 -0
- package/dist/providers/coding-proxy/deny-port.js +45 -0
- package/dist/providers/coding-proxy/environment-credentials.d.ts +7 -0
- package/dist/providers/coding-proxy/environment-credentials.js +16 -0
- package/dist/providers/coding-proxy/index.d.ts +7 -0
- package/dist/providers/coding-proxy/index.js +7 -0
- package/dist/providers/coding-proxy/memory-ledger.d.ts +17 -0
- package/dist/providers/coding-proxy/memory-ledger.js +103 -0
- package/dist/providers/coding-proxy/metering.d.ts +20 -0
- package/dist/providers/coding-proxy/metering.js +161 -0
- package/dist/providers/coding-proxy/prisma-ledger.d.ts +15 -0
- package/dist/providers/coding-proxy/prisma-ledger.js +213 -0
- package/dist/providers/coding-proxy/proxy.d.ts +75 -0
- package/dist/providers/coding-proxy/proxy.js +721 -0
- package/dist/providers/coding-proxy/runtime.d.ts +18 -0
- package/dist/providers/coding-proxy/runtime.js +39 -0
- package/dist/providers/coding-proxy/secure-fetch.d.ts +9 -0
- package/dist/providers/coding-proxy/secure-fetch.js +72 -0
- package/dist/providers/coding-proxy/server.d.ts +17 -0
- package/dist/providers/coding-proxy/server.js +139 -0
- package/dist/providers/coding-proxy/types.d.ts +99 -0
- package/dist/providers/coding-proxy/types.js +1 -0
- package/dist/providers/datastore/index.d.ts +2 -0
- package/dist/providers/datastore/index.js +2 -0
- package/dist/providers/datastore/postgres.d.ts +20 -0
- package/dist/providers/datastore/postgres.js +130 -0
- package/dist/providers/datastore/scoped.d.ts +10 -0
- package/dist/providers/datastore/scoped.js +46 -0
- package/dist/providers/datastore/types.d.ts +31 -0
- package/dist/providers/datastore/types.js +7 -0
- package/dist/providers/email/types.d.ts +46 -0
- package/dist/providers/email/types.js +8 -0
- package/dist/providers/engine/index.d.ts +1 -0
- package/dist/providers/engine/index.js +1 -0
- package/dist/providers/engine/types.d.ts +67 -0
- package/dist/providers/engine/types.js +16 -0
- package/dist/providers/executor/build.d.ts +6 -0
- package/dist/providers/executor/build.js +15 -0
- package/dist/providers/executor/composition.d.ts +14 -0
- package/dist/providers/executor/composition.js +123 -0
- package/dist/providers/executor/container.d.ts +184 -0
- package/dist/providers/executor/container.js +936 -0
- package/dist/providers/executor/dbos-status.d.ts +50 -0
- package/dist/providers/executor/dbos-status.js +64 -0
- package/dist/providers/executor/dbos.d.ts +53 -0
- package/dist/providers/executor/dbos.js +269 -0
- package/dist/providers/executor/in-process.d.ts +18 -0
- package/dist/providers/executor/in-process.js +38 -0
- package/dist/providers/executor/index.d.ts +8 -0
- package/dist/providers/executor/index.js +8 -0
- package/dist/providers/executor/routing.d.ts +48 -0
- package/dist/providers/executor/routing.js +70 -0
- package/dist/providers/executor/types.d.ts +55 -0
- package/dist/providers/executor/types.js +1 -0
- package/dist/providers/index.d.ts +43 -0
- package/dist/providers/index.js +18 -0
- package/dist/providers/jobs/docker-isolation.d.ts +166 -0
- package/dist/providers/jobs/docker-isolation.js +724 -0
- package/dist/providers/jobs/docker.d.ts +127 -0
- package/dist/providers/jobs/docker.js +1027 -0
- package/dist/providers/jobs/fake-kubernetes-api.d.ts +98 -0
- package/dist/providers/jobs/fake-kubernetes-api.js +142 -0
- package/dist/providers/jobs/fake.d.ts +23 -0
- package/dist/providers/jobs/fake.js +132 -0
- package/dist/providers/jobs/kubernetes-api.d.ts +60 -0
- package/dist/providers/jobs/kubernetes-api.js +20 -0
- package/dist/providers/jobs/kubernetes-client.d.ts +36 -0
- package/dist/providers/jobs/kubernetes-client.js +171 -0
- package/dist/providers/jobs/kubernetes-dry-run-fixture.d.ts +49 -0
- package/dist/providers/jobs/kubernetes-dry-run-fixture.js +141 -0
- package/dist/providers/jobs/kubernetes-isolation.d.ts +147 -0
- package/dist/providers/jobs/kubernetes-isolation.js +607 -0
- package/dist/providers/jobs/kubernetes-platform.d.ts +177 -0
- package/dist/providers/jobs/kubernetes-platform.js +280 -0
- package/dist/providers/jobs/kubernetes-preflight.d.ts +59 -0
- package/dist/providers/jobs/kubernetes-preflight.js +339 -0
- package/dist/providers/jobs/kubernetes-witness.d.ts +10 -0
- package/dist/providers/jobs/kubernetes-witness.js +193 -0
- package/dist/providers/jobs/kubernetes.d.ts +127 -0
- package/dist/providers/jobs/kubernetes.js +874 -0
- package/dist/providers/jobs/safe-extract.d.ts +9 -0
- package/dist/providers/jobs/safe-extract.js +325 -0
- package/dist/providers/jobs/types.d.ts +78 -0
- package/dist/providers/jobs/types.js +6 -0
- package/dist/providers/jobs/workspace-swap.d.ts +2 -0
- package/dist/providers/jobs/workspace-swap.js +47 -0
- package/dist/providers/llm/anthropic.d.ts +13 -0
- package/dist/providers/llm/anthropic.js +21 -0
- package/dist/providers/llm/bedrock.d.ts +19 -0
- package/dist/providers/llm/bedrock.js +33 -0
- package/dist/providers/llm/claude-messages.d.ts +106 -0
- package/dist/providers/llm/claude-messages.js +157 -0
- package/dist/providers/llm/claude-provider.d.ts +40 -0
- package/dist/providers/llm/claude-provider.js +31 -0
- package/dist/providers/llm/index.d.ts +10 -0
- package/dist/providers/llm/index.js +10 -0
- package/dist/providers/llm/openai.d.ts +23 -0
- package/dist/providers/llm/openai.js +156 -0
- package/dist/providers/llm/pricing-anthropic.d.ts +4 -0
- package/dist/providers/llm/pricing-anthropic.js +30 -0
- package/dist/providers/llm/pricing-bedrock-claude.d.ts +12 -0
- package/dist/providers/llm/pricing-bedrock-claude.js +37 -0
- package/dist/providers/llm/pricing-core.d.ts +26 -0
- package/dist/providers/llm/pricing-core.js +17 -0
- package/dist/providers/llm/pricing.d.ts +30 -0
- package/dist/providers/llm/pricing.js +74 -0
- package/dist/providers/llm/registration.d.ts +8 -0
- package/dist/providers/llm/registration.js +39 -0
- package/dist/providers/llm/routing.d.ts +25 -0
- package/dist/providers/llm/routing.js +32 -0
- package/dist/providers/llm/types.d.ts +85 -0
- package/dist/providers/llm/types.js +12 -0
- package/dist/providers/memory/index.d.ts +2 -0
- package/dist/providers/memory/index.js +2 -0
- package/dist/providers/memory/postgres.d.ts +20 -0
- package/dist/providers/memory/postgres.js +72 -0
- package/dist/providers/memory/types.d.ts +32 -0
- package/dist/providers/memory/types.js +17 -0
- package/dist/providers/secrets/app-key.d.ts +8 -0
- package/dist/providers/secrets/app-key.js +50 -0
- package/dist/providers/secrets/index.d.ts +10 -0
- package/dist/providers/secrets/index.js +13 -0
- package/dist/providers/secrets/transfer-envelope.d.ts +12 -0
- package/dist/providers/secrets/transfer-envelope.js +35 -0
- package/dist/providers/secrets/types.d.ts +18 -0
- package/dist/providers/secrets/types.js +12 -0
- package/dist/providers/storage/types.d.ts +18 -0
- package/dist/providers/storage/types.js +7 -0
- package/dist/providers/vcs/git.d.ts +105 -0
- package/dist/providers/vcs/git.js +710 -0
- package/dist/providers/vcs/github.d.ts +105 -0
- package/dist/providers/vcs/github.js +394 -0
- package/dist/providers/vcs/index.d.ts +6 -0
- package/dist/providers/vcs/index.js +26 -0
- package/dist/providers/vcs/types.d.ts +118 -0
- package/dist/providers/vcs/types.js +1 -0
- package/dist/sandbox/bounded-json.d.ts +2 -0
- package/dist/sandbox/bounded-json.js +36 -0
- package/dist/sandbox/bridge.d.ts +15 -0
- package/dist/sandbox/bridge.js +78 -0
- package/dist/sandbox/eval-core.d.ts +37 -0
- package/dist/sandbox/eval-core.js +159 -0
- package/dist/sandbox/fetch-policy.d.ts +24 -0
- package/dist/sandbox/fetch-policy.js +96 -0
- package/dist/sandbox/generated/zod-to-json-schema.bundle.js +5 -0
- package/dist/sandbox/generated/zod.bundle.js +1 -0
- package/dist/sandbox/host-functions.d.ts +29 -0
- package/dist/sandbox/host-functions.js +168 -0
- package/dist/sandbox/limits.d.ts +39 -0
- package/dist/sandbox/limits.js +39 -0
- package/dist/sandbox/parser-worker/__fixtures__/crash.d.ts +1 -0
- package/dist/sandbox/parser-worker/__fixtures__/crash.js +6 -0
- package/dist/sandbox/parser-worker/__fixtures__/echo.d.ts +1 -0
- package/dist/sandbox/parser-worker/__fixtures__/echo.js +5 -0
- package/dist/sandbox/parser-worker/__fixtures__/reject.d.ts +1 -0
- package/dist/sandbox/parser-worker/__fixtures__/reject.js +5 -0
- package/dist/sandbox/parser-worker/__fixtures__/spin-forever.d.ts +1 -0
- package/dist/sandbox/parser-worker/__fixtures__/spin-forever.js +11 -0
- package/dist/sandbox/parser-worker/pool.d.ts +13 -0
- package/dist/sandbox/parser-worker/pool.js +111 -0
- package/dist/sandbox/parser-worker/worker.d.ts +14 -0
- package/dist/sandbox/parser-worker/worker.js +63 -0
- package/dist/sandbox/pii-redaction.d.ts +1 -0
- package/dist/sandbox/pii-redaction.js +29 -0
- package/dist/sandbox/prelude.d.ts +26 -0
- package/dist/sandbox/prelude.js +408 -0
- package/dist/sandbox/quickjs-module.d.ts +13 -0
- package/dist/sandbox/quickjs-module.js +19 -0
- package/dist/sandbox/run-in-sandbox.d.ts +34 -0
- package/dist/sandbox/run-in-sandbox.js +53 -0
- package/dist/sandbox/safe-fetch.d.ts +26 -0
- package/dist/sandbox/safe-fetch.js +140 -0
- package/dist/sandbox/tool-capabilities.d.ts +66 -0
- package/dist/sandbox/tool-capabilities.js +103 -0
- package/dist/sandbox/zod-params.d.ts +22 -0
- package/dist/sandbox/zod-params.js +60 -0
- package/dist/serve.d.ts +14 -0
- package/dist/serve.js +54 -0
- package/dist/wardby-bin.d.ts +2 -0
- package/dist/wardby-bin.js +20 -0
- package/package.json +123 -0
- package/prisma/migrations/20260905000000_init/migration.sql +34 -0
- package/prisma/migrations/20260905010000_scheduler_durability/migration.sql +31 -0
- package/prisma/migrations/20260905020000_tools_multiturn/migration.sql +47 -0
- package/prisma/migrations/20260905030000_cache_tool_json_schema/migration.sql +13 -0
- package/prisma/migrations/20260906000000_mcp_phase4/migration.sql +115 -0
- package/prisma/migrations/20260906010000_run_final_text/migration.sql +7 -0
- package/prisma/migrations/20260906020000_run_turns/migration.sql +6 -0
- package/prisma/migrations/20260906030000_task_principal_id/migration.sql +5 -0
- package/prisma/migrations/20260906040000_secure_self_hosted_oauth/migration.sql +67 -0
- package/prisma/migrations/20260906050000_phase5_coding_agents/migration.sql +52 -0
- package/prisma/migrations/20260906060000_tool_capability_scoping/migration.sql +22 -0
- package/prisma/migrations/20260906070000_datastore_pii_flag/migration.sql +6 -0
- package/prisma/migrations/20260906080000_secret_elicitation_outcomes/migration.sql +13 -0
- package/prisma/migrations/20260907010000_coding_proxy_ledger/migration.sql +57 -0
- package/prisma/migrations/20260907020000_budget_groups/migration.sql +24 -0
- package/prisma/migrations/20260907030000_coding_webhook_task_override/migration.sql +4 -0
- package/prisma/migrations/20260908010000_run_execution_backend/migration.sql +2 -0
- package/prisma/migrations/20260908020000_coding_run_audit_metadata/migration.sql +7 -0
- package/prisma/migrations/20260910010000_agent_secret_bound_name/migration.sql +16 -0
- package/prisma/migrations/20260911010000_coding_worker_toolchains/migration.sql +5 -0
- package/prisma/migrations/20260912010000_coding_provider_contract/migration.sql +24 -0
- package/prisma/migrations/20260912020000_coding_proxy_protocol/migration.sql +10 -0
- package/prisma/migrations/20260912030000_agent_memory/migration.sql +18 -0
- package/prisma/migrations/20260912040000_named_shared_datastores/migration.sql +68 -0
- package/prisma/migrations/20260913000000_run_trigger_webhook/migration.sql +2 -0
- package/prisma/migrations/20260913010000_agent_sub_agent/migration.sql +32 -0
- package/prisma/migrations/20260913020000_run_task_override/migration.sql +5 -0
- package/prisma/migrations/20260913030000_coding_run_root/migration.sql +11 -0
- package/prisma/migrations/20260922010000_coding_run_queued_at/migration.sql +8 -0
- package/prisma/migrations/20260922020000_coding_workspace_disk/migration.sql +8 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +723 -0
- package/scripts/git-askpass.sh +11 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- Hand-written per CLEANROOM.md (never `db push`, never generated from
|
|
2
|
+
-- another project's migrations). Additive: Phase 2 scheduler + durability.
|
|
3
|
+
-- Mirrors prisma/schema.prisma exactly.
|
|
4
|
+
|
|
5
|
+
-- AlterEnum
|
|
6
|
+
-- Postgres 12+ allows ADD VALUE inside a transaction as long as the new
|
|
7
|
+
-- value isn't *used* in the same transaction — this migration only adds it.
|
|
8
|
+
ALTER TYPE "RunStatus" ADD VALUE 'lost';
|
|
9
|
+
|
|
10
|
+
-- CreateEnum
|
|
11
|
+
CREATE TYPE "RunTrigger" AS ENUM ('manual', 'scheduled');
|
|
12
|
+
|
|
13
|
+
-- AlterTable: Agent scheduling fields
|
|
14
|
+
ALTER TABLE "Agent" ADD COLUMN "schedule" TEXT;
|
|
15
|
+
ALTER TABLE "Agent" ADD COLUMN "timezone" TEXT NOT NULL DEFAULT 'UTC';
|
|
16
|
+
ALTER TABLE "Agent" ADD COLUMN "scheduleEnabled" BOOLEAN NOT NULL DEFAULT true;
|
|
17
|
+
ALTER TABLE "Agent" ADD COLUMN "lastScheduledAt" TIMESTAMP(3);
|
|
18
|
+
|
|
19
|
+
-- AlterTable: Run durability + provenance fields
|
|
20
|
+
ALTER TABLE "Run" ADD COLUMN "trigger" "RunTrigger" NOT NULL DEFAULT 'manual';
|
|
21
|
+
ALTER TABLE "Run" ADD COLUMN "heartbeatAt" TIMESTAMP(3);
|
|
22
|
+
|
|
23
|
+
-- CreateTable
|
|
24
|
+
CREATE TABLE "SchedulerLease" (
|
|
25
|
+
"scope" TEXT NOT NULL,
|
|
26
|
+
"holder" TEXT NOT NULL,
|
|
27
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
28
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
29
|
+
|
|
30
|
+
CONSTRAINT "SchedulerLease_pkey" PRIMARY KEY ("scope")
|
|
31
|
+
);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
-- Hand-written per CLEANROOM.md (never `db push`, never generated from
|
|
2
|
+
-- another project's migrations). Additive: Phase 3 tools + multi-turn loop.
|
|
3
|
+
-- Mirrors prisma/schema.prisma exactly.
|
|
4
|
+
|
|
5
|
+
-- AlterEnum
|
|
6
|
+
-- Postgres 12+ allows ADD VALUE inside a transaction as long as the new
|
|
7
|
+
-- value isn't *used* in the same transaction — this migration only adds it.
|
|
8
|
+
ALTER TYPE "RunStatus" ADD VALUE 'budget_exhausted';
|
|
9
|
+
|
|
10
|
+
-- AlterTable: Agent gains maxTurns
|
|
11
|
+
ALTER TABLE "Agent" ADD COLUMN "maxTurns" INTEGER NOT NULL DEFAULT 10;
|
|
12
|
+
|
|
13
|
+
-- CreateTable
|
|
14
|
+
CREATE TABLE "Tool" (
|
|
15
|
+
"id" TEXT NOT NULL,
|
|
16
|
+
"name" TEXT NOT NULL,
|
|
17
|
+
"description" TEXT NOT NULL,
|
|
18
|
+
"paramsZod" TEXT NOT NULL,
|
|
19
|
+
"code" TEXT NOT NULL,
|
|
20
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
21
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
22
|
+
|
|
23
|
+
CONSTRAINT "Tool_pkey" PRIMARY KEY ("id")
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
CREATE UNIQUE INDEX "Tool_name_key" ON "Tool"("name");
|
|
27
|
+
|
|
28
|
+
-- CreateTable
|
|
29
|
+
CREATE TABLE "AgentTool" (
|
|
30
|
+
"agentId" TEXT NOT NULL,
|
|
31
|
+
"toolId" TEXT NOT NULL,
|
|
32
|
+
|
|
33
|
+
CONSTRAINT "AgentTool_pkey" PRIMARY KEY ("agentId","toolId")
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
ALTER TABLE "AgentTool" ADD CONSTRAINT "AgentTool_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
37
|
+
ALTER TABLE "AgentTool" ADD CONSTRAINT "AgentTool_toolId_fkey" FOREIGN KEY ("toolId") REFERENCES "Tool"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
38
|
+
|
|
39
|
+
-- CreateTable
|
|
40
|
+
CREATE TABLE "DatastoreEntry" (
|
|
41
|
+
"agentId" TEXT NOT NULL,
|
|
42
|
+
"key" TEXT NOT NULL,
|
|
43
|
+
"value" JSONB NOT NULL,
|
|
44
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
45
|
+
|
|
46
|
+
CONSTRAINT "DatastoreEntry_pkey" PRIMARY KEY ("agentId","key")
|
|
47
|
+
);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
-- Hand-written per CLEANROOM.md (never `db push`, never generated from
|
|
2
|
+
-- another project's migrations). Additive: caches the JSON Schema derived
|
|
3
|
+
-- from Tool.paramsZod at registration time, instead of re-deriving it
|
|
4
|
+
-- (spinning a fresh QuickJS runtime per attached tool) on every run.
|
|
5
|
+
-- Mirrors prisma/schema.prisma exactly.
|
|
6
|
+
|
|
7
|
+
-- AlterTable
|
|
8
|
+
-- DEFAULT '{}' only satisfies any pre-existing rows during the ALTER; the
|
|
9
|
+
-- application always supplies a real derived schema on every future
|
|
10
|
+
-- insert (Tool has no update path), so the default is dropped immediately
|
|
11
|
+
-- after and never relied upon going forward.
|
|
12
|
+
ALTER TABLE "Tool" ADD COLUMN "jsonSchema" JSONB NOT NULL DEFAULT '{}';
|
|
13
|
+
ALTER TABLE "Tool" ALTER COLUMN "jsonSchema" DROP DEFAULT;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
-- Hand-written per CLEANROOM.md (never `db push`, never generated from
|
|
2
|
+
-- another project's migrations). Additive: Phase 4 MCP server —
|
|
3
|
+
-- principals/ownership, task handles, secrets, webhooks, self-hosted OAuth.
|
|
4
|
+
-- Mirrors prisma/schema.prisma exactly.
|
|
5
|
+
|
|
6
|
+
-- CreateEnum
|
|
7
|
+
CREATE TYPE "TaskKind" AS ENUM ('run', 'tool_authoring');
|
|
8
|
+
CREATE TYPE "TaskStatus" AS ENUM ('working', 'input_required', 'completed', 'failed', 'cancelled');
|
|
9
|
+
CREATE TYPE "WebhookStatus" AS ENUM ('enabled', 'disabled');
|
|
10
|
+
|
|
11
|
+
-- CreateTable
|
|
12
|
+
CREATE TABLE "Principal" (
|
|
13
|
+
"id" TEXT NOT NULL,
|
|
14
|
+
"subject" TEXT NOT NULL,
|
|
15
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
16
|
+
|
|
17
|
+
CONSTRAINT "Principal_pkey" PRIMARY KEY ("id")
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE UNIQUE INDEX "Principal_subject_key" ON "Principal"("subject");
|
|
21
|
+
|
|
22
|
+
-- CreateTable
|
|
23
|
+
CREATE TABLE "Task" (
|
|
24
|
+
"id" TEXT NOT NULL,
|
|
25
|
+
"kind" "TaskKind" NOT NULL,
|
|
26
|
+
"runId" TEXT,
|
|
27
|
+
"status" "TaskStatus" NOT NULL DEFAULT 'working',
|
|
28
|
+
"inputRequests" JSONB,
|
|
29
|
+
"inputResponses" JSONB,
|
|
30
|
+
"result" JSONB,
|
|
31
|
+
"error" JSONB,
|
|
32
|
+
"ttlAt" TIMESTAMP(3) NOT NULL,
|
|
33
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
34
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
35
|
+
|
|
36
|
+
CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
-- CreateTable
|
|
40
|
+
CREATE TABLE "Secret" (
|
|
41
|
+
"id" TEXT NOT NULL,
|
|
42
|
+
"name" TEXT NOT NULL,
|
|
43
|
+
"ciphertext" TEXT NOT NULL,
|
|
44
|
+
"keyId" TEXT NOT NULL,
|
|
45
|
+
"ownerId" TEXT,
|
|
46
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
47
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
48
|
+
|
|
49
|
+
CONSTRAINT "Secret_pkey" PRIMARY KEY ("id")
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
CREATE UNIQUE INDEX "Secret_ownerId_name_key" ON "Secret"("ownerId", "name");
|
|
53
|
+
|
|
54
|
+
-- CreateTable
|
|
55
|
+
CREATE TABLE "AgentSecret" (
|
|
56
|
+
"agentId" TEXT NOT NULL,
|
|
57
|
+
"secretId" TEXT NOT NULL,
|
|
58
|
+
|
|
59
|
+
CONSTRAINT "AgentSecret_pkey" PRIMARY KEY ("agentId","secretId")
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
-- CreateTable
|
|
63
|
+
CREATE TABLE "Webhook" (
|
|
64
|
+
"id" TEXT NOT NULL,
|
|
65
|
+
"agentId" TEXT NOT NULL,
|
|
66
|
+
"secretHash" TEXT NOT NULL,
|
|
67
|
+
"status" "WebhookStatus" NOT NULL DEFAULT 'enabled',
|
|
68
|
+
"ownerId" TEXT,
|
|
69
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
70
|
+
"lastFiredAt" TIMESTAMP(3),
|
|
71
|
+
|
|
72
|
+
CONSTRAINT "Webhook_pkey" PRIMARY KEY ("id")
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
CREATE INDEX "Webhook_agentId_idx" ON "Webhook"("agentId");
|
|
76
|
+
|
|
77
|
+
-- CreateTable
|
|
78
|
+
CREATE TABLE "OAuthClient" (
|
|
79
|
+
"clientId" TEXT NOT NULL,
|
|
80
|
+
"metadata" JSONB NOT NULL,
|
|
81
|
+
"clientSecret" TEXT,
|
|
82
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
83
|
+
|
|
84
|
+
CONSTRAINT "OAuthClient_pkey" PRIMARY KEY ("clientId")
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
-- CreateTable
|
|
88
|
+
CREATE TABLE "OAuthGrant" (
|
|
89
|
+
"id" TEXT NOT NULL,
|
|
90
|
+
"clientId" TEXT NOT NULL,
|
|
91
|
+
"principalId" TEXT NOT NULL,
|
|
92
|
+
"scope" TEXT NOT NULL,
|
|
93
|
+
"refreshToken" TEXT,
|
|
94
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
95
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
96
|
+
|
|
97
|
+
CONSTRAINT "OAuthGrant_pkey" PRIMARY KEY ("id")
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
CREATE UNIQUE INDEX "OAuthGrant_refreshToken_key" ON "OAuthGrant"("refreshToken");
|
|
101
|
+
|
|
102
|
+
-- AlterTable: Agent gains ownerId
|
|
103
|
+
ALTER TABLE "Agent" ADD COLUMN "ownerId" TEXT;
|
|
104
|
+
|
|
105
|
+
-- AlterTable: Tool gains ownerId
|
|
106
|
+
ALTER TABLE "Tool" ADD COLUMN "ownerId" TEXT;
|
|
107
|
+
|
|
108
|
+
-- AddForeignKey
|
|
109
|
+
ALTER TABLE "Agent" ADD CONSTRAINT "Agent_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "Principal"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
110
|
+
ALTER TABLE "Tool" ADD CONSTRAINT "Tool_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "Principal"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
111
|
+
ALTER TABLE "Secret" ADD CONSTRAINT "Secret_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "Principal"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
112
|
+
ALTER TABLE "Webhook" ADD CONSTRAINT "Webhook_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "Principal"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
113
|
+
ALTER TABLE "Webhook" ADD CONSTRAINT "Webhook_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
114
|
+
ALTER TABLE "AgentSecret" ADD CONSTRAINT "AgentSecret_agentId_fkey" FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
115
|
+
ALTER TABLE "AgentSecret" ADD CONSTRAINT "AgentSecret_secretId_fkey" FOREIGN KEY ("secretId") REFERENCES "Secret"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Hand-written per CLEANROOM.md (never `db push`, never generated from
|
|
2
|
+
-- another project's migrations). Additive: Run.finalText, so a completed
|
|
3
|
+
-- run's answer is durably readable (previously only streamed live via
|
|
4
|
+
-- onText and dropped) — needed by Phase 4's Task manager (MCP) to answer
|
|
5
|
+
-- `tasks/get`/`get_run` for a succeeded run.
|
|
6
|
+
|
|
7
|
+
ALTER TABLE "Run" ADD COLUMN "finalText" TEXT;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- Hand-written per CLEANROOM.md (never `db push`, never generated from
|
|
2
|
+
-- another project's migrations). Additive: Run.turns, so a run's turn
|
|
3
|
+
-- count is durably readable (previously only returned in EngineResult and
|
|
4
|
+
-- dropped) — needed by Phase 4's list_runs/get_run MCP tools.
|
|
5
|
+
|
|
6
|
+
ALTER TABLE "Run" ADD COLUMN "turns" INTEGER NOT NULL DEFAULT 0;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
-- Add nullable Task.principalId: replaces transitive
|
|
2
|
+
-- Task -> Run -> Agent -> ownerId ownership resolution with a direct
|
|
3
|
+
-- stamp-at-creation column, uniform across task kinds (including future
|
|
4
|
+
-- tool_authoring tasks, which have no Run/Agent chain).
|
|
5
|
+
ALTER TABLE "Task" ADD COLUMN "principalId" TEXT;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
-- Hand-written security migration. All legacy OAuth credentials are intentionally invalidated.
|
|
2
|
+
-- Deploy only after backup and with issuance stopped. Never restore legacy credential contents.
|
|
3
|
+
BEGIN;
|
|
4
|
+
DROP TABLE "OAuthGrant";
|
|
5
|
+
DROP TABLE "OAuthClient";
|
|
6
|
+
CREATE TABLE "OAuthClient" ("clientId" TEXT PRIMARY KEY, "metadata" JSONB NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP);
|
|
7
|
+
CREATE TABLE "AuthUser" (
|
|
8
|
+
"id" TEXT PRIMARY KEY, "principalId" TEXT NOT NULL, "displayName" TEXT,
|
|
9
|
+
"status" TEXT NOT NULL DEFAULT 'enabled', "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMP(3) NOT NULL,
|
|
10
|
+
CONSTRAINT "AuthUser_principalId_fkey" FOREIGN KEY ("principalId") REFERENCES "Principal"("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
11
|
+
);
|
|
12
|
+
CREATE UNIQUE INDEX "AuthUser_principalId_key" ON "AuthUser"("principalId");
|
|
13
|
+
CREATE TABLE "AuthLoginKey" (
|
|
14
|
+
"keyId" TEXT PRIMARY KEY, "userId" TEXT NOT NULL, "secretHash" TEXT NOT NULL,
|
|
15
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "lastUsedAt" TIMESTAMP(3), "expiresAt" TIMESTAMP(3) NOT NULL, "revokedAt" TIMESTAMP(3),
|
|
16
|
+
CONSTRAINT "AuthLoginKey_userId_fkey" FOREIGN KEY ("userId") REFERENCES "AuthUser"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
17
|
+
);
|
|
18
|
+
CREATE INDEX "AuthLoginKey_userId_idx" ON "AuthLoginKey"("userId");
|
|
19
|
+
CREATE INDEX "AuthLoginKey_expiresAt_idx" ON "AuthLoginKey"("expiresAt");
|
|
20
|
+
CREATE TABLE "AuthSession" (
|
|
21
|
+
"sessionId" TEXT PRIMARY KEY, "userId" TEXT NOT NULL, "secretHash" TEXT NOT NULL,
|
|
22
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "lastSeenAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
23
|
+
"expiresAt" TIMESTAMP(3) NOT NULL, "revokedAt" TIMESTAMP(3),
|
|
24
|
+
CONSTRAINT "AuthSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "AuthUser"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
25
|
+
);
|
|
26
|
+
CREATE INDEX "AuthSession_userId_idx" ON "AuthSession"("userId");
|
|
27
|
+
CREATE INDEX "AuthSession_expiresAt_idx" ON "AuthSession"("expiresAt");
|
|
28
|
+
CREATE TABLE "AuthFormChallenge" (
|
|
29
|
+
"challengeId" TEXT PRIMARY KEY, "sessionId" TEXT, "purpose" TEXT NOT NULL, "binding" TEXT NOT NULL, "secretHash" TEXT NOT NULL,
|
|
30
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "expiresAt" TIMESTAMP(3) NOT NULL, "consumedAt" TIMESTAMP(3),
|
|
31
|
+
CONSTRAINT "AuthFormChallenge_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "AuthSession"("sessionId") ON DELETE CASCADE ON UPDATE CASCADE
|
|
32
|
+
);
|
|
33
|
+
CREATE INDEX "AuthFormChallenge_expiresAt_idx" ON "AuthFormChallenge"("expiresAt");
|
|
34
|
+
CREATE TABLE "OAuthAuthorizationRequest" (
|
|
35
|
+
"id" TEXT PRIMARY KEY, "clientId" TEXT NOT NULL, "redirectUri" TEXT NOT NULL, "resource" TEXT NOT NULL,
|
|
36
|
+
"requestedScope" TEXT NOT NULL, "codeChallenge" TEXT NOT NULL, "state" TEXT,
|
|
37
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "expiresAt" TIMESTAMP(3) NOT NULL, "consumedAt" TIMESTAMP(3),
|
|
38
|
+
CONSTRAINT "OAuthAuthorizationRequest_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES "OAuthClient"("clientId") ON DELETE CASCADE ON UPDATE CASCADE
|
|
39
|
+
);
|
|
40
|
+
CREATE INDEX "OAuthAuthorizationRequest_expiresAt_idx" ON "OAuthAuthorizationRequest"("expiresAt");
|
|
41
|
+
CREATE TABLE "OAuthAuthorizationCode" (
|
|
42
|
+
"codeId" TEXT PRIMARY KEY, "secretHash" TEXT NOT NULL, "clientId" TEXT NOT NULL, "userId" TEXT NOT NULL,
|
|
43
|
+
"redirectUri" TEXT NOT NULL, "resource" TEXT NOT NULL, "scope" TEXT NOT NULL, "codeChallenge" TEXT NOT NULL,
|
|
44
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "expiresAt" TIMESTAMP(3) NOT NULL, "consumedAt" TIMESTAMP(3),
|
|
45
|
+
CONSTRAINT "OAuthAuthorizationCode_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES "OAuthClient"("clientId") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
46
|
+
CONSTRAINT "OAuthAuthorizationCode_userId_fkey" FOREIGN KEY ("userId") REFERENCES "AuthUser"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
47
|
+
);
|
|
48
|
+
CREATE INDEX "OAuthAuthorizationCode_expiresAt_idx" ON "OAuthAuthorizationCode"("expiresAt");
|
|
49
|
+
CREATE TABLE "OAuthFamily" (
|
|
50
|
+
"id" TEXT PRIMARY KEY, "clientId" TEXT NOT NULL, "userId" TEXT NOT NULL, "scope" TEXT NOT NULL, "resource" TEXT NOT NULL,
|
|
51
|
+
"expiresAt" TIMESTAMP(3) NOT NULL, "revokedAt" TIMESTAMP(3), "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
52
|
+
CONSTRAINT "OAuthFamily_clientId_fkey" FOREIGN KEY ("clientId") REFERENCES "OAuthClient"("clientId") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
53
|
+
CONSTRAINT "OAuthFamily_userId_fkey" FOREIGN KEY ("userId") REFERENCES "AuthUser"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
54
|
+
);
|
|
55
|
+
CREATE INDEX "OAuthFamily_userId_idx" ON "OAuthFamily"("userId");
|
|
56
|
+
CREATE INDEX "OAuthFamily_expiresAt_idx" ON "OAuthFamily"("expiresAt");
|
|
57
|
+
CREATE TABLE "OAuthGrant" (
|
|
58
|
+
"id" TEXT PRIMARY KEY, "familyId" TEXT NOT NULL, "refreshTokenHash" TEXT NOT NULL,
|
|
59
|
+
"expiresAt" TIMESTAMP(3) NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
60
|
+
"consumedAt" TIMESTAMP(3), "revokedAt" TIMESTAMP(3), "replacedById" TEXT,
|
|
61
|
+
CONSTRAINT "OAuthGrant_familyId_fkey" FOREIGN KEY ("familyId") REFERENCES "OAuthFamily"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
62
|
+
);
|
|
63
|
+
CREATE INDEX "OAuthGrant_familyId_idx" ON "OAuthGrant"("familyId");
|
|
64
|
+
CREATE INDEX "OAuthGrant_expiresAt_idx" ON "OAuthGrant"("expiresAt");
|
|
65
|
+
CREATE TABLE "AuthRateLimit" ("key" TEXT PRIMARY KEY, "hits" INTEGER NOT NULL, "expiresAt" TIMESTAMP(3) NOT NULL);
|
|
66
|
+
CREATE INDEX "AuthRateLimit_expiresAt_idx" ON "AuthRateLimit"("expiresAt");
|
|
67
|
+
COMMIT;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
-- Phase 5 coding-agent schema. Additive defaults preserve all existing agents
|
|
2
|
+
-- as native and all existing runs as managed by their historical execution path.
|
|
3
|
+
BEGIN;
|
|
4
|
+
|
|
5
|
+
CREATE TYPE "AgentKind" AS ENUM ('native', 'coding');
|
|
6
|
+
CREATE TYPE "CodingProvider" AS ENUM ('codex');
|
|
7
|
+
ALTER TYPE "RunStatus" ADD VALUE 'cancelled';
|
|
8
|
+
|
|
9
|
+
ALTER TABLE "Agent"
|
|
10
|
+
ADD COLUMN "kind" "AgentKind" NOT NULL DEFAULT 'native';
|
|
11
|
+
|
|
12
|
+
ALTER TABLE "Run"
|
|
13
|
+
ADD COLUMN "executionManaged" BOOLEAN NOT NULL DEFAULT false;
|
|
14
|
+
|
|
15
|
+
CREATE TABLE "CodingAgentProfile" (
|
|
16
|
+
"agentId" TEXT PRIMARY KEY,
|
|
17
|
+
"provider" "CodingProvider" NOT NULL DEFAULT 'codex',
|
|
18
|
+
"repository" TEXT NOT NULL,
|
|
19
|
+
"baseRef" TEXT NOT NULL DEFAULT 'main',
|
|
20
|
+
"defaultTask" TEXT,
|
|
21
|
+
"timeoutSec" INTEGER NOT NULL DEFAULT 1800,
|
|
22
|
+
"allowedEgress" JSONB NOT NULL,
|
|
23
|
+
"protectedPaths" JSONB NOT NULL,
|
|
24
|
+
CONSTRAINT "CodingAgentProfile_agentId_fkey"
|
|
25
|
+
FOREIGN KEY ("agentId") REFERENCES "Agent"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
CREATE TABLE "CodingRun" (
|
|
29
|
+
"runId" TEXT PRIMARY KEY,
|
|
30
|
+
"task" TEXT NOT NULL,
|
|
31
|
+
"repository" TEXT NOT NULL,
|
|
32
|
+
"baseRef" TEXT NOT NULL,
|
|
33
|
+
"headRef" TEXT NOT NULL,
|
|
34
|
+
"provider" "CodingProvider" NOT NULL,
|
|
35
|
+
"model" TEXT NOT NULL,
|
|
36
|
+
"timeoutSec" INTEGER NOT NULL,
|
|
37
|
+
"allowedEgress" JSONB NOT NULL,
|
|
38
|
+
"protectedPaths" JSONB NOT NULL,
|
|
39
|
+
"jobBackend" TEXT,
|
|
40
|
+
"jobHandle" TEXT,
|
|
41
|
+
"result" JSONB,
|
|
42
|
+
"resultSchema" INTEGER NOT NULL DEFAULT 1,
|
|
43
|
+
"budgetReservedUsd" DECIMAL(10,6) NOT NULL,
|
|
44
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
45
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
46
|
+
CONSTRAINT "CodingRun_runId_fkey"
|
|
47
|
+
FOREIGN KEY ("runId") REFERENCES "Run"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
CREATE INDEX "CodingRun_jobBackend_jobHandle_idx" ON "CodingRun"("jobBackend", "jobHandle");
|
|
51
|
+
|
|
52
|
+
COMMIT;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
-- Per-attachment capability scoping (OWASP LLM08 fix). Additive: three new
|
|
2
|
+
-- JSONB columns on AgentTool, defaulting to an empty array (deny-all) for
|
|
3
|
+
-- any row inserted from now on. Pre-existing rows are explicitly backfilled
|
|
4
|
+
-- below to their current unrestricted behavior so no already-scheduled
|
|
5
|
+
-- agent breaks on deploy -- new attach_tool/CLI calls default to deny-all.
|
|
6
|
+
BEGIN;
|
|
7
|
+
|
|
8
|
+
ALTER TABLE "AgentTool" ADD COLUMN "allowedSecrets" JSONB NOT NULL DEFAULT '[]';
|
|
9
|
+
ALTER TABLE "AgentTool" ADD COLUMN "allowedDatastorePrefixes" JSONB NOT NULL DEFAULT '[]';
|
|
10
|
+
ALTER TABLE "AgentTool" ADD COLUMN "allowedHosts" JSONB NOT NULL DEFAULT '[]';
|
|
11
|
+
|
|
12
|
+
UPDATE "AgentTool" AS at
|
|
13
|
+
SET "allowedSecrets" = COALESCE((
|
|
14
|
+
SELECT jsonb_agg(s."name")
|
|
15
|
+
FROM "AgentSecret" ags
|
|
16
|
+
JOIN "Secret" s ON s."id" = ags."secretId"
|
|
17
|
+
WHERE ags."agentId" = at."agentId"
|
|
18
|
+
), '[]'::jsonb),
|
|
19
|
+
"allowedDatastorePrefixes" = '[""]'::jsonb,
|
|
20
|
+
"allowedHosts" = '["*"]'::jsonb;
|
|
21
|
+
|
|
22
|
+
COMMIT;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- Opt-in per-entry PII encryption for the datastore seam. Additive: two new
|
|
2
|
+
-- columns on DatastoreEntry, both defaulted so every existing row keeps its
|
|
3
|
+
-- current (unencrypted) behavior. `pii` is only ever set true by an explicit
|
|
4
|
+
-- `datastore.set(..., { pii: true })` call -- never inferred or backfilled.
|
|
5
|
+
ALTER TABLE "DatastoreEntry" ADD COLUMN "pii" BOOLEAN NOT NULL DEFAULT false;
|
|
6
|
+
ALTER TABLE "DatastoreEntry" ADD COLUMN "keyId" TEXT;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
-- Cross-instance persistence for the out-of-band secret-entry flow. Replaces
|
|
2
|
+
-- the in-process `outcomes` Map in mcp/tools/secret-elicitation.ts, which
|
|
3
|
+
-- stranded a browser-form submission on the wrong instance under a
|
|
4
|
+
-- multi-instance HTTP deployment. New table only -- no existing table
|
|
5
|
+
-- touched.
|
|
6
|
+
CREATE TABLE "SecretElicitationOutcome" (
|
|
7
|
+
"ownerId" TEXT NOT NULL,
|
|
8
|
+
"secretName" TEXT NOT NULL,
|
|
9
|
+
"outcome" JSONB NOT NULL,
|
|
10
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
11
|
+
|
|
12
|
+
CONSTRAINT "SecretElicitationOutcome_pkey" PRIMARY KEY ("ownerId","secretName")
|
|
13
|
+
);
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
-- Durable, monotonic accounting for the Phase 5 per-run credential proxy.
|
|
2
|
+
-- Capability and provider secrets are deliberately absent: only a SHA-256
|
|
3
|
+
-- capability digest and an operator-defined credential reference are stored.
|
|
4
|
+
BEGIN;
|
|
5
|
+
|
|
6
|
+
CREATE TYPE "CodingProxySessionStatus" AS ENUM ('active', 'cancelled');
|
|
7
|
+
CREATE TYPE "CodingProxyRequestStatus" AS ENUM ('reserved', 'completed', 'released', 'uncertain');
|
|
8
|
+
|
|
9
|
+
CREATE TABLE "CodingProxySession" (
|
|
10
|
+
"id" TEXT PRIMARY KEY,
|
|
11
|
+
"runId" TEXT NOT NULL,
|
|
12
|
+
"capabilityHash" TEXT NOT NULL,
|
|
13
|
+
"credentialRef" TEXT NOT NULL,
|
|
14
|
+
"allowedModels" JSONB NOT NULL,
|
|
15
|
+
"deadlineAt" TIMESTAMP(3) NOT NULL,
|
|
16
|
+
"budgetUsd" DECIMAL(18,10) NOT NULL,
|
|
17
|
+
"status" "CodingProxySessionStatus" NOT NULL DEFAULT 'active',
|
|
18
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
19
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
20
|
+
CONSTRAINT "CodingProxySession_runId_fkey"
|
|
21
|
+
FOREIGN KEY ("runId") REFERENCES "CodingRun"("runId") ON DELETE CASCADE ON UPDATE CASCADE
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE UNIQUE INDEX "CodingProxySession_runId_key" ON "CodingProxySession"("runId");
|
|
25
|
+
CREATE UNIQUE INDEX "CodingProxySession_capabilityHash_key" ON "CodingProxySession"("capabilityHash");
|
|
26
|
+
CREATE INDEX "CodingProxySession_deadlineAt_idx" ON "CodingProxySession"("deadlineAt");
|
|
27
|
+
|
|
28
|
+
CREATE TABLE "CodingProxyRequest" (
|
|
29
|
+
"id" TEXT PRIMARY KEY,
|
|
30
|
+
"sessionId" TEXT NOT NULL,
|
|
31
|
+
"requestKey" TEXT NOT NULL,
|
|
32
|
+
"requestFingerprint" TEXT NOT NULL,
|
|
33
|
+
"model" TEXT NOT NULL,
|
|
34
|
+
"status" "CodingProxyRequestStatus" NOT NULL DEFAULT 'reserved',
|
|
35
|
+
"reservationUsd" DECIMAL(18,10) NOT NULL,
|
|
36
|
+
"actualCostUsd" DECIMAL(18,10),
|
|
37
|
+
"pricingVersion" TEXT NOT NULL,
|
|
38
|
+
"pricingSnapshot" JSONB NOT NULL,
|
|
39
|
+
"inputTokens" INTEGER,
|
|
40
|
+
"outputTokens" INTEGER,
|
|
41
|
+
"cachedInputTokens" INTEGER,
|
|
42
|
+
"cacheWriteTokens" INTEGER,
|
|
43
|
+
"reasoningTokens" INTEGER,
|
|
44
|
+
"upstreamStatus" INTEGER,
|
|
45
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
46
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
47
|
+
"completedAt" TIMESTAMP(3),
|
|
48
|
+
CONSTRAINT "CodingProxyRequest_sessionId_fkey"
|
|
49
|
+
FOREIGN KEY ("sessionId") REFERENCES "CodingProxySession"("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
CREATE UNIQUE INDEX "CodingProxyRequest_sessionId_requestKey_key"
|
|
53
|
+
ON "CodingProxyRequest"("sessionId", "requestKey");
|
|
54
|
+
CREATE INDEX "CodingProxyRequest_sessionId_status_idx"
|
|
55
|
+
ON "CodingProxyRequest"("sessionId", "status");
|
|
56
|
+
|
|
57
|
+
COMMIT;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- Optional recurring (daily/weekly/monthly) spend caps across a group of
|
|
2
|
+
-- agents, layered on top of each agent's existing per-run budgetUsd.
|
|
3
|
+
-- Additive only: a new table plus one new nullable column on Agent.
|
|
4
|
+
CREATE TABLE "BudgetGroup" (
|
|
5
|
+
"id" TEXT NOT NULL,
|
|
6
|
+
"name" TEXT NOT NULL,
|
|
7
|
+
"ownerId" TEXT,
|
|
8
|
+
"dailyBudgetUsd" DECIMAL(10,4),
|
|
9
|
+
"weeklyBudgetUsd" DECIMAL(10,4),
|
|
10
|
+
"monthlyBudgetUsd" DECIMAL(10,4),
|
|
11
|
+
"warnThresholdRatio" DECIMAL(3,2) NOT NULL DEFAULT 0.8,
|
|
12
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
13
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
14
|
+
|
|
15
|
+
CONSTRAINT "BudgetGroup_pkey" PRIMARY KEY ("id")
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
CREATE UNIQUE INDEX "BudgetGroup_ownerId_name_key" ON "BudgetGroup"("ownerId", "name");
|
|
19
|
+
|
|
20
|
+
ALTER TABLE "BudgetGroup" ADD CONSTRAINT "BudgetGroup_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "Principal"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
21
|
+
|
|
22
|
+
ALTER TABLE "Agent" ADD COLUMN "budgetGroupId" TEXT;
|
|
23
|
+
|
|
24
|
+
ALTER TABLE "Agent" ADD CONSTRAINT "Agent_budgetGroupId_fkey" FOREIGN KEY ("budgetGroupId") REFERENCES "BudgetGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
-- Metadata-only coding failure audit fields. Detailed diagnostics belong in the
|
|
2
|
+
-- protected log sink; task text, diffs, and credentials never enter this table.
|
|
3
|
+
ALTER TABLE "CodingRun"
|
|
4
|
+
ADD COLUMN "failureCategory" TEXT,
|
|
5
|
+
ADD COLUMN "diagnosticId" TEXT;
|
|
6
|
+
|
|
7
|
+
CREATE INDEX "CodingRun_failureCategory_idx" ON "CodingRun"("failureCategory");
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Add nullable so existing rows survive the ADD.
|
|
2
|
+
ALTER TABLE "AgentSecret" ADD COLUMN "boundName" TEXT;
|
|
3
|
+
|
|
4
|
+
-- Backfill: existing attachments resolve by the secret's canonical name,
|
|
5
|
+
-- so their point-of-use name IS that name.
|
|
6
|
+
UPDATE "AgentSecret" a
|
|
7
|
+
SET "boundName" = s."name"
|
|
8
|
+
FROM "Secret" s
|
|
9
|
+
WHERE a."secretId" = s."id";
|
|
10
|
+
|
|
11
|
+
-- Lock it down.
|
|
12
|
+
ALTER TABLE "AgentSecret" ALTER COLUMN "boundName" SET NOT NULL;
|
|
13
|
+
|
|
14
|
+
-- One point-of-use name per agent.
|
|
15
|
+
CREATE UNIQUE INDEX "AgentSecret_agentId_boundName_key"
|
|
16
|
+
ON "AgentSecret" ("agentId", "boundName");
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
ALTER TABLE "CodingAgentProfile" ADD COLUMN "toolchain" TEXT NOT NULL DEFAULT 'node';
|
|
2
|
+
ALTER TABLE "CodingAgentProfile" ADD COLUMN "toolchainVersion" TEXT;
|
|
3
|
+
ALTER TABLE "CodingAgentProfile" ADD COLUMN "workerImageRef" TEXT;
|
|
4
|
+
|
|
5
|
+
ALTER TABLE "CodingRun" ADD COLUMN "workerImage" TEXT;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- Provider identifiers are externally visible protocol values. Keep their
|
|
2
|
+
-- exact spelling (including "claude-code") while application schemas retain
|
|
3
|
+
-- the closed allow-list.
|
|
4
|
+
BEGIN;
|
|
5
|
+
|
|
6
|
+
ALTER TABLE "CodingAgentProfile"
|
|
7
|
+
ALTER COLUMN "provider" DROP DEFAULT,
|
|
8
|
+
ALTER COLUMN "provider" TYPE TEXT USING "provider"::TEXT,
|
|
9
|
+
ALTER COLUMN "provider" SET DEFAULT 'codex';
|
|
10
|
+
|
|
11
|
+
ALTER TABLE "CodingRun"
|
|
12
|
+
ALTER COLUMN "provider" TYPE TEXT USING "provider"::TEXT;
|
|
13
|
+
|
|
14
|
+
DROP TYPE "CodingProvider";
|
|
15
|
+
|
|
16
|
+
ALTER TABLE "CodingAgentProfile"
|
|
17
|
+
ADD CONSTRAINT "CodingAgentProfile_provider_check"
|
|
18
|
+
CHECK ("provider" IN ('codex', 'claude-code'));
|
|
19
|
+
|
|
20
|
+
ALTER TABLE "CodingRun"
|
|
21
|
+
ADD CONSTRAINT "CodingRun_provider_check"
|
|
22
|
+
CHECK ("provider" IN ('codex', 'claude-code'));
|
|
23
|
+
|
|
24
|
+
COMMIT;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
BEGIN;
|
|
2
|
+
|
|
3
|
+
ALTER TABLE "CodingProxySession"
|
|
4
|
+
ADD COLUMN "protocol" TEXT NOT NULL DEFAULT 'openai-responses';
|
|
5
|
+
|
|
6
|
+
ALTER TABLE "CodingProxySession"
|
|
7
|
+
ADD CONSTRAINT "CodingProxySession_protocol_check"
|
|
8
|
+
CHECK ("protocol" IN ('openai-responses', 'anthropic-messages'));
|
|
9
|
+
|
|
10
|
+
COMMIT;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-- Un-phased: agent-controlled persistent memory. `memoryEnabled` gates the
|
|
2
|
+
-- memory_get/memory_set/memory_list/memory_search built-in tools; AgentMemory
|
|
3
|
+
-- holds the key/content rows. No FK to "Agent" (matches "DatastoreEntry").
|
|
4
|
+
-- "contentTsv" is a plain column, populated by application code on every
|
|
5
|
+
-- write (never a Postgres GENERATED column — see schema.prisma).
|
|
6
|
+
ALTER TABLE "Agent" ADD COLUMN "memoryEnabled" BOOLEAN NOT NULL DEFAULT false;
|
|
7
|
+
|
|
8
|
+
CREATE TABLE "AgentMemory" (
|
|
9
|
+
"agentId" TEXT NOT NULL,
|
|
10
|
+
"key" TEXT NOT NULL,
|
|
11
|
+
"content" TEXT NOT NULL,
|
|
12
|
+
"contentTsv" tsvector,
|
|
13
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
14
|
+
|
|
15
|
+
CONSTRAINT "AgentMemory_pkey" PRIMARY KEY ("agentId", "key")
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
CREATE INDEX "AgentMemory_contentTsv_idx" ON "AgentMemory" USING GIN ("contentTsv");
|