@plumbus/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/plumbus.js +11 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/ai/__tests__/ai-service.test.d.ts +2 -0
- package/dist/ai/__tests__/ai-service.test.d.ts.map +1 -0
- package/dist/ai/__tests__/ai-service.test.js +347 -0
- package/dist/ai/__tests__/ai-service.test.js.map +1 -0
- package/dist/ai/__tests__/chunking.test.d.ts +2 -0
- package/dist/ai/__tests__/chunking.test.d.ts.map +1 -0
- package/dist/ai/__tests__/chunking.test.js +44 -0
- package/dist/ai/__tests__/chunking.test.js.map +1 -0
- package/dist/ai/__tests__/cost-tracker.test.d.ts +2 -0
- package/dist/ai/__tests__/cost-tracker.test.d.ts.map +1 -0
- package/dist/ai/__tests__/cost-tracker.test.js +201 -0
- package/dist/ai/__tests__/cost-tracker.test.js.map +1 -0
- package/dist/ai/__tests__/explainability.test.d.ts +2 -0
- package/dist/ai/__tests__/explainability.test.d.ts.map +1 -0
- package/dist/ai/__tests__/explainability.test.js +100 -0
- package/dist/ai/__tests__/explainability.test.js.map +1 -0
- package/dist/ai/__tests__/prompt-registry.test.d.ts +2 -0
- package/dist/ai/__tests__/prompt-registry.test.d.ts.map +1 -0
- package/dist/ai/__tests__/prompt-registry.test.js +56 -0
- package/dist/ai/__tests__/prompt-registry.test.js.map +1 -0
- package/dist/ai/__tests__/provider.test.d.ts +3 -0
- package/dist/ai/__tests__/provider.test.d.ts.map +1 -0
- package/dist/ai/__tests__/provider.test.js +151 -0
- package/dist/ai/__tests__/provider.test.js.map +1 -0
- package/dist/ai/__tests__/rag-pipeline.test.d.ts +2 -0
- package/dist/ai/__tests__/rag-pipeline.test.d.ts.map +1 -0
- package/dist/ai/__tests__/rag-pipeline.test.js +128 -0
- package/dist/ai/__tests__/rag-pipeline.test.js.map +1 -0
- package/dist/ai/__tests__/security.test.d.ts +2 -0
- package/dist/ai/__tests__/security.test.d.ts.map +1 -0
- package/dist/ai/__tests__/security.test.js +89 -0
- package/dist/ai/__tests__/security.test.js.map +1 -0
- package/dist/ai/__tests__/usage-client.test.d.ts +2 -0
- package/dist/ai/__tests__/usage-client.test.d.ts.map +1 -0
- package/dist/ai/__tests__/usage-client.test.js +120 -0
- package/dist/ai/__tests__/usage-client.test.js.map +1 -0
- package/dist/ai/__tests__/validation.test.d.ts +2 -0
- package/dist/ai/__tests__/validation.test.d.ts.map +1 -0
- package/dist/ai/__tests__/validation.test.js +114 -0
- package/dist/ai/__tests__/validation.test.js.map +1 -0
- package/dist/ai/ai-service.d.ts +36 -0
- package/dist/ai/ai-service.d.ts.map +1 -0
- package/dist/ai/ai-service.js +258 -0
- package/dist/ai/ai-service.js.map +1 -0
- package/dist/ai/cost-tracker.d.ts +53 -0
- package/dist/ai/cost-tracker.d.ts.map +1 -0
- package/dist/ai/cost-tracker.js +114 -0
- package/dist/ai/cost-tracker.js.map +1 -0
- package/dist/ai/explainability.d.ts +41 -0
- package/dist/ai/explainability.d.ts.map +1 -0
- package/dist/ai/explainability.js +38 -0
- package/dist/ai/explainability.js.map +1 -0
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +25 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/prompt-registry.d.ts +16 -0
- package/dist/ai/prompt-registry.d.ts.map +1 -0
- package/dist/ai/prompt-registry.js +69 -0
- package/dist/ai/prompt-registry.js.map +1 -0
- package/dist/ai/provider.d.ts +73 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +322 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/rag/chunking.d.ts +18 -0
- package/dist/ai/rag/chunking.d.ts.map +1 -0
- package/dist/ai/rag/chunking.js +58 -0
- package/dist/ai/rag/chunking.js.map +1 -0
- package/dist/ai/rag/index.d.ts +4 -0
- package/dist/ai/rag/index.d.ts.map +1 -0
- package/dist/ai/rag/index.js +5 -0
- package/dist/ai/rag/index.js.map +1 -0
- package/dist/ai/rag/pipeline.d.ts +69 -0
- package/dist/ai/rag/pipeline.d.ts.map +1 -0
- package/dist/ai/rag/pipeline.js +135 -0
- package/dist/ai/rag/pipeline.js.map +1 -0
- package/dist/ai/rag/schema.d.ts +320 -0
- package/dist/ai/rag/schema.d.ts.map +1 -0
- package/dist/ai/rag/schema.js +31 -0
- package/dist/ai/rag/schema.js.map +1 -0
- package/dist/ai/security.d.ts +28 -0
- package/dist/ai/security.d.ts.map +1 -0
- package/dist/ai/security.js +78 -0
- package/dist/ai/security.js.map +1 -0
- package/dist/ai/usage-client.d.ts +31 -0
- package/dist/ai/usage-client.d.ts.map +1 -0
- package/dist/ai/usage-client.js +106 -0
- package/dist/ai/usage-client.js.map +1 -0
- package/dist/ai/validation.d.ts +20 -0
- package/dist/ai/validation.d.ts.map +1 -0
- package/dist/ai/validation.js +39 -0
- package/dist/ai/validation.js.map +1 -0
- package/dist/api/__tests__/route-generator.test.d.ts +2 -0
- package/dist/api/__tests__/route-generator.test.d.ts.map +1 -0
- package/dist/api/__tests__/route-generator.test.js +101 -0
- package/dist/api/__tests__/route-generator.test.js.map +1 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +7 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/route-generator.d.ts +24 -0
- package/dist/api/route-generator.d.ts.map +1 -0
- package/dist/api/route-generator.js +77 -0
- package/dist/api/route-generator.js.map +1 -0
- package/dist/audit/__tests__/service.test.d.ts +2 -0
- package/dist/audit/__tests__/service.test.d.ts.map +1 -0
- package/dist/audit/__tests__/service.test.js +97 -0
- package/dist/audit/__tests__/service.test.js.map +1 -0
- package/dist/audit/index.d.ts +4 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +8 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/schema.d.ts +164 -0
- package/dist/audit/schema.d.ts.map +1 -0
- package/dist/audit/schema.js +16 -0
- package/dist/audit/schema.js.map +1 -0
- package/dist/audit/service.d.ts +14 -0
- package/dist/audit/service.d.ts.map +1 -0
- package/dist/audit/service.js +28 -0
- package/dist/audit/service.js.map +1 -0
- package/dist/auth/__tests__/adapter.test.d.ts +2 -0
- package/dist/auth/__tests__/adapter.test.d.ts.map +1 -0
- package/dist/auth/__tests__/adapter.test.js +218 -0
- package/dist/auth/__tests__/adapter.test.js.map +1 -0
- package/dist/auth/__tests__/oidc-adapter.test.d.ts +2 -0
- package/dist/auth/__tests__/oidc-adapter.test.d.ts.map +1 -0
- package/dist/auth/__tests__/oidc-adapter.test.js +232 -0
- package/dist/auth/__tests__/oidc-adapter.test.js.map +1 -0
- package/dist/auth/__tests__/password.test.d.ts +2 -0
- package/dist/auth/__tests__/password.test.d.ts.map +1 -0
- package/dist/auth/__tests__/password.test.js +30 -0
- package/dist/auth/__tests__/password.test.js.map +1 -0
- package/dist/auth/__tests__/saml-adapter.test.d.ts +2 -0
- package/dist/auth/__tests__/saml-adapter.test.d.ts.map +1 -0
- package/dist/auth/__tests__/saml-adapter.test.js +188 -0
- package/dist/auth/__tests__/saml-adapter.test.js.map +1 -0
- package/dist/auth/__tests__/scim.test.d.ts +2 -0
- package/dist/auth/__tests__/scim.test.d.ts.map +1 -0
- package/dist/auth/__tests__/scim.test.js +306 -0
- package/dist/auth/__tests__/scim.test.js.map +1 -0
- package/dist/auth/adapter.d.ts +60 -0
- package/dist/auth/adapter.d.ts.map +1 -0
- package/dist/auth/adapter.js +144 -0
- package/dist/auth/adapter.js.map +1 -0
- package/dist/auth/index.d.ts +11 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +9 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oidc-adapter.d.ts +32 -0
- package/dist/auth/oidc-adapter.d.ts.map +1 -0
- package/dist/auth/oidc-adapter.js +169 -0
- package/dist/auth/oidc-adapter.js.map +1 -0
- package/dist/auth/password.d.ts +13 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +33 -0
- package/dist/auth/password.js.map +1 -0
- package/dist/auth/saml-adapter.d.ts +38 -0
- package/dist/auth/saml-adapter.d.ts.map +1 -0
- package/dist/auth/saml-adapter.js +209 -0
- package/dist/auth/saml-adapter.js.map +1 -0
- package/dist/auth/scim.d.ts +134 -0
- package/dist/auth/scim.d.ts.map +1 -0
- package/dist/auth/scim.js +207 -0
- package/dist/auth/scim.js.map +1 -0
- package/dist/cli/__tests__/agent.test.d.ts +2 -0
- package/dist/cli/__tests__/agent.test.d.ts.map +1 -0
- package/dist/cli/__tests__/agent.test.js +63 -0
- package/dist/cli/__tests__/agent.test.js.map +1 -0
- package/dist/cli/__tests__/certify.test.d.ts +2 -0
- package/dist/cli/__tests__/certify.test.d.ts.map +1 -0
- package/dist/cli/__tests__/certify.test.js +97 -0
- package/dist/cli/__tests__/certify.test.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +2 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +30 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli/__tests__/create.test.d.ts +2 -0
- package/dist/cli/__tests__/create.test.d.ts.map +1 -0
- package/dist/cli/__tests__/create.test.js +46 -0
- package/dist/cli/__tests__/create.test.js.map +1 -0
- package/dist/cli/__tests__/dev.test.d.ts +2 -0
- package/dist/cli/__tests__/dev.test.d.ts.map +1 -0
- package/dist/cli/__tests__/dev.test.js +132 -0
- package/dist/cli/__tests__/dev.test.js.map +1 -0
- package/dist/cli/__tests__/discover.test.d.ts +2 -0
- package/dist/cli/__tests__/discover.test.d.ts.map +1 -0
- package/dist/cli/__tests__/discover.test.js +48 -0
- package/dist/cli/__tests__/discover.test.js.map +1 -0
- package/dist/cli/__tests__/doctor.test.d.ts +2 -0
- package/dist/cli/__tests__/doctor.test.d.ts.map +1 -0
- package/dist/cli/__tests__/doctor.test.js +56 -0
- package/dist/cli/__tests__/doctor.test.js.map +1 -0
- package/dist/cli/__tests__/generate.test.d.ts +2 -0
- package/dist/cli/__tests__/generate.test.d.ts.map +1 -0
- package/dist/cli/__tests__/generate.test.js +68 -0
- package/dist/cli/__tests__/generate.test.js.map +1 -0
- package/dist/cli/__tests__/init.test.d.ts +2 -0
- package/dist/cli/__tests__/init.test.d.ts.map +1 -0
- package/dist/cli/__tests__/init.test.js +75 -0
- package/dist/cli/__tests__/init.test.js.map +1 -0
- package/dist/cli/__tests__/migrate.test.d.ts +2 -0
- package/dist/cli/__tests__/migrate.test.d.ts.map +1 -0
- package/dist/cli/__tests__/migrate.test.js +285 -0
- package/dist/cli/__tests__/migrate.test.js.map +1 -0
- package/dist/cli/__tests__/templates.test.d.ts +2 -0
- package/dist/cli/__tests__/templates.test.d.ts.map +1 -0
- package/dist/cli/__tests__/templates.test.js +49 -0
- package/dist/cli/__tests__/templates.test.js.map +1 -0
- package/dist/cli/__tests__/test.test.d.ts +2 -0
- package/dist/cli/__tests__/test.test.d.ts.map +1 -0
- package/dist/cli/__tests__/test.test.js +40 -0
- package/dist/cli/__tests__/test.test.js.map +1 -0
- package/dist/cli/__tests__/ui.test.d.ts +2 -0
- package/dist/cli/__tests__/ui.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ui.test.js +62 -0
- package/dist/cli/__tests__/ui.test.js.map +1 -0
- package/dist/cli/__tests__/utils.test.d.ts +2 -0
- package/dist/cli/__tests__/utils.test.d.ts.map +1 -0
- package/dist/cli/__tests__/utils.test.js +30 -0
- package/dist/cli/__tests__/utils.test.js.map +1 -0
- package/dist/cli/__tests__/verify.test.d.ts +2 -0
- package/dist/cli/__tests__/verify.test.d.ts.map +1 -0
- package/dist/cli/__tests__/verify.test.js +138 -0
- package/dist/cli/__tests__/verify.test.js.map +1 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +33 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands/__tests__/commands.test.d.ts +2 -0
- package/dist/cli/commands/__tests__/commands.test.d.ts.map +1 -0
- package/dist/cli/commands/__tests__/commands.test.js +180 -0
- package/dist/cli/commands/__tests__/commands.test.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +17 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +154 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/capability.d.ts +7 -0
- package/dist/cli/commands/capability.d.ts.map +1 -0
- package/dist/cli/commands/capability.js +27 -0
- package/dist/cli/commands/capability.js.map +1 -0
- package/dist/cli/commands/certify.d.ts +24 -0
- package/dist/cli/commands/certify.d.ts.map +1 -0
- package/dist/cli/commands/certify.js +228 -0
- package/dist/cli/commands/certify.js.map +1 -0
- package/dist/cli/commands/create.d.ts +13 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +190 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +36 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +178 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +31 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +233 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/e2e.d.ts +3 -0
- package/dist/cli/commands/e2e.d.ts.map +1 -0
- package/dist/cli/commands/e2e.js +165 -0
- package/dist/cli/commands/e2e.js.map +1 -0
- package/dist/cli/commands/entity.d.ts +3 -0
- package/dist/cli/commands/entity.d.ts.map +1 -0
- package/dist/cli/commands/entity.js +21 -0
- package/dist/cli/commands/entity.js.map +1 -0
- package/dist/cli/commands/event.d.ts +3 -0
- package/dist/cli/commands/event.d.ts.map +1 -0
- package/dist/cli/commands/event.js +21 -0
- package/dist/cli/commands/event.js.map +1 -0
- package/dist/cli/commands/flow.d.ts +3 -0
- package/dist/cli/commands/flow.d.ts.map +1 -0
- package/dist/cli/commands/flow.js +25 -0
- package/dist/cli/commands/flow.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +17 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +175 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/index.d.ts +20 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +45 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +20 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +261 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +7 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +523 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/prompt.d.ts +3 -0
- package/dist/cli/commands/prompt.d.ts.map +1 -0
- package/dist/cli/commands/prompt.js +21 -0
- package/dist/cli/commands/prompt.js.map +1 -0
- package/dist/cli/commands/rag.d.ts +13 -0
- package/dist/cli/commands/rag.d.ts.map +1 -0
- package/dist/cli/commands/rag.js +100 -0
- package/dist/cli/commands/rag.js.map +1 -0
- package/dist/cli/commands/seed.d.ts +19 -0
- package/dist/cli/commands/seed.d.ts.map +1 -0
- package/dist/cli/commands/seed.js +183 -0
- package/dist/cli/commands/seed.js.map +1 -0
- package/dist/cli/commands/test.d.ts +17 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +128 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +53 -0
- package/dist/cli/commands/ui.d.ts.map +1 -0
- package/dist/cli/commands/ui.js +291 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +21 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +153 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/discover.d.ts +26 -0
- package/dist/cli/discover.d.ts.map +1 -0
- package/dist/cli/discover.js +127 -0
- package/dist/cli/discover.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +21 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/templates/resources.d.ts +8 -0
- package/dist/cli/templates/resources.d.ts.map +1 -0
- package/dist/cli/templates/resources.js +157 -0
- package/dist/cli/templates/resources.js.map +1 -0
- package/dist/cli/utils.d.ts +27 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +69 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/config/__tests__/loader.test.d.ts +2 -0
- package/dist/config/__tests__/loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/loader.test.js +462 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +21 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +190 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/data/__tests__/registry.test.d.ts +2 -0
- package/dist/data/__tests__/registry.test.d.ts.map +1 -0
- package/dist/data/__tests__/registry.test.js +55 -0
- package/dist/data/__tests__/registry.test.js.map +1 -0
- package/dist/data/__tests__/repository.test.d.ts +2 -0
- package/dist/data/__tests__/repository.test.d.ts.map +1 -0
- package/dist/data/__tests__/repository.test.js +197 -0
- package/dist/data/__tests__/repository.test.js.map +1 -0
- package/dist/data/__tests__/schema-generator.test.d.ts +2 -0
- package/dist/data/__tests__/schema-generator.test.d.ts.map +1 -0
- package/dist/data/__tests__/schema-generator.test.js +112 -0
- package/dist/data/__tests__/schema-generator.test.js.map +1 -0
- package/dist/data/index.d.ts +5 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +10 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/migration.d.ts +35 -0
- package/dist/data/migration.d.ts.map +1 -0
- package/dist/data/migration.js +55 -0
- package/dist/data/migration.js.map +1 -0
- package/dist/data/registry.d.ts +49 -0
- package/dist/data/registry.d.ts.map +1 -0
- package/dist/data/registry.js +74 -0
- package/dist/data/registry.js.map +1 -0
- package/dist/data/repository.d.ts +22 -0
- package/dist/data/repository.d.ts.map +1 -0
- package/dist/data/repository.js +170 -0
- package/dist/data/repository.js.map +1 -0
- package/dist/data/schema-generator.d.ts +12 -0
- package/dist/data/schema-generator.d.ts.map +1 -0
- package/dist/data/schema-generator.js +123 -0
- package/dist/data/schema-generator.js.map +1 -0
- package/dist/define/__tests__/defineCapability.test.d.ts +2 -0
- package/dist/define/__tests__/defineCapability.test.d.ts.map +1 -0
- package/dist/define/__tests__/defineCapability.test.js +66 -0
- package/dist/define/__tests__/defineCapability.test.js.map +1 -0
- package/dist/define/__tests__/defineEntity.test.d.ts +2 -0
- package/dist/define/__tests__/defineEntity.test.d.ts.map +1 -0
- package/dist/define/__tests__/defineEntity.test.js +50 -0
- package/dist/define/__tests__/defineEntity.test.js.map +1 -0
- package/dist/define/__tests__/defineEvent.test.d.ts +2 -0
- package/dist/define/__tests__/defineEvent.test.d.ts.map +1 -0
- package/dist/define/__tests__/defineEvent.test.js +35 -0
- package/dist/define/__tests__/defineEvent.test.js.map +1 -0
- package/dist/define/__tests__/defineFlow.test.d.ts +2 -0
- package/dist/define/__tests__/defineFlow.test.d.ts.map +1 -0
- package/dist/define/__tests__/defineFlow.test.js +49 -0
- package/dist/define/__tests__/defineFlow.test.js.map +1 -0
- package/dist/define/__tests__/definePrompt.test.d.ts +2 -0
- package/dist/define/__tests__/definePrompt.test.d.ts.map +1 -0
- package/dist/define/__tests__/definePrompt.test.js +40 -0
- package/dist/define/__tests__/definePrompt.test.js.map +1 -0
- package/dist/define/defineCapability.d.ts +38 -0
- package/dist/define/defineCapability.d.ts.map +1 -0
- package/dist/define/defineCapability.js +33 -0
- package/dist/define/defineCapability.js.map +1 -0
- package/dist/define/defineEntity.d.ts +16 -0
- package/dist/define/defineEntity.d.ts.map +1 -0
- package/dist/define/defineEntity.js +21 -0
- package/dist/define/defineEntity.js.map +1 -0
- package/dist/define/defineEvent.d.ts +13 -0
- package/dist/define/defineEvent.d.ts.map +1 -0
- package/dist/define/defineEvent.js +17 -0
- package/dist/define/defineEvent.js.map +1 -0
- package/dist/define/defineFlow.d.ts +17 -0
- package/dist/define/defineFlow.d.ts.map +1 -0
- package/dist/define/defineFlow.js +23 -0
- package/dist/define/defineFlow.js.map +1 -0
- package/dist/define/definePrompt.d.ts +15 -0
- package/dist/define/definePrompt.d.ts.map +1 -0
- package/dist/define/definePrompt.js +20 -0
- package/dist/define/definePrompt.js.map +1 -0
- package/dist/define/index.d.ts +6 -0
- package/dist/define/index.d.ts.map +1 -0
- package/dist/define/index.js +10 -0
- package/dist/define/index.js.map +1 -0
- package/dist/errors/__tests__/errors.test.d.ts +2 -0
- package/dist/errors/__tests__/errors.test.d.ts.map +1 -0
- package/dist/errors/__tests__/errors.test.js +42 -0
- package/dist/errors/__tests__/errors.test.js.map +1 -0
- package/dist/errors/__tests__/http.test.d.ts +2 -0
- package/dist/errors/__tests__/http.test.d.ts.map +1 -0
- package/dist/errors/__tests__/http.test.js +32 -0
- package/dist/errors/__tests__/http.test.js.map +1 -0
- package/dist/errors/http.d.ts +13 -0
- package/dist/errors/http.d.ts.map +1 -0
- package/dist/errors/http.js +26 -0
- package/dist/errors/http.js.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +22 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/events/__tests__/consumer-registry.test.d.ts +2 -0
- package/dist/events/__tests__/consumer-registry.test.d.ts.map +1 -0
- package/dist/events/__tests__/consumer-registry.test.js +68 -0
- package/dist/events/__tests__/consumer-registry.test.js.map +1 -0
- package/dist/events/__tests__/dispatcher.test.d.ts +2 -0
- package/dist/events/__tests__/dispatcher.test.d.ts.map +1 -0
- package/dist/events/__tests__/dispatcher.test.js +168 -0
- package/dist/events/__tests__/dispatcher.test.js.map +1 -0
- package/dist/events/__tests__/event-emitter.test.d.ts +2 -0
- package/dist/events/__tests__/event-emitter.test.d.ts.map +1 -0
- package/dist/events/__tests__/event-emitter.test.js +100 -0
- package/dist/events/__tests__/event-emitter.test.js.map +1 -0
- package/dist/events/__tests__/event-registry.test.d.ts +2 -0
- package/dist/events/__tests__/event-registry.test.d.ts.map +1 -0
- package/dist/events/__tests__/event-registry.test.js +55 -0
- package/dist/events/__tests__/event-registry.test.js.map +1 -0
- package/dist/events/__tests__/event-worker.test.d.ts +2 -0
- package/dist/events/__tests__/event-worker.test.d.ts.map +1 -0
- package/dist/events/__tests__/event-worker.test.js +174 -0
- package/dist/events/__tests__/event-worker.test.js.map +1 -0
- package/dist/events/__tests__/queue.test.d.ts +2 -0
- package/dist/events/__tests__/queue.test.d.ts.map +1 -0
- package/dist/events/__tests__/queue.test.js +73 -0
- package/dist/events/__tests__/queue.test.js.map +1 -0
- package/dist/events/consumer-registry.d.ts +47 -0
- package/dist/events/consumer-registry.d.ts.map +1 -0
- package/dist/events/consumer-registry.js +79 -0
- package/dist/events/consumer-registry.js.map +1 -0
- package/dist/events/dispatcher.d.ts +31 -0
- package/dist/events/dispatcher.d.ts.map +1 -0
- package/dist/events/dispatcher.js +149 -0
- package/dist/events/dispatcher.js.map +1 -0
- package/dist/events/emitter.d.ts +22 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +58 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/idempotency.d.ts +13 -0
- package/dist/events/idempotency.d.ts.map +1 -0
- package/dist/events/idempotency.js +25 -0
- package/dist/events/idempotency.js.map +1 -0
- package/dist/events/index.d.ts +15 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +23 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/outbox.d.ts +475 -0
- package/dist/events/outbox.d.ts.map +1 -0
- package/dist/events/outbox.js +48 -0
- package/dist/events/outbox.js.map +1 -0
- package/dist/events/queue.d.ts +58 -0
- package/dist/events/queue.d.ts.map +1 -0
- package/dist/events/queue.js +135 -0
- package/dist/events/queue.js.map +1 -0
- package/dist/events/registry.d.ts +36 -0
- package/dist/events/registry.d.ts.map +1 -0
- package/dist/events/registry.js +59 -0
- package/dist/events/registry.js.map +1 -0
- package/dist/events/worker.d.ts +34 -0
- package/dist/events/worker.d.ts.map +1 -0
- package/dist/events/worker.js +88 -0
- package/dist/events/worker.js.map +1 -0
- package/dist/execution/__tests__/authorization.test.d.ts +2 -0
- package/dist/execution/__tests__/authorization.test.d.ts.map +1 -0
- package/dist/execution/__tests__/authorization.test.js +88 -0
- package/dist/execution/__tests__/authorization.test.js.map +1 -0
- package/dist/execution/__tests__/capability-executor.test.d.ts +2 -0
- package/dist/execution/__tests__/capability-executor.test.d.ts.map +1 -0
- package/dist/execution/__tests__/capability-executor.test.js +184 -0
- package/dist/execution/__tests__/capability-executor.test.js.map +1 -0
- package/dist/execution/__tests__/capability-registry.test.d.ts +2 -0
- package/dist/execution/__tests__/capability-registry.test.d.ts.map +1 -0
- package/dist/execution/__tests__/capability-registry.test.js +50 -0
- package/dist/execution/__tests__/capability-registry.test.js.map +1 -0
- package/dist/execution/__tests__/context-factory.test.d.ts +2 -0
- package/dist/execution/__tests__/context-factory.test.d.ts.map +1 -0
- package/dist/execution/__tests__/context-factory.test.js +116 -0
- package/dist/execution/__tests__/context-factory.test.js.map +1 -0
- package/dist/execution/authorization.d.ts +11 -0
- package/dist/execution/authorization.d.ts.map +1 -0
- package/dist/execution/authorization.js +50 -0
- package/dist/execution/authorization.js.map +1 -0
- package/dist/execution/capability-executor.d.ts +23 -0
- package/dist/execution/capability-executor.d.ts.map +1 -0
- package/dist/execution/capability-executor.js +91 -0
- package/dist/execution/capability-executor.js.map +1 -0
- package/dist/execution/capability-registry.d.ts +33 -0
- package/dist/execution/capability-registry.d.ts.map +1 -0
- package/dist/execution/capability-registry.js +49 -0
- package/dist/execution/capability-registry.js.map +1 -0
- package/dist/execution/context-factory.d.ts +20 -0
- package/dist/execution/context-factory.d.ts.map +1 -0
- package/dist/execution/context-factory.js +98 -0
- package/dist/execution/context-factory.js.map +1 -0
- package/dist/execution/index.d.ts +8 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +10 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/explanation/__tests__/tracker.test.d.ts +2 -0
- package/dist/explanation/__tests__/tracker.test.d.ts.map +1 -0
- package/dist/explanation/__tests__/tracker.test.js +169 -0
- package/dist/explanation/__tests__/tracker.test.js.map +1 -0
- package/dist/explanation/index.d.ts +3 -0
- package/dist/explanation/index.d.ts.map +1 -0
- package/dist/explanation/index.js +7 -0
- package/dist/explanation/index.js.map +1 -0
- package/dist/explanation/tracker.d.ts +81 -0
- package/dist/explanation/tracker.d.ts.map +1 -0
- package/dist/explanation/tracker.js +100 -0
- package/dist/explanation/tracker.js.map +1 -0
- package/dist/fields/__tests__/fields.test.d.ts +2 -0
- package/dist/fields/__tests__/fields.test.d.ts.map +1 -0
- package/dist/fields/__tests__/fields.test.js +60 -0
- package/dist/fields/__tests__/fields.test.js.map +1 -0
- package/dist/fields/index.d.ts +18 -0
- package/dist/fields/index.d.ts.map +1 -0
- package/dist/fields/index.js +51 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/flows/__tests__/flow-engine.test.d.ts +2 -0
- package/dist/flows/__tests__/flow-engine.test.d.ts.map +1 -0
- package/dist/flows/__tests__/flow-engine.test.js +189 -0
- package/dist/flows/__tests__/flow-engine.test.js.map +1 -0
- package/dist/flows/__tests__/flow-registry.test.d.ts +2 -0
- package/dist/flows/__tests__/flow-registry.test.d.ts.map +1 -0
- package/dist/flows/__tests__/flow-registry.test.js +69 -0
- package/dist/flows/__tests__/flow-registry.test.js.map +1 -0
- package/dist/flows/__tests__/flow-service.test.d.ts +2 -0
- package/dist/flows/__tests__/flow-service.test.d.ts.map +1 -0
- package/dist/flows/__tests__/flow-service.test.js +47 -0
- package/dist/flows/__tests__/flow-service.test.js.map +1 -0
- package/dist/flows/__tests__/scheduler.test.d.ts +2 -0
- package/dist/flows/__tests__/scheduler.test.d.ts.map +1 -0
- package/dist/flows/__tests__/scheduler.test.js +120 -0
- package/dist/flows/__tests__/scheduler.test.js.map +1 -0
- package/dist/flows/__tests__/state-machine.test.d.ts +2 -0
- package/dist/flows/__tests__/state-machine.test.d.ts.map +1 -0
- package/dist/flows/__tests__/state-machine.test.js +62 -0
- package/dist/flows/__tests__/state-machine.test.js.map +1 -0
- package/dist/flows/__tests__/step-executor.test.d.ts +2 -0
- package/dist/flows/__tests__/step-executor.test.d.ts.map +1 -0
- package/dist/flows/__tests__/step-executor.test.js +139 -0
- package/dist/flows/__tests__/step-executor.test.js.map +1 -0
- package/dist/flows/__tests__/triggers.test.d.ts +2 -0
- package/dist/flows/__tests__/triggers.test.d.ts.map +1 -0
- package/dist/flows/__tests__/triggers.test.js +98 -0
- package/dist/flows/__tests__/triggers.test.js.map +1 -0
- package/dist/flows/dead-letter.d.ts +12 -0
- package/dist/flows/dead-letter.d.ts.map +1 -0
- package/dist/flows/dead-letter.js +63 -0
- package/dist/flows/dead-letter.js.map +1 -0
- package/dist/flows/engine.d.ts +35 -0
- package/dist/flows/engine.d.ts.map +1 -0
- package/dist/flows/engine.js +402 -0
- package/dist/flows/engine.js.map +1 -0
- package/dist/flows/flow-service.d.ts +10 -0
- package/dist/flows/flow-service.d.ts.map +1 -0
- package/dist/flows/flow-service.js +22 -0
- package/dist/flows/flow-service.js.map +1 -0
- package/dist/flows/index.d.ts +14 -0
- package/dist/flows/index.d.ts.map +1 -0
- package/dist/flows/index.js +25 -0
- package/dist/flows/index.js.map +1 -0
- package/dist/flows/registry.d.ts +47 -0
- package/dist/flows/registry.d.ts.map +1 -0
- package/dist/flows/registry.js +108 -0
- package/dist/flows/registry.js.map +1 -0
- package/dist/flows/scheduler.d.ts +41 -0
- package/dist/flows/scheduler.d.ts.map +1 -0
- package/dist/flows/scheduler.js +242 -0
- package/dist/flows/scheduler.js.map +1 -0
- package/dist/flows/schema.d.ts +627 -0
- package/dist/flows/schema.d.ts.map +1 -0
- package/dist/flows/schema.js +60 -0
- package/dist/flows/schema.js.map +1 -0
- package/dist/flows/state-machine.d.ts +41 -0
- package/dist/flows/state-machine.d.ts.map +1 -0
- package/dist/flows/state-machine.js +56 -0
- package/dist/flows/state-machine.js.map +1 -0
- package/dist/flows/step-executor.d.ts +36 -0
- package/dist/flows/step-executor.d.ts.map +1 -0
- package/dist/flows/step-executor.js +109 -0
- package/dist/flows/step-executor.js.map +1 -0
- package/dist/flows/triggers.d.ts +15 -0
- package/dist/flows/triggers.d.ts.map +1 -0
- package/dist/flows/triggers.js +36 -0
- package/dist/flows/triggers.js.map +1 -0
- package/dist/governance/__tests__/overrides.test.d.ts +2 -0
- package/dist/governance/__tests__/overrides.test.d.ts.map +1 -0
- package/dist/governance/__tests__/overrides.test.js +123 -0
- package/dist/governance/__tests__/overrides.test.js.map +1 -0
- package/dist/governance/__tests__/policies.test.d.ts +2 -0
- package/dist/governance/__tests__/policies.test.d.ts.map +1 -0
- package/dist/governance/__tests__/policies.test.js +203 -0
- package/dist/governance/__tests__/policies.test.js.map +1 -0
- package/dist/governance/__tests__/rules.test.d.ts +2 -0
- package/dist/governance/__tests__/rules.test.d.ts.map +1 -0
- package/dist/governance/__tests__/rules.test.js +342 -0
- package/dist/governance/__tests__/rules.test.js.map +1 -0
- package/dist/governance/index.d.ts +10 -0
- package/dist/governance/index.d.ts.map +1 -0
- package/dist/governance/index.js +12 -0
- package/dist/governance/index.js.map +1 -0
- package/dist/governance/overrides.d.ts +24 -0
- package/dist/governance/overrides.d.ts.map +1 -0
- package/dist/governance/overrides.js +74 -0
- package/dist/governance/overrides.js.map +1 -0
- package/dist/governance/policies.d.ts +22 -0
- package/dist/governance/policies.d.ts.map +1 -0
- package/dist/governance/policies.js +279 -0
- package/dist/governance/policies.js.map +1 -0
- package/dist/governance/reports.d.ts +15 -0
- package/dist/governance/reports.d.ts.map +1 -0
- package/dist/governance/reports.js +79 -0
- package/dist/governance/reports.js.map +1 -0
- package/dist/governance/rule-engine.d.ts +45 -0
- package/dist/governance/rule-engine.d.ts.map +1 -0
- package/dist/governance/rule-engine.js +60 -0
- package/dist/governance/rule-engine.js.map +1 -0
- package/dist/governance/rules/ai.d.ts +11 -0
- package/dist/governance/rules/ai.d.ts.map +1 -0
- package/dist/governance/rules/ai.js +88 -0
- package/dist/governance/rules/ai.js.map +1 -0
- package/dist/governance/rules/architecture.d.ts +13 -0
- package/dist/governance/rules/architecture.d.ts.map +1 -0
- package/dist/governance/rules/architecture.js +114 -0
- package/dist/governance/rules/architecture.js.map +1 -0
- package/dist/governance/rules/index.d.ts +5 -0
- package/dist/governance/rules/index.d.ts.map +1 -0
- package/dist/governance/rules/index.js +6 -0
- package/dist/governance/rules/index.js.map +1 -0
- package/dist/governance/rules/privacy.d.ts +11 -0
- package/dist/governance/rules/privacy.d.ts.map +1 -0
- package/dist/governance/rules/privacy.js +97 -0
- package/dist/governance/rules/privacy.js.map +1 -0
- package/dist/governance/rules/security.d.ts +11 -0
- package/dist/governance/rules/security.d.ts.map +1 -0
- package/dist/governance/rules/security.js +83 -0
- package/dist/governance/rules/security.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/observability/__tests__/metrics.test.d.ts +2 -0
- package/dist/observability/__tests__/metrics.test.d.ts.map +1 -0
- package/dist/observability/__tests__/metrics.test.js +301 -0
- package/dist/observability/__tests__/metrics.test.js.map +1 -0
- package/dist/observability/index.d.ts +3 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +7 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +130 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +255 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/server/__tests__/bootstrap.test.d.ts +2 -0
- package/dist/server/__tests__/bootstrap.test.d.ts.map +1 -0
- package/dist/server/__tests__/bootstrap.test.js +223 -0
- package/dist/server/__tests__/bootstrap.test.js.map +1 -0
- package/dist/server/bootstrap.d.ts +44 -0
- package/dist/server/bootstrap.d.ts.map +1 -0
- package/dist/server/bootstrap.js +153 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -0
- package/dist/testing/__tests__/context.test.d.ts +2 -0
- package/dist/testing/__tests__/context.test.d.ts.map +1 -0
- package/dist/testing/__tests__/context.test.js +341 -0
- package/dist/testing/__tests__/context.test.js.map +1 -0
- package/dist/testing/__tests__/e2e.test.d.ts +2 -0
- package/dist/testing/__tests__/e2e.test.d.ts.map +1 -0
- package/dist/testing/__tests__/e2e.test.js +119 -0
- package/dist/testing/__tests__/e2e.test.js.map +1 -0
- package/dist/testing/__tests__/field-validation.test.d.ts +2 -0
- package/dist/testing/__tests__/field-validation.test.d.ts.map +1 -0
- package/dist/testing/__tests__/field-validation.test.js +178 -0
- package/dist/testing/__tests__/field-validation.test.js.map +1 -0
- package/dist/testing/__tests__/governance.test.d.ts +2 -0
- package/dist/testing/__tests__/governance.test.d.ts.map +1 -0
- package/dist/testing/__tests__/governance.test.js +222 -0
- package/dist/testing/__tests__/governance.test.js.map +1 -0
- package/dist/testing/__tests__/run-capability.test.d.ts +2 -0
- package/dist/testing/__tests__/run-capability.test.d.ts.map +1 -0
- package/dist/testing/__tests__/run-capability.test.js +114 -0
- package/dist/testing/__tests__/run-capability.test.js.map +1 -0
- package/dist/testing/__tests__/scaffolding.test.d.ts +2 -0
- package/dist/testing/__tests__/scaffolding.test.d.ts.map +1 -0
- package/dist/testing/__tests__/scaffolding.test.js +70 -0
- package/dist/testing/__tests__/scaffolding.test.js.map +1 -0
- package/dist/testing/__tests__/security.test.d.ts +2 -0
- package/dist/testing/__tests__/security.test.d.ts.map +1 -0
- package/dist/testing/__tests__/security.test.js +186 -0
- package/dist/testing/__tests__/security.test.js.map +1 -0
- package/dist/testing/__tests__/simulate-flow.test.d.ts +2 -0
- package/dist/testing/__tests__/simulate-flow.test.d.ts.map +1 -0
- package/dist/testing/__tests__/simulate-flow.test.js +198 -0
- package/dist/testing/__tests__/simulate-flow.test.js.map +1 -0
- package/dist/testing/context.d.ts +90 -0
- package/dist/testing/context.d.ts.map +1 -0
- package/dist/testing/context.js +230 -0
- package/dist/testing/context.js.map +1 -0
- package/dist/testing/e2e.d.ts +58 -0
- package/dist/testing/e2e.d.ts.map +1 -0
- package/dist/testing/e2e.js +118 -0
- package/dist/testing/e2e.js.map +1 -0
- package/dist/testing/field-validation.d.ts +18 -0
- package/dist/testing/field-validation.d.ts.map +1 -0
- package/dist/testing/field-validation.js +99 -0
- package/dist/testing/field-validation.js.map +1 -0
- package/dist/testing/governance.d.ts +38 -0
- package/dist/testing/governance.d.ts.map +1 -0
- package/dist/testing/governance.js +104 -0
- package/dist/testing/governance.js.map +1 -0
- package/dist/testing/index.d.ts +18 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +29 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/run-capability.d.ts +20 -0
- package/dist/testing/run-capability.d.ts.map +1 -0
- package/dist/testing/run-capability.js +19 -0
- package/dist/testing/run-capability.js.map +1 -0
- package/dist/testing/scaffolding.d.ts +46 -0
- package/dist/testing/scaffolding.d.ts.map +1 -0
- package/dist/testing/scaffolding.js +266 -0
- package/dist/testing/scaffolding.js.map +1 -0
- package/dist/testing/security.d.ts +42 -0
- package/dist/testing/security.d.ts.map +1 -0
- package/dist/testing/security.js +102 -0
- package/dist/testing/security.js.map +1 -0
- package/dist/testing/simulate-flow.d.ts +45 -0
- package/dist/testing/simulate-flow.d.ts.map +1 -0
- package/dist/testing/simulate-flow.js +136 -0
- package/dist/testing/simulate-flow.js.map +1 -0
- package/dist/types/audit.d.ts +15 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +2 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/capability.d.ts +38 -0
- package/dist/types/capability.d.ts.map +1 -0
- package/dist/types/capability.js +2 -0
- package/dist/types/capability.js.map +1 -0
- package/dist/types/config.d.ts +60 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/context.d.ts +90 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +2 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/entity.d.ts +16 -0
- package/dist/types/entity.d.ts.map +1 -0
- package/dist/types/entity.js +2 -0
- package/dist/types/entity.js.map +1 -0
- package/dist/types/enums.d.ts +66 -0
- package/dist/types/enums.d.ts.map +1 -0
- package/dist/types/enums.js +66 -0
- package/dist/types/enums.js.map +1 -0
- package/dist/types/errors.d.ts +14 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +2 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/event.d.ts +21 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +2 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/fields.d.ts +51 -0
- package/dist/types/fields.d.ts.map +1 -0
- package/dist/types/fields.js +2 -0
- package/dist/types/fields.js.map +1 -0
- package/dist/types/flow.d.ts +54 -0
- package/dist/types/flow.d.ts.map +1 -0
- package/dist/types/flow.js +2 -0
- package/dist/types/flow.js.map +1 -0
- package/dist/types/governance.d.ts +30 -0
- package/dist/types/governance.d.ts.map +1 -0
- package/dist/types/governance.js +2 -0
- package/dist/types/governance.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/prompt.d.ts +18 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +2 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/security.d.ts +17 -0
- package/dist/types/security.d.ts.map +1 -0
- package/dist/types/security.js +2 -0
- package/dist/types/security.js.map +1 -0
- package/dist/vitest/index.d.ts +2 -0
- package/dist/vitest/index.d.ts.map +1 -0
- package/dist/vitest/index.js +5 -0
- package/dist/vitest/index.js.map +1 -0
- package/dist/worker/__tests__/bootstrap.test.d.ts +2 -0
- package/dist/worker/__tests__/bootstrap.test.d.ts.map +1 -0
- package/dist/worker/__tests__/bootstrap.test.js +211 -0
- package/dist/worker/__tests__/bootstrap.test.js.map +1 -0
- package/dist/worker/bootstrap.d.ts +51 -0
- package/dist/worker/bootstrap.d.ts.map +1 -0
- package/dist/worker/bootstrap.js +166 -0
- package/dist/worker/bootstrap.js.map +1 -0
- package/dist/worker/index.d.ts +3 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +6 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/zod/index.d.ts +2 -0
- package/dist/zod/index.d.ts.map +1 -0
- package/dist/zod/index.js +5 -0
- package/dist/zod/index.js.map +1 -0
- package/instructions/ai.md +183 -0
- package/instructions/capabilities.md +171 -0
- package/instructions/cli.md +113 -0
- package/instructions/entities.md +94 -0
- package/instructions/events.md +93 -0
- package/instructions/flows.md +114 -0
- package/instructions/framework.md +86 -0
- package/instructions/governance.md +78 -0
- package/instructions/patterns.md +107 -0
- package/instructions/security.md +79 -0
- package/instructions/testing.md +244 -0
- package/package.json +76 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
const defaultClaimMapping = {
|
|
3
|
+
userId: 'sub',
|
|
4
|
+
roles: 'roles',
|
|
5
|
+
scopes: 'scope',
|
|
6
|
+
tenantId: 'tenant_id',
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* JWT-based auth adapter. Decodes, verifies HMAC-SHA256 signatures,
|
|
10
|
+
* and validates JWT tokens, mapping claims to an AuthContext.
|
|
11
|
+
*/
|
|
12
|
+
export function createJwtAdapter(config) {
|
|
13
|
+
const mapping = { ...defaultClaimMapping, ...config.claimMapping };
|
|
14
|
+
return {
|
|
15
|
+
async authenticate(authorizationHeader) {
|
|
16
|
+
if (!authorizationHeader)
|
|
17
|
+
return null;
|
|
18
|
+
const token = extractBearerToken(authorizationHeader);
|
|
19
|
+
if (!token)
|
|
20
|
+
return null;
|
|
21
|
+
const verified = verifyJwtHs256(token, config.secret);
|
|
22
|
+
if (!verified)
|
|
23
|
+
return null;
|
|
24
|
+
const { payload } = verified;
|
|
25
|
+
// Validate issuer if configured
|
|
26
|
+
if (config.issuer && payload.iss !== config.issuer) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
// Validate audience if configured
|
|
30
|
+
if (config.audience) {
|
|
31
|
+
const aud = payload.aud;
|
|
32
|
+
const audiences = Array.isArray(aud) ? aud : [aud];
|
|
33
|
+
if (!audiences.includes(config.audience)) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Check expiration
|
|
38
|
+
const exp = payload.exp;
|
|
39
|
+
if (typeof exp === 'number' && exp * 1000 < Date.now()) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
// Map claims to AuthContext
|
|
43
|
+
const rawRoles = payload[mapping.roles];
|
|
44
|
+
const rawScopes = payload[mapping.scopes];
|
|
45
|
+
return {
|
|
46
|
+
userId: String(payload[mapping.userId] ?? ''),
|
|
47
|
+
roles: Array.isArray(rawRoles)
|
|
48
|
+
? rawRoles.map(String)
|
|
49
|
+
: typeof rawRoles === 'string'
|
|
50
|
+
? rawRoles.split(',').map((s) => s.trim())
|
|
51
|
+
: [],
|
|
52
|
+
scopes: Array.isArray(rawScopes)
|
|
53
|
+
? rawScopes.map(String)
|
|
54
|
+
: typeof rawScopes === 'string'
|
|
55
|
+
? rawScopes.split(' ').filter(Boolean)
|
|
56
|
+
: [],
|
|
57
|
+
tenantId: payload[mapping.tenantId] ? String(payload[mapping.tenantId]) : undefined,
|
|
58
|
+
provider: 'jwt',
|
|
59
|
+
sessionId: payload.sid ? String(payload.sid) : undefined,
|
|
60
|
+
authenticatedAt: payload.iat ? new Date(payload.iat * 1000) : undefined,
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function extractBearerToken(header) {
|
|
66
|
+
if (header.startsWith('Bearer ')) {
|
|
67
|
+
return header.slice(7);
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
function decodeJwtPayload(token) {
|
|
72
|
+
const parts = token.split('.');
|
|
73
|
+
if (parts.length !== 3)
|
|
74
|
+
return null;
|
|
75
|
+
try {
|
|
76
|
+
const payload = parts[1];
|
|
77
|
+
if (!payload)
|
|
78
|
+
return null;
|
|
79
|
+
const decoded = Buffer.from(payload, 'base64url').toString('utf-8');
|
|
80
|
+
return JSON.parse(decoded);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function verifyJwtHs256(token, secret) {
|
|
87
|
+
const parts = token.split('.');
|
|
88
|
+
if (parts.length !== 3)
|
|
89
|
+
return null;
|
|
90
|
+
const [encodedHeader, encodedPayload, encodedSignature] = parts;
|
|
91
|
+
if (!encodedHeader || !encodedPayload || !encodedSignature)
|
|
92
|
+
return null;
|
|
93
|
+
let header;
|
|
94
|
+
try {
|
|
95
|
+
header = JSON.parse(Buffer.from(encodedHeader, 'base64url').toString('utf-8'));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
if (header.alg !== 'HS256') {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
104
|
+
const expected = createHmac('sha256', secret).update(signingInput).digest();
|
|
105
|
+
const actual = Buffer.from(encodedSignature, 'base64url');
|
|
106
|
+
if (expected.length !== actual.length)
|
|
107
|
+
return null;
|
|
108
|
+
if (!timingSafeEqual(expected, actual))
|
|
109
|
+
return null;
|
|
110
|
+
const payload = decodeJwtPayload(token);
|
|
111
|
+
if (!payload)
|
|
112
|
+
return null;
|
|
113
|
+
return { payload };
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Sign a JWT token using HMAC-SHA256.
|
|
117
|
+
* Returns the signed token string (header.payload.signature).
|
|
118
|
+
*/
|
|
119
|
+
export function signJwt(options) {
|
|
120
|
+
const now = Math.floor(Date.now() / 1000);
|
|
121
|
+
const exp = now + (options.expiresIn ?? 86400);
|
|
122
|
+
const header = { alg: 'HS256', typ: 'JWT' };
|
|
123
|
+
const payload = {
|
|
124
|
+
sub: options.sub,
|
|
125
|
+
iat: now,
|
|
126
|
+
exp,
|
|
127
|
+
...options.claims,
|
|
128
|
+
};
|
|
129
|
+
if (options.roles?.length)
|
|
130
|
+
payload.roles = options.roles;
|
|
131
|
+
if (options.scopes?.length)
|
|
132
|
+
payload.scope = options.scopes.join(' ');
|
|
133
|
+
if (options.tenantId)
|
|
134
|
+
payload.tenant_id = options.tenantId;
|
|
135
|
+
if (options.issuer)
|
|
136
|
+
payload.iss = options.issuer;
|
|
137
|
+
const headerB64 = Buffer.from(JSON.stringify(header)).toString('base64url');
|
|
138
|
+
const payloadB64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
|
|
139
|
+
const signature = createHmac('sha256', options.secret)
|
|
140
|
+
.update(`${headerB64}.${payloadB64}`)
|
|
141
|
+
.digest('base64url');
|
|
142
|
+
return `${headerB64}.${payloadB64}.${signature}`;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/auth/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { createJwtAdapter, signJwt } from './adapter.js';
|
|
2
|
+
export type { AuthAdapter, JwtAdapterConfig, JwtClaimMapping, SignJwtOptions } from './adapter.js';
|
|
3
|
+
export { createOidcAdapter } from './oidc-adapter.js';
|
|
4
|
+
export type { OidcAdapterConfig, JsonWebKey as OidcJwk } from './oidc-adapter.js';
|
|
5
|
+
export { hashPassword, verifyPassword } from './password.js';
|
|
6
|
+
export type { PasswordHashOptions } from './password.js';
|
|
7
|
+
export { createSamlAdapter } from './saml-adapter.js';
|
|
8
|
+
export type { SamlAdapterConfig } from './saml-adapter.js';
|
|
9
|
+
export { createScimService } from './scim.js';
|
|
10
|
+
export type { ScimEmail, ScimError, ScimListResponse, ScimService, ScimServiceConfig, ScimUser, ScimUserRepository, ScimUserResource, } from './scim.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EACV,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// ── Auth Module ──
|
|
2
|
+
// Authentication adapters for extracting identity from requests.
|
|
3
|
+
// JWT adapter, OIDC adapter, SAML adapter, SCIM provisioning, password hashing.
|
|
4
|
+
export { createJwtAdapter, signJwt } from './adapter.js';
|
|
5
|
+
export { createOidcAdapter } from './oidc-adapter.js';
|
|
6
|
+
export { hashPassword, verifyPassword } from './password.js';
|
|
7
|
+
export { createSamlAdapter } from './saml-adapter.js';
|
|
8
|
+
export { createScimService } from './scim.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,iEAAiE;AACjE,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AuthAdapter, JwtClaimMapping } from './adapter.js';
|
|
2
|
+
export interface OidcAdapterConfig {
|
|
3
|
+
/** OIDC issuer URL (e.g., https://auth.example.com) */
|
|
4
|
+
issuer: string;
|
|
5
|
+
/** Expected audience (client ID) */
|
|
6
|
+
audience: string;
|
|
7
|
+
/** JWKS URI — auto-discovered from issuer if not provided */
|
|
8
|
+
jwksUri?: string;
|
|
9
|
+
/** Cache JWKS keys for this many seconds (default: 3600) */
|
|
10
|
+
jwksCacheTtl?: number;
|
|
11
|
+
/** Claim mapping override */
|
|
12
|
+
claimMapping?: Partial<JwtClaimMapping>;
|
|
13
|
+
/** Custom fetch function (for testing / environments without global fetch) */
|
|
14
|
+
fetchFn?: typeof fetch;
|
|
15
|
+
}
|
|
16
|
+
export interface JsonWebKey {
|
|
17
|
+
kty: string;
|
|
18
|
+
kid?: string;
|
|
19
|
+
alg?: string;
|
|
20
|
+
use?: string;
|
|
21
|
+
n?: string;
|
|
22
|
+
e?: string;
|
|
23
|
+
x?: string;
|
|
24
|
+
y?: string;
|
|
25
|
+
crv?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* OIDC auth adapter. Validates JWT tokens from OIDC providers
|
|
29
|
+
* by verifying signatures against JWKS keys fetched from the provider.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createOidcAdapter(config: OidcAdapterConfig): AuthAdapter;
|
|
32
|
+
//# sourceMappingURL=oidc-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc-adapter.d.ts","sourceRoot":"","sources":["../../src/auth/oidc-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAMjE,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACxC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAgBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAuHxE"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { createPublicKey, verify } from 'node:crypto';
|
|
2
|
+
const defaultClaimMapping = {
|
|
3
|
+
userId: 'sub',
|
|
4
|
+
roles: 'roles',
|
|
5
|
+
scopes: 'scope',
|
|
6
|
+
tenantId: 'tenant_id',
|
|
7
|
+
};
|
|
8
|
+
const SUPPORTED_ALGORITHMS = new Set(['RS256', 'ES256']);
|
|
9
|
+
/**
|
|
10
|
+
* OIDC auth adapter. Validates JWT tokens from OIDC providers
|
|
11
|
+
* by verifying signatures against JWKS keys fetched from the provider.
|
|
12
|
+
*/
|
|
13
|
+
export function createOidcAdapter(config) {
|
|
14
|
+
const mapping = { ...defaultClaimMapping, ...config.claimMapping };
|
|
15
|
+
const cacheTtl = (config.jwksCacheTtl ?? 3600) * 1000;
|
|
16
|
+
const fetchFn = config.fetchFn ?? globalThis.fetch;
|
|
17
|
+
let jwksCache = null;
|
|
18
|
+
let discoveredJwksUri = config.jwksUri ?? null;
|
|
19
|
+
async function discoverJwksUri() {
|
|
20
|
+
if (discoveredJwksUri)
|
|
21
|
+
return discoveredJwksUri;
|
|
22
|
+
const discoveryUrl = `${config.issuer.replace(/\/$/, '')}/.well-known/openid-configuration`;
|
|
23
|
+
const response = await fetchFn(discoveryUrl);
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
throw new Error(`OIDC discovery failed: ${response.status}`);
|
|
26
|
+
}
|
|
27
|
+
const doc = (await response.json());
|
|
28
|
+
if (!doc.jwks_uri) {
|
|
29
|
+
throw new Error('OIDC discovery response missing jwks_uri');
|
|
30
|
+
}
|
|
31
|
+
discoveredJwksUri = doc.jwks_uri;
|
|
32
|
+
return discoveredJwksUri;
|
|
33
|
+
}
|
|
34
|
+
async function fetchJwks() {
|
|
35
|
+
if (jwksCache && jwksCache.expiresAt > Date.now()) {
|
|
36
|
+
return jwksCache.keys;
|
|
37
|
+
}
|
|
38
|
+
const jwksUri = await discoverJwksUri();
|
|
39
|
+
const response = await fetchFn(jwksUri);
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error(`JWKS fetch failed: ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
const jwks = (await response.json());
|
|
44
|
+
const keys = jwks.keys ?? [];
|
|
45
|
+
jwksCache = { keys, expiresAt: Date.now() + cacheTtl };
|
|
46
|
+
return keys;
|
|
47
|
+
}
|
|
48
|
+
function findKey(kid, keys) {
|
|
49
|
+
if (kid) {
|
|
50
|
+
return keys.find((k) => k.kid === kid && k.use !== 'enc');
|
|
51
|
+
}
|
|
52
|
+
// If no kid in header, use the first signing key
|
|
53
|
+
return keys.find((k) => k.use === 'sig' || !k.use);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
async authenticate(authorizationHeader) {
|
|
57
|
+
if (!authorizationHeader)
|
|
58
|
+
return null;
|
|
59
|
+
const token = extractBearerToken(authorizationHeader);
|
|
60
|
+
if (!token)
|
|
61
|
+
return null;
|
|
62
|
+
const parts = token.split('.');
|
|
63
|
+
if (parts.length !== 3)
|
|
64
|
+
return null;
|
|
65
|
+
const headerStr = parts[0];
|
|
66
|
+
const payloadStr = parts[1];
|
|
67
|
+
const signatureStr = parts[2];
|
|
68
|
+
if (!headerStr || !payloadStr || !signatureStr)
|
|
69
|
+
return null;
|
|
70
|
+
// Decode header to get kid and alg
|
|
71
|
+
let header;
|
|
72
|
+
try {
|
|
73
|
+
header = JSON.parse(Buffer.from(headerStr, 'base64url').toString('utf-8'));
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
if (!header.alg || !SUPPORTED_ALGORITHMS.has(header.alg)) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
// Fetch JWKS and find matching key
|
|
82
|
+
let keys;
|
|
83
|
+
try {
|
|
84
|
+
keys = await fetchJwks();
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const jwk = findKey(header.kid, keys);
|
|
90
|
+
if (!jwk) {
|
|
91
|
+
// Key not found — try refreshing cache in case of rotation
|
|
92
|
+
jwksCache = null;
|
|
93
|
+
try {
|
|
94
|
+
keys = await fetchJwks();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const refreshedJwk = findKey(header.kid, keys);
|
|
100
|
+
if (!refreshedJwk)
|
|
101
|
+
return null;
|
|
102
|
+
return verifyAndMap(token, headerStr, payloadStr, signatureStr, refreshedJwk, header.alg, config, mapping);
|
|
103
|
+
}
|
|
104
|
+
return verifyAndMap(token, headerStr, payloadStr, signatureStr, jwk, header.alg, config, mapping);
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function verifyAndMap(_token, headerStr, payloadStr, signatureStr, jwk, alg, config, mapping) {
|
|
109
|
+
// Verify signature
|
|
110
|
+
try {
|
|
111
|
+
const publicKey = createPublicKey({ key: jwk, format: 'jwk' });
|
|
112
|
+
const algorithm = alg === 'RS256' ? 'RSA-SHA256' : 'SHA256';
|
|
113
|
+
const signatureBuffer = Buffer.from(signatureStr, 'base64url');
|
|
114
|
+
const data = `${headerStr}.${payloadStr}`;
|
|
115
|
+
const valid = verify(algorithm, Buffer.from(data), publicKey, signatureBuffer);
|
|
116
|
+
if (!valid)
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
// Decode payload
|
|
123
|
+
let payload;
|
|
124
|
+
try {
|
|
125
|
+
payload = JSON.parse(Buffer.from(payloadStr, 'base64url').toString('utf-8'));
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
// Validate issuer
|
|
131
|
+
if (payload.iss !== config.issuer)
|
|
132
|
+
return null;
|
|
133
|
+
// Validate audience
|
|
134
|
+
const aud = payload.aud;
|
|
135
|
+
const audiences = Array.isArray(aud) ? aud : [aud];
|
|
136
|
+
if (!audiences.includes(config.audience))
|
|
137
|
+
return null;
|
|
138
|
+
// Check expiration
|
|
139
|
+
const exp = payload.exp;
|
|
140
|
+
if (typeof exp === 'number' && exp * 1000 < Date.now())
|
|
141
|
+
return null;
|
|
142
|
+
// Map claims to AuthContext
|
|
143
|
+
const rawRoles = payload[mapping.roles];
|
|
144
|
+
const rawScopes = payload[mapping.scopes];
|
|
145
|
+
return {
|
|
146
|
+
userId: String(payload[mapping.userId] ?? ''),
|
|
147
|
+
roles: Array.isArray(rawRoles)
|
|
148
|
+
? rawRoles.map(String)
|
|
149
|
+
: typeof rawRoles === 'string'
|
|
150
|
+
? rawRoles.split(',').map((s) => s.trim())
|
|
151
|
+
: [],
|
|
152
|
+
scopes: Array.isArray(rawScopes)
|
|
153
|
+
? rawScopes.map(String)
|
|
154
|
+
: typeof rawScopes === 'string'
|
|
155
|
+
? rawScopes.split(' ').filter(Boolean)
|
|
156
|
+
: [],
|
|
157
|
+
tenantId: payload[mapping.tenantId] ? String(payload[mapping.tenantId]) : undefined,
|
|
158
|
+
provider: 'oidc',
|
|
159
|
+
sessionId: payload.sid ? String(payload.sid) : undefined,
|
|
160
|
+
authenticatedAt: payload.iat ? new Date(payload.iat * 1000) : undefined,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function extractBearerToken(header) {
|
|
164
|
+
if (header.startsWith('Bearer ')) {
|
|
165
|
+
return header.slice(7);
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=oidc-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc-adapter.js","sourceRoot":"","sources":["../../src/auth/oidc-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface PasswordHashOptions {
|
|
2
|
+
saltBytes?: number;
|
|
3
|
+
keyLength?: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Hash a password with scrypt and return a portable salt:hash string.
|
|
7
|
+
*/
|
|
8
|
+
export declare function hashPassword(password: string, options?: PasswordHashOptions): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Verify a password against a stored salt:hash string.
|
|
11
|
+
*/
|
|
12
|
+
export declare function verifyPassword(password: string, storedHash: string, options?: PasswordHashOptions): Promise<boolean>;
|
|
13
|
+
//# sourceMappingURL=password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/auth/password.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,OAAO,CAAC,CAelB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { randomBytes, scrypt, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
const scryptAsync = promisify(scrypt);
|
|
4
|
+
const defaultPasswordHashOptions = {
|
|
5
|
+
saltBytes: 16,
|
|
6
|
+
keyLength: 64,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Hash a password with scrypt and return a portable salt:hash string.
|
|
10
|
+
*/
|
|
11
|
+
export async function hashPassword(password, options = {}) {
|
|
12
|
+
const resolved = { ...defaultPasswordHashOptions, ...options };
|
|
13
|
+
const salt = randomBytes(resolved.saltBytes).toString('hex');
|
|
14
|
+
const derived = (await scryptAsync(password, salt, resolved.keyLength));
|
|
15
|
+
return `${salt}:${derived.toString('hex')}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Verify a password against a stored salt:hash string.
|
|
19
|
+
*/
|
|
20
|
+
export async function verifyPassword(password, storedHash, options = {}) {
|
|
21
|
+
const [salt, hash] = storedHash.split(':');
|
|
22
|
+
if (!salt || !hash) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const resolved = { ...defaultPasswordHashOptions, ...options };
|
|
26
|
+
const derived = (await scryptAsync(password, salt, resolved.keyLength));
|
|
27
|
+
const stored = Buffer.from(hash, 'hex');
|
|
28
|
+
if (stored.length !== derived.length) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return timingSafeEqual(derived, stored);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/auth/password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;AAOtC,MAAM,0BAA0B,GAAkC;IAChE,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAAG,EAAE,GAAG,0BAA0B,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAW,CAAC;IAClF,OAAO,GAAG,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,UAAkB,EAClB,UAA+B,EAAE;IAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,EAAE,GAAG,0BAA0B,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAW,CAAC;IAClF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AuthContext } from '../types/security.js';
|
|
2
|
+
import type { AuthAdapter } from './adapter.js';
|
|
3
|
+
export interface SamlAdapterConfig {
|
|
4
|
+
/** IdP certificate (PEM format) for signature validation */
|
|
5
|
+
idpCertificate: string;
|
|
6
|
+
/** Expected SAML issuer (IdP entity ID) */
|
|
7
|
+
issuer: string;
|
|
8
|
+
/** Expected audience (SP entity ID / ACS URL) */
|
|
9
|
+
audience: string;
|
|
10
|
+
/** Attribute mapping for SAML claim extraction */
|
|
11
|
+
attributeMapping?: Partial<SamlAttributeMapping>;
|
|
12
|
+
}
|
|
13
|
+
export interface SamlAttributeMapping {
|
|
14
|
+
userId: string;
|
|
15
|
+
email: string;
|
|
16
|
+
roles: string;
|
|
17
|
+
tenantId: string;
|
|
18
|
+
displayName: string;
|
|
19
|
+
}
|
|
20
|
+
export interface SamlAuthResult extends AuthContext {
|
|
21
|
+
/** Raw SAML attributes from the assertion */
|
|
22
|
+
attributes: Record<string, string[]>;
|
|
23
|
+
/** SAML NameID */
|
|
24
|
+
nameId: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* SAML 2.0 auth adapter. Two modes of operation:
|
|
28
|
+
*
|
|
29
|
+
* 1. `authenticate(header)` — extracts a Bearer token containing a
|
|
30
|
+
* base64-encoded SAML assertion (used for API calls after SSO login).
|
|
31
|
+
*
|
|
32
|
+
* 2. `processSamlResponse(samlResponse)` — directly validates a SAML
|
|
33
|
+
* Response from the IdP (used in SSO callback handlers).
|
|
34
|
+
*/
|
|
35
|
+
export declare function createSamlAdapter(config: SamlAdapterConfig): AuthAdapter & {
|
|
36
|
+
processSamlResponse(samlResponseB64: string): SamlAuthResult | null;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=saml-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saml-adapter.d.ts","sourceRoot":"","sources":["../../src/auth/saml-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,GACxB,WAAW,GAAG;IAAE,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAAA;CAAE,CA8EvF"}
|