@plumbus/core 0.7.1 → 0.8.0-beta.1
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 +49 -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/audit/service.d.ts.map +1 -1
- package/dist/audit/service.js +6 -1
- package/dist/audit/service.js.map +1 -1
- 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/http.d.ts.map +1 -1
- package/dist/errors/http.js +9 -1
- package/dist/errors/http.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
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
|
|
2
|
+
import type { DataPlaneResolver } from '../tenancy/types.js';
|
|
2
3
|
import type { ConsumerRegistry } from '../events/consumer-registry.js';
|
|
3
4
|
import type { EventQueue } from '../events/queue.js';
|
|
4
5
|
import type { EventRegistry } from '../events/registry.js';
|
|
6
|
+
import type { GovernedArtifactStore } from '../ai/governed-artifacts.js';
|
|
7
|
+
import type { ApprovalService, AuthorizationProvider } from '../approvals/types.js';
|
|
8
|
+
import { type CompiledFlowRegistry } from '../flows/compiled-registry.js';
|
|
5
9
|
import type { FlowEngineConfig } from '../flows/engine.js';
|
|
6
10
|
import { createFlowEngine } from '../flows/engine.js';
|
|
7
11
|
import type { FlowRegistry } from '../flows/registry.js';
|
|
@@ -15,10 +19,25 @@ import type { AIService, DataService, LoggerService } from '../types/context.js'
|
|
|
15
19
|
import type { PlumbusMetrics } from '../observability/metrics.js';
|
|
16
20
|
import type { AuthContext } from '../types/security.js';
|
|
17
21
|
export declare function assertFlowLeaseColumns(db: PostgresJsDatabase): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* What a claimed unit of work carrying no tenant reference resolves to, once a
|
|
24
|
+
* `dataPlaneResolver` is configured. `'refuse'` is the default and the
|
|
25
|
+
* fail-closed choice: the unit fails rather than run against whichever database
|
|
26
|
+
* happens to be at hand. `'control-plane'` runs it against the pool's own `db`.
|
|
27
|
+
*/
|
|
28
|
+
export type UntenantedDataPlanePolicy = 'refuse' | 'control-plane';
|
|
18
29
|
export interface WorkerPoolConfig {
|
|
19
30
|
/** Plumbus framework config */
|
|
20
31
|
config: PlumbusConfig;
|
|
21
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Database connection.
|
|
34
|
+
*
|
|
35
|
+
* This is the pool's own database: the outbox it dispatches, the events it
|
|
36
|
+
* delivers, the idempotency keys it records, the schedules it syncs and the
|
|
37
|
+
* `flow_executions` rows it claims all live here. With no
|
|
38
|
+
* `dataPlaneResolver` it is also the database every claimed unit of work
|
|
39
|
+
* runs against.
|
|
40
|
+
*/
|
|
22
41
|
db: PostgresJsDatabase;
|
|
23
42
|
/** Events queue (outbox dispatcher + domain event delivery) */
|
|
24
43
|
queue: EventQueue;
|
|
@@ -84,6 +103,86 @@ export interface WorkerPoolConfig {
|
|
|
84
103
|
flowHeartbeatIntervalMs?: number;
|
|
85
104
|
/** Max executions to claim per poll cycle. Default: 50. */
|
|
86
105
|
flowClaimBatchSize?: number;
|
|
106
|
+
/**
|
|
107
|
+
* Resolve the database a claimed unit of work runs against, per unit rather
|
|
108
|
+
* than per boot.
|
|
109
|
+
*
|
|
110
|
+
* Omitted (the default) the pool behaves exactly as it always has: every
|
|
111
|
+
* claimed flow execution runs against `db`. Supplied, each claimed execution
|
|
112
|
+
* is mapped to a tenant reference (`resolveTenantRef` over the row's stored
|
|
113
|
+
* tenant, `tenantId` by default), that reference is resolved to a data plane,
|
|
114
|
+
* and the execution's repositories, events, audit and transactions are wired
|
|
115
|
+
* against the resolved handle's database. A reference the resolver does not
|
|
116
|
+
* recognise fails that execution — no path substitutes another tenant's
|
|
117
|
+
* database.
|
|
118
|
+
*
|
|
119
|
+
* When a resolver is set the engine is also given `spineDispatch` (pool `db`
|
|
120
|
+
* is the spine). Claim moves to `opaque_dispatch` SKIP LOCKED; tenant-local
|
|
121
|
+
* `flow_executions` / `execution_state` are loaded through the resolver.
|
|
122
|
+
* The outbox dispatcher, event worker (idempotency + dead-letter), and
|
|
123
|
+
* scheduler use `listTenantRefs` + this resolver so each tenant's tables
|
|
124
|
+
* are read on that tenant's data plane. Pool `db` is the spine.
|
|
125
|
+
*
|
|
126
|
+
* Two consequences worth naming: the queue-driven flow step consumer is not
|
|
127
|
+
* started in this mode (it builds its context synchronously and so cannot
|
|
128
|
+
* resolve a data plane; the polling runner covers the same work), and
|
|
129
|
+
* `createDataService` may not be combined with a resolver — the framework
|
|
130
|
+
* wires repositories from the entity registry against the resolved plane
|
|
131
|
+
* instead.
|
|
132
|
+
*/
|
|
133
|
+
dataPlaneResolver?: DataPlaneResolver;
|
|
134
|
+
/**
|
|
135
|
+
* Tenant references the outbox dispatcher pumps when `dataPlaneResolver`
|
|
136
|
+
* is set. Combined with tenants already resolved for claimed work.
|
|
137
|
+
*/
|
|
138
|
+
listTenantRefs?: () => Iterable<string> | Promise<Iterable<string>>;
|
|
139
|
+
/** Policy for claimed work carrying no tenant reference. Default: `'refuse'`. */
|
|
140
|
+
untenantedDataPlane?: UntenantedDataPlanePolicy;
|
|
141
|
+
/**
|
|
142
|
+
* Tenant planes for the flow scheduler alone: one schedule row per tenant for flows
|
|
143
|
+
* scheduled on `tenants`, started with that tenant on auth. Flows, events and the outbox keep
|
|
144
|
+
* the pool's data plane — for a host that routes tenant data itself and has no
|
|
145
|
+
* `dataPlaneResolver`. Ignored when `dataPlaneResolver` is set (it already covers the scheduler).
|
|
146
|
+
*/
|
|
147
|
+
schedulePlanes?: {
|
|
148
|
+
resolver: DataPlaneResolver;
|
|
149
|
+
listTenantRefs: () => Iterable<string> | Promise<Iterable<string>>;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Map an auth context to the reference `dataPlaneResolver` is keyed by.
|
|
153
|
+
* Defaults to `auth.tenantId`.
|
|
154
|
+
*/
|
|
155
|
+
resolveTenantRef?: (auth: AuthContext) => string | undefined;
|
|
156
|
+
/**
|
|
157
|
+
* Optional approval service for the capability-pipeline gate.
|
|
158
|
+
* Omitted: existing hosts boot unchanged.
|
|
159
|
+
*/
|
|
160
|
+
approvals?: ApprovalService;
|
|
161
|
+
/**
|
|
162
|
+
* Optional governed prompt/policy store. Omitted: existing hosts boot unchanged.
|
|
163
|
+
* Same resolution rules as createServer.
|
|
164
|
+
*/
|
|
165
|
+
artifacts?: GovernedArtifactStore;
|
|
166
|
+
/**
|
|
167
|
+
* Directory for the filesystem governed artifact store when `artifacts` is omitted.
|
|
168
|
+
*/
|
|
169
|
+
artifactsDirectory?: string;
|
|
170
|
+
/**
|
|
171
|
+
* Host authorization revalidation after an approval wait.
|
|
172
|
+
* Harness stub only unless the host supplies one.
|
|
173
|
+
*/
|
|
174
|
+
authorizationProvider?: AuthorizationProvider;
|
|
175
|
+
/**
|
|
176
|
+
* Compiled flow definitions. When set, the engine
|
|
177
|
+
* consumes signed JSON instead of live TypeScript steps.
|
|
178
|
+
*/
|
|
179
|
+
compiledRegistry?: CompiledFlowRegistry;
|
|
180
|
+
/**
|
|
181
|
+
* Directory of `plumbus compile-flows` JSON. Used when `compiledRegistry`
|
|
182
|
+
* is omitted. An explicit path that is missing, empty, or tampered fails
|
|
183
|
+
* closed. Omitted: `{cwd}/.plumbus/compiled-flows` is loaded when it has JSON.
|
|
184
|
+
*/
|
|
185
|
+
compiledFlowsDirectory?: string;
|
|
87
186
|
}
|
|
88
187
|
export interface WorkerPool {
|
|
89
188
|
/** Start all enabled workers */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/worker/bootstrap.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/worker/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/bootstrap.js
CHANGED
|
@@ -4,14 +4,20 @@
|
|
|
4
4
|
// flow scheduler. Handles graceful shutdown.
|
|
5
5
|
import { sql } from 'drizzle-orm';
|
|
6
6
|
import { resolveEncryptionKey } from '../data/field-encryption.js';
|
|
7
|
+
import { FRAMEWORK_SCHEMA } from '../data/schema-generator.js';
|
|
7
8
|
import { createAuditService } from '../audit/service.js';
|
|
9
|
+
import { PlumbusError } from '../errors/plumbus-error.js';
|
|
10
|
+
import { ErrorCode } from '../types/enums.js';
|
|
8
11
|
import { createOutboxDispatcher } from '../events/dispatcher.js';
|
|
9
12
|
import { createEventEmitter } from '../events/emitter.js';
|
|
10
13
|
import { createIdempotencyService } from '../events/idempotency.js';
|
|
11
14
|
import { createEventWorker } from '../events/worker.js';
|
|
15
|
+
import { hostApprovalRuntimeExtras } from '../approvals/host-runtime.js';
|
|
16
|
+
import { resolveGovernedArtifactStore } from '../ai/governed-artifacts.js';
|
|
12
17
|
import { buildCapabilityRuntimeDeps } from '../execution/capability-invocation.js';
|
|
13
18
|
import { wireContextDependencies } from '../execution/context-deps.js';
|
|
14
19
|
import { createExecutionContext } from '../execution/context-factory.js';
|
|
20
|
+
import { resolveCompiledFlowRegistry, } from '../flows/compiled-registry.js';
|
|
15
21
|
import { createFlowEngine, generateWorkerId } from '../flows/engine.js';
|
|
16
22
|
import { createFlowService } from '../flows/flow-service.js';
|
|
17
23
|
import { FlowStatus } from '../flows/state-machine.js';
|
|
@@ -66,6 +72,18 @@ function describeError(err) {
|
|
|
66
72
|
}
|
|
67
73
|
return out;
|
|
68
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* The tenant a claimed flow execution belongs to.
|
|
77
|
+
*
|
|
78
|
+
* Claimed rows come back from a raw `RETURNING *`, so they carry the database's
|
|
79
|
+
* own column names rather than the camel-cased ones the typed `select()` path
|
|
80
|
+
* produces. Both spellings are read so the tenant is found either way.
|
|
81
|
+
*/
|
|
82
|
+
function claimedTenantRef(row) {
|
|
83
|
+
const columns = row;
|
|
84
|
+
const value = columns.tenantId ?? columns.tenant_id;
|
|
85
|
+
return typeof value === 'string' && value !== '' ? value : undefined;
|
|
86
|
+
}
|
|
69
87
|
// ── Lease-column preflight ──
|
|
70
88
|
//
|
|
71
89
|
// 0.3.0 added `lease_owner` and `lease_expires_at` columns to flow_executions
|
|
@@ -104,7 +122,74 @@ export function createWorkerPool(poolConfig) {
|
|
|
104
122
|
const logger = poolConfig.logger ?? createWorkerLogger();
|
|
105
123
|
const metrics = poolConfig.metrics;
|
|
106
124
|
const eventRegistry = poolConfig.eventRegistry;
|
|
107
|
-
|
|
125
|
+
const artifacts = resolveGovernedArtifactStore({
|
|
126
|
+
artifacts: poolConfig.artifacts,
|
|
127
|
+
artifactsDirectory: poolConfig.artifactsDirectory,
|
|
128
|
+
});
|
|
129
|
+
// ── Per-unit data-plane resolution (opt-in) ──
|
|
130
|
+
const dataPlaneResolver = poolConfig.dataPlaneResolver;
|
|
131
|
+
const untenantedDataPlane = poolConfig.untenantedDataPlane ?? 'refuse';
|
|
132
|
+
const resolveTenantRef = poolConfig.resolveTenantRef ?? ((auth) => auth.tenantId);
|
|
133
|
+
if (dataPlaneResolver && poolConfig.createDataService) {
|
|
134
|
+
throw new Error('dataPlaneResolver and createDataService cannot both be configured: a caller-built data ' +
|
|
135
|
+
'service is bound to a database the resolver does not control, so tenant work would run ' +
|
|
136
|
+
'against it instead of the resolved data plane. Supply `entities` and let the framework ' +
|
|
137
|
+
'wire repositories against the resolved plane.');
|
|
138
|
+
}
|
|
139
|
+
if (dataPlaneResolver) {
|
|
140
|
+
logger.info(`Per-unit data-plane resolution enabled (untenanted work: ${untenantedDataPlane})`);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Data planes resolved so far, keyed by tenant reference. Written by the
|
|
144
|
+
* async resolution that precedes a unit of work and read by the engine's
|
|
145
|
+
* per-auth service factories, which are synchronous and so cannot resolve.
|
|
146
|
+
* A miss throws rather than falling back to the pool's own database.
|
|
147
|
+
*/
|
|
148
|
+
const resolvedDataPlanes = new Map();
|
|
149
|
+
const resolvedCoreSchemas = new Map();
|
|
150
|
+
function untenantedWorkError() {
|
|
151
|
+
return new PlumbusError(ErrorCode.Forbidden, 'This worker resolves a database per unit of work and the claimed work carries no tenant reference', { reason: 'untenanted-unit-of-work' });
|
|
152
|
+
}
|
|
153
|
+
/** Resolve (and remember) the data plane a unit of work runs against. */
|
|
154
|
+
async function resolveUnitDataPlane(tenantRef) {
|
|
155
|
+
if (!dataPlaneResolver)
|
|
156
|
+
return db;
|
|
157
|
+
if (!tenantRef) {
|
|
158
|
+
if (untenantedDataPlane === 'control-plane')
|
|
159
|
+
return db;
|
|
160
|
+
throw untenantedWorkError();
|
|
161
|
+
}
|
|
162
|
+
const handle = await dataPlaneResolver.resolve(tenantRef);
|
|
163
|
+
resolvedDataPlanes.set(tenantRef, handle.db);
|
|
164
|
+
resolvedCoreSchemas.set(tenantRef, handle.coreSchema);
|
|
165
|
+
return handle.db;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The data plane already resolved for an auth context. Used by the engine's
|
|
169
|
+
* synchronous per-auth factories, which run inside a unit of work whose plane
|
|
170
|
+
* was resolved just before it started.
|
|
171
|
+
*/
|
|
172
|
+
function dataPlaneForAuth(auth) {
|
|
173
|
+
if (!dataPlaneResolver)
|
|
174
|
+
return db;
|
|
175
|
+
const tenantRef = resolveTenantRef(auth);
|
|
176
|
+
if (!tenantRef) {
|
|
177
|
+
if (untenantedDataPlane === 'control-plane')
|
|
178
|
+
return db;
|
|
179
|
+
throw untenantedWorkError();
|
|
180
|
+
}
|
|
181
|
+
const resolved = resolvedDataPlanes.get(tenantRef);
|
|
182
|
+
if (!resolved) {
|
|
183
|
+
throw new PlumbusError(ErrorCode.Internal, `No data plane has been resolved for tenant reference "${tenantRef}" in this worker`, { tenantRef });
|
|
184
|
+
}
|
|
185
|
+
return resolved;
|
|
186
|
+
}
|
|
187
|
+
async function listedTenantRefs() {
|
|
188
|
+
const listed = poolConfig.listTenantRefs ? [...(await poolConfig.listTenantRefs())] : [];
|
|
189
|
+
return [...new Set([...listed, ...resolvedDataPlanes.keys()])];
|
|
190
|
+
}
|
|
191
|
+
// Idempotency service for event worker (pool fallback; tenanted delivery
|
|
192
|
+
// builds a per-plane service inside createEventWorker when resolver is set).
|
|
108
193
|
const idempotency = createIdempotencyService(db);
|
|
109
194
|
const systemWorkerAuth = {
|
|
110
195
|
userId: 'system-worker',
|
|
@@ -120,6 +205,13 @@ export function createWorkerPool(poolConfig) {
|
|
|
120
205
|
audit: workerAudit,
|
|
121
206
|
pollIntervalMs: outboxPollIntervalMs,
|
|
122
207
|
metrics,
|
|
208
|
+
...(dataPlaneResolver
|
|
209
|
+
? {
|
|
210
|
+
resolver: dataPlaneResolver,
|
|
211
|
+
spineDb: db,
|
|
212
|
+
listTenantRefs: listedTenantRefs,
|
|
213
|
+
}
|
|
214
|
+
: {}),
|
|
123
215
|
};
|
|
124
216
|
const dispatcher = enableDispatcher ? createOutboxDispatcher(dispatcherConfig) : null;
|
|
125
217
|
// Event delivery worker
|
|
@@ -130,6 +222,7 @@ export function createWorkerPool(poolConfig) {
|
|
|
130
222
|
idempotency,
|
|
131
223
|
audit: workerAudit,
|
|
132
224
|
metrics,
|
|
225
|
+
resolver: dataPlaneResolver,
|
|
133
226
|
};
|
|
134
227
|
const eventWorker = enableEventWorker ? createEventWorker(eventWorkerConfig) : null;
|
|
135
228
|
const jobEventWorker = enableEventWorker && jobsQueue !== queue
|
|
@@ -140,6 +233,7 @@ export function createWorkerPool(poolConfig) {
|
|
|
140
233
|
idempotency,
|
|
141
234
|
audit: workerAudit,
|
|
142
235
|
metrics,
|
|
236
|
+
resolver: dataPlaneResolver,
|
|
143
237
|
})
|
|
144
238
|
: null;
|
|
145
239
|
// Flow engine + scheduler
|
|
@@ -167,14 +261,23 @@ export function createWorkerPool(poolConfig) {
|
|
|
167
261
|
});
|
|
168
262
|
}
|
|
169
263
|
: undefined,
|
|
264
|
+
spineDispatch: dataPlaneResolver ? { db, resolver: dataPlaneResolver } : undefined,
|
|
265
|
+
compiledRegistry: resolveCompiledFlowRegistry({
|
|
266
|
+
compiledRegistry: poolConfig.compiledRegistry,
|
|
267
|
+
compiledFlowsDirectory: poolConfig.compiledFlowsDirectory,
|
|
268
|
+
}),
|
|
170
269
|
createDataService: createDataService ? (auth) => createDataService(auth) : undefined,
|
|
171
270
|
createEventService: eventRegistry
|
|
172
|
-
? (auth) =>
|
|
173
|
-
db
|
|
174
|
-
auth
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
271
|
+
? (auth) => {
|
|
272
|
+
// Without a resolver this is the pool's own `db`, unchanged.
|
|
273
|
+
const authDb = dataPlaneForAuth(auth);
|
|
274
|
+
return createEventEmitter({
|
|
275
|
+
db: authDb,
|
|
276
|
+
auth,
|
|
277
|
+
registry: eventRegistry,
|
|
278
|
+
audit: audit ?? createAuditService({ db: authDb, auth }),
|
|
279
|
+
});
|
|
280
|
+
}
|
|
178
281
|
: undefined,
|
|
179
282
|
};
|
|
180
283
|
const flowEngine = createFlowEngine(flowEngineConfig);
|
|
@@ -191,6 +294,8 @@ export function createWorkerPool(poolConfig) {
|
|
|
191
294
|
logger,
|
|
192
295
|
metrics,
|
|
193
296
|
onMcpJobComplete: poolConfig.onMcpJobComplete,
|
|
297
|
+
approvals: poolConfig.approvals,
|
|
298
|
+
authorizationProvider: poolConfig.authorizationProvider,
|
|
194
299
|
});
|
|
195
300
|
}
|
|
196
301
|
// Auto-register flow trigger consumer for all event-triggered flows
|
|
@@ -211,12 +316,22 @@ export function createWorkerPool(poolConfig) {
|
|
|
211
316
|
});
|
|
212
317
|
logger.info(`Registered flow trigger consumer for ${triggerEventTypes.size} event types`);
|
|
213
318
|
}
|
|
319
|
+
const schedulePlanes = poolConfig.schedulePlanes;
|
|
214
320
|
const schedulerConfig = {
|
|
215
321
|
db,
|
|
216
322
|
registry: flows,
|
|
217
323
|
engine: flowEngine,
|
|
218
324
|
pollIntervalMs: schedulerPollIntervalMs,
|
|
325
|
+
logger,
|
|
326
|
+
...(dataPlaneResolver
|
|
327
|
+
? { resolver: dataPlaneResolver, listTenantRefs: listedTenantRefs }
|
|
328
|
+
: schedulePlanes
|
|
329
|
+
? { resolver: schedulePlanes.resolver, listTenantRefs: schedulePlanes.listTenantRefs }
|
|
330
|
+
: {}),
|
|
219
331
|
};
|
|
332
|
+
if (!dataPlaneResolver && schedulePlanes) {
|
|
333
|
+
logger.info('Flow scheduler runs on the pool plane and every tenant plane the host lists');
|
|
334
|
+
}
|
|
220
335
|
const scheduler = enableScheduler ? createFlowScheduler(schedulerConfig) : null;
|
|
221
336
|
let flowRunnerTimer = null;
|
|
222
337
|
async function runFlowCycle() {
|
|
@@ -232,9 +347,16 @@ export function createWorkerPool(poolConfig) {
|
|
|
232
347
|
scopes: [],
|
|
233
348
|
provider: 'worker',
|
|
234
349
|
};
|
|
235
|
-
|
|
350
|
+
// One context for the whole batch when every unit runs against the same
|
|
351
|
+
// database — the resolver path builds one per claimed row instead.
|
|
352
|
+
const baseCtx = dataPlaneResolver ? undefined : buildFlowRunnerContext(systemAuth);
|
|
236
353
|
for (const row of claimed) {
|
|
237
354
|
try {
|
|
355
|
+
// Resolving inside the per-row try means an unknown or absent tenant
|
|
356
|
+
// fails this execution the same way a failing step does, instead of
|
|
357
|
+
// aborting the cycle for every other tenant in the batch.
|
|
358
|
+
const ctx = baseCtx ??
|
|
359
|
+
buildFlowRunnerContext(systemAuth, await resolveUnitDataPlane(resolveTenantRef({ ...systemAuth, tenantId: claimedTenantRef(row) })));
|
|
238
360
|
// Drain consecutive in-flow steps in a single tick.
|
|
239
361
|
//
|
|
240
362
|
// Why: claimNext() acquires a lease (status='running',
|
|
@@ -261,7 +383,7 @@ export function createWorkerPool(poolConfig) {
|
|
|
261
383
|
const maxStepsPerCycle = 1000;
|
|
262
384
|
let stepsRun = 0;
|
|
263
385
|
while (stepsRun < maxStepsPerCycle) {
|
|
264
|
-
const result = await flowEngine.runNext(row.id,
|
|
386
|
+
const result = await flowEngine.runNext(row.id, ctx);
|
|
265
387
|
stepsRun += 1;
|
|
266
388
|
if (result.status !== FlowStatus.Running) {
|
|
267
389
|
break;
|
|
@@ -304,34 +426,46 @@ export function createWorkerPool(poolConfig) {
|
|
|
304
426
|
logger.error('Flow claim cycle failed', describeError(err));
|
|
305
427
|
}
|
|
306
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Build the base context a claimed unit of work runs with.
|
|
431
|
+
*
|
|
432
|
+
* `contextDb` defaults to the pool's own database, which is what every caller
|
|
433
|
+
* passes unless a `dataPlaneResolver` resolved a different plane for this
|
|
434
|
+
* particular unit of work.
|
|
435
|
+
*/
|
|
307
436
|
function buildFlowRunnerContext(systemAuth = {
|
|
308
437
|
userId: 'system-flow-runner',
|
|
309
438
|
roles: ['system'],
|
|
310
439
|
scopes: [],
|
|
311
440
|
provider: 'worker',
|
|
312
|
-
}) {
|
|
441
|
+
}, contextDb = db) {
|
|
313
442
|
if (poolConfig.entities && eventRegistry) {
|
|
443
|
+
const tenantRef = resolveTenantRef(systemAuth);
|
|
444
|
+
const durableSchema = (tenantRef ? resolvedCoreSchemas.get(tenantRef) : undefined) ?? FRAMEWORK_SCHEMA;
|
|
314
445
|
return createExecutionContext(wireContextDependencies({
|
|
315
|
-
db,
|
|
446
|
+
db: contextDb,
|
|
316
447
|
auth: systemAuth,
|
|
317
448
|
entities: poolConfig.entities,
|
|
318
449
|
events: eventRegistry,
|
|
319
450
|
encryptionKey: resolveEncryptionKey(),
|
|
451
|
+
durableDispatch: dataPlaneResolver ? { schemaName: durableSchema } : undefined,
|
|
320
452
|
}, {
|
|
321
453
|
flows: createFlowService(flowEngine, systemAuth, flows),
|
|
322
454
|
ai: poolConfig.aiService,
|
|
323
455
|
logger,
|
|
324
456
|
config: poolConfig.config,
|
|
325
457
|
...(poolConfig.capabilities ? buildCapabilityRuntimeDeps(poolConfig.capabilities) : {}),
|
|
458
|
+
...hostApprovalRuntimeExtras(poolConfig),
|
|
459
|
+
...(artifacts ? { artifacts } : {}),
|
|
326
460
|
}));
|
|
327
461
|
}
|
|
328
|
-
const systemAudit = audit ?? createAuditService({ db, auth: systemAuth });
|
|
462
|
+
const systemAudit = audit ?? createAuditService({ db: contextDb, auth: systemAuth });
|
|
329
463
|
const dataService = poolConfig.createDataService
|
|
330
464
|
? poolConfig.createDataService(systemAuth)
|
|
331
465
|
: {};
|
|
332
466
|
const eventService = eventRegistry
|
|
333
467
|
? createEventEmitter({
|
|
334
|
-
db,
|
|
468
|
+
db: contextDb,
|
|
335
469
|
auth: systemAuth,
|
|
336
470
|
registry: eventRegistry,
|
|
337
471
|
audit: systemAudit,
|
|
@@ -347,9 +481,16 @@ export function createWorkerPool(poolConfig) {
|
|
|
347
481
|
logger,
|
|
348
482
|
config: poolConfig.config,
|
|
349
483
|
...(poolConfig.capabilities ? buildCapabilityRuntimeDeps(poolConfig.capabilities) : {}),
|
|
484
|
+
...hostApprovalRuntimeExtras(poolConfig),
|
|
485
|
+
...(artifacts ? { artifacts } : {}),
|
|
350
486
|
});
|
|
351
487
|
}
|
|
352
|
-
|
|
488
|
+
if (dataPlaneResolver && enableFlowRunner && flowsQueue) {
|
|
489
|
+
logger.warn('Flow step queue consumer not started: it builds its context synchronously and cannot ' +
|
|
490
|
+
'resolve a data plane per unit of work. The polling flow runner covers the same work; ' +
|
|
491
|
+
'lower flowPollIntervalMs if the added latency matters.');
|
|
492
|
+
}
|
|
493
|
+
const flowStepConsumer = enableFlowRunner && flowsQueue && !dataPlaneResolver
|
|
353
494
|
? createFlowStepConsumer({
|
|
354
495
|
flowsQueue,
|
|
355
496
|
engine: flowEngine,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/worker/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/worker/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/instructions/api.md
CHANGED
|
@@ -19,3 +19,24 @@ Plumbus capabilities can be exposed to partners on versioned HTTP routes. **Cont
|
|
|
19
19
|
`plumbus api validate` exits `1` only on hard findings by default; pass `--fail-on-governance` to also fail on advisory API governance signals. Details: `node_modules/@plumbus/api/instructions/manifest-and-cli.md`.
|
|
20
20
|
|
|
21
21
|
Install the runtime when serving partners: `pnpm add @plumbus/api` (optional peer of `@plumbus/core`, version-locked `0.1.x`).
|
|
22
|
+
|
|
23
|
+
## Declared idempotency on the `/api` surface
|
|
24
|
+
|
|
25
|
+
A capability that declares `api: { idempotency: { required: true, header: 'Idempotency-Key', ttl?: '24h' } }`
|
|
26
|
+
is served by the route generator only with that header present. The key is scoped
|
|
27
|
+
`operationId:tenant:user:key`; the same key with the same input replays the first answer, the
|
|
28
|
+
same key with different input or from another principal is refused with `conflict`
|
|
29
|
+
(`metadata.reason: 'idempotency-conflict'`), a missing header is `validation`
|
|
30
|
+
(`metadata.reason: 'idempotency-key-required'`), and a failed execution releases the key so a
|
|
31
|
+
retry executes again. Authorization is evaluated before the header is looked at, so a refused
|
|
32
|
+
caller is answered by the executor as always. Reads (`GET`) are never keyed. The payload
|
|
33
|
+
fingerprint (`hashPayload`) refuses a body nested deeper than `MAX_PAYLOAD_DEPTH` (64 levels)
|
|
34
|
+
with `validation` (`metadata.reason: 'payload-too-deep'`) — a pathological body can never take
|
|
35
|
+
the hasher down with a `RangeError`.
|
|
36
|
+
|
|
37
|
+
The store is `RouteGeneratorConfig.idempotencyStore` (`IdempotencyStore`, from
|
|
38
|
+
`createServer({ idempotencyStore })`); when unset every route registered with one config
|
|
39
|
+
shares one `createInMemoryIdempotencyStore()` — correct within a process, lost on restart.
|
|
40
|
+
A deployment that needs replay protection across instances supplies a shared store. The store
|
|
41
|
+
contract (`claim` / `complete` / `abort`, `hashPayload`, `parseIdempotencyTtl`,
|
|
42
|
+
`buildIdempotencyStoreKey`) is exported from `@plumbus/core` and re-exported by `@plumbus/api`.
|
package/instructions/cli.md
CHANGED
|
@@ -69,6 +69,11 @@ plumbus event new <EventName>
|
|
|
69
69
|
plumbus flow new <FlowName>
|
|
70
70
|
# → app/flows/default/<flow-name>/flow.ts
|
|
71
71
|
|
|
72
|
+
# Compile defineFlow modules into signed FlowDefinition JSON
|
|
73
|
+
plumbus compile-flows
|
|
74
|
+
# → .plumbus/compiled-flows/{domain.name}@{version}.json
|
|
75
|
+
# createServer / createWorkerPool reload that directory on boot (digest-checked)
|
|
76
|
+
|
|
72
77
|
# Create a prompt
|
|
73
78
|
plumbus prompt new <PromptName>
|
|
74
79
|
# → app/prompts/<prompt-name>.prompt.ts
|
|
@@ -79,7 +84,7 @@ Names are PascalCase on the command line and converted to kebab-case for file pa
|
|
|
79
84
|
## Code Generation & Verification
|
|
80
85
|
|
|
81
86
|
```bash
|
|
82
|
-
# Generate
|
|
87
|
+
# Generate types, OpenAPI, and manifests from your contracts
|
|
83
88
|
plumbus generate
|
|
84
89
|
|
|
85
90
|
# Run governance checks (advisory signals, not hard blocks)
|
|
@@ -137,6 +142,7 @@ plumbus migrate generate
|
|
|
137
142
|
# Apply pending migration files to the database
|
|
138
143
|
plumbus migrate apply
|
|
139
144
|
plumbus migrate apply --create-db # Create DB if it doesn't exist, then apply
|
|
145
|
+
plumbus migrate apply --database tenant_alpha # Named tenant database (owner role in config)
|
|
140
146
|
|
|
141
147
|
# Push schema directly to DB (no migration files — ideal for rapid dev iteration)
|
|
142
148
|
plumbus migrate push
|
|
@@ -155,7 +161,7 @@ All migration commands accept `--json` for machine-readable output.
|
|
|
155
161
|
**Workflow:**
|
|
156
162
|
1. Define entities in `app/entities/` using `defineEntity()`
|
|
157
163
|
2. Run `plumbus migrate generate` to produce SQL migration files in `drizzle/`
|
|
158
|
-
3. Run `plumbus migrate apply` to execute pending migrations
|
|
164
|
+
3. Run `plumbus migrate apply` to execute pending migrations. Database-per-tenant hosts apply the same `drizzle/` folder to each named database (`--database <name>` or `applyDataPlaneMigrations`) as the owner role — see `docs/sdk-reference/tenant-data-planes.md`.
|
|
159
165
|
4. If schema already exists but history is missing: `plumbus migrate reconcile` (use `--dry-run` to preview)
|
|
160
166
|
5. For rapid development, use `plumbus migrate push` to sync schema directly (no migration files)
|
|
161
167
|
|
|
@@ -164,8 +170,8 @@ All migration commands accept `--json` for machine-readable output.
|
|
|
164
170
|
## Development
|
|
165
171
|
|
|
166
172
|
```bash
|
|
167
|
-
# Start development server with hot reload
|
|
168
|
-
plumbus dev
|
|
173
|
+
# Start development server with hot reload (--port or PLUMBUS_DEV_PORT required)
|
|
174
|
+
plumbus dev --port $PLUMBUS_DEV_PORT
|
|
169
175
|
```
|
|
170
176
|
|
|
171
177
|
## Production server
|
|
@@ -173,16 +179,16 @@ plumbus dev
|
|
|
173
179
|
`plumbus start` is the production-mode counterpart to `plumbus dev`. It forces `environment: "production"`, runs `validateConfig` (which **fails fast** if `AUTH_SECRET` is missing or weak), and exposes `GET /health` + `GET /ready`.
|
|
174
180
|
|
|
175
181
|
```bash
|
|
176
|
-
plumbus start
|
|
182
|
+
plumbus start --port $PLUMBUS_START_PORT
|
|
177
183
|
plumbus start --port 8080 --host 127.0.0.1
|
|
178
184
|
```
|
|
179
185
|
|
|
180
|
-
Behind a load balancer set `TRUST_PROXY=true` (or a specific IP/CIDR) so Fastify trusts `X-Forwarded-*` headers. `app/server.ts` extension hooks (`onRoutesRegistered`, `resolveAiOverrides`, `onCapabilityError`, `onProcessError`, `onAICostRecorded`, `onFlowError`, `enableStrictStructuredOutputs`) are loaded automatically.
|
|
186
|
+
Behind a load balancer set `TRUST_PROXY=true` (or a specific IP/CIDR) so Fastify trusts `X-Forwarded-*` headers. `app/server.ts` extension hooks (`onRoutesRegistered`, `resolveAiOverrides`, `onCapabilityError`, `onProcessError`, `onAICostRecorded`, `onFlowError`, `enableStrictStructuredOutputs`, `credentials`) are loaded automatically.
|
|
181
187
|
|
|
182
188
|
## Background work
|
|
183
189
|
|
|
184
190
|
```bash
|
|
185
|
-
plumbus worker start
|
|
191
|
+
plumbus worker start --health-port $PLUMBUS_WORKER_HEALTH_PORT # split deployments
|
|
186
192
|
plumbus events status # outbox / queue health
|
|
187
193
|
plumbus flow dead-letter list # failed flow executions
|
|
188
194
|
plumbus seed # populate initial data
|
|
@@ -212,7 +218,7 @@ plumbus mcp generate
|
|
|
212
218
|
|
|
213
219
|
# Run an MCP server — requires `pnpm add @plumbus/mcp` (optional peer dep)
|
|
214
220
|
plumbus mcp serve --stdio # Claude Desktop, Cursor, local agents
|
|
215
|
-
plumbus mcp serve --http --port
|
|
221
|
+
plumbus mcp serve --http --port $PLUMBUS_MCP_PORT # remote agents over Streamable HTTP
|
|
216
222
|
|
|
217
223
|
# Human-readable manifest dump for debugging
|
|
218
224
|
plumbus mcp list-tools
|
|
@@ -280,5 +286,5 @@ Run `plumbus agent sync` after adding capabilities/entities so coding agents see
|
|
|
280
286
|
- **Scaffolded files have TODOs**: After scaffolding, open the generated file and replace `// TODO` sections with your implementation.
|
|
281
287
|
- **`.plumbus/` is generated**: The `.plumbus/` directory contains auto-generated files. Don't edit them manually — they are regenerated by `plumbus generate`.
|
|
282
288
|
- **Use the framework's `define*()` functions**: Never create primitives by hand. Use the CLI to scaffold, then fill in the contracts using `defineEntity()`, `defineCapability()`, `defineFlow()`, `defineEvent()`, `definePrompt()`.
|
|
283
|
-
- **`plumbus ui generate` is safe to re-run**: It only regenerates contract-derived data files (`lib/client.ts`, `hooks/hooks.ts`, `lib/auth.ts`, `lib/form-hints.ts`, i18n). It never touches custom pages.
|
|
289
|
+
- **`plumbus ui generate` is safe to re-run**: It only regenerates contract-derived data files (`lib/client.ts`, `hooks/hooks.ts`, `lib/auth.ts`, `lib/form-hints.ts`, i18n). Fetch clients, hooks, and form hints are emitted only for `exposeAs: ['api']` capabilities (event handlers omitted). It never touches custom pages.
|
|
284
290
|
- **`plumbus ui nextjs` protects existing files**: Scaffold files (`page.tsx`, `layout.tsx`, `globals.css`, login, signup, etc.) are skipped if they already exist. Only contract-derived module files are overwritten. Use `--force` to overwrite scaffold files.
|