@plumbus/core 0.7.1 → 0.8.0-beta.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/CHANGELOG.md +39 -0
- package/README.md +2 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/admission/client.d.ts +9 -0
- package/dist/admission/client.d.ts.map +1 -0
- package/dist/admission/client.js +34 -0
- package/dist/admission/client.js.map +1 -0
- package/dist/admission/index.d.ts +5 -0
- package/dist/admission/index.d.ts.map +1 -0
- package/dist/admission/index.js +4 -0
- package/dist/admission/index.js.map +1 -0
- package/dist/admission/request-admission.d.ts +26 -0
- package/dist/admission/request-admission.d.ts.map +1 -0
- package/dist/admission/request-admission.js +85 -0
- package/dist/admission/request-admission.js.map +1 -0
- package/dist/admission/shared.d.ts +31 -0
- package/dist/admission/shared.d.ts.map +1 -0
- package/dist/admission/shared.js +30 -0
- package/dist/admission/shared.js.map +1 -0
- package/dist/ai/ai/provider.d.ts +5 -7
- package/dist/ai/ai-service.d.ts +8 -1
- package/dist/ai/ai-service.d.ts.map +1 -1
- package/dist/ai/ai-service.js +23 -13
- package/dist/ai/ai-service.js.map +1 -1
- package/dist/ai/errors/data-errors.d.ts +6 -0
- package/dist/ai/errors/index.d.ts +4 -1
- package/dist/ai/fill-prompt-template.d.ts +12 -0
- package/dist/ai/fill-prompt-template.d.ts.map +1 -0
- package/dist/ai/fill-prompt-template.js +19 -0
- package/dist/ai/fill-prompt-template.js.map +1 -0
- package/dist/ai/governed-artifacts.d.ts +49 -0
- package/dist/ai/governed-artifacts.d.ts.map +1 -0
- package/dist/ai/governed-artifacts.js +277 -0
- package/dist/ai/governed-artifacts.js.map +1 -0
- package/dist/ai/governed-budget.d.ts +17 -0
- package/dist/ai/governed-budget.d.ts.map +1 -0
- package/dist/ai/governed-budget.js +52 -0
- package/dist/ai/governed-budget.js.map +1 -0
- package/dist/ai/governed-host.d.ts +54 -0
- package/dist/ai/governed-host.d.ts.map +1 -0
- package/dist/ai/governed-host.js +8 -0
- package/dist/ai/governed-host.js.map +1 -0
- package/dist/ai/governed-invoke.d.ts +41 -0
- package/dist/ai/governed-invoke.d.ts.map +1 -0
- package/dist/ai/governed-invoke.js +102 -0
- package/dist/ai/governed-invoke.js.map +1 -0
- package/dist/ai/governed-runtime.d.ts +103 -0
- package/dist/ai/governed-runtime.d.ts.map +1 -0
- package/dist/ai/governed-runtime.js +151 -0
- package/dist/ai/governed-runtime.js.map +1 -0
- package/dist/ai/index.d.ts +12 -2
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +8 -2
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/prompt-registry.d.ts +6 -0
- package/dist/ai/prompt-registry.d.ts.map +1 -1
- package/dist/ai/prompt-registry.js +12 -0
- package/dist/ai/prompt-registry.js.map +1 -1
- package/dist/ai/provider.d.ts +5 -7
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/provider.js +29 -0
- package/dist/ai/provider.js.map +1 -1
- package/dist/ai/types/enums.d.ts +2 -0
- package/dist/ai/types/fields.d.ts +7 -0
- package/dist/ai/types/prompt.d.ts +8 -0
- package/dist/ai/validation.d.ts.map +1 -1
- package/dist/ai/validation.js +10 -1
- package/dist/ai/validation.js.map +1 -1
- package/dist/api/exposure.d.ts +14 -0
- package/dist/api/exposure.d.ts.map +1 -1
- package/dist/api/exposure.js +16 -0
- package/dist/api/exposure.js.map +1 -1
- package/dist/api/idempotency.d.ts +67 -0
- package/dist/api/idempotency.d.ts.map +1 -0
- package/dist/api/idempotency.js +176 -0
- package/dist/api/idempotency.js.map +1 -0
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +4 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/route-generator.d.ts +50 -6
- package/dist/api/route-generator.d.ts.map +1 -1
- package/dist/api/route-generator.js +254 -12
- package/dist/api/route-generator.js.map +1 -1
- package/dist/approvals/action-risk.d.ts +41 -0
- package/dist/approvals/action-risk.d.ts.map +1 -0
- package/dist/approvals/action-risk.js +56 -0
- package/dist/approvals/action-risk.js.map +1 -0
- package/dist/approvals/actors.d.ts +8 -0
- package/dist/approvals/actors.d.ts.map +1 -0
- package/dist/approvals/actors.js +26 -0
- package/dist/approvals/actors.js.map +1 -0
- package/dist/approvals/authorization.d.ts +5 -0
- package/dist/approvals/authorization.d.ts.map +1 -0
- package/dist/approvals/authorization.js +16 -0
- package/dist/approvals/authorization.js.map +1 -0
- package/dist/approvals/digest.d.ts +3 -0
- package/dist/approvals/digest.d.ts.map +1 -0
- package/dist/approvals/digest.js +21 -0
- package/dist/approvals/digest.js.map +1 -0
- package/dist/approvals/gate.d.ts +15 -0
- package/dist/approvals/gate.d.ts.map +1 -0
- package/dist/approvals/gate.js +102 -0
- package/dist/approvals/gate.js.map +1 -0
- package/dist/approvals/host-runtime.d.ts +16 -0
- package/dist/approvals/host-runtime.d.ts.map +1 -0
- package/dist/approvals/host-runtime.js +12 -0
- package/dist/approvals/host-runtime.js.map +1 -0
- package/dist/approvals/index.d.ts +19 -0
- package/dist/approvals/index.d.ts.map +1 -0
- package/dist/approvals/index.js +13 -0
- package/dist/approvals/index.js.map +1 -0
- package/dist/approvals/memory-store.d.ts +3 -0
- package/dist/approvals/memory-store.d.ts.map +1 -0
- package/dist/approvals/memory-store.js +33 -0
- package/dist/approvals/memory-store.js.map +1 -0
- package/dist/approvals/schema.d.ts +484 -0
- package/dist/approvals/schema.d.ts.map +1 -0
- package/dist/approvals/schema.js +55 -0
- package/dist/approvals/schema.js.map +1 -0
- package/dist/approvals/service.d.ts +17 -0
- package/dist/approvals/service.d.ts.map +1 -0
- package/dist/approvals/service.js +240 -0
- package/dist/approvals/service.js.map +1 -0
- package/dist/approvals/sql-store.d.ts +9 -0
- package/dist/approvals/sql-store.d.ts.map +1 -0
- package/dist/approvals/sql-store.js +179 -0
- package/dist/approvals/sql-store.js.map +1 -0
- package/dist/approvals/types.d.ts +156 -0
- package/dist/approvals/types.d.ts.map +1 -0
- package/dist/approvals/types.js +32 -0
- package/dist/approvals/types.js.map +1 -0
- package/dist/approvals/wait.d.ts +10 -0
- package/dist/approvals/wait.d.ts.map +1 -0
- package/dist/approvals/wait.js +11 -0
- package/dist/approvals/wait.js.map +1 -0
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +2 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/api.d.ts +65 -0
- package/dist/cli/commands/api.d.ts.map +1 -1
- package/dist/cli/commands/api.js +79 -4
- package/dist/cli/commands/api.js.map +1 -1
- package/dist/cli/commands/compile-flows.d.ts +9 -0
- package/dist/cli/commands/compile-flows.d.ts.map +1 -0
- package/dist/cli/commands/compile-flows.js +55 -0
- package/dist/cli/commands/compile-flows.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +6 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +22 -5
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/e2e.d.ts +5 -0
- package/dist/cli/commands/e2e.d.ts.map +1 -1
- package/dist/cli/commands/e2e.js +42 -3
- package/dist/cli/commands/e2e.js.map +1 -1
- package/dist/cli/commands/flow.d.ts.map +1 -1
- package/dist/cli/commands/flow.js +12 -3
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/generate-openapi-from-zod.d.ts +26 -0
- package/dist/cli/commands/generate-openapi-from-zod.d.ts.map +1 -0
- package/dist/cli/commands/generate-openapi-from-zod.js +189 -0
- package/dist/cli/commands/generate-openapi-from-zod.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +10 -4
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +27 -70
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +5 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +28 -2
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +1 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +145 -34
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/openapi-3-1.d.ts +34 -0
- package/dist/cli/commands/openapi-3-1.d.ts.map +1 -0
- package/dist/cli/commands/openapi-3-1.js +333 -0
- package/dist/cli/commands/openapi-3-1.js.map +1 -0
- package/dist/cli/commands/start.d.ts +5 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +20 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/ui.d.ts +11 -0
- package/dist/cli/commands/ui.d.ts.map +1 -1
- package/dist/cli/commands/ui.js +105 -20
- package/dist/cli/commands/ui.js.map +1 -1
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +2 -0
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/commands/worker.d.ts +5 -0
- package/dist/cli/commands/worker.d.ts.map +1 -1
- package/dist/cli/commands/worker.js +18 -2
- package/dist/cli/commands/worker.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/credentials/catalog.d.ts +71 -0
- package/dist/credentials/catalog.d.ts.map +1 -0
- package/dist/credentials/catalog.js +293 -0
- package/dist/credentials/catalog.js.map +1 -0
- package/dist/credentials/index.d.ts +3 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +2 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/data/drift-inspector.d.ts +1 -4
- package/dist/data/drift-inspector.d.ts.map +1 -1
- package/dist/data/drift-inspector.js +39 -5
- package/dist/data/drift-inspector.js.map +1 -1
- package/dist/data/field-encryption.d.ts +7 -0
- package/dist/data/field-encryption.d.ts.map +1 -1
- package/dist/data/field-encryption.js +35 -17
- package/dist/data/field-encryption.js.map +1 -1
- package/dist/data/framework-migration-rewriter.js +1 -1
- package/dist/data/framework-migration-rewriter.js.map +1 -1
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/mask-fields.d.ts +2 -0
- package/dist/data/mask-fields.d.ts.map +1 -1
- package/dist/data/mask-fields.js +6 -0
- package/dist/data/mask-fields.js.map +1 -1
- package/dist/data/migration.d.ts.map +1 -1
- package/dist/data/migration.js +25 -1
- package/dist/data/migration.js.map +1 -1
- package/dist/data/repository.d.ts.map +1 -1
- package/dist/data/repository.js +15 -3
- package/dist/data/repository.js.map +1 -1
- package/dist/data/schema-generator.d.ts +95 -3
- package/dist/data/schema-generator.d.ts.map +1 -1
- package/dist/data/schema-generator.js +122 -6
- package/dist/data/schema-generator.js.map +1 -1
- package/dist/define/defineCapability.d.ts +7 -0
- package/dist/define/defineCapability.d.ts.map +1 -1
- package/dist/define/defineCapability.js +15 -0
- package/dist/define/defineCapability.js.map +1 -1
- package/dist/define/defineFlow.d.ts +3 -1
- package/dist/define/defineFlow.d.ts.map +1 -1
- package/dist/define/defineFlow.js.map +1 -1
- package/dist/durable/apply-ddl.d.ts +13 -0
- package/dist/durable/apply-ddl.d.ts.map +1 -0
- package/dist/durable/apply-ddl.js +278 -0
- package/dist/durable/apply-ddl.js.map +1 -0
- package/dist/durable/harness.d.ts +31 -0
- package/dist/durable/harness.d.ts.map +1 -0
- package/dist/durable/harness.js +136 -0
- package/dist/durable/harness.js.map +1 -0
- package/dist/durable/index.d.ts +18 -0
- package/dist/durable/index.d.ts.map +1 -0
- package/dist/durable/index.js +16 -0
- package/dist/durable/index.js.map +1 -0
- package/dist/durable/memory-store.d.ts +48 -0
- package/dist/durable/memory-store.d.ts.map +1 -0
- package/dist/durable/memory-store.js +260 -0
- package/dist/durable/memory-store.js.map +1 -0
- package/dist/durable/migrations-path.d.ts +5 -0
- package/dist/durable/migrations-path.d.ts.map +1 -0
- package/dist/durable/migrations-path.js +8 -0
- package/dist/durable/migrations-path.js.map +1 -0
- package/dist/durable/opaque-dispatch.d.ts +7 -0
- package/dist/durable/opaque-dispatch.d.ts.map +1 -0
- package/dist/durable/opaque-dispatch.js +67 -0
- package/dist/durable/opaque-dispatch.js.map +1 -0
- package/dist/durable/persist-before-ack.d.ts +52 -0
- package/dist/durable/persist-before-ack.d.ts.map +1 -0
- package/dist/durable/persist-before-ack.js +153 -0
- package/dist/durable/persist-before-ack.js.map +1 -0
- package/dist/durable/pg-env.d.ts +9 -0
- package/dist/durable/pg-env.d.ts.map +1 -0
- package/dist/durable/pg-env.js +20 -0
- package/dist/durable/pg-env.js.map +1 -0
- package/dist/durable/postgres-persist.d.ts +33 -0
- package/dist/durable/postgres-persist.d.ts.map +1 -0
- package/dist/durable/postgres-persist.js +239 -0
- package/dist/durable/postgres-persist.js.map +1 -0
- package/dist/durable/reconciliation.d.ts +20 -0
- package/dist/durable/reconciliation.d.ts.map +1 -0
- package/dist/durable/reconciliation.js +91 -0
- package/dist/durable/reconciliation.js.map +1 -0
- package/dist/durable/schema.d.ts +1448 -0
- package/dist/durable/schema.d.ts.map +1 -0
- package/dist/durable/schema.js +138 -0
- package/dist/durable/schema.js.map +1 -0
- package/dist/durable/spine-claim.d.ts +16 -0
- package/dist/durable/spine-claim.d.ts.map +1 -0
- package/dist/durable/spine-claim.js +131 -0
- package/dist/durable/spine-claim.js.map +1 -0
- package/dist/durable/types.d.ts +153 -0
- package/dist/durable/types.d.ts.map +1 -0
- package/dist/durable/types.js +114 -0
- package/dist/durable/types.js.map +1 -0
- package/dist/errors/data-errors.d.ts +6 -0
- package/dist/errors/data-errors.d.ts.map +1 -1
- package/dist/errors/data-errors.js +9 -0
- package/dist/errors/data-errors.js.map +1 -1
- package/dist/errors/index.d.ts +4 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +11 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/errors-entry.d.ts +1 -1
- package/dist/errors-entry.d.ts.map +1 -1
- package/dist/errors-entry.js +1 -1
- package/dist/errors-entry.js.map +1 -1
- package/dist/events/consumer-registry.d.ts +6 -0
- package/dist/events/consumer-registry.d.ts.map +1 -1
- package/dist/events/consumer-registry.js.map +1 -1
- package/dist/events/dispatcher.d.ts +19 -0
- package/dist/events/dispatcher.d.ts.map +1 -1
- package/dist/events/dispatcher.js +161 -114
- package/dist/events/dispatcher.js.map +1 -1
- package/dist/events/idempotency.d.ts +3 -2
- package/dist/events/idempotency.d.ts.map +1 -1
- package/dist/events/idempotency.js +3 -2
- package/dist/events/idempotency.js.map +1 -1
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +1 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/subscription.d.ts +29 -0
- package/dist/events/subscription.d.ts.map +1 -0
- package/dist/events/subscription.js +19 -0
- package/dist/events/subscription.js.map +1 -0
- package/dist/events/worker.d.ts +8 -1
- package/dist/events/worker.d.ts.map +1 -1
- package/dist/events/worker.js +32 -5
- package/dist/events/worker.js.map +1 -1
- package/dist/execution/capability-executor.d.ts +6 -3
- package/dist/execution/capability-executor.d.ts.map +1 -1
- package/dist/execution/capability-executor.js +34 -6
- package/dist/execution/capability-executor.js.map +1 -1
- package/dist/execution/context-deps.d.ts +2 -0
- package/dist/execution/context-deps.d.ts.map +1 -1
- package/dist/execution/context-deps.js +2 -1
- package/dist/execution/context-deps.js.map +1 -1
- package/dist/execution/context-factory.d.ts +38 -1
- package/dist/execution/context-factory.d.ts.map +1 -1
- package/dist/execution/context-factory.js +102 -4
- package/dist/execution/context-factory.js.map +1 -1
- package/dist/execution/index.d.ts +2 -2
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +1 -1
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/transactional-outbox.d.ts +10 -0
- package/dist/execution/transactional-outbox.d.ts.map +1 -1
- package/dist/execution/transactional-outbox.js +41 -2
- package/dist/execution/transactional-outbox.js.map +1 -1
- package/dist/flows/budget.d.ts +44 -0
- package/dist/flows/budget.d.ts.map +1 -0
- package/dist/flows/budget.js +81 -0
- package/dist/flows/budget.js.map +1 -0
- package/dist/flows/compile-flow.d.ts +23 -0
- package/dist/flows/compile-flow.d.ts.map +1 -0
- package/dist/flows/compile-flow.js +176 -0
- package/dist/flows/compile-flow.js.map +1 -0
- package/dist/flows/compiled-registry.d.ts +43 -0
- package/dist/flows/compiled-registry.d.ts.map +1 -0
- package/dist/flows/compiled-registry.js +198 -0
- package/dist/flows/compiled-registry.js.map +1 -0
- package/dist/flows/dead-letter.d.ts +16 -0
- package/dist/flows/dead-letter.d.ts.map +1 -1
- package/dist/flows/dead-letter.js +67 -0
- package/dist/flows/dead-letter.js.map +1 -1
- package/dist/flows/definition-strategy.d.ts +13 -0
- package/dist/flows/definition-strategy.d.ts.map +1 -0
- package/dist/flows/definition-strategy.js +30 -0
- package/dist/flows/definition-strategy.js.map +1 -0
- package/dist/flows/engine.d.ts +38 -1
- package/dist/flows/engine.d.ts.map +1 -1
- package/dist/flows/engine.js +375 -32
- package/dist/flows/engine.js.map +1 -1
- package/dist/flows/index.d.ts +12 -4
- package/dist/flows/index.d.ts.map +1 -1
- package/dist/flows/index.js +7 -2
- package/dist/flows/index.js.map +1 -1
- package/dist/flows/scheduler.d.ts +26 -0
- package/dist/flows/scheduler.d.ts.map +1 -1
- package/dist/flows/scheduler.js +157 -37
- package/dist/flows/scheduler.js.map +1 -1
- package/dist/flows/schema.d.ts +34 -0
- package/dist/flows/schema.d.ts.map +1 -1
- package/dist/flows/schema.js +4 -0
- package/dist/flows/schema.js.map +1 -1
- package/dist/flows/step-executor.d.ts +3 -0
- package/dist/flows/step-executor.d.ts.map +1 -1
- package/dist/flows/step-executor.js +33 -0
- package/dist/flows/step-executor.js.map +1 -1
- package/dist/governance/capability-source-scan.d.ts.map +1 -1
- package/dist/governance/capability-source-scan.js +2 -29
- package/dist/governance/capability-source-scan.js.map +1 -1
- package/dist/governance/forbidden-path-scan.d.ts +7 -0
- package/dist/governance/forbidden-path-scan.d.ts.map +1 -0
- package/dist/governance/forbidden-path-scan.js +60 -0
- package/dist/governance/forbidden-path-scan.js.map +1 -0
- package/dist/governance/index.d.ts +2 -0
- package/dist/governance/index.d.ts.map +1 -1
- package/dist/governance/index.js +2 -0
- package/dist/governance/index.js.map +1 -1
- package/dist/governance/source-walk.d.ts +3 -0
- package/dist/governance/source-walk.d.ts.map +1 -0
- package/dist/governance/source-walk.js +33 -0
- package/dist/governance/source-walk.js.map +1 -0
- package/dist/index.d.ts +21 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -9
- package/dist/index.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts +3 -1
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/load-extensions.d.ts.map +1 -1
- package/dist/runtime/load-extensions.js +11 -0
- package/dist/runtime/load-extensions.js.map +1 -1
- package/dist/runtime/register-consumers.d.ts +3 -0
- package/dist/runtime/register-consumers.d.ts.map +1 -1
- package/dist/runtime/register-consumers.js +4 -0
- package/dist/runtime/register-consumers.js.map +1 -1
- package/dist/runtime/start-worker-pool.d.ts.map +1 -1
- package/dist/runtime/start-worker-pool.js +1 -0
- package/dist/runtime/start-worker-pool.js.map +1 -1
- package/dist/runtime-entry.d.ts +4 -0
- package/dist/runtime-entry.d.ts.map +1 -0
- package/dist/runtime-entry.js +30 -0
- package/dist/runtime-entry.js.map +1 -0
- package/dist/server/bootstrap.d.ts +116 -8
- package/dist/server/bootstrap.d.ts.map +1 -1
- package/dist/server/bootstrap.js +139 -62
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/tenancy/data-plane-connection.d.ts +108 -0
- package/dist/tenancy/data-plane-connection.d.ts.map +1 -0
- package/dist/tenancy/data-plane-connection.js +320 -0
- package/dist/tenancy/data-plane-connection.js.map +1 -0
- package/dist/tenancy/data-plane-migrate.d.ts +30 -0
- package/dist/tenancy/data-plane-migrate.d.ts.map +1 -0
- package/dist/tenancy/data-plane-migrate.js +44 -0
- package/dist/tenancy/data-plane-migrate.js.map +1 -0
- package/dist/tenancy/data-plane-provisioning.d.ts +135 -0
- package/dist/tenancy/data-plane-provisioning.d.ts.map +1 -0
- package/dist/tenancy/data-plane-provisioning.js +639 -0
- package/dist/tenancy/data-plane-provisioning.js.map +1 -0
- package/dist/tenancy/data-plane-resolver.d.ts +37 -0
- package/dist/tenancy/data-plane-resolver.d.ts.map +1 -0
- package/dist/tenancy/data-plane-resolver.js +302 -0
- package/dist/tenancy/data-plane-resolver.js.map +1 -0
- package/dist/tenancy/index.d.ts +9 -0
- package/dist/tenancy/index.d.ts.map +1 -0
- package/dist/tenancy/index.js +22 -0
- package/dist/tenancy/index.js.map +1 -0
- package/dist/tenancy/types.d.ts +117 -0
- package/dist/tenancy/types.d.ts.map +1 -0
- package/dist/tenancy/types.js +8 -0
- package/dist/tenancy/types.js.map +1 -0
- package/dist/testing/context.d.ts.map +1 -1
- package/dist/testing/context.js +6 -1
- package/dist/testing/context.js.map +1 -1
- package/dist/testing/crash-matrix-simulation.d.ts +51 -0
- package/dist/testing/crash-matrix-simulation.d.ts.map +1 -0
- package/dist/testing/crash-matrix-simulation.js +350 -0
- package/dist/testing/crash-matrix-simulation.js.map +1 -0
- package/dist/testing/scaffolding.d.ts.map +1 -1
- package/dist/testing/scaffolding.js +4 -1
- package/dist/testing/scaffolding.js.map +1 -1
- package/dist/types/capability.d.ts +16 -0
- package/dist/types/capability.d.ts.map +1 -1
- package/dist/types/capability.js.map +1 -1
- package/dist/types/context.d.ts +62 -0
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/enums.d.ts +2 -0
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +2 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/fields.d.ts +7 -0
- package/dist/types/fields.d.ts.map +1 -1
- package/dist/types/flow.d.ts +96 -1
- package/dist/types/flow.d.ts.map +1 -1
- package/dist/types/flow.js +7 -1
- package/dist/types/flow.js.map +1 -1
- package/dist/types/index.d.ts +9 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/prompt.d.ts +8 -0
- package/dist/types/prompt.d.ts.map +1 -1
- package/dist/types/prompt.js +7 -0
- package/dist/types/prompt.js.map +1 -1
- package/dist/worker/bootstrap.d.ts +100 -1
- package/dist/worker/bootstrap.d.ts.map +1 -1
- package/dist/worker/bootstrap.js +155 -14
- package/dist/worker/bootstrap.js.map +1 -1
- package/instructions/api.md +21 -0
- package/instructions/cli.md +15 -9
- package/instructions/deployment.md +27 -25
- package/instructions/flows.md +8 -1
- package/instructions/framework.md +2 -1
- package/instructions/mcp.md +1 -1
- package/instructions/peer-dependencies.md +16 -14
- package/instructions/prompts.md +3 -0
- package/instructions/security.md +4 -0
- package/instructions/testing.md +2 -2
- package/migrations/durable-tenant/0000_durable_tenant.sql +92 -0
- package/migrations/durable-tenant/0001_human_task.sql +45 -0
- package/migrations/durable-tenant/meta/_journal.json +20 -0
- package/migrations/spine/0000_opaque_dispatch.sql +26 -0
- package/migrations/spine/meta/_journal.json +13 -0
- package/package.json +26 -8
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
|
|
2
|
+
import { PlumbusError } from '../errors/plumbus-error.js';
|
|
3
|
+
import type { DataPlaneResolver, PooledDataPlaneResolver, PooledDataPlaneResolverOptions, SingleDataPlaneResolverOptions } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Schema the framework's own tables resolve to when the host names none.
|
|
6
|
+
* `public` reproduces today's behavior: unqualified table names under a
|
|
7
|
+
* default `search_path`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_CORE_SCHEMA = "public";
|
|
10
|
+
/** Prefix reported for per-package schemas when the host names none. */
|
|
11
|
+
export declare const DEFAULT_PACKAGE_SCHEMA_PREFIX = "pkg_";
|
|
12
|
+
/** Default number of data planes held open by the pooled resolver. */
|
|
13
|
+
export declare const DEFAULT_DATA_PLANE_CACHE_SIZE = 32;
|
|
14
|
+
/** Raised when a tenant reference resolves to no data plane. Never falls back. */
|
|
15
|
+
export declare class UnknownTenantError extends PlumbusError {
|
|
16
|
+
constructor(tenantRef: string, metadata?: Record<string, unknown>);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Back-compat resolver: one database serves every tenant reference.
|
|
20
|
+
*
|
|
21
|
+
* This is today's single-database behavior expressed through the resolver
|
|
22
|
+
* interface — the same `db` the caller already owns is handed back for any
|
|
23
|
+
* reference, including the empty reference used by untenanted callers. Use it
|
|
24
|
+
* wherever a `DataPlaneResolver` is required but routing has not been adopted.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createSingleDataPlaneResolver(db: PostgresJsDatabase, options?: SingleDataPlaneResolverOptions): DataPlaneResolver;
|
|
27
|
+
/**
|
|
28
|
+
* Caching resolver over host-supplied routing.
|
|
29
|
+
*
|
|
30
|
+
* The host answers two questions — where does this tenant live (`describe`) and
|
|
31
|
+
* how do I open a connection to it (`connect`) — and the framework owns
|
|
32
|
+
* everything else: an LRU of open data planes, deduplication of concurrent
|
|
33
|
+
* resolutions, generation-based revalidation, explicit invalidation, and
|
|
34
|
+
* throwing on an unknown tenant rather than falling back.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createPooledDataPlaneResolver<TConnectionInfo = unknown>(options: PooledDataPlaneResolverOptions<TConnectionInfo>): PooledDataPlaneResolver;
|
|
37
|
+
//# sourceMappingURL=data-plane-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-plane-resolver.d.ts","sourceRoot":"","sources":["../../src/tenancy/data-plane-resolver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,EAIV,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,SAAS,CAAC;AAEpD,sEAAsE;AACtE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAShD,kFAAkF;AAClF,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOlE;AAgCD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,kBAAkB,EACtB,OAAO,GAAE,8BAAmC,GAC3C,iBAAiB,CAMnB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,eAAe,GAAG,OAAO,EACrE,OAAO,EAAE,8BAA8B,CAAC,eAAe,CAAC,GACvD,uBAAuB,CAuPzB"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// ── Data Plane Resolver ──
|
|
2
|
+
// Turns an opaque tenant reference into the database handle and schema
|
|
3
|
+
// namespaces its work runs in. Two implementations ship here:
|
|
4
|
+
//
|
|
5
|
+
// createSingleDataPlaneResolver — every tenant reference resolves to one
|
|
6
|
+
// boot-time database. This is exactly what the server and worker bootstraps
|
|
7
|
+
// do today, expressed as a resolver, so existing consumers are unaffected.
|
|
8
|
+
//
|
|
9
|
+
// createPooledDataPlaneResolver — the host supplies how to look up a tenant's
|
|
10
|
+
// placement (`describe`) and how to open a connection (`connect`); the
|
|
11
|
+
// framework owns the LRU cache, generation-based revalidation, explicit
|
|
12
|
+
// invalidation and fail-closed behavior on an unknown tenant.
|
|
13
|
+
//
|
|
14
|
+
// Fail-closed is the load-bearing rule: an unresolvable tenant reference throws
|
|
15
|
+
// and no code path substitutes another tenant's database.
|
|
16
|
+
import { logHookError } from '../errors/hook-log.js';
|
|
17
|
+
import { PlumbusError } from '../errors/plumbus-error.js';
|
|
18
|
+
import { ErrorCode } from '../types/enums.js';
|
|
19
|
+
/**
|
|
20
|
+
* Schema the framework's own tables resolve to when the host names none.
|
|
21
|
+
* `public` reproduces today's behavior: unqualified table names under a
|
|
22
|
+
* default `search_path`.
|
|
23
|
+
*/
|
|
24
|
+
export const DEFAULT_CORE_SCHEMA = 'public';
|
|
25
|
+
/** Prefix reported for per-package schemas when the host names none. */
|
|
26
|
+
export const DEFAULT_PACKAGE_SCHEMA_PREFIX = 'pkg_';
|
|
27
|
+
/** Default number of data planes held open by the pooled resolver. */
|
|
28
|
+
export const DEFAULT_DATA_PLANE_CACHE_SIZE = 32;
|
|
29
|
+
/**
|
|
30
|
+
* How many times a resolution restarts when an `invalidate` lands while it is
|
|
31
|
+
* in flight. Bounded so a pathological invalidation loop surfaces as an error
|
|
32
|
+
* instead of spinning.
|
|
33
|
+
*/
|
|
34
|
+
const MAX_RESOLVE_ATTEMPTS = 3;
|
|
35
|
+
/** Raised when a tenant reference resolves to no data plane. Never falls back. */
|
|
36
|
+
export class UnknownTenantError extends PlumbusError {
|
|
37
|
+
constructor(tenantRef, metadata) {
|
|
38
|
+
super(ErrorCode.NotFound, `No data plane is registered for tenant reference "${tenantRef}"`, {
|
|
39
|
+
tenantRef,
|
|
40
|
+
...metadata,
|
|
41
|
+
});
|
|
42
|
+
this.name = 'UnknownTenantError';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function assertTenantRef(tenantRef) {
|
|
46
|
+
if (typeof tenantRef !== 'string' || tenantRef.trim() === '') {
|
|
47
|
+
throw new PlumbusError(ErrorCode.Validation, 'A data plane cannot be resolved without a tenant reference');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function freezeHandle(handle) {
|
|
51
|
+
return Object.freeze(handle);
|
|
52
|
+
}
|
|
53
|
+
function buildHandle(tenantRef, db, descriptor) {
|
|
54
|
+
return freezeHandle({
|
|
55
|
+
db,
|
|
56
|
+
coreSchema: descriptor.coreSchema ?? DEFAULT_CORE_SCHEMA,
|
|
57
|
+
packageSchemaPrefix: descriptor.packageSchemaPrefix ?? DEFAULT_PACKAGE_SCHEMA_PREFIX,
|
|
58
|
+
tenantRef,
|
|
59
|
+
...(descriptor.generation !== undefined ? { generation: descriptor.generation } : {}),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Back-compat resolver: one database serves every tenant reference.
|
|
64
|
+
*
|
|
65
|
+
* This is today's single-database behavior expressed through the resolver
|
|
66
|
+
* interface — the same `db` the caller already owns is handed back for any
|
|
67
|
+
* reference, including the empty reference used by untenanted callers. Use it
|
|
68
|
+
* wherever a `DataPlaneResolver` is required but routing has not been adopted.
|
|
69
|
+
*/
|
|
70
|
+
export function createSingleDataPlaneResolver(db, options = {}) {
|
|
71
|
+
return {
|
|
72
|
+
async resolve(tenantRef) {
|
|
73
|
+
return buildHandle(tenantRef, db, options);
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Caching resolver over host-supplied routing.
|
|
79
|
+
*
|
|
80
|
+
* The host answers two questions — where does this tenant live (`describe`) and
|
|
81
|
+
* how do I open a connection to it (`connect`) — and the framework owns
|
|
82
|
+
* everything else: an LRU of open data planes, deduplication of concurrent
|
|
83
|
+
* resolutions, generation-based revalidation, explicit invalidation, and
|
|
84
|
+
* throwing on an unknown tenant rather than falling back.
|
|
85
|
+
*/
|
|
86
|
+
export function createPooledDataPlaneResolver(options) {
|
|
87
|
+
const cacheSize = options.cacheSize ?? DEFAULT_DATA_PLANE_CACHE_SIZE;
|
|
88
|
+
if (!Number.isInteger(cacheSize) || cacheSize < 1) {
|
|
89
|
+
throw new PlumbusError(ErrorCode.Validation, `Data plane cacheSize must be a positive integer (received ${String(options.cacheSize)})`);
|
|
90
|
+
}
|
|
91
|
+
const now = options.now ?? Date.now;
|
|
92
|
+
const revalidateAfterMs = options.revalidateAfterMs;
|
|
93
|
+
const onCloseError = options.onCloseError ??
|
|
94
|
+
((info) => logHookError('dataPlaneConnectionClose', info.error));
|
|
95
|
+
/** Insertion-ordered LRU: least recently used first. */
|
|
96
|
+
const entries = new Map();
|
|
97
|
+
/** One in-flight resolution per tenant reference. */
|
|
98
|
+
const inFlight = new Map();
|
|
99
|
+
/** Bumped by `invalidate` while a resolution for that tenant is in flight. */
|
|
100
|
+
const epochs = new Map();
|
|
101
|
+
let closed = false;
|
|
102
|
+
function currentEpoch(tenantRef) {
|
|
103
|
+
return epochs.get(tenantRef) ?? 0;
|
|
104
|
+
}
|
|
105
|
+
function bumpEpoch(tenantRef) {
|
|
106
|
+
if (inFlight.has(tenantRef)) {
|
|
107
|
+
epochs.set(tenantRef, currentEpoch(tenantRef) + 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function closeQuietly(tenantRef, connection) {
|
|
111
|
+
try {
|
|
112
|
+
await connection.close?.();
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
onCloseError({ tenantRef, error });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function evict(tenantRef) {
|
|
119
|
+
const entry = entries.get(tenantRef);
|
|
120
|
+
if (!entry)
|
|
121
|
+
return;
|
|
122
|
+
entries.delete(tenantRef);
|
|
123
|
+
await closeQuietly(tenantRef, entry.connection);
|
|
124
|
+
}
|
|
125
|
+
/** Move an entry to the most-recently-used end of the LRU. */
|
|
126
|
+
function touch(tenantRef, entry) {
|
|
127
|
+
entries.delete(tenantRef);
|
|
128
|
+
entries.set(tenantRef, entry);
|
|
129
|
+
}
|
|
130
|
+
async function enforceCapacity() {
|
|
131
|
+
while (entries.size > cacheSize) {
|
|
132
|
+
const oldest = entries.keys().next();
|
|
133
|
+
if (oldest.done)
|
|
134
|
+
return;
|
|
135
|
+
await evict(oldest.value);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function isStale(entry) {
|
|
139
|
+
if (revalidateAfterMs === undefined)
|
|
140
|
+
return false;
|
|
141
|
+
return now() - entry.resolvedAt >= revalidateAfterMs;
|
|
142
|
+
}
|
|
143
|
+
async function describeChecked(tenantRef) {
|
|
144
|
+
const descriptor = await options.describe(tenantRef);
|
|
145
|
+
if (descriptor === undefined || descriptor === null) {
|
|
146
|
+
throw new UnknownTenantError(tenantRef);
|
|
147
|
+
}
|
|
148
|
+
return descriptor;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Connect against `descriptor` and cache the result. Returns `undefined` when
|
|
152
|
+
* an `invalidate` landed while connecting — the fresh connection is closed
|
|
153
|
+
* and the caller retries, so an invalidation is never overtaken by a
|
|
154
|
+
* resolution that started before it.
|
|
155
|
+
*/
|
|
156
|
+
async function connectAndStore(tenantRef, descriptor, epoch) {
|
|
157
|
+
const connection = await options.connect({ tenantRef, descriptor });
|
|
158
|
+
if (closed) {
|
|
159
|
+
await closeQuietly(tenantRef, connection);
|
|
160
|
+
throw closedError(tenantRef);
|
|
161
|
+
}
|
|
162
|
+
if (currentEpoch(tenantRef) !== epoch) {
|
|
163
|
+
await closeQuietly(tenantRef, connection);
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
const handle = buildHandle(tenantRef, connection.db, descriptor);
|
|
167
|
+
const entry = {
|
|
168
|
+
handle,
|
|
169
|
+
connection,
|
|
170
|
+
generation: descriptor.generation,
|
|
171
|
+
coreSchema: handle.coreSchema,
|
|
172
|
+
packageSchemaPrefix: handle.packageSchemaPrefix,
|
|
173
|
+
resolvedAt: now(),
|
|
174
|
+
};
|
|
175
|
+
await evict(tenantRef);
|
|
176
|
+
entries.set(tenantRef, entry);
|
|
177
|
+
await enforceCapacity();
|
|
178
|
+
return handle;
|
|
179
|
+
}
|
|
180
|
+
async function load(tenantRef) {
|
|
181
|
+
for (let attempt = 0; attempt < MAX_RESOLVE_ATTEMPTS; attempt += 1) {
|
|
182
|
+
const epoch = currentEpoch(tenantRef);
|
|
183
|
+
const descriptor = await describeChecked(tenantRef);
|
|
184
|
+
const handle = await connectAndStore(tenantRef, descriptor, epoch);
|
|
185
|
+
if (handle)
|
|
186
|
+
return handle;
|
|
187
|
+
}
|
|
188
|
+
throw invalidationRaceError(tenantRef);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Re-read a cached tenant's placement. The cache is read again after the
|
|
192
|
+
* lookup rather than trusted from before it, so an eviction or invalidation
|
|
193
|
+
* that landed meanwhile cannot be overwritten with the older placement.
|
|
194
|
+
*/
|
|
195
|
+
async function revalidate(tenantRef) {
|
|
196
|
+
for (let attempt = 0; attempt < MAX_RESOLVE_ATTEMPTS; attempt += 1) {
|
|
197
|
+
const epoch = currentEpoch(tenantRef);
|
|
198
|
+
let descriptor;
|
|
199
|
+
try {
|
|
200
|
+
descriptor = await describeChecked(tenantRef);
|
|
201
|
+
}
|
|
202
|
+
catch (error) {
|
|
203
|
+
if (error instanceof UnknownTenantError) {
|
|
204
|
+
// The tenant is gone: drop the cached data plane rather than keep
|
|
205
|
+
// serving it.
|
|
206
|
+
await evict(tenantRef);
|
|
207
|
+
}
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
const current = entries.get(tenantRef);
|
|
211
|
+
if (!current || currentEpoch(tenantRef) !== epoch) {
|
|
212
|
+
// Invalidated or evicted while describing — resolve from scratch.
|
|
213
|
+
const handle = await connectAndStore(tenantRef, descriptor, currentEpoch(tenantRef));
|
|
214
|
+
if (handle)
|
|
215
|
+
return handle;
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
if (descriptor.generation === current.generation) {
|
|
219
|
+
const coreSchema = descriptor.coreSchema ?? DEFAULT_CORE_SCHEMA;
|
|
220
|
+
const packageSchemaPrefix = descriptor.packageSchemaPrefix ?? DEFAULT_PACKAGE_SCHEMA_PREFIX;
|
|
221
|
+
const schemasUnchanged = coreSchema === current.coreSchema && packageSchemaPrefix === current.packageSchemaPrefix;
|
|
222
|
+
const entry = {
|
|
223
|
+
...current,
|
|
224
|
+
coreSchema,
|
|
225
|
+
packageSchemaPrefix,
|
|
226
|
+
handle: schemasUnchanged
|
|
227
|
+
? current.handle
|
|
228
|
+
: buildHandle(tenantRef, current.connection.db, descriptor),
|
|
229
|
+
resolvedAt: now(),
|
|
230
|
+
};
|
|
231
|
+
touch(tenantRef, entry);
|
|
232
|
+
return entry.handle;
|
|
233
|
+
}
|
|
234
|
+
// Generation moved: the cached connection points at a superseded
|
|
235
|
+
// placement. Close it before connecting to the new one.
|
|
236
|
+
entries.delete(tenantRef);
|
|
237
|
+
await closeQuietly(tenantRef, current.connection);
|
|
238
|
+
const handle = await connectAndStore(tenantRef, descriptor, epoch);
|
|
239
|
+
if (handle)
|
|
240
|
+
return handle;
|
|
241
|
+
}
|
|
242
|
+
throw invalidationRaceError(tenantRef);
|
|
243
|
+
}
|
|
244
|
+
function closedError(tenantRef) {
|
|
245
|
+
return new PlumbusError(ErrorCode.Internal, 'Data plane resolver is closed and cannot resolve further tenants', { tenantRef });
|
|
246
|
+
}
|
|
247
|
+
function invalidationRaceError(tenantRef) {
|
|
248
|
+
return new PlumbusError(ErrorCode.Conflict, `Data plane resolution for tenant reference "${tenantRef}" was invalidated ` +
|
|
249
|
+
`${MAX_RESOLVE_ATTEMPTS} times while resolving`, { tenantRef });
|
|
250
|
+
}
|
|
251
|
+
function start(tenantRef, work) {
|
|
252
|
+
const pending = inFlight.get(tenantRef);
|
|
253
|
+
if (pending)
|
|
254
|
+
return pending;
|
|
255
|
+
const promise = work().finally(() => {
|
|
256
|
+
inFlight.delete(tenantRef);
|
|
257
|
+
epochs.delete(tenantRef);
|
|
258
|
+
});
|
|
259
|
+
inFlight.set(tenantRef, promise);
|
|
260
|
+
return promise;
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
async resolve(tenantRef) {
|
|
264
|
+
if (closed) {
|
|
265
|
+
throw closedError(tenantRef);
|
|
266
|
+
}
|
|
267
|
+
assertTenantRef(tenantRef);
|
|
268
|
+
const cached = entries.get(tenantRef);
|
|
269
|
+
if (cached && !isStale(cached)) {
|
|
270
|
+
touch(tenantRef, cached);
|
|
271
|
+
return cached.handle;
|
|
272
|
+
}
|
|
273
|
+
if (cached) {
|
|
274
|
+
return start(tenantRef, () => revalidate(tenantRef));
|
|
275
|
+
}
|
|
276
|
+
return start(tenantRef, () => load(tenantRef));
|
|
277
|
+
},
|
|
278
|
+
async invalidate(tenantRef) {
|
|
279
|
+
assertTenantRef(tenantRef);
|
|
280
|
+
bumpEpoch(tenantRef);
|
|
281
|
+
await evict(tenantRef);
|
|
282
|
+
},
|
|
283
|
+
async invalidateAll() {
|
|
284
|
+
for (const tenantRef of [...entries.keys(), ...inFlight.keys()]) {
|
|
285
|
+
bumpEpoch(tenantRef);
|
|
286
|
+
}
|
|
287
|
+
for (const tenantRef of [...entries.keys()]) {
|
|
288
|
+
await evict(tenantRef);
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
async close() {
|
|
292
|
+
closed = true;
|
|
293
|
+
for (const tenantRef of [...inFlight.keys()]) {
|
|
294
|
+
bumpEpoch(tenantRef);
|
|
295
|
+
}
|
|
296
|
+
for (const tenantRef of [...entries.keys()]) {
|
|
297
|
+
await evict(tenantRef);
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=data-plane-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-plane-resolver.js","sourceRoot":"","sources":["../../src/tenancy/data-plane-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createPooledDataPlaneResolver, createSingleDataPlaneResolver, UnknownTenantError, DEFAULT_CORE_SCHEMA, DEFAULT_DATA_PLANE_CACHE_SIZE, DEFAULT_PACKAGE_SCHEMA_PREFIX, } from './data-plane-resolver.js';
|
|
2
|
+
export type { DataPlaneConnectRequest, DataPlaneConnection, DataPlaneDescriptor, DataPlaneHandle, DataPlaneResolver, PooledDataPlaneResolver, PooledDataPlaneResolverOptions, SingleDataPlaneResolverOptions, } from './types.js';
|
|
3
|
+
export { openDataPlaneConnection, DataPlaneConnectionError, DEFAULT_DATA_PLANE_POOL_SIZE, MAX_DATA_PLANE_POOL_SIZE, } from './data-plane-connection.js';
|
|
4
|
+
export type { DataPlaneConnectionFields, DataPlaneConnectionTarget, DataPlaneConnectionUrl, DataPlaneEndpoint, OpenDataPlaneConnectionOptions, OpenedDataPlaneConnection, } from './data-plane-connection.js';
|
|
5
|
+
export { applyDataPlaneMigrations, DATA_PLANE_MIGRATE_APPLICATION_NAME, } from './data-plane-migrate.js';
|
|
6
|
+
export type { ApplyDataPlaneMigrationsOptions, DataPlaneMigrationApplyResult, } from './data-plane-migrate.js';
|
|
7
|
+
export { provisionDataPlane, dropDataPlane, assertSafeIdentifier, quoteIdentifier, DataPlaneGuardError, DataPlaneNameError, DataPlaneProvisioningError, } from './data-plane-provisioning.js';
|
|
8
|
+
export type { DataPlaneAdminConnection, DataPlaneDropResult, DataPlaneRoleSpec, DataPlaneStep, DataPlaneStepName, DataPlaneStepOutcome, DataPlaneTablePrivilege, DropDataPlaneOptions, ProvisionDataPlaneOptions, DataPlaneProvisionResult, } from './data-plane-provisioning.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenancy/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACjB,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EACL,wBAAwB,EACxB,mCAAmC,GACpC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ── Tenancy Module ──
|
|
2
|
+
// Per-tenant data-plane resolution: the mechanism that maps an opaque tenant
|
|
3
|
+
// reference to the database handle and schema namespaces its work runs in.
|
|
4
|
+
// The framework owns caching, invalidation and fail-closed behavior; the host
|
|
5
|
+
// application owns routing lookup and connection creation.
|
|
6
|
+
//
|
|
7
|
+
// Key exports: createSingleDataPlaneResolver (back-compat single database),
|
|
8
|
+
// createPooledDataPlaneResolver (host-routed, cached), openDataPlaneConnection
|
|
9
|
+
// (the connect step it routes through), applyDataPlaneMigrations (owner-role
|
|
10
|
+
// apply of generated migrations to a named tenant database), UnknownTenantError.
|
|
11
|
+
export { createPooledDataPlaneResolver, createSingleDataPlaneResolver, UnknownTenantError, DEFAULT_CORE_SCHEMA, DEFAULT_DATA_PLANE_CACHE_SIZE, DEFAULT_PACKAGE_SCHEMA_PREFIX, } from './data-plane-resolver.js';
|
|
12
|
+
// Opening a data plane: a bounded, per-tenant pool against one named database,
|
|
13
|
+
// opened as one named role, in the shape `connect` must return. Credentials
|
|
14
|
+
// never reach a message, an error's metadata, or the notice stream.
|
|
15
|
+
export { openDataPlaneConnection, DataPlaneConnectionError, DEFAULT_DATA_PLANE_POOL_SIZE, MAX_DATA_PLANE_POOL_SIZE, } from './data-plane-connection.js';
|
|
16
|
+
// Apply generated migrations to one named tenant database through the same
|
|
17
|
+
// connection factory the resolver uses. Connect as the owner role.
|
|
18
|
+
export { applyDataPlaneMigrations, DATA_PLANE_MIGRATE_APPLICATION_NAME, } from './data-plane-migrate.js';
|
|
19
|
+
// Data-plane provisioning: creating a tenant's database and its owner/runtime role pair.
|
|
20
|
+
// Idempotent and resumable; identifiers are validated and quoted, never interpolated.
|
|
21
|
+
export { provisionDataPlane, dropDataPlane, assertSafeIdentifier, quoteIdentifier, DataPlaneGuardError, DataPlaneNameError, DataPlaneProvisioningError, } from './data-plane-provisioning.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tenancy/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AAC9E,2DAA2D;AAC3D,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,iFAAiF;AAEjF,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAYlC,+EAA+E;AAC/E,4EAA4E;AAC5E,oEAAoE;AACpE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAUpC,2EAA2E;AAC3E,mEAAmE;AACnE,OAAO,EACL,wBAAwB,EACxB,mCAAmC,GACpC,MAAM,yBAAyB,CAAC;AAMjC,yFAAyF;AACzF,sFAAsF;AACtF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
|
|
2
|
+
/**
|
|
3
|
+
* A resolved data plane — everything a request, flow step or worker needs to
|
|
4
|
+
* read and write one tenant's state.
|
|
5
|
+
*
|
|
6
|
+
* `coreSchema` and `packageSchemaPrefix` are the namespaces the framework's own
|
|
7
|
+
* tables and the per-package tables live in. Handles are frozen: a caller that
|
|
8
|
+
* receives one cannot repoint it at another tenant.
|
|
9
|
+
*/
|
|
10
|
+
export interface DataPlaneHandle {
|
|
11
|
+
/** Database handle for this tenant's data plane. */
|
|
12
|
+
db: PostgresJsDatabase;
|
|
13
|
+
/** Schema holding the framework's own tenant-local tables. */
|
|
14
|
+
coreSchema: string;
|
|
15
|
+
/** Prefix for per-package schemas (a package's schema is `${prefix}${package}`). */
|
|
16
|
+
packageSchemaPrefix: string;
|
|
17
|
+
/** The opaque tenant reference this handle was resolved for. */
|
|
18
|
+
tenantRef: string;
|
|
19
|
+
/**
|
|
20
|
+
* Monotonic generation of the tenant's data plane, when the host tracks one.
|
|
21
|
+
* A changed generation means the placement changed (restore, move, rotation)
|
|
22
|
+
* and any handle carrying the older value is stale.
|
|
23
|
+
*/
|
|
24
|
+
generation?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolves an opaque tenant reference to its data plane.
|
|
28
|
+
*
|
|
29
|
+
* Implementations MUST fail closed: an unresolvable reference throws, and no
|
|
30
|
+
* implementation may fall back to a default database — that would be a
|
|
31
|
+
* cross-tenant leak.
|
|
32
|
+
*/
|
|
33
|
+
export interface DataPlaneResolver {
|
|
34
|
+
resolve(tenantRef: string): Promise<DataPlaneHandle>;
|
|
35
|
+
/**
|
|
36
|
+
* Drop any cached handle for `tenantRef` so the next `resolve` re-reads the
|
|
37
|
+
* host's routing. Absent on resolvers that hold no cache.
|
|
38
|
+
*/
|
|
39
|
+
invalidate?(tenantRef: string): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* What the host reports about a tenant's data plane placement.
|
|
43
|
+
*
|
|
44
|
+
* `connectionInfo` is opaque to the framework — it is handed back verbatim to
|
|
45
|
+
* `connect`, so hosts can carry connection strings, credential references,
|
|
46
|
+
* pool names, or anything else their connect step needs.
|
|
47
|
+
*/
|
|
48
|
+
export interface DataPlaneDescriptor<TConnectionInfo = unknown> {
|
|
49
|
+
/** Host-defined connection details, passed through to `connect` unchanged. */
|
|
50
|
+
connectionInfo: TConnectionInfo;
|
|
51
|
+
/** Schema holding the framework's own tenant-local tables. */
|
|
52
|
+
coreSchema?: string;
|
|
53
|
+
/** Prefix for per-package schemas. */
|
|
54
|
+
packageSchemaPrefix?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Monotonic generation of this placement. When revalidation observes a
|
|
57
|
+
* changed generation the pooled resolver closes the old connection and
|
|
58
|
+
* connects again; an unchanged generation keeps the existing connection.
|
|
59
|
+
*/
|
|
60
|
+
generation?: number;
|
|
61
|
+
}
|
|
62
|
+
/** An open connection to one tenant's data plane, owned by the resolver. */
|
|
63
|
+
export interface DataPlaneConnection {
|
|
64
|
+
db: PostgresJsDatabase;
|
|
65
|
+
/** Called when the resolver evicts, invalidates or closes this connection. */
|
|
66
|
+
close?(): Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
/** Arguments handed to the host's `connect` step. */
|
|
69
|
+
export interface DataPlaneConnectRequest<TConnectionInfo = unknown> {
|
|
70
|
+
tenantRef: string;
|
|
71
|
+
descriptor: DataPlaneDescriptor<TConnectionInfo>;
|
|
72
|
+
}
|
|
73
|
+
export interface PooledDataPlaneResolverOptions<TConnectionInfo = unknown> {
|
|
74
|
+
/**
|
|
75
|
+
* Look up a tenant's placement. Return `undefined` or `null` for an unknown
|
|
76
|
+
* tenant — the resolver then throws `UnknownTenantError` and never falls
|
|
77
|
+
* back to another database.
|
|
78
|
+
*/
|
|
79
|
+
describe(tenantRef: string): Promise<DataPlaneDescriptor<TConnectionInfo> | undefined | null>;
|
|
80
|
+
/** Open a connection for a described tenant. */
|
|
81
|
+
connect(request: DataPlaneConnectRequest<TConnectionInfo>): Promise<DataPlaneConnection>;
|
|
82
|
+
/** Maximum number of cached data planes (LRU, default 32). */
|
|
83
|
+
cacheSize?: number;
|
|
84
|
+
/**
|
|
85
|
+
* Re-run `describe` for a cached tenant once its entry is older than this
|
|
86
|
+
* many milliseconds. Omitted (the default) means cached entries are only
|
|
87
|
+
* refreshed by an explicit `invalidate`.
|
|
88
|
+
*/
|
|
89
|
+
revalidateAfterMs?: number;
|
|
90
|
+
/** Clock source, injectable for tests (default `Date.now`). */
|
|
91
|
+
now?: () => number;
|
|
92
|
+
/** Notified when closing an evicted connection fails (default: logs). */
|
|
93
|
+
onCloseError?: (info: {
|
|
94
|
+
tenantRef: string;
|
|
95
|
+
error: unknown;
|
|
96
|
+
}) => void;
|
|
97
|
+
}
|
|
98
|
+
/** A `DataPlaneResolver` that caches connections and can be invalidated. */
|
|
99
|
+
export interface PooledDataPlaneResolver extends DataPlaneResolver {
|
|
100
|
+
resolve(tenantRef: string): Promise<DataPlaneHandle>;
|
|
101
|
+
/** Evict and close the cached data plane for one tenant. */
|
|
102
|
+
invalidate(tenantRef: string): Promise<void>;
|
|
103
|
+
/** Evict and close every cached data plane. */
|
|
104
|
+
invalidateAll(): Promise<void>;
|
|
105
|
+
/** Close every cached data plane; further `resolve` calls throw. */
|
|
106
|
+
close(): Promise<void>;
|
|
107
|
+
}
|
|
108
|
+
/** Options for the single-data-plane (back-compat) resolver. */
|
|
109
|
+
export interface SingleDataPlaneResolverOptions {
|
|
110
|
+
/** Schema holding the framework's own tables (default `public`). */
|
|
111
|
+
coreSchema?: string;
|
|
112
|
+
/** Prefix for per-package schemas (default `pkg_`). */
|
|
113
|
+
packageSchemaPrefix?: string;
|
|
114
|
+
/** Generation reported on every handle, when the host tracks one. */
|
|
115
|
+
generation?: number;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tenancy/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,EAAE,EAAE,kBAAkB,CAAC;IACvB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD;;;OAGG;IACH,UAAU,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB,CAAC,eAAe,GAAG,OAAO;IAC5D,8EAA8E;IAC9E,cAAc,EAAE,eAAe,CAAC;IAChC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,kBAAkB,CAAC;IACvB,8EAA8E;IAC9E,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,qDAAqD;AACrD,MAAM,WAAW,uBAAuB,CAAC,eAAe,GAAG,OAAO;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,8BAA8B,CAAC,eAAe,GAAG,OAAO;IACvE;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;IAC9F,gDAAgD;IAChD,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzF,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACtE;AAED,4EAA4E;AAC5E,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,4DAA4D;IAC5D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,+CAA+C;IAC/C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,oEAAoE;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,gEAAgE;AAChE,MAAM,WAAW,8BAA8B;IAC7C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// ── Tenancy Types ──
|
|
2
|
+
// Data-plane resolution: the framework mechanism that turns an opaque tenant
|
|
3
|
+
// reference into the database handle plus schema namespaces its work runs in.
|
|
4
|
+
// The framework owns caching, invalidation and fail-closed behavior; the host
|
|
5
|
+
// application owns the lookup (where tenant routing lives) and the connect
|
|
6
|
+
// step (how a connection is opened).
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tenancy/types.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,2EAA2E;AAC3E,qCAAqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/testing/context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/testing/context.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/context.js
CHANGED
|
@@ -528,6 +528,11 @@ export function createTestContext(options) {
|
|
|
528
528
|
progress: options?.progress ?? { report: () => { } },
|
|
529
529
|
...capRuntime,
|
|
530
530
|
};
|
|
531
|
-
|
|
531
|
+
// Test fixtures legitimately configure a context after construction (ctx.time, ctx.events,
|
|
532
|
+
// ctx.request, ctx.auth). The production factory seals the container to stop in-process code
|
|
533
|
+
// fabricating an actor; that property lives on the real path. Here we return a writable
|
|
534
|
+
// container over the same sealed `auth`, so authority still cannot be mutated in place while
|
|
535
|
+
// fixtures stay configurable.
|
|
536
|
+
return { ...createExecutionContext(deps) };
|
|
532
537
|
}
|
|
533
538
|
//# sourceMappingURL=context.js.map
|