@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
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { PlumbusError } from '../errors/plumbus-error.js';
|
|
2
|
+
import { ErrorCode } from '../types/enums.js';
|
|
3
|
+
/** What a scrubbed secret is replaced with wherever one could have appeared. */
|
|
4
|
+
export declare const CREDENTIAL_REDACTED = "[redacted]";
|
|
5
|
+
export declare class CredentialCatalogError extends PlumbusError {
|
|
6
|
+
constructor(code: ErrorCode, message: string, metadata?: Record<string, unknown>);
|
|
7
|
+
}
|
|
8
|
+
export interface CredentialFieldSpec {
|
|
9
|
+
name: string;
|
|
10
|
+
/** Secret fields are omitted from describe/JSON/inspect and read via `secret()`. */
|
|
11
|
+
secret: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface CredentialTypeDeclaration {
|
|
14
|
+
/** Host-chosen type id (`smtp`, `object-storage`, …). Not a built-in list. */
|
|
15
|
+
id: string;
|
|
16
|
+
fields: readonly CredentialFieldSpec[];
|
|
17
|
+
}
|
|
18
|
+
export interface CredentialTypeRecord {
|
|
19
|
+
id: string;
|
|
20
|
+
fields: readonly CredentialFieldSpec[];
|
|
21
|
+
}
|
|
22
|
+
export interface CredentialBinding {
|
|
23
|
+
name: string;
|
|
24
|
+
typeId: string;
|
|
25
|
+
/** Opaque reference the host stores. Never a secret value. */
|
|
26
|
+
ref: string;
|
|
27
|
+
/** Public labels only. Names of secret fields are refused. */
|
|
28
|
+
labels?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
export interface CredentialRecord {
|
|
31
|
+
name: string;
|
|
32
|
+
typeId: string;
|
|
33
|
+
ref: string;
|
|
34
|
+
labels: Readonly<Record<string, string>>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Revealed material. `fields` holds non-secret values only. Secret values are
|
|
38
|
+
* read with `secret(fieldName)` so a log of the object or a spread of `fields`
|
|
39
|
+
* cannot leak them.
|
|
40
|
+
*/
|
|
41
|
+
export interface CredentialMaterial {
|
|
42
|
+
readonly typeId: string;
|
|
43
|
+
readonly name: string;
|
|
44
|
+
readonly ref: string;
|
|
45
|
+
readonly fields: Readonly<Record<string, string>>;
|
|
46
|
+
secret(fieldName: string): string;
|
|
47
|
+
}
|
|
48
|
+
export type CredentialResolver = (record: CredentialRecord) => Promise<Record<string, string>> | Record<string, string>;
|
|
49
|
+
export interface CredentialCatalog {
|
|
50
|
+
listTypes(): readonly CredentialTypeRecord[];
|
|
51
|
+
getType(typeId: string): CredentialTypeRecord | undefined;
|
|
52
|
+
bind(binding: CredentialBinding): CredentialRecord;
|
|
53
|
+
get(name: string): CredentialRecord | undefined;
|
|
54
|
+
getByRef(ref: string): CredentialRecord | undefined;
|
|
55
|
+
list(): readonly CredentialRecord[];
|
|
56
|
+
reveal(name: string): Promise<CredentialMaterial>;
|
|
57
|
+
}
|
|
58
|
+
export interface MemoryCredentialCatalogOptions {
|
|
59
|
+
types: readonly CredentialTypeDeclaration[];
|
|
60
|
+
/**
|
|
61
|
+
* Host lookup of field values for a bound ref. Omitted: `reveal` refuses.
|
|
62
|
+
* The catalog never stores the returned values.
|
|
63
|
+
*/
|
|
64
|
+
resolve?: CredentialResolver;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* In-memory catalog of host-declared credential types and opaque bindings.
|
|
68
|
+
* No built-in types. Secrets live in the host resolver, not in the catalog.
|
|
69
|
+
*/
|
|
70
|
+
export declare function createMemoryCredentialCatalog(options: MemoryCredentialCatalogOptions): CredentialCatalog;
|
|
71
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/credentials/catalog.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAQhD,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAIjF;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,gBAAgB,KACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,IAAI,SAAS,oBAAoB,EAAE,CAAC;IAC7C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC1D,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;IACnD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACpD,IAAI,IAAI,SAAS,gBAAgB,EAAE,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC5C;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AA6PD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,iBAAiB,CAgGnB"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
// ── Credential catalog ──
|
|
2
|
+
// Named credential *types* a host declares. The catalog holds type shapes and
|
|
3
|
+
// opaque bindings (name + ref). It does not mint IAM, store secrets, or ship
|
|
4
|
+
// built-in types. The host supplies field values at reveal time; secret fields
|
|
5
|
+
// never appear in describe(), JSON, inspect, or error text.
|
|
6
|
+
import { inspect } from 'node:util';
|
|
7
|
+
import { PlumbusError } from '../errors/plumbus-error.js';
|
|
8
|
+
import { ErrorCode } from '../types/enums.js';
|
|
9
|
+
/** What a scrubbed secret is replaced with wherever one could have appeared. */
|
|
10
|
+
export const CREDENTIAL_REDACTED = '[redacted]';
|
|
11
|
+
const TYPE_ID_PATTERN = /^[a-z][a-z0-9-]{0,62}$/;
|
|
12
|
+
const FIELD_NAME_PATTERN = /^[a-z][a-z0-9-]{0,62}$/;
|
|
13
|
+
const BINDING_NAME_PATTERN = /^[a-z][a-z0-9-]{0,62}$/;
|
|
14
|
+
const REF_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._:/=#@-]{0,255}$/;
|
|
15
|
+
const LABEL_VALUE_MAX = 256;
|
|
16
|
+
export class CredentialCatalogError extends PlumbusError {
|
|
17
|
+
constructor(code, message, metadata) {
|
|
18
|
+
super(code, message, metadata);
|
|
19
|
+
this.name = 'CredentialCatalogError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function catalogError(code, message, metadata) {
|
|
23
|
+
return new CredentialCatalogError(code, message, metadata);
|
|
24
|
+
}
|
|
25
|
+
function hasControlCharacter(value) {
|
|
26
|
+
for (const character of value) {
|
|
27
|
+
const code = character.codePointAt(0) ?? 0;
|
|
28
|
+
if (code < 0x20 || code === 0x7f)
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
function assertPattern(value, pattern, field) {
|
|
34
|
+
if (!pattern.test(value)) {
|
|
35
|
+
throw catalogError(ErrorCode.Validation, `${field} is not a valid catalog identifier`, {
|
|
36
|
+
field,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
function freezeType(type) {
|
|
42
|
+
return Object.freeze({
|
|
43
|
+
id: type.id,
|
|
44
|
+
fields: Object.freeze(type.fields.map((field) => Object.freeze({ ...field }))),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function freezeRecord(record) {
|
|
48
|
+
return Object.freeze({
|
|
49
|
+
name: record.name,
|
|
50
|
+
typeId: record.typeId,
|
|
51
|
+
ref: record.ref,
|
|
52
|
+
labels: Object.freeze({ ...record.labels }),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function normalizeTypes(types) {
|
|
56
|
+
if (!Array.isArray(types)) {
|
|
57
|
+
throw catalogError(ErrorCode.Validation, 'types must be an array', { field: 'types' });
|
|
58
|
+
}
|
|
59
|
+
const byId = new Map();
|
|
60
|
+
for (const declared of types) {
|
|
61
|
+
if (declared === null || typeof declared !== 'object') {
|
|
62
|
+
throw catalogError(ErrorCode.Validation, 'each type must be an object', { field: 'types' });
|
|
63
|
+
}
|
|
64
|
+
const id = assertPattern(declared.id, TYPE_ID_PATTERN, 'type id');
|
|
65
|
+
if (byId.has(id)) {
|
|
66
|
+
throw catalogError(ErrorCode.Conflict, `credential type "${id}" is already declared`, {
|
|
67
|
+
typeId: id,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
if (!Array.isArray(declared.fields) || declared.fields.length === 0) {
|
|
71
|
+
throw catalogError(ErrorCode.Validation, `credential type "${id}" must declare at least one field`, {
|
|
72
|
+
typeId: id,
|
|
73
|
+
field: 'fields',
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
const fieldNames = new Set();
|
|
77
|
+
const fields = [];
|
|
78
|
+
for (const field of declared.fields) {
|
|
79
|
+
if (field === null || typeof field !== 'object') {
|
|
80
|
+
throw catalogError(ErrorCode.Validation, `credential type "${id}" has an invalid field`, {
|
|
81
|
+
typeId: id,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
const name = assertPattern(field.name, FIELD_NAME_PATTERN, 'field name');
|
|
85
|
+
if (fieldNames.has(name)) {
|
|
86
|
+
throw catalogError(ErrorCode.Conflict, `credential type "${id}" repeats field "${name}"`, {
|
|
87
|
+
typeId: id,
|
|
88
|
+
field: name,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (typeof field.secret !== 'boolean') {
|
|
92
|
+
throw catalogError(ErrorCode.Validation, `field "${name}" on type "${id}" must set secret`, {
|
|
93
|
+
typeId: id,
|
|
94
|
+
field: name,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
fieldNames.add(name);
|
|
98
|
+
fields.push({ name, secret: field.secret });
|
|
99
|
+
}
|
|
100
|
+
byId.set(id, freezeType({ id, fields }));
|
|
101
|
+
}
|
|
102
|
+
return byId;
|
|
103
|
+
}
|
|
104
|
+
function normalizeLabels(labels, secretFields) {
|
|
105
|
+
if (labels === undefined)
|
|
106
|
+
return {};
|
|
107
|
+
if (labels === null || typeof labels !== 'object' || Array.isArray(labels)) {
|
|
108
|
+
throw catalogError(ErrorCode.Validation, 'labels must be a string map', { field: 'labels' });
|
|
109
|
+
}
|
|
110
|
+
const normalized = {};
|
|
111
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
112
|
+
assertPattern(key, FIELD_NAME_PATTERN, 'label key');
|
|
113
|
+
if (secretFields.has(key)) {
|
|
114
|
+
throw catalogError(ErrorCode.Validation, `label "${key}" names a secret field and cannot be stored on the binding`, { field: 'labels', label: key });
|
|
115
|
+
}
|
|
116
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > LABEL_VALUE_MAX) {
|
|
117
|
+
throw catalogError(ErrorCode.Validation, `label "${key}" must be a non-empty string`, {
|
|
118
|
+
field: 'labels',
|
|
119
|
+
label: key,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (hasControlCharacter(value)) {
|
|
123
|
+
throw catalogError(ErrorCode.Validation, `label "${key}" must not contain control characters`, {
|
|
124
|
+
field: 'labels',
|
|
125
|
+
label: key,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
normalized[key] = value;
|
|
129
|
+
}
|
|
130
|
+
return normalized;
|
|
131
|
+
}
|
|
132
|
+
function publicView(record, fields) {
|
|
133
|
+
return {
|
|
134
|
+
typeId: record.typeId,
|
|
135
|
+
name: record.name,
|
|
136
|
+
ref: record.ref,
|
|
137
|
+
fields: { ...fields },
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function wrapMaterial(record, publicFields, secrets) {
|
|
141
|
+
const frozenPublic = Object.freeze({ ...publicFields });
|
|
142
|
+
const frozenSecrets = Object.freeze({ ...secrets });
|
|
143
|
+
const material = {
|
|
144
|
+
typeId: record.typeId,
|
|
145
|
+
name: record.name,
|
|
146
|
+
ref: record.ref,
|
|
147
|
+
fields: frozenPublic,
|
|
148
|
+
};
|
|
149
|
+
Object.defineProperty(material, 'secret', {
|
|
150
|
+
enumerable: false,
|
|
151
|
+
value(fieldName) {
|
|
152
|
+
if (Object.hasOwn(frozenPublic, fieldName)) {
|
|
153
|
+
throw catalogError(ErrorCode.Validation, `field "${fieldName}" on credential "${record.name}" is not secret`, { name: record.name, field: fieldName });
|
|
154
|
+
}
|
|
155
|
+
const secret = Object.hasOwn(frozenSecrets, fieldName) ? frozenSecrets[fieldName] : undefined;
|
|
156
|
+
if (secret === undefined) {
|
|
157
|
+
throw catalogError(ErrorCode.NotFound, `credential "${record.name}" has no secret field "${fieldName}"`, { name: record.name, field: fieldName });
|
|
158
|
+
}
|
|
159
|
+
return secret;
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
Object.defineProperty(material, 'toJSON', {
|
|
163
|
+
value: () => publicView(record, frozenPublic),
|
|
164
|
+
enumerable: false,
|
|
165
|
+
});
|
|
166
|
+
Object.defineProperty(material, 'toString', {
|
|
167
|
+
value: () => `CredentialMaterial(${record.typeId} ${record.name})`,
|
|
168
|
+
enumerable: false,
|
|
169
|
+
});
|
|
170
|
+
Object.defineProperty(material, inspect.custom, {
|
|
171
|
+
value: () => publicView(record, frozenPublic),
|
|
172
|
+
enumerable: false,
|
|
173
|
+
});
|
|
174
|
+
return Object.freeze(material);
|
|
175
|
+
}
|
|
176
|
+
function splitResolvedFields(type, record, resolved) {
|
|
177
|
+
if (resolved === null || typeof resolved !== 'object' || Array.isArray(resolved)) {
|
|
178
|
+
throw catalogError(ErrorCode.Validation, `resolver for credential "${record.name}" must return a field map`, { name: record.name, typeId: record.typeId });
|
|
179
|
+
}
|
|
180
|
+
const declared = new Map(type.fields.map((field) => [field.name, field.secret]));
|
|
181
|
+
const extra = Object.keys(resolved).filter((name) => !declared.has(name));
|
|
182
|
+
if (extra.length > 0) {
|
|
183
|
+
throw catalogError(ErrorCode.Validation, `resolver for credential "${record.name}" returned unknown fields`, { name: record.name, typeId: record.typeId, fields: extra });
|
|
184
|
+
}
|
|
185
|
+
const publicFields = {};
|
|
186
|
+
const secrets = {};
|
|
187
|
+
for (const field of type.fields) {
|
|
188
|
+
const value = resolved[field.name];
|
|
189
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
190
|
+
throw catalogError(ErrorCode.Validation, `resolver for credential "${record.name}" omitted field "${field.name}"`, { name: record.name, typeId: record.typeId, field: field.name });
|
|
191
|
+
}
|
|
192
|
+
if (hasControlCharacter(value) && !field.secret) {
|
|
193
|
+
throw catalogError(ErrorCode.Validation, `field "${field.name}" on credential "${record.name}" must not contain control characters`, { name: record.name, field: field.name });
|
|
194
|
+
}
|
|
195
|
+
if (field.secret) {
|
|
196
|
+
secrets[field.name] = value;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
publicFields[field.name] = value;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return { publicFields, secrets };
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* In-memory catalog of host-declared credential types and opaque bindings.
|
|
206
|
+
* No built-in types. Secrets live in the host resolver, not in the catalog.
|
|
207
|
+
*/
|
|
208
|
+
export function createMemoryCredentialCatalog(options) {
|
|
209
|
+
if (options === null || typeof options !== 'object') {
|
|
210
|
+
throw catalogError(ErrorCode.Validation, 'catalog options are required', { field: 'options' });
|
|
211
|
+
}
|
|
212
|
+
const types = normalizeTypes(options.types);
|
|
213
|
+
const byName = new Map();
|
|
214
|
+
const byRef = new Map();
|
|
215
|
+
const resolve = options.resolve;
|
|
216
|
+
return {
|
|
217
|
+
listTypes() {
|
|
218
|
+
return [...types.values()];
|
|
219
|
+
},
|
|
220
|
+
getType(typeId) {
|
|
221
|
+
return types.get(typeId);
|
|
222
|
+
},
|
|
223
|
+
bind(binding) {
|
|
224
|
+
if (binding === null || typeof binding !== 'object') {
|
|
225
|
+
throw catalogError(ErrorCode.Validation, 'binding must be an object', { field: 'binding' });
|
|
226
|
+
}
|
|
227
|
+
const name = assertPattern(binding.name, BINDING_NAME_PATTERN, 'binding name');
|
|
228
|
+
const typeId = assertPattern(binding.typeId, TYPE_ID_PATTERN, 'type id');
|
|
229
|
+
const type = types.get(typeId);
|
|
230
|
+
if (!type) {
|
|
231
|
+
throw catalogError(ErrorCode.NotFound, `credential type "${typeId}" is not declared`, {
|
|
232
|
+
typeId,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
if (typeof binding.ref !== 'string' || !REF_PATTERN.test(binding.ref)) {
|
|
236
|
+
throw catalogError(ErrorCode.Validation, 'binding ref is not a valid opaque reference', {
|
|
237
|
+
field: 'ref',
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
if (byName.has(name)) {
|
|
241
|
+
throw catalogError(ErrorCode.Conflict, `credential "${name}" is already bound`, { name });
|
|
242
|
+
}
|
|
243
|
+
if (byRef.has(binding.ref)) {
|
|
244
|
+
throw catalogError(ErrorCode.Conflict, 'binding ref is already in use', { field: 'ref' });
|
|
245
|
+
}
|
|
246
|
+
const secretFields = new Set(type.fields.filter((field) => field.secret).map((field) => field.name));
|
|
247
|
+
const record = freezeRecord({
|
|
248
|
+
name,
|
|
249
|
+
typeId,
|
|
250
|
+
ref: binding.ref,
|
|
251
|
+
labels: normalizeLabels(binding.labels, secretFields),
|
|
252
|
+
});
|
|
253
|
+
byName.set(name, record);
|
|
254
|
+
byRef.set(record.ref, record);
|
|
255
|
+
return record;
|
|
256
|
+
},
|
|
257
|
+
get(name) {
|
|
258
|
+
return byName.get(name);
|
|
259
|
+
},
|
|
260
|
+
getByRef(ref) {
|
|
261
|
+
return byRef.get(ref);
|
|
262
|
+
},
|
|
263
|
+
list() {
|
|
264
|
+
return [...byName.values()];
|
|
265
|
+
},
|
|
266
|
+
async reveal(name) {
|
|
267
|
+
const record = byName.get(name);
|
|
268
|
+
if (!record) {
|
|
269
|
+
throw catalogError(ErrorCode.NotFound, `credential "${name}" is not bound`, { name });
|
|
270
|
+
}
|
|
271
|
+
if (!resolve) {
|
|
272
|
+
throw catalogError(ErrorCode.Internal, `credential catalog has no resolver for "${record.name}"`, { name: record.name, typeId: record.typeId });
|
|
273
|
+
}
|
|
274
|
+
const type = types.get(record.typeId);
|
|
275
|
+
if (!type) {
|
|
276
|
+
throw catalogError(ErrorCode.Internal, `credential type "${record.typeId}" is missing`, {
|
|
277
|
+
typeId: record.typeId,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
let resolved;
|
|
281
|
+
try {
|
|
282
|
+
resolved = await resolve(record);
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
// Host errors are not re-thrown: their text may contain the secret.
|
|
286
|
+
throw catalogError(ErrorCode.Internal, `Could not resolve credential "${record.name}" of type "${record.typeId}"`, { name: record.name, typeId: record.typeId, ref: record.ref });
|
|
287
|
+
}
|
|
288
|
+
const { publicFields, secrets } = splitResolvedFields(type, record, resolved);
|
|
289
|
+
return wrapMaterial(record, publicFields, secrets);
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/credentials/catalog.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,4DAA4D;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACjD,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AACpD,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AACtD,MAAM,WAAW,GAAG,yCAAyC,CAAC;AAC9D,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,IAAe,EAAE,OAAe,EAAE,QAAkC;QAC9E,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAuED,SAAS,YAAY,CACnB,IAAe,EACf,OAAe,EACf,QAAkC;IAElC,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;IAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,KAAK,oCAAoC,EAAE;YACrF,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAA0B;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,KAA2C;IAE3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAgC,CAAC;IACrD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,6BAA6B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,EAAE,uBAAuB,EAAE;gBACpF,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,oBAAoB,EAAE,mCAAmC,EACzD;gBACE,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,QAAQ;aAChB,CACF,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,MAAM,GAA0B,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAChD,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,oBAAoB,EAAE,wBAAwB,EAAE;oBACvF,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;YACzE,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,EAAE,oBAAoB,IAAI,GAAG,EAAE;oBACxF,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,UAAU,IAAI,cAAc,EAAE,mBAAmB,EACjD;oBACE,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,IAAI;iBACZ,CACF,CAAC;YACJ,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CACtB,MAA0C,EAC1C,YAAiC;IAEjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,6BAA6B,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,aAAa,CAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,UAAU,GAAG,4DAA4D,EACzE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YACtF,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,8BAA8B,EAAE;gBACpF,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;QACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,UAAU,GAAG,uCAAuC,EACpD;gBACE,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,GAAG;aACX,CACF,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,MAAwB,EAAE,MAAwC;IACpF,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,MAAwB,EACxB,YAAoC,EACpC,OAA+B;IAE/B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG;QACf,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM,EAAE,YAAY;KACC,CAAC;IAExB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACxC,UAAU,EAAE,KAAK;QACjB,KAAK,CAAC,SAAiB;YACrB,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;gBAC3C,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,UAAU,SAAS,oBAAoB,MAAM,CAAC,IAAI,iBAAiB,EACnE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CACxC,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,YAAY,CAChB,SAAS,CAAC,QAAQ,EAClB,eAAe,MAAM,CAAC,IAAI,0BAA0B,SAAS,GAAG,EAChE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CACxC,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE;QACxC,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;QAC7C,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,KAAK,EAAE,GAAG,EAAE,CAAC,sBAAsB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG;QAClE,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE;QAC9C,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;QAC7C,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA0B,EAC1B,MAAwB,EACxB,QAAgC;IAEhC,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,4BAA4B,MAAM,CAAC,IAAI,2BAA2B,EAClE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,4BAA4B,MAAM,CAAC,IAAI,2BAA2B,EAClE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,4BAA4B,MAAM,CAAC,IAAI,oBAAoB,KAAK,CAAC,IAAI,GAAG,EACxE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAChE,CAAC;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,YAAY,CAChB,SAAS,CAAC,UAAU,EACpB,UAAU,KAAK,CAAC,IAAI,oBAAoB,MAAM,CAAC,IAAI,uCAAuC,EAC1F,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CACzC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAAuC;IAEvC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,8BAA8B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,SAAS;YACP,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,MAAM;YACZ,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO;YACV,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACpD,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,2BAA2B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,MAAM,mBAAmB,EAAE;oBACpF,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtE,MAAM,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,6CAA6C,EAAE;oBACtF,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,IAAI,oBAAoB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,+BAA+B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACvE,CAAC;YACF,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,IAAI;gBACJ,MAAM;gBACN,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;aACtD,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,IAAI;YACN,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,QAAQ,CAAC,GAAG;YACV,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,IAAI;YACF,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,IAAI;YACf,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,IAAI,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,YAAY,CAChB,SAAS,CAAC,QAAQ,EAClB,2CAA2C,MAAM,CAAC,IAAI,GAAG,EACzD,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC7C,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,oBAAoB,MAAM,CAAC,MAAM,cAAc,EAAE;oBACtF,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,QAAgC,CAAC;YACrC,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;gBACpE,MAAM,YAAY,CAChB,SAAS,CAAC,QAAQ,EAClB,iCAAiC,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,GAAG,EAC1E,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAC9D,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9E,OAAO,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CREDENTIAL_REDACTED, CredentialCatalogError, createMemoryCredentialCatalog, } from './catalog.js';
|
|
2
|
+
export type { CredentialBinding, CredentialCatalog, CredentialFieldSpec, CredentialMaterial, CredentialRecord, CredentialResolver, CredentialTypeDeclaration, CredentialTypeRecord, MemoryCredentialCatalogOptions, } from './catalog.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
|
|
2
2
|
import type { EntityDefinition } from '../types/entity.js';
|
|
3
3
|
/** Framework-managed table names (actual DB names). */
|
|
4
|
-
export declare const FRAMEWORK_TABLE_NAMES: readonly ["audit_records", "event_outbox", "event_idempotency", "event_dead_letter", "flow_executions", "flow_dead_letter", "flow_schedules", "job_executions", "documents", "document_chunks"];
|
|
4
|
+
export declare const FRAMEWORK_TABLE_NAMES: readonly ["audit_records", "event_outbox", "event_idempotency", "event_dead_letter", "flow_executions", "flow_dead_letter", "flow_schedules", "job_executions", "documents", "document_chunks", "execution_state", "step_execution", "wait_state", "terminal_state", "dispatch_outbox", "side_effect_log", "human_task", "approval_request", "approval_decision"];
|
|
5
5
|
export type FrameworkTableName = (typeof FRAMEWORK_TABLE_NAMES)[number];
|
|
6
6
|
export interface ColumnDrift {
|
|
7
7
|
column: string;
|
|
@@ -20,9 +20,6 @@ export interface DriftReport {
|
|
|
20
20
|
missingFrameworkTables: string[];
|
|
21
21
|
tables: TableDrift[];
|
|
22
22
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Check which framework-managed tables currently exist in the live database.
|
|
25
|
-
*/
|
|
26
23
|
export declare function getExistingFrameworkTables(db: PostgresJsDatabase): Promise<string[]>;
|
|
27
24
|
/**
|
|
28
25
|
* Inspect all framework-managed tables for drift between the live DB
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift-inspector.d.ts","sourceRoot":"","sources":["../../src/data/drift-inspector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drift-inspector.d.ts","sourceRoot":"","sources":["../../src/data/drift-inspector.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,mWAoBxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIxE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,GAAG,aAAa,GAAG,eAAe,GAAG,sBAAsB,CAAC;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAuID,wBAAsB,0BAA0B,CAAC,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB1F;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,kBAAkB,EACtB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,OAAO,CAAC,WAAW,CAAC,CAuCtB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAStE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAwC/D"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// `migrate apply` and `migrate push` to fail fast when manually-created
|
|
5
5
|
// tables conflict with the framework schema.
|
|
6
6
|
import { getTableColumns, sql } from 'drizzle-orm';
|
|
7
|
+
import { getTableConfig } from 'drizzle-orm/pg-core';
|
|
7
8
|
import { collectSchemas } from './migration.js';
|
|
8
9
|
/** Framework-managed table names (actual DB names). */
|
|
9
10
|
export const FRAMEWORK_TABLE_NAMES = [
|
|
@@ -17,6 +18,15 @@ export const FRAMEWORK_TABLE_NAMES = [
|
|
|
17
18
|
'job_executions',
|
|
18
19
|
'documents',
|
|
19
20
|
'document_chunks',
|
|
21
|
+
'execution_state',
|
|
22
|
+
'step_execution',
|
|
23
|
+
'wait_state',
|
|
24
|
+
'terminal_state',
|
|
25
|
+
'dispatch_outbox',
|
|
26
|
+
'side_effect_log',
|
|
27
|
+
'human_task',
|
|
28
|
+
'approval_request',
|
|
29
|
+
'approval_decision',
|
|
20
30
|
];
|
|
21
31
|
// ── Type Normalization ──
|
|
22
32
|
/**
|
|
@@ -108,9 +118,27 @@ function compareTable(tableName, expected, live) {
|
|
|
108
118
|
/**
|
|
109
119
|
* Check which framework-managed tables currently exist in the live database.
|
|
110
120
|
*/
|
|
121
|
+
function drizzleTableSchema(table) {
|
|
122
|
+
return getTableConfig(table).schema ?? 'public';
|
|
123
|
+
}
|
|
111
124
|
export async function getExistingFrameworkTables(db) {
|
|
112
|
-
const
|
|
113
|
-
|
|
125
|
+
const schemas = collectSchemas([]);
|
|
126
|
+
const liveBySchema = new Map();
|
|
127
|
+
const found = [];
|
|
128
|
+
for (const name of FRAMEWORK_TABLE_NAMES) {
|
|
129
|
+
const drizzleTable = schemas[`__${name}`];
|
|
130
|
+
if (!drizzleTable)
|
|
131
|
+
continue;
|
|
132
|
+
const schema = drizzleTableSchema(drizzleTable);
|
|
133
|
+
let live = liveBySchema.get(schema);
|
|
134
|
+
if (!live) {
|
|
135
|
+
live = await getLiveTables(db, schema);
|
|
136
|
+
liveBySchema.set(schema, live);
|
|
137
|
+
}
|
|
138
|
+
if (live.has(name))
|
|
139
|
+
found.push(name);
|
|
140
|
+
}
|
|
141
|
+
return found;
|
|
114
142
|
}
|
|
115
143
|
/**
|
|
116
144
|
* Inspect all framework-managed tables for drift between the live DB
|
|
@@ -118,7 +146,7 @@ export async function getExistingFrameworkTables(db) {
|
|
|
118
146
|
*/
|
|
119
147
|
export async function inspectFrameworkDrift(db, entities) {
|
|
120
148
|
const schemas = collectSchemas(entities);
|
|
121
|
-
const
|
|
149
|
+
const liveBySchema = new Map();
|
|
122
150
|
const existingFrameworkTables = [];
|
|
123
151
|
const missingFrameworkTables = [];
|
|
124
152
|
const tables = [];
|
|
@@ -127,10 +155,16 @@ export async function inspectFrameworkDrift(db, entities) {
|
|
|
127
155
|
const drizzleTable = schemas[schemaKey];
|
|
128
156
|
if (!drizzleTable)
|
|
129
157
|
continue;
|
|
158
|
+
const schema = drizzleTableSchema(drizzleTable);
|
|
159
|
+
let liveTables = liveBySchema.get(schema);
|
|
160
|
+
if (!liveTables) {
|
|
161
|
+
liveTables = await getLiveTables(db, schema);
|
|
162
|
+
liveBySchema.set(schema, liveTables);
|
|
163
|
+
}
|
|
130
164
|
if (liveTables.has(name)) {
|
|
131
165
|
existingFrameworkTables.push(name);
|
|
132
166
|
const expected = getExpectedColumns(drizzleTable);
|
|
133
|
-
const live = await getLiveColumns(db, name);
|
|
167
|
+
const live = await getLiveColumns(db, name, schema);
|
|
134
168
|
tables.push(compareTable(name, expected, live));
|
|
135
169
|
}
|
|
136
170
|
else {
|
|
@@ -151,7 +185,7 @@ export async function inspectFrameworkDrift(db, entities) {
|
|
|
151
185
|
* Handles `CREATE TABLE "name"` and `CREATE TABLE name` syntax.
|
|
152
186
|
*/
|
|
153
187
|
export function extractCreateTableNames(migrationSql) {
|
|
154
|
-
const regex = /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(?:"([^"]+)"|([a-zA-Z_]\w*))/gi;
|
|
188
|
+
const regex = /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(?:(?:"[^"]+"|[a-zA-Z_]\w*)\.)?(?:"([^"]+)"|([a-zA-Z_]\w*))/gi;
|
|
155
189
|
const names = [];
|
|
156
190
|
for (const match of migrationSql.matchAll(regex)) {
|
|
157
191
|
const name = match[1] ?? match[2];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift-inspector.js","sourceRoot":"","sources":["../../src/data/drift-inspector.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,sEAAsE;AACtE,mEAAmE;AACnE,wEAAwE;AACxE,6CAA6C;AAE7C,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"drift-inspector.js","sourceRoot":"","sources":["../../src/data/drift-inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,13 @@ export declare const ENCRYPTION_PREFIX = "plumbus:enc:v1:";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare function resolveEncryptionKey(env?: Record<string, string | undefined>): Buffer | undefined;
|
|
8
8
|
export declare function isEncryptedValue(value: unknown): value is string;
|
|
9
|
+
/**
|
|
10
|
+
* AES-256-GCM over raw bytes. Packed layout is `iv (12) || authTag (16) || ciphertext`.
|
|
11
|
+
* Field encryption and export envelope wrapping both use this; do not reimplement it in apps.
|
|
12
|
+
*/
|
|
13
|
+
export declare function encryptBytes(plain: Buffer, key: Buffer): Buffer;
|
|
14
|
+
/** Inverse of {@link encryptBytes}. Throws {@link EncryptionPayloadError} on truncation or tamper. */
|
|
15
|
+
export declare function decryptBytes(packed: Buffer, key: Buffer): Buffer;
|
|
9
16
|
/** Encrypt a string field value. Returns ciphertext prefixed with `plumbus:enc:v1:`. */
|
|
10
17
|
export declare function encryptFieldValue(plaintext: string, key: Buffer): string;
|
|
11
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-encryption.d.ts","sourceRoot":"","sources":["../../src/data/field-encryption.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,GAAG,SAAS,CAyBpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"field-encryption.d.ts","sourceRoot":"","sources":["../../src/data/field-encryption.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAKnD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,GAAG,SAAS,CAyBpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED,sGAAsG;AACtG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBhE;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAcpE;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAQrE"}
|