@lssm/lib.contracts 0.0.0-canary-20251219202229 → 0.0.0-canary-20251220015515
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/dist/app-config/app-config.feature.d.ts +1 -2
- package/dist/app-config/app-config.feature.js +1 -2
- package/dist/app-config/branding.d.ts +1 -2
- package/dist/app-config/contracts.d.ts +51 -52
- package/dist/app-config/contracts.js +1 -2
- package/dist/app-config/docs/app-config.docblock.d.ts +1 -2
- package/dist/app-config/docs/app-config.docblock.js +1 -2
- package/dist/app-config/events.d.ts +28 -29
- package/dist/app-config/events.js +1 -2
- package/dist/app-config/lifecycle-contracts.d.ts +81 -82
- package/dist/app-config/lifecycle-contracts.js +1 -2
- package/dist/app-config/lifecycle.d.ts +1 -2
- package/dist/app-config/runtime.d.ts +1 -2
- package/dist/app-config/runtime.js +1 -2
- package/dist/app-config/spec.d.ts +1 -2
- package/dist/app-config/spec.js +1 -2
- package/dist/app-config/validation.d.ts +1 -2
- package/dist/app-config/validation.js +1 -2
- package/dist/capabilities/docs/capabilities.docblock.d.ts +1 -2
- package/dist/capabilities/docs/capabilities.docblock.js +1 -2
- package/dist/capabilities/openbanking.d.ts +1 -2
- package/dist/capabilities/openbanking.js +1 -2
- package/dist/capabilities.d.ts +1 -2
- package/dist/capabilities.js +1 -2
- package/dist/client/react/drivers/rn-reusables.d.ts +1 -2
- package/dist/client/react/drivers/rn-reusables.js +1 -2
- package/dist/client/react/drivers/shadcn.d.ts +1 -2
- package/dist/client/react/drivers/shadcn.js +1 -2
- package/dist/client/react/feature-render.d.ts +1 -2
- package/dist/client/react/feature-render.js +1 -2
- package/dist/client/react/form-render.d.ts +1 -2
- package/dist/client/react/form-render.js +1 -2
- package/dist/contract-registry/schemas.d.ts +1 -2
- package/dist/contract-registry/schemas.js +1 -2
- package/dist/contract-registry/types.d.ts +1 -2
- package/dist/contracts-adapter-hydration.d.ts +1 -2
- package/dist/contracts-adapter-hydration.js +3 -4
- package/dist/contracts-adapter-input.d.ts +1 -2
- package/dist/contracts-adapter-input.js +1 -2
- package/dist/data-views/docs/data-views.docblock.d.ts +1 -2
- package/dist/data-views/docs/data-views.docblock.js +1 -2
- package/dist/data-views/query-generator.d.ts +3 -4
- package/dist/data-views/query-generator.js +2 -3
- package/dist/data-views/runtime.d.ts +3 -4
- package/dist/data-views/runtime.js +3 -4
- package/dist/data-views.d.ts +1 -2
- package/dist/data-views.js +1 -2
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +1 -2
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +1 -2
- package/dist/docs/meta.docs.d.ts +1 -2
- package/dist/docs/meta.docs.js +1 -2
- package/dist/docs/presentations.d.ts +1 -2
- package/dist/docs/presentations.js +1 -2
- package/dist/docs/registry.d.ts +1 -2
- package/dist/docs/registry.js +1 -2
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +1 -2
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +1 -2
- package/dist/docs/tech/contracts/README.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/README.docblock.js +1 -2
- package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/create-subscription.docblock.js +1 -2
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +1 -2
- package/dist/docs/tech/contracts/migrations.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/migrations.docblock.js +1 -2
- package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/openapi-export.docblock.js +1 -2
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +1 -2
- package/dist/docs/tech/contracts/overlays.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/overlays.docblock.js +1 -2
- package/dist/docs/tech/contracts/tests.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/tests.docblock.js +1 -2
- package/dist/docs/tech/contracts/themes.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/themes.docblock.js +1 -2
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +1 -2
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +1 -2
- package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +1 -2
- package/dist/docs/tech/lifecycle-stage-system.docblock.js +1 -2
- package/dist/docs/tech/llm/llm-integration.docblock.d.ts +1 -2
- package/dist/docs/tech/llm/llm-integration.docblock.js +1 -2
- package/dist/docs/tech/mcp-endpoints.docblock.d.ts +1 -2
- package/dist/docs/tech/mcp-endpoints.docblock.js +1 -2
- package/dist/docs/tech/presentation-runtime.docblock.d.ts +1 -2
- package/dist/docs/tech/presentation-runtime.docblock.js +1 -2
- package/dist/docs/tech/schema/README.docblock.d.ts +1 -2
- package/dist/docs/tech/schema/README.docblock.js +1 -2
- package/dist/docs/tech/studio/learning-events.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/learning-events.docblock.js +1 -2
- package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/learning-journeys.docblock.js +1 -2
- package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/platform-admin-panel.docblock.js +1 -2
- package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/project-access-teams.docblock.js +1 -2
- package/dist/docs/tech/studio/project-routing.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/project-routing.docblock.js +1 -2
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +1 -2
- package/dist/docs/tech/studio/team-invitations.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/team-invitations.docblock.js +1 -2
- package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/workspace-ops.docblock.js +1 -2
- package/dist/docs/tech/studio/workspaces.docblock.d.ts +1 -2
- package/dist/docs/tech/studio/workspaces.docblock.js +1 -2
- package/dist/docs/tech/telemetry-ingest.docblock.d.ts +1 -2
- package/dist/docs/tech/telemetry-ingest.docblock.js +1 -2
- package/dist/docs/tech/templates/runtime.docblock.d.ts +1 -2
- package/dist/docs/tech/templates/runtime.docblock.js +1 -2
- package/dist/docs/tech/vscode-extension.docblock.d.ts +1 -2
- package/dist/docs/tech/vscode-extension.docblock.js +1 -2
- package/dist/docs/tech/workflows/overview.docblock.d.ts +1 -2
- package/dist/docs/tech/workflows/overview.docblock.js +1 -2
- package/dist/docs/tech-contracts.docs.d.ts +1 -2
- package/dist/docs/tech-contracts.docs.js +1 -2
- package/dist/docs/types.d.ts +1 -2
- package/dist/events.d.ts +1 -2
- package/dist/events.js +1 -2
- package/dist/experiments/docs/experiments.docblock.d.ts +1 -2
- package/dist/experiments/docs/experiments.docblock.js +1 -2
- package/dist/experiments/evaluator.d.ts +1 -2
- package/dist/experiments/evaluator.js +1 -2
- package/dist/experiments/spec-resolver.d.ts +1 -2
- package/dist/experiments/spec.d.ts +1 -2
- package/dist/experiments/spec.js +1 -2
- package/dist/features.d.ts +1 -2
- package/dist/features.js +1 -2
- package/dist/forms/docs/forms.docblock.d.ts +1 -2
- package/dist/forms/docs/forms.docblock.js +1 -2
- package/dist/forms.d.ts +5 -6
- package/dist/forms.js +4 -4
- package/dist/install.d.ts +1 -2
- package/dist/install.js +1 -2
- package/dist/integrations/binding.d.ts +1 -2
- package/dist/integrations/connection.d.ts +1 -2
- package/dist/integrations/contracts.d.ts +106 -106
- package/dist/integrations/contracts.js +1 -2
- package/dist/integrations/docs/integrations.docblock.d.ts +1 -2
- package/dist/integrations/docs/integrations.docblock.js +1 -2
- package/dist/integrations/health.d.ts +1 -2
- package/dist/integrations/health.js +1 -2
- package/dist/integrations/openbanking/contracts/accounts.d.ts +70 -70
- package/dist/integrations/openbanking/contracts/accounts.js +1 -2
- package/dist/integrations/openbanking/contracts/balances.d.ts +38 -38
- package/dist/integrations/openbanking/contracts/balances.js +1 -2
- package/dist/integrations/openbanking/contracts/index.d.ts +1 -2
- package/dist/integrations/openbanking/contracts/index.js +1 -2
- package/dist/integrations/openbanking/contracts/transactions.d.ts +52 -52
- package/dist/integrations/openbanking/contracts/transactions.js +1 -2
- package/dist/integrations/openbanking/guards.d.ts +1 -2
- package/dist/integrations/openbanking/guards.js +2 -2
- package/dist/integrations/openbanking/models.d.ts +56 -57
- package/dist/integrations/openbanking/models.js +1 -2
- package/dist/integrations/openbanking/openbanking.feature.d.ts +1 -2
- package/dist/integrations/openbanking/openbanking.feature.js +1 -2
- package/dist/integrations/openbanking/telemetry.d.ts +1 -2
- package/dist/integrations/openbanking/telemetry.js +1 -2
- package/dist/integrations/providers/calendar.d.ts +1 -2
- package/dist/integrations/providers/elevenlabs.d.ts +1 -2
- package/dist/integrations/providers/elevenlabs.js +1 -2
- package/dist/integrations/providers/email.d.ts +1 -2
- package/dist/integrations/providers/embedding.d.ts +1 -2
- package/dist/integrations/providers/gcs-storage.d.ts +1 -2
- package/dist/integrations/providers/gcs-storage.js +1 -2
- package/dist/integrations/providers/gmail.d.ts +1 -2
- package/dist/integrations/providers/gmail.js +1 -2
- package/dist/integrations/providers/google-calendar.d.ts +1 -2
- package/dist/integrations/providers/google-calendar.js +1 -2
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +1 -2
- package/dist/integrations/providers/impls/elevenlabs-voice.js +1 -2
- package/dist/integrations/providers/impls/gcs-storage.d.ts +1 -2
- package/dist/integrations/providers/impls/gcs-storage.js +1 -2
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +1 -2
- package/dist/integrations/providers/impls/gmail-inbound.js +2 -3
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +1 -2
- package/dist/integrations/providers/impls/gmail-outbound.js +5 -6
- package/dist/integrations/providers/impls/google-calendar.d.ts +1 -2
- package/dist/integrations/providers/impls/google-calendar.js +1 -2
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +1 -2
- package/dist/integrations/providers/impls/mistral-embedding.js +1 -2
- package/dist/integrations/providers/impls/mistral-llm.d.ts +2 -3
- package/dist/integrations/providers/impls/mistral-llm.js +2 -3
- package/dist/integrations/providers/impls/postmark-email.d.ts +1 -2
- package/dist/integrations/providers/impls/postmark-email.js +1 -2
- package/dist/integrations/providers/impls/powens-client.d.ts +1 -2
- package/dist/integrations/providers/impls/powens-client.js +1 -2
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +2 -3
- package/dist/integrations/providers/impls/powens-openbanking.js +1 -2
- package/dist/integrations/providers/impls/provider-factory.d.ts +1 -2
- package/dist/integrations/providers/impls/provider-factory.js +5 -3
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +1 -2
- package/dist/integrations/providers/impls/qdrant-vector.js +3 -4
- package/dist/integrations/providers/impls/stripe-payments.d.ts +1 -2
- package/dist/integrations/providers/impls/stripe-payments.js +1 -2
- package/dist/integrations/providers/impls/twilio-sms.d.ts +1 -2
- package/dist/integrations/providers/impls/twilio-sms.js +1 -2
- package/dist/integrations/providers/llm.d.ts +1 -2
- package/dist/integrations/providers/mistral.d.ts +1 -2
- package/dist/integrations/providers/mistral.js +1 -2
- package/dist/integrations/providers/openbanking.d.ts +1 -2
- package/dist/integrations/providers/payments.d.ts +1 -2
- package/dist/integrations/providers/postmark.d.ts +1 -2
- package/dist/integrations/providers/postmark.js +1 -2
- package/dist/integrations/providers/powens.d.ts +1 -2
- package/dist/integrations/providers/powens.js +1 -2
- package/dist/integrations/providers/qdrant.d.ts +1 -2
- package/dist/integrations/providers/qdrant.js +1 -2
- package/dist/integrations/providers/registry.d.ts +1 -2
- package/dist/integrations/providers/registry.js +1 -2
- package/dist/integrations/providers/sms.d.ts +1 -2
- package/dist/integrations/providers/storage.d.ts +1 -2
- package/dist/integrations/providers/stripe.d.ts +1 -2
- package/dist/integrations/providers/stripe.js +1 -2
- package/dist/integrations/providers/twilio-sms.d.ts +1 -2
- package/dist/integrations/providers/twilio-sms.js +1 -2
- package/dist/integrations/providers/vector-store.d.ts +1 -2
- package/dist/integrations/providers/voice.d.ts +1 -2
- package/dist/integrations/runtime.d.ts +2 -3
- package/dist/integrations/runtime.js +2 -3
- package/dist/integrations/secrets/aws-secret-manager.d.ts +1 -2
- package/dist/integrations/secrets/aws-secret-manager.js +1 -2
- package/dist/integrations/secrets/env-secret-provider.d.ts +1 -2
- package/dist/integrations/secrets/env-secret-provider.js +1 -2
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +1 -2
- package/dist/integrations/secrets/gcp-secret-manager.js +1 -2
- package/dist/integrations/secrets/manager.d.ts +1 -2
- package/dist/integrations/secrets/manager.js +2 -3
- package/dist/integrations/secrets/provider.d.ts +1 -2
- package/dist/integrations/secrets/provider.js +1 -2
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts +1 -2
- package/dist/integrations/secrets/scaleway-secret-manager.js +1 -2
- package/dist/integrations/spec.d.ts +1 -2
- package/dist/integrations/spec.js +1 -2
- package/dist/jobs/define-job.d.ts +1 -2
- package/dist/jobs/define-job.js +1 -2
- package/dist/jobs/gcp-cloud-tasks.d.ts +1 -2
- package/dist/jobs/gcp-cloud-tasks.js +1 -2
- package/dist/jobs/gcp-pubsub.d.ts +1 -2
- package/dist/jobs/gcp-pubsub.js +1 -2
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +2 -3
- package/dist/jobs/handlers/gmail-sync-handler.js +1 -2
- package/dist/jobs/handlers/index.d.ts +1 -2
- package/dist/jobs/handlers/index.js +1 -2
- package/dist/jobs/handlers/ping-handler.d.ts +1 -2
- package/dist/jobs/handlers/ping-handler.js +1 -2
- package/dist/jobs/handlers/storage-document-handler.d.ts +1 -2
- package/dist/jobs/handlers/storage-document-handler.js +1 -2
- package/dist/jobs/memory-queue.d.ts +1 -2
- package/dist/jobs/memory-queue.js +1 -2
- package/dist/jobs/queue.d.ts +1 -2
- package/dist/jobs/queue.js +1 -2
- package/dist/jobs/scaleway-sqs-queue.d.ts +1 -2
- package/dist/jobs/scaleway-sqs-queue.js +1 -2
- package/dist/jsonschema.d.ts +4 -5
- package/dist/jsonschema.js +2 -3
- package/dist/knowledge/binding.d.ts +1 -2
- package/dist/knowledge/contracts.d.ts +70 -70
- package/dist/knowledge/contracts.js +1 -2
- package/dist/knowledge/docs/knowledge.docblock.d.ts +1 -2
- package/dist/knowledge/docs/knowledge.docblock.js +1 -2
- package/dist/knowledge/ingestion/document-processor.d.ts +1 -2
- package/dist/knowledge/ingestion/document-processor.js +1 -2
- package/dist/knowledge/ingestion/embedding-service.d.ts +1 -2
- package/dist/knowledge/ingestion/embedding-service.js +1 -2
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +1 -2
- package/dist/knowledge/ingestion/gmail-adapter.js +1 -2
- package/dist/knowledge/ingestion/storage-adapter.d.ts +1 -2
- package/dist/knowledge/ingestion/storage-adapter.js +1 -2
- package/dist/knowledge/ingestion/vector-indexer.d.ts +1 -2
- package/dist/knowledge/ingestion/vector-indexer.js +1 -2
- package/dist/knowledge/query/service.d.ts +1 -2
- package/dist/knowledge/query/service.js +1 -2
- package/dist/knowledge/runtime.d.ts +1 -2
- package/dist/knowledge/runtime.js +1 -2
- package/dist/knowledge/source.d.ts +1 -2
- package/dist/knowledge/spaces/email-threads.d.ts +1 -2
- package/dist/knowledge/spaces/email-threads.js +1 -2
- package/dist/knowledge/spaces/financial-docs.d.ts +1 -2
- package/dist/knowledge/spaces/financial-docs.js +1 -2
- package/dist/knowledge/spaces/financial-overview.d.ts +1 -2
- package/dist/knowledge/spaces/financial-overview.js +1 -2
- package/dist/knowledge/spaces/product-canon.d.ts +1 -2
- package/dist/knowledge/spaces/product-canon.js +1 -2
- package/dist/knowledge/spaces/support-faq.d.ts +1 -2
- package/dist/knowledge/spaces/support-faq.js +1 -2
- package/dist/knowledge/spaces/uploaded-docs.d.ts +1 -2
- package/dist/knowledge/spaces/uploaded-docs.js +1 -2
- package/dist/knowledge/spec.d.ts +1 -2
- package/dist/knowledge/spec.js +1 -2
- package/dist/llm/exporters.d.ts +1 -2
- package/dist/llm/exporters.js +1 -2
- package/dist/llm/prompts.d.ts +1 -2
- package/dist/llm/prompts.js +1 -2
- package/dist/llm/types.d.ts +1 -2
- package/dist/markdown.d.ts +2 -3
- package/dist/markdown.js +2 -3
- package/dist/migrations.d.ts +1 -2
- package/dist/migrations.js +1 -2
- package/dist/onboarding-base.d.ts +30 -31
- package/dist/onboarding-base.js +1 -2
- package/dist/openapi.d.ts +1 -2
- package/dist/openapi.js +1 -2
- package/dist/openbanking/docs/openbanking.docblock.d.ts +1 -2
- package/dist/openbanking/docs/openbanking.docblock.js +1 -2
- package/dist/ownership.d.ts +3 -2
- package/dist/ownership.js +2 -2
- package/dist/policy/docs/policy.docblock.d.ts +1 -2
- package/dist/policy/docs/policy.docblock.js +1 -2
- package/dist/policy/engine.d.ts +1 -2
- package/dist/policy/engine.js +1 -2
- package/dist/policy/opa-adapter.d.ts +1 -2
- package/dist/policy/opa-adapter.js +1 -2
- package/dist/policy/spec.d.ts +1 -2
- package/dist/policy/spec.js +1 -2
- package/dist/presentations/docs/presentations-conventions.docblock.d.ts +1 -2
- package/dist/presentations/docs/presentations-conventions.docblock.js +1 -2
- package/dist/presentations.backcompat.d.ts +1 -2
- package/dist/presentations.backcompat.js +1 -2
- package/dist/presentations.d.ts +4 -5
- package/dist/presentations.js +1 -2
- package/dist/presentations.v2.d.ts +1 -2
- package/dist/presentations.v2.js +6 -4
- package/dist/prompt.d.ts +1 -2
- package/dist/prompt.js +1 -2
- package/dist/promptRegistry.d.ts +3 -4
- package/dist/promptRegistry.js +3 -4
- package/dist/regenerator/adapters.d.ts +1 -2
- package/dist/regenerator/docs/regenerator.docblock.d.ts +1 -2
- package/dist/regenerator/docs/regenerator.docblock.js +1 -2
- package/dist/regenerator/executor.d.ts +1 -2
- package/dist/regenerator/executor.js +1 -2
- package/dist/regenerator/service.d.ts +1 -2
- package/dist/regenerator/service.js +1 -2
- package/dist/regenerator/sinks.d.ts +1 -2
- package/dist/regenerator/sinks.js +1 -2
- package/dist/regenerator/types.d.ts +1 -2
- package/dist/regenerator/utils.d.ts +1 -2
- package/dist/regenerator/utils.js +1 -2
- package/dist/registry.d.ts +2 -3
- package/dist/registry.js +2 -2
- package/dist/resources.d.ts +1 -2
- package/dist/resources.js +5 -3
- package/dist/schema/dist/index.js +1 -2
- package/dist/schema-to-markdown.d.ts +2 -3
- package/dist/schema-to-markdown.js +2 -3
- package/dist/server/graphql-pothos.d.ts +1 -2
- package/dist/server/graphql-pothos.js +1 -3
- package/dist/server/mcp/createMcpServer.d.ts +1 -2
- package/dist/server/mcp/createMcpServer.js +1 -2
- package/dist/server/mcp/mcpTypes.d.ts +1 -2
- package/dist/server/mcp/registerPresentations.d.ts +1 -2
- package/dist/server/mcp/registerPresentations.js +1 -2
- package/dist/server/mcp/registerPrompts.d.ts +1 -2
- package/dist/server/mcp/registerPrompts.js +1 -2
- package/dist/server/mcp/registerResources.d.ts +1 -2
- package/dist/server/mcp/registerResources.js +1 -2
- package/dist/server/mcp/registerTools.d.ts +1 -2
- package/dist/server/mcp/registerTools.js +1 -2
- package/dist/server/rest-elysia.d.ts +2 -3
- package/dist/server/rest-elysia.js +1 -2
- package/dist/server/rest-express.d.ts +1 -2
- package/dist/server/rest-express.js +1 -5
- package/dist/server/rest-generic.d.ts +2 -3
- package/dist/server/rest-generic.js +1 -3
- package/dist/server/rest-next-app.d.ts +1 -2
- package/dist/server/rest-next-app.js +1 -2
- package/dist/server/rest-next-mcp.d.ts +1 -2
- package/dist/server/rest-next-mcp.js +2 -3
- package/dist/server/rest-next-pages.d.ts +1 -2
- package/dist/server/rest-next-pages.js +1 -5
- package/dist/spec.d.ts +1 -2
- package/dist/spec.js +1 -2
- package/dist/telemetry/anomaly.d.ts +1 -2
- package/dist/telemetry/anomaly.js +1 -2
- package/dist/telemetry/docs/telemetry.docblock.d.ts +1 -2
- package/dist/telemetry/docs/telemetry.docblock.js +1 -2
- package/dist/telemetry/spec.d.ts +1 -2
- package/dist/telemetry/spec.js +1 -2
- package/dist/telemetry/tracker.d.ts +1 -2
- package/dist/telemetry/tracker.js +1 -2
- package/dist/tests/runner.d.ts +1 -2
- package/dist/tests/runner.js +1 -2
- package/dist/tests/spec.d.ts +1 -2
- package/dist/tests/spec.js +1 -2
- package/dist/themes.d.ts +1 -2
- package/dist/themes.js +1 -2
- package/dist/translations/catalog.d.ts +1 -2
- package/dist/translations/tenant.d.ts +1 -2
- package/dist/types.d.ts +1 -2
- package/dist/workflow/adapters/db-adapter.d.ts +1 -2
- package/dist/workflow/adapters/db-adapter.js +1 -2
- package/dist/workflow/adapters/file-adapter.d.ts +1 -2
- package/dist/workflow/adapters/file-adapter.js +1 -2
- package/dist/workflow/adapters/memory-store.d.ts +1 -2
- package/dist/workflow/adapters/memory-store.js +1 -2
- package/dist/workflow/expression.d.ts +1 -2
- package/dist/workflow/expression.js +4 -4
- package/dist/workflow/runner.d.ts +1 -2
- package/dist/workflow/runner.js +1 -2
- package/dist/workflow/sla-monitor.d.ts +1 -2
- package/dist/workflow/sla-monitor.js +1 -2
- package/dist/workflow/spec.d.ts +1 -2
- package/dist/workflow/spec.js +1 -2
- package/dist/workflow/state.d.ts +1 -2
- package/dist/workflow/validation.d.ts +1 -2
- package/dist/workflow/validation.js +2 -2
- package/package.json +14 -8
- package/dist/app-config/app-config.feature.d.ts.map +0 -1
- package/dist/app-config/app-config.feature.js.map +0 -1
- package/dist/app-config/branding.d.ts.map +0 -1
- package/dist/app-config/contracts.d.ts.map +0 -1
- package/dist/app-config/contracts.js.map +0 -1
- package/dist/app-config/docs/app-config.docblock.d.ts.map +0 -1
- package/dist/app-config/docs/app-config.docblock.js.map +0 -1
- package/dist/app-config/events.d.ts.map +0 -1
- package/dist/app-config/events.js.map +0 -1
- package/dist/app-config/lifecycle-contracts.d.ts.map +0 -1
- package/dist/app-config/lifecycle-contracts.js.map +0 -1
- package/dist/app-config/lifecycle.d.ts.map +0 -1
- package/dist/app-config/runtime.d.ts.map +0 -1
- package/dist/app-config/runtime.js.map +0 -1
- package/dist/app-config/spec.d.ts.map +0 -1
- package/dist/app-config/spec.js.map +0 -1
- package/dist/app-config/validation.d.ts.map +0 -1
- package/dist/app-config/validation.js.map +0 -1
- package/dist/capabilities/docs/capabilities.docblock.d.ts.map +0 -1
- package/dist/capabilities/docs/capabilities.docblock.js.map +0 -1
- package/dist/capabilities/openbanking.d.ts.map +0 -1
- package/dist/capabilities/openbanking.js.map +0 -1
- package/dist/capabilities.d.ts.map +0 -1
- package/dist/capabilities.js.map +0 -1
- package/dist/client/react/drivers/rn-reusables.d.ts.map +0 -1
- package/dist/client/react/drivers/rn-reusables.js.map +0 -1
- package/dist/client/react/drivers/shadcn.d.ts.map +0 -1
- package/dist/client/react/drivers/shadcn.js.map +0 -1
- package/dist/client/react/feature-render.d.ts.map +0 -1
- package/dist/client/react/feature-render.js.map +0 -1
- package/dist/client/react/form-render.d.ts.map +0 -1
- package/dist/client/react/form-render.js.map +0 -1
- package/dist/contract-registry/schemas.d.ts.map +0 -1
- package/dist/contract-registry/schemas.js.map +0 -1
- package/dist/contract-registry/types.d.ts.map +0 -1
- package/dist/contracts-adapter-hydration.d.ts.map +0 -1
- package/dist/contracts-adapter-hydration.js.map +0 -1
- package/dist/contracts-adapter-input.d.ts.map +0 -1
- package/dist/contracts-adapter-input.js.map +0 -1
- package/dist/data-views/docs/data-views.docblock.d.ts.map +0 -1
- package/dist/data-views/docs/data-views.docblock.js.map +0 -1
- package/dist/data-views/query-generator.d.ts.map +0 -1
- package/dist/data-views/query-generator.js.map +0 -1
- package/dist/data-views/runtime.d.ts.map +0 -1
- package/dist/data-views/runtime.js.map +0 -1
- package/dist/data-views.d.ts.map +0 -1
- package/dist/data-views.js.map +0 -1
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts.map +0 -1
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +0 -1
- package/dist/docs/meta.docs.d.ts.map +0 -1
- package/dist/docs/meta.docs.js.map +0 -1
- package/dist/docs/presentations.d.ts.map +0 -1
- package/dist/docs/presentations.js.map +0 -1
- package/dist/docs/registry.d.ts.map +0 -1
- package/dist/docs/registry.js.map +0 -1
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts.map +0 -1
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/README.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/README.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/create-subscription.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/create-subscription.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/migrations.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/migrations.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/openapi-export.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/openapi-export.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/overlays.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/overlays.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/tests.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/tests.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/themes.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/themes.docblock.js.map +0 -1
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts.map +0 -1
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js.map +0 -1
- package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts.map +0 -1
- package/dist/docs/tech/lifecycle-stage-system.docblock.js.map +0 -1
- package/dist/docs/tech/llm/llm-integration.docblock.d.ts.map +0 -1
- package/dist/docs/tech/llm/llm-integration.docblock.js.map +0 -1
- package/dist/docs/tech/mcp-endpoints.docblock.d.ts.map +0 -1
- package/dist/docs/tech/mcp-endpoints.docblock.js.map +0 -1
- package/dist/docs/tech/presentation-runtime.docblock.d.ts.map +0 -1
- package/dist/docs/tech/presentation-runtime.docblock.js.map +0 -1
- package/dist/docs/tech/schema/README.docblock.d.ts.map +0 -1
- package/dist/docs/tech/schema/README.docblock.js.map +0 -1
- package/dist/docs/tech/studio/learning-events.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/learning-events.docblock.js.map +0 -1
- package/dist/docs/tech/studio/learning-journeys.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/learning-journeys.docblock.js.map +0 -1
- package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +0 -1
- package/dist/docs/tech/studio/project-access-teams.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/project-access-teams.docblock.js.map +0 -1
- package/dist/docs/tech/studio/project-routing.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/project-routing.docblock.js.map +0 -1
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +0 -1
- package/dist/docs/tech/studio/team-invitations.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/team-invitations.docblock.js.map +0 -1
- package/dist/docs/tech/studio/workspace-ops.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/workspace-ops.docblock.js.map +0 -1
- package/dist/docs/tech/studio/workspaces.docblock.d.ts.map +0 -1
- package/dist/docs/tech/studio/workspaces.docblock.js.map +0 -1
- package/dist/docs/tech/telemetry-ingest.docblock.d.ts.map +0 -1
- package/dist/docs/tech/telemetry-ingest.docblock.js.map +0 -1
- package/dist/docs/tech/templates/runtime.docblock.d.ts.map +0 -1
- package/dist/docs/tech/templates/runtime.docblock.js.map +0 -1
- package/dist/docs/tech/vscode-extension.docblock.d.ts.map +0 -1
- package/dist/docs/tech/vscode-extension.docblock.js.map +0 -1
- package/dist/docs/tech/workflows/overview.docblock.d.ts.map +0 -1
- package/dist/docs/tech/workflows/overview.docblock.js.map +0 -1
- package/dist/docs/tech-contracts.docs.d.ts.map +0 -1
- package/dist/docs/tech-contracts.docs.js.map +0 -1
- package/dist/docs/types.d.ts.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/experiments/docs/experiments.docblock.d.ts.map +0 -1
- package/dist/experiments/docs/experiments.docblock.js.map +0 -1
- package/dist/experiments/evaluator.d.ts.map +0 -1
- package/dist/experiments/evaluator.js.map +0 -1
- package/dist/experiments/spec-resolver.d.ts.map +0 -1
- package/dist/experiments/spec.d.ts.map +0 -1
- package/dist/experiments/spec.js.map +0 -1
- package/dist/features.d.ts.map +0 -1
- package/dist/features.js.map +0 -1
- package/dist/forms/docs/forms.docblock.d.ts.map +0 -1
- package/dist/forms/docs/forms.docblock.js.map +0 -1
- package/dist/forms.d.ts.map +0 -1
- package/dist/forms.js.map +0 -1
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/integrations/binding.d.ts.map +0 -1
- package/dist/integrations/connection.d.ts.map +0 -1
- package/dist/integrations/contracts.d.ts.map +0 -1
- package/dist/integrations/contracts.js.map +0 -1
- package/dist/integrations/docs/integrations.docblock.d.ts.map +0 -1
- package/dist/integrations/docs/integrations.docblock.js.map +0 -1
- package/dist/integrations/health.d.ts.map +0 -1
- package/dist/integrations/health.js.map +0 -1
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/accounts.js.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/balances.js.map +0 -1
- package/dist/integrations/openbanking/contracts/index.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/index.js.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +0 -1
- package/dist/integrations/openbanking/contracts/transactions.js.map +0 -1
- package/dist/integrations/openbanking/guards.d.ts.map +0 -1
- package/dist/integrations/openbanking/guards.js.map +0 -1
- package/dist/integrations/openbanking/models.d.ts.map +0 -1
- package/dist/integrations/openbanking/models.js.map +0 -1
- package/dist/integrations/openbanking/openbanking.feature.d.ts.map +0 -1
- package/dist/integrations/openbanking/openbanking.feature.js.map +0 -1
- package/dist/integrations/openbanking/telemetry.d.ts.map +0 -1
- package/dist/integrations/openbanking/telemetry.js.map +0 -1
- package/dist/integrations/providers/calendar.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.d.ts.map +0 -1
- package/dist/integrations/providers/elevenlabs.js.map +0 -1
- package/dist/integrations/providers/email.d.ts.map +0 -1
- package/dist/integrations/providers/embedding.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/gcs-storage.js.map +0 -1
- package/dist/integrations/providers/gmail.d.ts.map +0 -1
- package/dist/integrations/providers/gmail.js.map +0 -1
- package/dist/integrations/providers/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/google-calendar.js.map +0 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +0 -1
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +0 -1
- package/dist/integrations/providers/impls/gcs-storage.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gcs-storage.js.map +0 -1
- package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gmail-inbound.js.map +0 -1
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +0 -1
- package/dist/integrations/providers/impls/gmail-outbound.js.map +0 -1
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +0 -1
- package/dist/integrations/providers/impls/google-calendar.js.map +0 -1
- package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +0 -1
- package/dist/integrations/providers/impls/mistral-embedding.js.map +0 -1
- package/dist/integrations/providers/impls/mistral-llm.d.ts.map +0 -1
- package/dist/integrations/providers/impls/mistral-llm.js.map +0 -1
- package/dist/integrations/providers/impls/postmark-email.d.ts.map +0 -1
- package/dist/integrations/providers/impls/postmark-email.js.map +0 -1
- package/dist/integrations/providers/impls/powens-client.d.ts.map +0 -1
- package/dist/integrations/providers/impls/powens-client.js.map +0 -1
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/impls/powens-openbanking.js.map +0 -1
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +0 -1
- package/dist/integrations/providers/impls/provider-factory.js.map +0 -1
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +0 -1
- package/dist/integrations/providers/impls/qdrant-vector.js.map +0 -1
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +0 -1
- package/dist/integrations/providers/impls/stripe-payments.js.map +0 -1
- package/dist/integrations/providers/impls/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/impls/twilio-sms.js.map +0 -1
- package/dist/integrations/providers/llm.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.d.ts.map +0 -1
- package/dist/integrations/providers/mistral.js.map +0 -1
- package/dist/integrations/providers/openbanking.d.ts.map +0 -1
- package/dist/integrations/providers/payments.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.d.ts.map +0 -1
- package/dist/integrations/providers/postmark.js.map +0 -1
- package/dist/integrations/providers/powens.d.ts.map +0 -1
- package/dist/integrations/providers/powens.js.map +0 -1
- package/dist/integrations/providers/qdrant.d.ts.map +0 -1
- package/dist/integrations/providers/qdrant.js.map +0 -1
- package/dist/integrations/providers/registry.d.ts.map +0 -1
- package/dist/integrations/providers/registry.js.map +0 -1
- package/dist/integrations/providers/sms.d.ts.map +0 -1
- package/dist/integrations/providers/storage.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.d.ts.map +0 -1
- package/dist/integrations/providers/stripe.js.map +0 -1
- package/dist/integrations/providers/twilio-sms.d.ts.map +0 -1
- package/dist/integrations/providers/twilio-sms.js.map +0 -1
- package/dist/integrations/providers/vector-store.d.ts.map +0 -1
- package/dist/integrations/providers/voice.d.ts.map +0 -1
- package/dist/integrations/runtime.d.ts.map +0 -1
- package/dist/integrations/runtime.js.map +0 -1
- package/dist/integrations/secrets/aws-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/aws-secret-manager.js.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +0 -1
- package/dist/integrations/secrets/env-secret-provider.js.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/gcp-secret-manager.js.map +0 -1
- package/dist/integrations/secrets/manager.d.ts.map +0 -1
- package/dist/integrations/secrets/manager.js.map +0 -1
- package/dist/integrations/secrets/provider.d.ts.map +0 -1
- package/dist/integrations/secrets/provider.js.map +0 -1
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts.map +0 -1
- package/dist/integrations/secrets/scaleway-secret-manager.js.map +0 -1
- package/dist/integrations/spec.d.ts.map +0 -1
- package/dist/integrations/spec.js.map +0 -1
- package/dist/jobs/define-job.d.ts.map +0 -1
- package/dist/jobs/define-job.js.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +0 -1
- package/dist/jobs/gcp-cloud-tasks.js.map +0 -1
- package/dist/jobs/gcp-pubsub.d.ts.map +0 -1
- package/dist/jobs/gcp-pubsub.js.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/gmail-sync-handler.js.map +0 -1
- package/dist/jobs/handlers/index.d.ts.map +0 -1
- package/dist/jobs/handlers/index.js.map +0 -1
- package/dist/jobs/handlers/ping-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/ping-handler.js.map +0 -1
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +0 -1
- package/dist/jobs/handlers/storage-document-handler.js.map +0 -1
- package/dist/jobs/memory-queue.d.ts.map +0 -1
- package/dist/jobs/memory-queue.js.map +0 -1
- package/dist/jobs/queue.d.ts.map +0 -1
- package/dist/jobs/queue.js.map +0 -1
- package/dist/jobs/scaleway-sqs-queue.d.ts.map +0 -1
- package/dist/jobs/scaleway-sqs-queue.js.map +0 -1
- package/dist/jsonschema.d.ts.map +0 -1
- package/dist/jsonschema.js.map +0 -1
- package/dist/knowledge/binding.d.ts.map +0 -1
- package/dist/knowledge/contracts.d.ts.map +0 -1
- package/dist/knowledge/contracts.js.map +0 -1
- package/dist/knowledge/docs/knowledge.docblock.d.ts.map +0 -1
- package/dist/knowledge/docs/knowledge.docblock.js.map +0 -1
- package/dist/knowledge/ingestion/document-processor.d.ts.map +0 -1
- package/dist/knowledge/ingestion/document-processor.js.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +0 -1
- package/dist/knowledge/ingestion/embedding-service.js.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/gmail-adapter.js.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +0 -1
- package/dist/knowledge/ingestion/storage-adapter.js.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +0 -1
- package/dist/knowledge/ingestion/vector-indexer.js.map +0 -1
- package/dist/knowledge/query/service.d.ts.map +0 -1
- package/dist/knowledge/query/service.js.map +0 -1
- package/dist/knowledge/runtime.d.ts.map +0 -1
- package/dist/knowledge/runtime.js.map +0 -1
- package/dist/knowledge/source.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.d.ts.map +0 -1
- package/dist/knowledge/spaces/email-threads.js.map +0 -1
- package/dist/knowledge/spaces/financial-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-docs.js.map +0 -1
- package/dist/knowledge/spaces/financial-overview.d.ts.map +0 -1
- package/dist/knowledge/spaces/financial-overview.js.map +0 -1
- package/dist/knowledge/spaces/product-canon.d.ts.map +0 -1
- package/dist/knowledge/spaces/product-canon.js.map +0 -1
- package/dist/knowledge/spaces/support-faq.d.ts.map +0 -1
- package/dist/knowledge/spaces/support-faq.js.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +0 -1
- package/dist/knowledge/spaces/uploaded-docs.js.map +0 -1
- package/dist/knowledge/spec.d.ts.map +0 -1
- package/dist/knowledge/spec.js.map +0 -1
- package/dist/llm/exporters.d.ts.map +0 -1
- package/dist/llm/exporters.js.map +0 -1
- package/dist/llm/prompts.d.ts.map +0 -1
- package/dist/llm/prompts.js.map +0 -1
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js.map +0 -1
- package/dist/migrations.d.ts.map +0 -1
- package/dist/migrations.js.map +0 -1
- package/dist/onboarding-base.d.ts.map +0 -1
- package/dist/onboarding-base.js.map +0 -1
- package/dist/openapi.d.ts.map +0 -1
- package/dist/openapi.js.map +0 -1
- package/dist/openbanking/docs/openbanking.docblock.d.ts.map +0 -1
- package/dist/openbanking/docs/openbanking.docblock.js.map +0 -1
- package/dist/ownership.d.ts.map +0 -1
- package/dist/ownership.js.map +0 -1
- package/dist/policy/docs/policy.docblock.d.ts.map +0 -1
- package/dist/policy/docs/policy.docblock.js.map +0 -1
- package/dist/policy/engine.d.ts.map +0 -1
- package/dist/policy/engine.js.map +0 -1
- package/dist/policy/opa-adapter.d.ts.map +0 -1
- package/dist/policy/opa-adapter.js.map +0 -1
- package/dist/policy/spec.d.ts.map +0 -1
- package/dist/policy/spec.js.map +0 -1
- package/dist/presentations/docs/presentations-conventions.docblock.d.ts.map +0 -1
- package/dist/presentations/docs/presentations-conventions.docblock.js.map +0 -1
- package/dist/presentations.backcompat.d.ts.map +0 -1
- package/dist/presentations.backcompat.js.map +0 -1
- package/dist/presentations.d.ts.map +0 -1
- package/dist/presentations.js.map +0 -1
- package/dist/presentations.v2.d.ts.map +0 -1
- package/dist/presentations.v2.js.map +0 -1
- package/dist/prompt.d.ts.map +0 -1
- package/dist/prompt.js.map +0 -1
- package/dist/promptRegistry.d.ts.map +0 -1
- package/dist/promptRegistry.js.map +0 -1
- package/dist/regenerator/adapters.d.ts.map +0 -1
- package/dist/regenerator/docs/regenerator.docblock.d.ts.map +0 -1
- package/dist/regenerator/docs/regenerator.docblock.js.map +0 -1
- package/dist/regenerator/executor.d.ts.map +0 -1
- package/dist/regenerator/executor.js.map +0 -1
- package/dist/regenerator/service.d.ts.map +0 -1
- package/dist/regenerator/service.js.map +0 -1
- package/dist/regenerator/sinks.d.ts.map +0 -1
- package/dist/regenerator/sinks.js.map +0 -1
- package/dist/regenerator/types.d.ts.map +0 -1
- package/dist/regenerator/utils.d.ts.map +0 -1
- package/dist/regenerator/utils.js.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js.map +0 -1
- package/dist/resources.d.ts.map +0 -1
- package/dist/resources.js.map +0 -1
- package/dist/schema/dist/index.js.map +0 -1
- package/dist/schema-to-markdown.d.ts.map +0 -1
- package/dist/schema-to-markdown.js.map +0 -1
- package/dist/server/graphql-pothos.d.ts.map +0 -1
- package/dist/server/graphql-pothos.js.map +0 -1
- package/dist/server/mcp/createMcpServer.d.ts.map +0 -1
- package/dist/server/mcp/createMcpServer.js.map +0 -1
- package/dist/server/mcp/mcpTypes.d.ts.map +0 -1
- package/dist/server/mcp/registerPresentations.d.ts.map +0 -1
- package/dist/server/mcp/registerPresentations.js.map +0 -1
- package/dist/server/mcp/registerPrompts.d.ts.map +0 -1
- package/dist/server/mcp/registerPrompts.js.map +0 -1
- package/dist/server/mcp/registerResources.d.ts.map +0 -1
- package/dist/server/mcp/registerResources.js.map +0 -1
- package/dist/server/mcp/registerTools.d.ts.map +0 -1
- package/dist/server/mcp/registerTools.js.map +0 -1
- package/dist/server/rest-elysia.d.ts.map +0 -1
- package/dist/server/rest-elysia.js.map +0 -1
- package/dist/server/rest-express.d.ts.map +0 -1
- package/dist/server/rest-express.js.map +0 -1
- package/dist/server/rest-generic.d.ts.map +0 -1
- package/dist/server/rest-generic.js.map +0 -1
- package/dist/server/rest-next-app.d.ts.map +0 -1
- package/dist/server/rest-next-app.js.map +0 -1
- package/dist/server/rest-next-mcp.d.ts.map +0 -1
- package/dist/server/rest-next-mcp.js.map +0 -1
- package/dist/server/rest-next-pages.d.ts.map +0 -1
- package/dist/server/rest-next-pages.js.map +0 -1
- package/dist/spec.d.ts.map +0 -1
- package/dist/spec.js.map +0 -1
- package/dist/telemetry/anomaly.d.ts.map +0 -1
- package/dist/telemetry/anomaly.js.map +0 -1
- package/dist/telemetry/docs/telemetry.docblock.d.ts.map +0 -1
- package/dist/telemetry/docs/telemetry.docblock.js.map +0 -1
- package/dist/telemetry/spec.d.ts.map +0 -1
- package/dist/telemetry/spec.js.map +0 -1
- package/dist/telemetry/tracker.d.ts.map +0 -1
- package/dist/telemetry/tracker.js.map +0 -1
- package/dist/tests/runner.d.ts.map +0 -1
- package/dist/tests/runner.js.map +0 -1
- package/dist/tests/spec.d.ts.map +0 -1
- package/dist/tests/spec.js.map +0 -1
- package/dist/themes.d.ts.map +0 -1
- package/dist/themes.js.map +0 -1
- package/dist/translations/catalog.d.ts.map +0 -1
- package/dist/translations/tenant.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/db-adapter.js.map +0 -1
- package/dist/workflow/adapters/file-adapter.d.ts.map +0 -1
- package/dist/workflow/adapters/file-adapter.js.map +0 -1
- package/dist/workflow/adapters/memory-store.d.ts.map +0 -1
- package/dist/workflow/adapters/memory-store.js.map +0 -1
- package/dist/workflow/expression.d.ts.map +0 -1
- package/dist/workflow/expression.js.map +0 -1
- package/dist/workflow/runner.d.ts.map +0 -1
- package/dist/workflow/runner.js.map +0 -1
- package/dist/workflow/sla-monitor.d.ts.map +0 -1
- package/dist/workflow/sla-monitor.js.map +0 -1
- package/dist/workflow/spec.d.ts.map +0 -1
- package/dist/workflow/spec.js.map +0 -1
- package/dist/workflow/state.d.ts.map +0 -1
- package/dist/workflow/validation.d.ts.map +0 -1
- package/dist/workflow/validation.js.map +0 -1
|
@@ -6,5 +6,4 @@ interface ExpressionContext {
|
|
|
6
6
|
}
|
|
7
7
|
declare function evaluateExpression(expression: string | undefined, ctx: ExpressionContext): boolean;
|
|
8
8
|
//#endregion
|
|
9
|
-
export { ExpressionContext, evaluateExpression };
|
|
10
|
-
//# sourceMappingURL=expression.d.ts.map
|
|
9
|
+
export { ExpressionContext, evaluateExpression };
|
|
@@ -13,12 +13,12 @@ function evaluateSingle(expr, ctx) {
|
|
|
13
13
|
const trimmed = expr.trim();
|
|
14
14
|
if (!trimmed) return true;
|
|
15
15
|
if (trimmed.startsWith("!")) return !evaluateSingle(trimmed.slice(1), ctx);
|
|
16
|
-
const comparisonMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_
|
|
16
|
+
const comparisonMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);
|
|
17
17
|
if (comparisonMatch) {
|
|
18
18
|
const [, root, path, operator, rawRight] = comparisonMatch;
|
|
19
19
|
return compare(resolveRoot(root, ctx, path), parseLiteral(rawRight), operator);
|
|
20
20
|
}
|
|
21
|
-
const truthyMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_
|
|
21
|
+
const truthyMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);
|
|
22
22
|
if (truthyMatch) {
|
|
23
23
|
const [, root, path] = truthyMatch;
|
|
24
24
|
const value = resolveRoot(root, ctx, path);
|
|
@@ -71,6 +71,7 @@ function splitByOperator(expr, operator) {
|
|
|
71
71
|
let inDoubleQuote = false;
|
|
72
72
|
for (let i = 0; i < expr.length; i++) {
|
|
73
73
|
const char = expr[i];
|
|
74
|
+
if (!char) continue;
|
|
74
75
|
const next = expr.slice(i, i + operator.length);
|
|
75
76
|
if (char === "'" && !inDoubleQuote) {
|
|
76
77
|
inSingleQuote = !inSingleQuote;
|
|
@@ -95,5 +96,4 @@ function splitByOperator(expr, operator) {
|
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
//#endregion
|
|
98
|
-
export { evaluateExpression };
|
|
99
|
-
//# sourceMappingURL=expression.js.map
|
|
99
|
+
export { evaluateExpression };
|
|
@@ -71,5 +71,4 @@ declare class WorkflowPreFlightError extends Error {
|
|
|
71
71
|
constructor(issues: WorkflowPreFlightIssue[]);
|
|
72
72
|
}
|
|
73
73
|
//#endregion
|
|
74
|
-
export { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig };
|
|
75
|
-
//# sourceMappingURL=runner.d.ts.map
|
|
74
|
+
export { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig };
|
package/dist/workflow/runner.js
CHANGED
package/dist/workflow/spec.d.ts
CHANGED
|
@@ -96,5 +96,4 @@ declare class WorkflowRegistry {
|
|
|
96
96
|
get(name: string, version?: number): WorkflowSpec | undefined;
|
|
97
97
|
}
|
|
98
98
|
//#endregion
|
|
99
|
-
export { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus };
|
|
100
|
-
//# sourceMappingURL=spec.d.ts.map
|
|
99
|
+
export { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus };
|
package/dist/workflow/spec.js
CHANGED
package/dist/workflow/state.d.ts
CHANGED
|
@@ -32,5 +32,4 @@ interface StateStore {
|
|
|
32
32
|
list(filters?: WorkflowStateFilters): Promise<WorkflowState[]>;
|
|
33
33
|
}
|
|
34
34
|
//#endregion
|
|
35
|
-
export { StateStore, StepExecution, WorkflowState, WorkflowStateFilters };
|
|
36
|
-
//# sourceMappingURL=state.d.ts.map
|
|
35
|
+
export { StateStore, StepExecution, WorkflowState, WorkflowStateFilters };
|
|
@@ -25,5 +25,4 @@ declare class WorkflowValidationError extends Error {
|
|
|
25
25
|
declare function validateWorkflowSpec(spec: WorkflowSpec, options?: ValidateWorkflowSpecOptions): WorkflowValidationIssue[];
|
|
26
26
|
declare function assertWorkflowSpecValid(spec: WorkflowSpec, options?: ValidateWorkflowSpecOptions): void;
|
|
27
27
|
//#endregion
|
|
28
|
-
export { ValidateWorkflowSpecOptions, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, validateWorkflowSpec };
|
|
29
|
-
//# sourceMappingURL=validation.d.ts.map
|
|
28
|
+
export { ValidateWorkflowSpecOptions, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, validateWorkflowSpec };
|
|
@@ -133,6 +133,7 @@ function validateReachability(entryStepId, stepsById, adjacency, issues) {
|
|
|
133
133
|
visited.add(entryStepId);
|
|
134
134
|
while (queue.length) {
|
|
135
135
|
const current = queue.shift();
|
|
136
|
+
if (!current) continue;
|
|
136
137
|
const neighbours = adjacency.get(current);
|
|
137
138
|
if (!neighbours) continue;
|
|
138
139
|
for (const next of neighbours) {
|
|
@@ -172,5 +173,4 @@ function detectCycles(adjacency, issues) {
|
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
//#endregion
|
|
175
|
-
export { WorkflowValidationError, assertWorkflowSpecValid, validateWorkflowSpec };
|
|
176
|
-
//# sourceMappingURL=validation.js.map
|
|
176
|
+
export { WorkflowValidationError, assertWorkflowSpecValid, validateWorkflowSpec };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lssm/lib.contracts",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20251220015515",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
|
|
6
6
|
"publish:pkg:canary": "bun publish:pkg --tag canary",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"test": "bun run"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@lssm/tool.tsdown": "0.0.0-canary-
|
|
20
|
-
"@lssm/tool.typescript": "0.0.0-canary-
|
|
19
|
+
"@lssm/tool.tsdown": "0.0.0-canary-20251220015515",
|
|
20
|
+
"@lssm/tool.typescript": "0.0.0-canary-20251220015515",
|
|
21
21
|
"@types/express": "^5.0.3",
|
|
22
22
|
"@types/turndown": "^5.0.6",
|
|
23
23
|
"tsdown": "^0.18.1",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"@elevenlabs/elevenlabs-js": "^2.27.0",
|
|
36
36
|
"@google-cloud/secret-manager": "^6.1.1",
|
|
37
37
|
"@google-cloud/storage": "^7.18.0",
|
|
38
|
-
"@lssm/lib.logger": "0.0.0-canary-
|
|
39
|
-
"@lssm/lib.schema": "0.0.0-canary-
|
|
38
|
+
"@lssm/lib.logger": "0.0.0-canary-20251220015515",
|
|
39
|
+
"@lssm/lib.schema": "0.0.0-canary-20251220015515",
|
|
40
40
|
"@mistralai/mistralai": "^1.11.0",
|
|
41
41
|
"@modelcontextprotocol/sdk": "^1.24.3",
|
|
42
42
|
"@qdrant/js-client-rest": "^1.16.2",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"elysia": "^1.4.19",
|
|
55
55
|
"express": "^5.2.1",
|
|
56
56
|
"graphql-scalars": "^1.24.2",
|
|
57
|
-
"next": "16.0
|
|
57
|
+
"next": "16.1.0",
|
|
58
58
|
"@blocknote/core": "^0.45.0",
|
|
59
59
|
"@blocknote/react": "^0.45.0",
|
|
60
60
|
"react": "^19.2.3",
|
|
@@ -563,7 +563,13 @@
|
|
|
563
563
|
"./workflow/state": "./dist/workflow/state.js",
|
|
564
564
|
"./workflow/validation": "./dist/workflow/validation.js",
|
|
565
565
|
"./*": "./*"
|
|
566
|
-
}
|
|
566
|
+
},
|
|
567
|
+
"registry": "https://registry.npmjs.org/"
|
|
567
568
|
},
|
|
568
|
-
"license": "MIT"
|
|
569
|
+
"license": "MIT",
|
|
570
|
+
"repository": {
|
|
571
|
+
"type": "git",
|
|
572
|
+
"url": "https://github.com/lssm-tech/contractspec.git",
|
|
573
|
+
"directory": "packages/libs/contracts"
|
|
574
|
+
}
|
|
569
575
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.feature.d.ts","names":[],"sources":["../../src/app-config/app-config.feature.ts"],"sourcesContent":[],"mappings":";;;;;;;;cAWa,kBAAkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.feature.js","names":["AppConfigFeature: FeatureModuleSpec"],"sources":["../../src/app-config/app-config.feature.ts"],"sourcesContent":["/**\n * App Config Feature Module Specification\n *\n * Defines the feature module for tenant app configuration lifecycle.\n */\nimport type { FeatureModuleSpec } from '../features';\n\n/**\n * App Config feature module that bundles tenant configuration\n * lifecycle events for draft, preview, publish, and rollback stages.\n */\nexport const AppConfigFeature: FeatureModuleSpec = {\n meta: {\n key: 'app-config',\n title: 'App Configuration',\n description:\n 'Tenant app configuration lifecycle management with draft, preview, and publish stages',\n domain: 'platform',\n owners: ['@platform.sigil'],\n tags: ['app-config', 'lifecycle', 'configuration', 'tenant'],\n stability: 'beta',\n },\n\n // No operations for this feature - it's events-only\n operations: [],\n\n // Events emitted by this feature\n events: [\n { name: 'app_config.draft_created', version: 1 },\n { name: 'app_config.promoted_to_preview', version: 1 },\n { name: 'app_config.published', version: 1 },\n { name: 'app_config.rolled_back', version: 1 },\n ],\n\n // No presentations for this library feature\n presentations: [],\n opToPresentation: [],\n presentationsTargets: [],\n\n // Capability definitions\n capabilities: {\n provides: [{ key: 'app-config', version: 1 }],\n requires: [],\n },\n};\n"],"mappings":";;;;;AAWA,MAAaA,mBAAsC;CACjD,MAAM;EACJ,KAAK;EACL,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,kBAAkB;EAC3B,MAAM;GAAC;GAAc;GAAa;GAAiB;GAAS;EAC5D,WAAW;EACZ;CAGD,YAAY,EAAE;CAGd,QAAQ;EACN;GAAE,MAAM;GAA4B,SAAS;GAAG;EAChD;GAAE,MAAM;GAAkC,SAAS;GAAG;EACtD;GAAE,MAAM;GAAwB,SAAS;GAAG;EAC5C;GAAE,MAAM;GAA0B,SAAS;GAAG;EAC/C;CAGD,eAAe,EAAE;CACjB,kBAAkB,EAAE;CACpB,sBAAsB,EAAE;CAGxB,cAAc;EACZ,UAAU,CAAC;GAAE,KAAK;GAAc,SAAS;GAAG,CAAC;EAC7C,UAAU,EAAE;EACb;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"branding.d.ts","names":[],"sources":["../../src/app-config/branding.ts"],"sourcesContent":[],"mappings":";UAAiB,gBAAA;EAAA,IAAA,EAAA,MAAA,GAAA,WAAgB,GAAA,SAAA,GAAA,UAAA;EAMhB,GAAA,CAAA,EAAA,MAAA;EASA,UAAA,CAAA,EAAA;IAUA,KAAA,EAAA,MAAA;IAWA,MAAA,EAAA,MAAA;;;UA9BA,gBAAA;;WAEN;;;;;;UAOM,mBAAA;;;;;;;;;;;;UAUA,oBAAA;YACL;WACD;;;;;;;;UASM,gBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","names":[],"sources":["../../src/app-config/contracts.ts"],"sourcesContent":[],"mappings":";;;;;;cAmIa,6BAA2B,aAAA;;UAoBtC,kBAAA,CAAA;IApBW,UAAA,EAAA,KAAA;EAoBX,CAAA;;;;;;;;;;;;;;;MApBsC,IAAA,EAAA;QAAA,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;QAAA,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;QAAA,UAAA,EAAA,KAAA;MAsB3B,CAAA;MAoBX,QAAA,EAAA;;;MApBoC,CAAA;IAAA,CAAA,CAAA;;;EAAA,CAAA;EAAA,MAAA,EAAA;IAsBzB,IAAA,8BAoBX,OAAA,CAAA,MAAA,EAAA,OAAA,CAAA,QAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;IAAA,UAAA,EAAA,IAAA;;;;;;;;;;;EApBmD,OAAA,EAAA;IAAA,IAAA,EA5Cb,kBAAA,CAAA,SA4Ca,CAAA,OAAA,EAAA,OAAA,CAAA;;;;IAAA,IAAA,8BAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAsBxC,CAAA;CAoBX,CAAA,EAAA,SAAA,CAAA;cAhEW,2BAAyB,aAAA;;UAoBpC,kBAAA,CAAA;;;;;;EAwBkD,CAAA;EAAA,MAAA,EAAA;;;;CAAA,CAAA,aAAA,CAAA;EAAA,MAAA,EAAA;IAsBvC,IAAA,EAlEyB,kBAAA,CAAA,SAqGpC,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;IAnCmC,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;cA5CxB,0CAAwC,aAAA;EA4ChB,aAAA,EAAA;IAAA,IAAA,EAxBnC,kBAAA,CAAA,SAwBmC,CAAA,MAAA,EAAA,MAAA,CAAA;IAqCxB,UAAA,EAAA,KAAA;EAqBX,CAAA;;;;EArB8B,CAAA;EAAA,WAAA,EAAA;;;EAAA,CAAA;EAAA,cAAA,EAAA;IAuBnB,IAAA,8BAAmC,CAAA,MAAf,EAAM,MAAA,CAAA;IASvB,UAAA,EAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAjHqC,kBAAA,CAAA;;;;;;;;cAsBxC,yCAAuC,aAAA;;UAoBlD,kBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UApBkD,kBAAA,CAAA;;;;;;;;cAsBvC,0BAAwB,aAAA;;UAmCnC,kBAAA,CAAA;;;;;;;;;;;;;;;;;cAEW,qBAAmB,aAAA;;UAqB9B,kBAAA,CAAA;;;;;;;;;;;;;;;;;UArB8B,kBAAA,CAAA;;;;;;;;cAuBnB,oBAAoB,eAAe;iBAShC,0BAAA,WAAqC,eAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","names":["SchemaModel","ScalarTypeEnum","appConfigContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../src/app-config/contracts.ts"],"sourcesContent":["import { ScalarTypeEnum, SchemaModel } from '@lssm/lib.schema';\nimport { defineCommand, defineQuery } from '../spec';\nimport { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';\nimport type { ContractSpec } from '../spec';\nimport type { SpecRegistry } from '../registry';\n\nconst BrandingAssetInput = new SchemaModel({\n name: 'BrandingAssetInput',\n fields: {\n type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n url: { type: ScalarTypeEnum.URL(), isOptional: false },\n mimeType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst UpdateTenantBrandingInput = new SchemaModel({\n name: 'UpdateTenantBrandingInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n appName: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n assets: { type: BrandingAssetInput, isOptional: true, isArray: true },\n colors: { type: ScalarTypeEnum.JSONObject(), isOptional: true },\n customDomain: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n subdomain: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst UpdateTenantBrandingOutput = new SchemaModel({\n name: 'UpdateTenantBrandingOutput',\n fields: {\n success: { type: ScalarTypeEnum.Boolean(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst VerifyCustomDomainInput = new SchemaModel({\n name: 'VerifyCustomDomainInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n domain: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst VerifyCustomDomainOutput = new SchemaModel({\n name: 'VerifyCustomDomainOutput',\n fields: {\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n message: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst TranslationEntryInput = new SchemaModel({\n name: 'TranslationEntryInput',\n fields: {\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n context: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst UpdateBlueprintTranslationInput = new SchemaModel({\n name: 'UpdateBlueprintTranslationInput',\n fields: {\n blueprintName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n blueprintVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n catalogName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n catalogVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n defaultLocale: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n supportedLocales: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n isArray: true,\n },\n entries: {\n type: TranslationEntryInput,\n isOptional: false,\n isArray: true,\n },\n },\n});\n\nconst UpdateTenantTranslationInput = new SchemaModel({\n name: 'UpdateTenantTranslationInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n entries: {\n type: TranslationEntryInput,\n isOptional: false,\n isArray: true,\n },\n defaultLocale: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n enabledLocales: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n});\n\nconst MessageResolutionInput = new SchemaModel({\n name: 'MessageResolutionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst MessageResolutionOutput = new SchemaModel({\n name: 'MessageResolutionOutput',\n fields: {\n value: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n source: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nexport const UpdateTenantBrandingCommand = defineCommand({\n meta: {\n name: 'appConfig.updateTenantBranding',\n version: 1,\n description: 'Applies tenant branding overrides (names, assets, domains).',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['branding'],\n stability: StabilityEnum.Beta,\n goal: 'Maintain tenant-specific branding assets and domains.',\n context:\n 'Invoked by the Studio or automation when a tenant updates branding settings.',\n },\n io: {\n input: UpdateTenantBrandingInput,\n output: UpdateTenantBrandingOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const VerifyCustomDomainCommand = defineCommand({\n meta: {\n name: 'appConfig.verifyCustomDomain',\n version: 1,\n description: 'Validates DNS ownership for tenant custom domains.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['branding'],\n stability: StabilityEnum.Experimental,\n goal: 'Confirm tenant-provided domains before activation.',\n context:\n 'Triggered after the tenant adds DNS records to verify domain ownership.',\n },\n io: {\n input: VerifyCustomDomainInput,\n output: VerifyCustomDomainOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const UpdateBlueprintTranslationCatalogCommand = defineCommand({\n meta: {\n name: 'appConfig.updateBlueprintTranslationCatalog',\n version: 1,\n description: 'Registers or updates translation entries for a blueprint.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.I18n],\n stability: StabilityEnum.Beta,\n goal: 'Keep blueprint translation catalogs in sync with shipped copy.',\n context:\n 'Executed by platform automation or CI when committing updated translation catalogs.',\n },\n io: {\n input: UpdateBlueprintTranslationInput,\n output: UpdateTenantBrandingOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const UpdateTenantTranslationOverridesCommand = defineCommand({\n meta: {\n name: 'appConfig.updateTenantTranslations',\n version: 1,\n description: 'Applies tenant-specific translation entries.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.I18n],\n stability: StabilityEnum.Beta,\n goal: 'Allow tenants to override selected message keys.',\n context:\n 'Called by the Studio when a tenant customizes labels or copy for their locale.',\n },\n io: {\n input: UpdateTenantTranslationInput,\n output: UpdateTenantBrandingOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n },\n});\n\nexport const GetResolvedBrandingQuery = defineQuery({\n meta: {\n name: 'appConfig.getResolvedBranding',\n version: 1,\n description: 'Returns the resolved branding for a tenant/app/environment.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['branding'],\n stability: StabilityEnum.Beta,\n goal: 'Expose hydrated branding assets for rendering UI/email experiences.',\n context:\n 'Used by runtime surfaces to fetch brand assets prior to rendering tenant-specific experiences.',\n },\n io: {\n input: new SchemaModel({\n name: 'GetResolvedBrandingInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n environment: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n },\n }),\n output: new SchemaModel({\n name: 'GetResolvedBrandingOutput',\n fields: {\n branding: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n }),\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.read', version: 1 }],\n },\n});\n\nexport const ResolveMessageQuery = defineQuery({\n meta: {\n name: 'appConfig.resolveMessage',\n version: 1,\n description:\n 'Resolves a translation key for a tenant in the requested locale.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.I18n],\n stability: StabilityEnum.Experimental,\n goal: 'Expose a server-side API for resolving message keys on demand.',\n context:\n 'Used by backend services or scripts that need translated copy outside the front-end runtime.',\n },\n io: {\n input: MessageResolutionInput,\n output: MessageResolutionOutput,\n },\n policy: {\n auth: 'admin',\n policies: [{ name: 'platform.app-config.read', version: 1 }],\n },\n});\n\nexport const appConfigContracts: Record<string, ContractSpec<any, any>> = {\n UpdateTenantBrandingCommand,\n VerifyCustomDomainCommand,\n UpdateBlueprintTranslationCatalogCommand,\n UpdateTenantTranslationOverridesCommand,\n GetResolvedBrandingQuery,\n ResolveMessageQuery,\n};\n\nexport function registerAppConfigContracts(registry: SpecRegistry) {\n return registry\n .register(UpdateTenantBrandingCommand)\n .register(VerifyCustomDomainCommand)\n .register(UpdateBlueprintTranslationCatalogCommand)\n .register(UpdateTenantTranslationOverridesCommand)\n .register(GetResolvedBrandingQuery)\n .register(ResolveMessageQuery);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.docblock.d.ts","names":[],"sources":["../../../src/app-config/docs/app-config.docblock.ts"],"sourcesContent":[],"mappings":";;;cAGa,qCAAqC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.docblock.js","names":["tech_contracts_app_config_DocBlocks: DocBlock[]"],"sources":["../../../src/app-config/docs/app-config.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@lssm/lib.contracts/docs';\nimport { registerDocBlocks } from '../../registry';\n\nexport const tech_contracts_app_config_DocBlocks: DocBlock[] = [\n {\n id: 'docs.tech.contracts.app-config',\n title: 'App Configuration Layers',\n summary: 'App orchestration is split into three explicit layers:',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/tech/contracts/app-config',\n tags: ['tech', 'contracts', 'app-config'],\n body: \"## App Configuration Layers\\n\\nApp orchestration is split into three explicit layers:\\n\\n1. **AppBlueprintSpec** \\u2013 global, versioned description of what an app can look like. Stored in Git, no tenant/environment data.\\n2. **TenantAppConfig** \\u2013 tenant/environment overrides that the future Studio edits. Stored per tenant (DB/contract), mutable at runtime.\\n3. **ResolvedAppConfig** \\u2013 pure, merged view consumed by the runtime. Derived in-memory from a blueprint + tenant config.\\n\\n- Types & registry: `packages/libs/contracts/src/app-config/spec.ts`\\n- Resolution helpers: `packages/libs/contracts/src/app-config/runtime.ts`\\n- CLI wizard (blueprint scaffolding): `contractspec create app-config`\\n\\n### 1. AppBlueprintSpec\\n\\n```ts\\nexport interface AppBlueprintSpec {\\n meta: AppBlueprintMeta; // { name, version, appId, ownership }\\n capabilities?: { enabled?: CapabilityRef[]; disabled?: CapabilityRef[] };\\n features?: { include?: FeatureRef[]; exclude?: FeatureRef[] };\\n integrationSlots?: AppIntegrationSlot[];\\n branding?: BrandingDefaults;\\n dataViews?: Record<string, SpecPointer>;\\n workflows?: Record<string, SpecPointer>;\\n policies?: PolicyRef[];\\n theme?: AppThemeBinding;\\n telemetry?: TelemetryBinding;\\n experiments?: { active?: ExperimentRef[]; paused?: ExperimentRef[] };\\n featureFlags?: FeatureFlagState[];\\n routes?: AppRouteConfig[];\\n notes?: string;\\n}\\n```\\n\\nRegister blueprints with `AppBlueprintRegistry`. Blueprints only capture the default/global experience.\\n\\n- **Integration slots** declare the categories and capability requirements an app expects (e.g. `\\\"primary-payments\\\"` must be a payments provider that supports managed or BYOK credentials). Slots never include secrets; tenants bind concrete connections later.\\n- **Branding defaults** provide message-key based names, placeholder assets, and theme token references that downstream tenants can override.\\n\\n### 2. TenantAppConfig\\n\\n```ts\\nexport interface TenantAppConfig {\\n meta: TenantAppConfigMeta; // { id, tenantId, appId, blueprintName/version, environment?, version, timestamps }\\n capabilities?: { enable?: CapabilityRef[]; disable?: CapabilityRef[] };\\n features?: { include?: FeatureRef[]; exclude?: FeatureRef[] };\\n dataViewOverrides?: TenantSpecOverride[];\\n workflowOverrides?: TenantSpecOverride[];\\n additionalPolicies?: PolicyRef[];\\n themeOverride?: { primary?: ThemeRef | null; fallbacks?: ThemeRef[] };\\n telemetryOverride?: { spec?: SpecPointer | null; disabledEvents?: string[] };\\n experiments?: { active?: ExperimentRef[]; paused?: ExperimentRef[] };\\n featureFlags?: FeatureFlagState[];\\n routeOverrides?: TenantRouteOverride[];\\n integrations?: AppIntegrationBinding[];\\n knowledge?: AppKnowledgeBinding[];\\n branding?: TenantBrandingConfig;\\n notes?: string;\\n}\\n```\\n\\nThis object represents what a tenant edits via the Studio (stored in DB/contracts later).\\n\\n- **AppIntegrationBinding** now maps `slotId` \\u2192 `connectionId` (plus optional workflow scopes). It no longer carries capability lists; those are defined once in the slot.\\n- **TenantBrandingConfig** allows per-tenant names, assets, and domain overrides while keeping secrets and large files out of blueprints.\\n\\n### 3. ResolvedAppConfig\\n\\n```ts\\nexport interface ResolvedAppConfig {\\n appId: string;\\n tenantId: string;\\n environment?: string;\\n blueprintName: string;\\n blueprintVersion: number;\\n configVersion: number;\\n capabilities: { enabled: CapabilityRef[]; disabled: CapabilityRef[] };\\n features: { include: FeatureRef[]; exclude: FeatureRef[] };\\n dataViews: Record<string, SpecPointer>;\\n workflows: Record<string, SpecPointer>;\\n policies: PolicyRef[];\\n theme?: AppThemeBinding;\\n telemetry?: TelemetryBinding;\\n experiments: { catalog: ExperimentRef[]; active: ExperimentRef[]; paused: ExperimentRef[] };\\n featureFlags: FeatureFlagState[];\\n routes: AppRouteConfig[];\\n integrations: ResolvedIntegration[];\\n knowledge: ResolvedKnowledge[];\\n branding: ResolvedBranding;\\n notes?: string;\\n}\\n```\\n\\nUse `resolveAppConfig(blueprint, tenant)` to produce this merged view. No IO, no registry lookups\\u2014pure data merge.\\n\\n- `resolveAppConfig` validates slot/category/mode constraints when `integrationConnections` and `integrationSpecs` are provided.\\n- `branding` merges blueprint defaults with tenant overrides, producing a runtime-friendly shape (resolved asset URLs, color values, and effective domain).\\n\\n### Materializing specs\\n\\n`composeAppConfig(blueprint, tenant, registries, { strict })`:\\n\\n1. Calls `resolveAppConfig` to build the merged pointers.\\n2. Looks up referenced specs in the provided registries.\\n3. Returns:\\n - `resolved` \\u2013 the merged pointer view\\n - `capabilities`, `features`, `dataViews`, `workflows`, `policies`, `theme`, `telemetry`, `experiments`\\n - `missing` \\u2013 unresolved references (strict mode throws).\\n\\n```ts\\nconst blueprint = blueprintRegistry.get('core.app', 1)!;\\nconst tenant = loadTenantConfigFromDB();\\n\\nconst composition = composeAppConfig(blueprint, tenant, {\\n capabilities,\\n features,\\n dataViews,\\n workflows,\\n policies,\\n themes,\\n telemetry,\\n experiments,\\n});\\n\\nif (composition.missing.length) {\\n console.warn('Unresolved references', composition.missing);\\n}\\n```\\n\\n### CLI workflow\\n\\n```\\ncontractspec create app-config\\n```\\n\\nGenerates an `AppBlueprintSpec`. A separate flow will later scaffold tenant configs.\\n\\n### Best practices\\n\\n1. Keep blueprint and tenant versions monotonic; bump when referenced spec versions change.\\n2. Favor stable slot keys (e.g. `dataViews.dashboard`) to align with Studio UX.\\n3. Reference telemetry and experiments declared in their respective specs to maintain observability.\\n4. Run `resolveAppConfig` in pure unit tests and `composeAppConfig(..., { strict: true })` in CI to catch drift early.\\n5. Pair resolved configs with `TestSpec` scenarios to guard tenant experiences end-to-end.\\n\\n### Static validation\\n\\nUse the validation helpers in `@lssm/lib.contracts/app-config/validation` to keep blueprints and tenant configs safe before publish time.\\n\\n```ts\\nimport {\\n validateConfig,\\n validateBlueprint,\\n validateTenantConfig,\\n validateResolvedConfig,\\n} from '@lssm/lib.contracts/app-config/validation';\\n\\nconst context = {\\n integrationSpecs,\\n tenantConnections,\\n knowledgeSpaces,\\n knowledgeSources,\\n translationCatalogs: {\\n blueprint: blueprintCatalog,\\n platform: platformCatalog,\\n },\\n existingConfigs,\\n};\\n\\nconst blueprintReport = validateBlueprint(blueprint, context);\\nconst tenantReport = validateTenantConfig(blueprint, tenant, context);\\nconst publishReport = validateConfig(blueprint, tenant, context);\\n```\\n\\n- `ValidationResult` exposes `valid`, plus structured `errors`, `warnings`, and `info`.\\n- Core rules cover capability references, integration slot bindings (category/ownership/capabilities), knowledge bindings, branding constraints (domains + assets), and translation coverage.\\n- Call `validateBlueprint` in CI when committing new specs, and `validateConfig` before promoting/publishing a tenant config.\\n- `validateResolvedConfig` can be used as a runtime pre-flight check when composing full configs for workflows.\\n- CLI usage example (blueprint + tenant):\\n\\n```\\npnpm contractspec validate \\\\\\n packages/examples/integration-stripe/blueprint.ts \\\\\\n --blueprint packages/examples/integration-stripe/blueprint.ts \\\\\\n --tenant-config packages/examples/integration-stripe/tenant.ts\\n```\\n- Repository script:\\n\\n```\\nbun run validate:blueprints\\n```\\n\\nRuns the static validator for the sample blueprints/tenants and is wired into CI.\\n\\n\\n### Lifecycle types & events\\n\\nTo model multi-step configuration changes, use the lifecycle helpers exported from `@lssm/lib.contracts/app-config`:\\n\\n```ts\\nimport type {\\n ConfigStatus,\\n TenantAppConfigVersion,\\n ConfigTransition,\\n} from '@lssm/lib.contracts/app-config';\\nimport {\\n ConfigDraftCreatedEvent,\\n ConfigPromotedToPreviewEvent,\\n ConfigPublishedEvent,\\n ConfigRolledBackEvent,\\n} from '@lssm/lib.contracts/app-config';\\n```\\n\\n- `ConfigStatus` enumerates the canonical states: `draft`, `preview`, `published`, `archived`, `superseded`.\\n- `TenantAppConfigMeta` now includes lifecycle metadata (`status`, `createdBy`, `publishedBy`, `publishedAt`, `rolledBackFrom`, `rolledBackTo`, `changeSummary`).\\n- `TenantAppConfigVersion` couples the lifecycle-aware metadata with the `TenantAppConfig` payload for history views.\\n- `ConfigTransition` captures state changes with actor, timestamp, and optional reason.\\n- Lifecycle events (`app_config.draft_created`, `app_config.promoted_to_preview`, `app_config.published`, `app_config.rolled_back`) standardize observability across services.\\n- Lifecycle contract specs (`appConfig.lifecycle.*`) expose typed commands/queries for create \\u2192 preview \\u2192 publish \\u2192 rollback flows.\\n\\n\",\n },\n];\nregisterDocBlocks(tech_contracts_app_config_DocBlocks);\n"],"mappings":";;;;AAGA,MAAaA,sCAAkD,CAC7D;CACE,IAAI;CACJ,OAAO;CACP,SAAS;CACT,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EAAC;EAAQ;EAAa;EAAa;CACzC,MAAM;CACP,CACF;AACD,kBAAkB,oCAAoC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","names":[],"sources":["../../src/app-config/events.ts"],"sourcesContent":[],"mappings":";;;;;;cAca,yBAAuB,UAAA;;UAuBlC,kBAAA,CAAA;;;EAvBW,KAAA,EAAA;IAuBX,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAvBkC,aAAA,EAAA;IAAA,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAyBvB,CAAA;EAmBX,gBAAA,EAAA;;;;;IAnBuC,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAAA,CAAA;EAqB5B,UAAA,EAAA;IA8BX,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;cAnDW,8BAA4B,UAAA;;UAmBvC,kBAAA,CAAA;IAE+B,UAAA,EAAA,KAAA;EAAA,CAAA;EAAA,KAAA,EAAA;IAgCpB,IAAA,8BA0BX,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;IA1BgC,IAAA,8BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAAA,CAAA;;;;;;;cAhCrB,sBAAoB,UAAA;;UA8B/B,kBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAEW,uBAAqB,UAAA;;UA0BhC,kBAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","names":["SchemaModel","ScalarTypeEnum"],"sources":["../../src/app-config/events.ts"],"sourcesContent":["import { SchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';\nimport { defineEvent } from '../events';\nimport { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';\n\nconst lifecycleOwnership = {\n title: 'Tenant App Config Lifecycle',\n description:\n 'Events emitted when tenant app configurations move through lifecycle stages.',\n domain: 'app-config.lifecycle',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene],\n stability: StabilityEnum.Beta,\n};\n\nexport const ConfigDraftCreatedEvent = defineEvent({\n name: 'app_config.draft_created',\n version: 1,\n description: 'A new tenant config draft was created.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigDraftCreatedPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n blueprintName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n blueprintVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n clonedFrom: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n }),\n});\n\nexport const ConfigPromotedToPreviewEvent = defineEvent({\n name: 'app_config.promoted_to_preview',\n version: 1,\n description: 'A tenant config draft was promoted to preview.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigPromotedToPreviewPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n promotedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n warnings: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n }),\n});\n\nexport const ConfigPublishedEvent = defineEvent({\n name: 'app_config.published',\n version: 1,\n description: 'A tenant config version was published to production.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigPublishedPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n previousVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n },\n publishedBy: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n changeSummary: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n changedSections: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n }),\n});\n\nexport const ConfigRolledBackEvent = defineEvent({\n name: 'app_config.rolled_back',\n version: 1,\n description: 'A tenant config was rolled back to a previous version.',\n ownership: lifecycleOwnership,\n payload: new SchemaModel({\n name: 'ConfigRolledBackPayload',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n newVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n rolledBackFrom: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n rolledBackTo: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n rolledBackBy: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n }),\n});\n"],"mappings":";;;;;AAIA,MAAM,qBAAqB;CACzB,OAAO;CACP,aACE;CACF,QAAQ;CACR,QAAQ,CAAC,WAAW,cAAc;CAClC,MAAM,CAAC,SAAS,QAAQ;CACxB,WAAW,cAAc;CAC1B;AAED,MAAa,0BAA0B,YAAY;CACjD,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAIA,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,SAAS;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACnE,eAAe;IACb,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,kBAAkB;IAChB,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,WAAW;IAAE,MAAMA,GAAe,iBAAiB;IAAE,YAAY;IAAO;GACxE,YAAY;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAM;GACtE;EACF,CAAC;CACH,CAAC;AAEF,MAAa,+BAA+B,YAAY;CACtD,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAID,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,SAAS;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACnE,YAAY;IAAE,MAAMA,GAAe,iBAAiB;IAAE,YAAY;IAAO;GACzE,UAAU;IACR,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACZ,SAAS;IACV;GACF;EACF,CAAC;CACH,CAAC;AAEF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAID,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,SAAS;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACnE,iBAAiB;IACf,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,aAAa;IACX,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,eAAe;IACb,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,iBAAiB;IACf,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACZ,SAAS;IACV;GACF;EACF,CAAC;CACH,CAAC;AAEF,MAAa,wBAAwB,YAAY;CAC/C,MAAM;CACN,SAAS;CACT,aAAa;CACb,WAAW;CACX,SAAS,IAAID,GAAY;EACvB,MAAM;EACN,QAAQ;GACN,UAAU;IAAE,MAAMC,GAAe,IAAI;IAAE,YAAY;IAAO;GAC1D,OAAO;IAAE,MAAMA,GAAe,IAAI;IAAE,YAAY;IAAO;GACvD,YAAY;IAAE,MAAMA,GAAe,cAAc;IAAE,YAAY;IAAO;GACtE,gBAAgB;IACd,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,cAAc;IACZ,MAAMA,GAAe,cAAc;IACnC,YAAY;IACb;GACD,cAAc;IACZ,MAAMA,GAAe,iBAAiB;IACtC,YAAY;IACb;GACD,QAAQ;IAAE,MAAMA,GAAe,iBAAiB;IAAE,YAAY;IAAO;GACtE;EACF,CAAC;CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-contracts.d.ts","names":[],"sources":["../../src/app-config/lifecycle-contracts.ts"],"sourcesContent":[],"mappings":";;;;;;;;cA2Ea,gCAA8B,aAAA;;UAyBzC,mBAAA,CAAA;;;EAzBW,KAAA,EAAA;IAyBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAzByC,gBAAA,EAAA;IAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;EAAA,CAAA;CAAA,CAAA,aAAA,CAAA;EAkD9B,OAAA,EAAA;IAyBX,IAAA,EA3EyC,mBAAA,CAAA,SA2EzC,CAAA,MAAA,EAAA,MAAA,CAAA;;;;IAzB8C,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;IAAA,CAAA;IAAA,KAAA,EAAA;MAoDnC,IAAA,+BAyBX,CAAA,MAAA,EAAA,MAAA,CAAA;MAAA,UAAA,EAAA,KAAA;;;;;;IAzBqC,aAAA,EAAA;MAAA,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;;;;;EAAA,CAAA,CAAA,CAAA;EAAA,IAAA,EAAA,MAAA;AAgDvC,CAAA,EAAA,CAAa;AAyBX,cA7HW,mCA6HX,EA7H8C,YA6H9C,CA7H8C,WA6H9C,CAAA;;UApGA,mBAAA,CAAA;;;;IA2EsC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;UApGQ,mBAAA,CAAA;IAoGR,UAAA,EAAA,KAAA;EAAA,CAAA;EA+C3B,MAAA,EAAA;IAiBX,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;EAjBwC,CAAA;;;;;;;;;;;;;;;;;;;IAAA,CAAA;IAAA,UAAA,EAAA;MAmC7B,IAAA,+BAiBX,CAAA,MAAA,EAAA,MAAA,CAAA;MAAA,UAAA,EAAA,KAAA;;;MAjBsC,IAAA,+BAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;cAlI3B,4BAA0B,aAAA;;IAkIC,IAAA,EAzGtC,mBAAA,CAAA,SAyGsC,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAmB3B,CAAA;EASG,KAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;UA9JuB,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgD1B,6BAA2B,aAAA;;UAyBtC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;UAzBsC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+C3B,+BAA6B,aAAA;;UAiBxC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkBW,6BAA2B,aAAA;;UAiBtC,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;cAEW,oBAAoB,eAAe;iBAShC,mCAAA,WAA8C,eAAY"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-contracts.js","names":["SchemaModel","ScalarTypeEnum","lifecycleContracts: Record<string, ContractSpec<any, any>>"],"sources":["../../src/app-config/lifecycle-contracts.ts"],"sourcesContent":["import { SchemaModel, ScalarTypeEnum } from '@lssm/lib.schema';\nimport type { ContractSpec } from '../spec';\nimport { defineCommand, defineQuery } from '../spec';\nimport { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';\nimport type { SpecRegistry } from '../registry';\nimport {\n ConfigDraftCreatedEvent,\n ConfigPromotedToPreviewEvent,\n ConfigPublishedEvent,\n ConfigRolledBackEvent,\n} from './events';\n\nconst LifecyclePolicy = {\n auth: 'admin' as const,\n policies: [{ name: 'platform.app-config.manage', version: 1 }],\n};\n\nconst LifecycleReadPolicy = {\n auth: 'admin' as const,\n policies: [{ name: 'platform.app-config.read', version: 1 }],\n};\n\nconst ConfigVersionRecord = new SchemaModel({\n name: 'ConfigVersionRecord',\n fields: {\n meta: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n config: { type: ScalarTypeEnum.JSONObject(), isOptional: false },\n },\n});\n\nconst ConfigTransitionRecord = new SchemaModel({\n name: 'ConfigTransitionRecord',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n fromStatus: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n toStatus: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n actor: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n },\n});\n\nconst CreateDraftInput = new SchemaModel({\n name: 'CreateTenantConfigDraftInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n blueprintName: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n blueprintVersion: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: false,\n },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n fromVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst CreateDraftOutput = new SchemaModel({\n name: 'CreateTenantConfigDraftOutput',\n fields: {\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const CreateTenantConfigDraftCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.createDraft',\n version: 1,\n description: 'Creates a new draft tenant config version.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Allow operators to start editing a new tenant config version.',\n context:\n 'Invoked by the Studio or automation when starting a new configuration run.',\n },\n io: {\n input: CreateDraftInput,\n output: CreateDraftOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigDraftCreatedEvent,\n when: 'after successful draft creation',\n },\n ],\n },\n});\n\nconst PromotePreviewInput = new SchemaModel({\n name: 'PromoteTenantConfigPreviewInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n promotedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst PromotePreviewOutput = new SchemaModel({\n name: 'PromoteTenantConfigPreviewOutput',\n fields: {\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n warnings: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n isArray: true,\n },\n },\n});\n\nexport const PromoteTenantConfigToPreviewCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.promoteToPreview',\n version: 1,\n description: 'Promotes a draft tenant config to preview/testing state.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Enable validation and testing of draft configurations.',\n context:\n 'Called when a draft passes initial checks and should be exposed to preview environments.',\n },\n io: {\n input: PromotePreviewInput,\n output: PromotePreviewOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigPromotedToPreviewEvent,\n when: 'after promotion to preview',\n },\n ],\n },\n});\n\nconst PublishConfigInput = new SchemaModel({\n name: 'PublishTenantConfigInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n publishedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n changeSummary: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n },\n});\n\nconst PublishConfigOutput = new SchemaModel({\n name: 'PublishTenantConfigOutput',\n fields: {\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n previousVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n publishedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const PublishTenantConfigCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.publish',\n version: 1,\n description: 'Publishes a preview tenant config to production.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Promote tested configurations to production safely.',\n context:\n 'Triggered after validation passes and change management approvals are complete.',\n },\n io: {\n input: PublishConfigInput,\n output: PublishConfigOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigPublishedEvent,\n when: 'after publish succeeds',\n },\n ],\n },\n});\n\nconst RollbackConfigInput = new SchemaModel({\n name: 'RollbackTenantConfigInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n toVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n environment: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n rolledBackBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n },\n});\n\nconst RollbackConfigOutput = new SchemaModel({\n name: 'RollbackTenantConfigOutput',\n fields: {\n newVersion: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n status: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n rolledBackFrom: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n },\n});\n\nexport const RollbackTenantConfigCommand = defineCommand({\n meta: {\n name: 'appConfig.lifecycle.rollback',\n version: 1,\n description: 'Rolls back to a previously published tenant config version.',\n owners: [OwnersEnum.PlatformSigil],\n tags: [TagsEnum.Hygiene, 'app-config'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide rapid recovery when new configs regress production.',\n context:\n 'Called manually or automatically when monitoring detects regression and a rollback is required.',\n },\n io: {\n input: RollbackConfigInput,\n output: RollbackConfigOutput,\n },\n policy: LifecyclePolicy,\n sideEffects: {\n emits: [\n {\n ref: ConfigRolledBackEvent,\n when: 'after rollback completes',\n },\n ],\n },\n});\n\nconst ListVersionsInput = new SchemaModel({\n name: 'ListTenantConfigVersionsInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n },\n});\n\nconst ListVersionsOutput = new SchemaModel({\n name: 'ListTenantConfigVersionsOutput',\n fields: {\n versions: { type: ConfigVersionRecord, isOptional: false, isArray: true },\n transitions: {\n type: ConfigTransitionRecord,\n isOptional: true,\n isArray: true,\n },\n },\n});\n\nexport const ListTenantConfigVersionsQuery = defineQuery({\n meta: {\n name: 'appConfig.lifecycle.listVersions',\n version: 1,\n description: 'Lists all versions of a tenant configuration.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['app-config', TagsEnum.Hygiene],\n stability: StabilityEnum.Experimental,\n goal: 'Support lifecycle views and change audit tooling.',\n context:\n 'Used by the Studio to render history timelines and by automation for change tracking.',\n },\n io: {\n input: ListVersionsInput,\n output: ListVersionsOutput,\n },\n policy: LifecycleReadPolicy,\n});\n\nconst GetVersionInput = new SchemaModel({\n name: 'GetTenantConfigVersionInput',\n fields: {\n tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },\n appId: { type: ScalarTypeEnum.ID(), isOptional: false },\n version: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n },\n});\n\nconst GetVersionOutput = new SchemaModel({\n name: 'GetTenantConfigVersionOutput',\n fields: {\n version: { type: ConfigVersionRecord, isOptional: false },\n },\n});\n\nexport const GetTenantConfigVersionQuery = defineQuery({\n meta: {\n name: 'appConfig.lifecycle.getVersion',\n version: 1,\n description: 'Fetches a single tenant config version by id.',\n owners: [OwnersEnum.PlatformSigil],\n tags: ['app-config', TagsEnum.Hygiene],\n stability: StabilityEnum.Experimental,\n goal: 'Allow detail drill-down for lifecycle entries.',\n context:\n 'Used by automation to fetch config payloads for comparison or export.',\n },\n io: {\n input: GetVersionInput,\n output: GetVersionOutput,\n },\n policy: LifecycleReadPolicy,\n});\n\nexport const lifecycleContracts: Record<string, ContractSpec<any, any>> = {\n CreateTenantConfigDraftCommand,\n PromoteTenantConfigToPreviewCommand,\n PublishTenantConfigCommand,\n RollbackTenantConfigCommand,\n ListTenantConfigVersionsQuery,\n GetTenantConfigVersionQuery,\n};\n\nexport function registerAppConfigLifecycleContracts(registry: SpecRegistry) {\n return registry\n .register(CreateTenantConfigDraftCommand)\n .register(PromoteTenantConfigToPreviewCommand)\n .register(PublishTenantConfigCommand)\n .register(RollbackTenantConfigCommand)\n .register(ListTenantConfigVersionsQuery)\n .register(GetTenantConfigVersionQuery);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","names":[],"sources":["../../src/app-config/lifecycle.ts"],"sourcesContent":[],"mappings":";;;KAEY,YAAA;UAOK,sBAAA;EAPL,IAAA,EAQJ,eARgB,CAAA,MAAA,CAAA;EAOP,MAAA,EAEP,eAFO;AAKjB;AAGc,UAHG,gBAAA,CAGH;EACF,QAAA,EAAA,MAAA;EAEU,KAAA,EAAA,MAAA;EAAI,UAAA,EAHZ,YAGY;EAKT,QAAA,EAPL,YAOK;;sBALK;;;;UAKL,oBAAA;;;YAGL;eACG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","names":[],"sources":["../../src/app-config/runtime.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","names":["missing: MissingReference[]","merged: Record<string, SpecPointer>","binding: TelemetryBinding","localePreferenceOrder: string[]","appName: string | undefined","assets","assets: ResolvedBranding['assets']","colors: ResolvedBranding['colors']","resolved: ResolvedIntegration[]","resolved: CapabilitySpec[]","resolved: FeatureModuleSpec[]","resolved: Record<string, TSpec>","resolved: PolicySpec[]","themeMissing: MissingReference[]","fallbacks: ThemeSpec[]","telemetryMissing: MissingReference[]","resolved: ExperimentSpec[]"],"sources":["../../src/app-config/runtime.ts"],"sourcesContent":["import type {\n CapabilityRef,\n CapabilityRegistry,\n CapabilitySpec,\n} from '../capabilities';\nimport type {\n FeatureRegistry,\n FeatureModuleSpec,\n FeatureRef,\n} from '../features';\nimport type { DataViewRegistry, DataViewSpec } from '../data-views';\nimport type { WorkflowRegistry, WorkflowSpec } from '../workflow/spec';\nimport type { PolicyRef, PolicyRegistry, PolicySpec } from '../policy/spec';\nimport type { ThemeRegistry, ThemeSpec } from '../themes';\nimport type { TelemetryRegistry, TelemetrySpec } from '../telemetry/spec';\nimport type {\n ExperimentRef,\n ExperimentRegistry,\n ExperimentSpec,\n} from '../experiments/spec';\nimport type {\n IntegrationSpec,\n IntegrationSpecRegistry,\n} from '../integrations/spec';\nimport type { IntegrationConnection } from '../integrations/connection';\nimport type { AppIntegrationBinding } from '../integrations/binding';\nimport type {\n KnowledgeSpaceSpec,\n KnowledgeSpaceRegistry,\n} from '../knowledge/spec';\nimport type { KnowledgeSourceConfig } from '../knowledge/source';\nimport type { AppKnowledgeBinding } from '../knowledge/binding';\nimport type {\n BrandingAssetRef,\n BrandingDefaults,\n ResolvedBranding,\n TenantBrandingAsset,\n TenantBrandingConfig,\n} from './branding';\nimport type { Locale, TranslationEntry } from '../translations/catalog';\nimport type {\n AppBlueprintSpec,\n AppIntegrationSlot,\n AppRouteConfig,\n AppThemeBinding,\n FeatureFlagState,\n SpecPointer,\n TelemetryBinding,\n TenantAppConfig,\n TenantRouteOverride,\n TenantSpecOverride,\n TranslationCatalogPointer,\n} from './spec';\n\nexport interface ResolvedIntegration {\n slot: AppIntegrationSlot;\n binding: AppIntegrationBinding;\n connection: IntegrationConnection;\n spec: IntegrationSpec;\n}\n\nexport interface ResolvedKnowledge {\n binding: AppKnowledgeBinding;\n space: KnowledgeSpaceSpec;\n sources: KnowledgeSourceConfig[];\n}\n\nexport interface ResolvedTranslation {\n defaultLocale: Locale;\n supportedLocales: Locale[];\n blueprintCatalog?: TranslationCatalogPointer;\n tenantOverrides: TranslationEntry[];\n}\n\nexport interface ResolvedAppConfig {\n appId: string;\n tenantId: string;\n environment?: string;\n blueprintName: string;\n blueprintVersion: number;\n configVersion: number;\n capabilities: {\n enabled: CapabilityRef[];\n disabled: CapabilityRef[];\n };\n features: {\n include: FeatureRef[];\n exclude: FeatureRef[];\n };\n dataViews: Record<string, SpecPointer>;\n workflows: Record<string, SpecPointer>;\n policies: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments: {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n };\n featureFlags: FeatureFlagState[];\n routes: AppRouteConfig[];\n integrations: ResolvedIntegration[];\n knowledge: ResolvedKnowledge[];\n translation: ResolvedTranslation;\n branding: ResolvedBranding;\n notes?: string;\n}\n\nexport interface AppComposition {\n resolved: ResolvedAppConfig;\n capabilities: CapabilitySpec[];\n features: FeatureModuleSpec[];\n dataViews: Record<string, DataViewSpec>;\n workflows: Record<string, WorkflowSpec>;\n policies: PolicySpec[];\n theme?: ThemeSpec;\n themeFallbacks: ThemeSpec[];\n telemetry?: TelemetrySpec;\n experiments: {\n active: ExperimentSpec[];\n paused: ExperimentSpec[];\n };\n integrations: ResolvedIntegration[];\n knowledge: ResolvedKnowledge[];\n missing: MissingReference[];\n}\n\nexport interface MissingReference {\n type:\n | 'capability'\n | 'feature'\n | 'dataView'\n | 'workflow'\n | 'policy'\n | 'theme'\n | 'telemetry'\n | 'experiment'\n | 'integrationConnection'\n | 'integrationSpec'\n | 'integrationSlot'\n | 'knowledgeSpace'\n | 'knowledgeSource';\n identifier: string;\n}\n\nexport interface ResolveAppConfigDeps {\n integrationSpecs?: IntegrationSpecRegistry;\n integrationConnections?: IntegrationConnection[];\n knowledgeSpaces?: KnowledgeSpaceRegistry;\n knowledgeSources?: KnowledgeSourceConfig[];\n}\n\nexport interface AppCompositionDeps extends ResolveAppConfigDeps {\n capabilities?: CapabilityRegistry;\n features?: FeatureRegistry;\n dataViews?: DataViewRegistry;\n workflows?: WorkflowRegistry;\n policies?: PolicyRegistry;\n themes?: ThemeRegistry;\n telemetry?: TelemetryRegistry;\n experiments?: ExperimentRegistry;\n}\n\nexport interface ComposeOptions {\n strict?: boolean;\n}\n\nexport function resolveAppConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n deps: ResolveAppConfigDeps = {}\n): ResolvedAppConfig {\n const capabilities = mergeCapabilities(\n blueprint.capabilities,\n tenant.capabilities\n );\n const features = mergeFeatures(blueprint.features, tenant.features);\n const dataViews = mergeMappings(\n blueprint.dataViews ?? {},\n tenant.dataViewOverrides\n );\n const workflows = mergeMappings(\n blueprint.workflows ?? {},\n tenant.workflowOverrides\n );\n const policies = mergePolicies(\n blueprint.policies ?? [],\n tenant.additionalPolicies ?? []\n );\n const theme = mergeTheme(blueprint.theme, tenant.themeOverride);\n const telemetry = mergeTelemetry(\n blueprint.telemetry,\n tenant.telemetryOverride\n );\n const experiments = mergeExperiments(\n blueprint.experiments,\n tenant.experiments\n );\n const featureFlags = mergeFeatureFlags(\n blueprint.featureFlags ?? [],\n tenant.featureFlags ?? []\n );\n const routes = mergeRoutes(\n blueprint.routes ?? [],\n tenant.routeOverrides ?? []\n );\n const { resolved: integrations } = evaluateIntegrationSlots(\n blueprint.integrationSlots,\n tenant.integrations,\n deps.integrationConnections,\n deps.integrationSpecs\n );\n const knowledge = resolveKnowledgeBindings(\n tenant.knowledge,\n deps.knowledgeSpaces,\n deps.knowledgeSources\n );\n const branding = resolveBranding(blueprint.branding, tenant);\n const translation = resolveTranslation(\n blueprint.translationCatalog,\n tenant.locales,\n tenant.translationOverrides\n );\n\n return {\n appId: blueprint.meta.appId,\n tenantId: tenant.meta.tenantId,\n environment: tenant.meta.environment,\n blueprintName: blueprint.meta.name,\n blueprintVersion: blueprint.meta.version,\n configVersion: tenant.meta.version,\n capabilities,\n features,\n dataViews,\n workflows,\n policies,\n theme,\n telemetry,\n experiments,\n featureFlags,\n routes,\n integrations,\n knowledge,\n translation,\n branding,\n notes: tenant.notes ?? blueprint.notes,\n };\n}\n\nexport function composeAppConfig(\n blueprint: AppBlueprintSpec,\n tenant: TenantAppConfig,\n deps: AppCompositionDeps,\n options: ComposeOptions = {}\n): AppComposition {\n const resolved = resolveAppConfig(blueprint, tenant, deps);\n const missing: MissingReference[] = [];\n\n const integrationEvaluation = evaluateIntegrationSlots(\n blueprint.integrationSlots,\n tenant.integrations,\n deps.integrationConnections,\n deps.integrationSpecs\n );\n resolved.integrations = integrationEvaluation.resolved;\n missing.push(...integrationEvaluation.missing);\n missing.push(\n ...collectMissingKnowledge(\n tenant.knowledge ?? [],\n deps.knowledgeSpaces,\n deps.knowledgeSources\n )\n );\n\n const capabilities = resolveCapabilityRefs(\n resolved.capabilities.enabled,\n deps.capabilities,\n missing\n );\n\n const features = resolveFeatureRefs(\n resolved.features.include,\n deps.features,\n missing\n );\n\n const dataViews = resolvePointerRecord(\n resolved.dataViews,\n deps.dataViews,\n 'dataView',\n missing\n );\n\n const workflows = resolvePointerRecord(\n resolved.workflows,\n deps.workflows,\n 'workflow',\n missing\n );\n\n const policies = resolvePolicies(resolved.policies, deps.policies, missing);\n\n const { theme, fallbacks, themeMissing } = resolveThemeBinding(\n resolved.theme,\n deps.themes\n );\n missing.push(...themeMissing);\n\n const { telemetry, telemetryMissing } = resolveTelemetryBinding(\n resolved.telemetry,\n deps.telemetry\n );\n missing.push(...telemetryMissing);\n\n const experiments = resolveExperimentsSpecs(\n resolved.experiments,\n deps.experiments,\n missing\n );\n\n if (options.strict && missing.length > 0) {\n const reasons = missing\n .map((item) => `${item.type}:${item.identifier}`)\n .join(', ');\n throw new Error(`composeAppConfig: missing references -> ${reasons}`);\n }\n\n return {\n resolved,\n capabilities,\n features,\n dataViews,\n workflows,\n policies,\n theme,\n themeFallbacks: fallbacks,\n telemetry,\n experiments,\n integrations: resolved.integrations,\n knowledge: resolved.knowledge,\n missing,\n };\n}\n\nfunction mergeCapabilities(\n blueprint: AppBlueprintSpec['capabilities'],\n tenant: TenantAppConfig['capabilities']\n): { enabled: CapabilityRef[]; disabled: CapabilityRef[] } {\n const enabled = dedupeRefs(\n [...(blueprint?.enabled ?? []), ...(tenant?.enable ?? [])],\n capabilityKey\n );\n const disabled = dedupeRefs(\n [...(blueprint?.disabled ?? []), ...(tenant?.disable ?? [])],\n capabilityKey\n );\n const disabledKeys = new Set(disabled.map(capabilityKey));\n const filteredEnabled = enabled.filter(\n (ref) => !disabledKeys.has(capabilityKey(ref))\n );\n return { enabled: filteredEnabled, disabled };\n}\n\nfunction mergeFeatures(\n blueprint: AppBlueprintSpec['features'],\n tenant: TenantAppConfig['features']\n): { include: FeatureRef[]; exclude: FeatureRef[] } {\n const include = dedupeRefs(\n [...(blueprint?.include ?? []), ...(tenant?.include ?? [])],\n featureKey\n );\n const exclude = dedupeRefs(\n [...(blueprint?.exclude ?? []), ...(tenant?.exclude ?? [])],\n featureKey\n );\n const excludeSet = new Set(exclude.map(featureKey));\n const filteredInclude = include.filter(\n (ref) => !excludeSet.has(featureKey(ref))\n );\n return { include: filteredInclude, exclude };\n}\n\nfunction mergeMappings(\n blueprint: Record<string, SpecPointer>,\n overrides: TenantSpecOverride[] | undefined\n): Record<string, SpecPointer> {\n const merged: Record<string, SpecPointer> = { ...blueprint };\n if (!overrides) return merged;\n for (const override of overrides) {\n if (!override) continue;\n if (!override.pointer) {\n delete merged[override.slot];\n } else {\n merged[override.slot] = override.pointer;\n }\n }\n return merged;\n}\n\nfunction mergePolicies(\n blueprint: PolicyRef[],\n additional: PolicyRef[]\n): PolicyRef[] {\n return dedupeRefs([...blueprint, ...additional], policyKey);\n}\n\nfunction mergeTheme(\n blueprint: AppThemeBinding | undefined,\n override: TenantAppConfig['themeOverride']\n): AppThemeBinding | undefined {\n if (!blueprint && !override) return undefined;\n const primary = override?.primary ?? blueprint?.primary;\n if (!primary) return undefined;\n const fallbacks = override?.fallbacks ?? blueprint?.fallbacks ?? [];\n return { primary, fallbacks };\n}\n\nfunction mergeTelemetry(\n blueprint: TelemetryBinding | undefined,\n override: TenantAppConfig['telemetryOverride']\n): TelemetryBinding | undefined {\n if (!blueprint && !override) return undefined;\n const binding: TelemetryBinding = {\n spec: blueprint?.spec,\n disabledEvents: blueprint?.disabledEvents\n ? [...blueprint.disabledEvents]\n : undefined,\n samplingOverrides: blueprint?.samplingOverrides\n ? { ...blueprint.samplingOverrides }\n : undefined,\n };\n if (override?.spec !== undefined) {\n binding.spec = override.spec ?? undefined;\n }\n if (override?.disabledEvents) {\n binding.disabledEvents = dedupeStrings([\n ...(binding.disabledEvents ?? []),\n ...override.disabledEvents,\n ]);\n }\n if (override?.samplingOverrides) {\n binding.samplingOverrides = {\n ...(binding.samplingOverrides ?? {}),\n ...override.samplingOverrides,\n };\n }\n if (!binding.spec && !binding.disabledEvents?.length) {\n return undefined;\n }\n return binding;\n}\n\nfunction mergeExperiments(\n blueprint: AppBlueprintSpec['experiments'],\n tenant: TenantAppConfig['experiments']\n): {\n catalog: ExperimentRef[];\n active: ExperimentRef[];\n paused: ExperimentRef[];\n} {\n const defaultActive = blueprint?.active ?? [];\n const defaultPaused = blueprint?.paused ?? [];\n const tenantActive = tenant?.active;\n const tenantPaused = tenant?.paused;\n\n const activeSource =\n tenantActive && tenantActive.length > 0 ? tenantActive : defaultActive;\n const pausedSource =\n tenantPaused && tenantPaused.length > 0 ? tenantPaused : defaultPaused;\n\n const active = dedupeRefs(activeSource, experimentKey);\n let paused = dedupeRefs(pausedSource, experimentKey);\n const activeKeys = new Set(active.map(experimentKey));\n paused = paused.filter((ref) => !activeKeys.has(experimentKey(ref)));\n\n const catalog = dedupeRefs(\n [\n ...defaultActive,\n ...defaultPaused,\n ...(tenantActive ?? []),\n ...(tenantPaused ?? []),\n ],\n experimentKey\n );\n\n return { catalog, active, paused };\n}\n\nfunction resolveBranding(\n defaults: BrandingDefaults | undefined,\n tenant: TenantAppConfig\n): ResolvedBranding {\n const override = tenant.branding;\n const tenantMeta = tenant.meta;\n const baseDomain = 'app.localhost';\n const domain =\n override?.customDomain ??\n (override?.subdomain\n ? `${override.subdomain}.${baseDomain}`\n : `${tenantMeta.tenantId}.${baseDomain}`);\n\n const localePreferenceOrder: string[] = [];\n if (tenant.locales?.defaultLocale) {\n localePreferenceOrder.push(tenant.locales.defaultLocale);\n }\n if (override?.appName) {\n localePreferenceOrder.push('default', 'en');\n }\n\n let appName: string | undefined;\n if (override?.appName) {\n for (const key of localePreferenceOrder) {\n const candidate = override.appName[key];\n if (candidate) {\n appName = candidate;\n break;\n }\n }\n if (!appName) {\n const [, firstValue] = Object.entries(override.appName)[0] ?? [];\n if (typeof firstValue === 'string') {\n appName = firstValue;\n }\n }\n }\n if (!appName) {\n appName = defaults?.appNameKey ?? tenantMeta.appId;\n }\n\n const assetEntries = new Map<BrandingAssetRef['type'], string | undefined>();\n\n const applyAssets = (assets?: (BrandingAssetRef | TenantBrandingAsset)[]) => {\n if (!assets) return;\n for (const asset of assets) {\n if (!asset?.type) continue;\n if ('url' in asset && asset.url) {\n assetEntries.set(asset.type, asset.url);\n }\n }\n };\n\n applyAssets(defaults?.assets);\n applyAssets(override?.assets);\n\n const assets: ResolvedBranding['assets'] = {\n logo: assetEntries.get('logo'),\n logoDark: assetEntries.get('logo-dark'),\n favicon: assetEntries.get('favicon'),\n ogImage: assetEntries.get('og-image'),\n };\n\n const colors: ResolvedBranding['colors'] = {\n primary:\n override?.colors?.primary ?? defaults?.colorTokens?.primary ?? '#1f2937',\n secondary:\n override?.colors?.secondary ??\n defaults?.colorTokens?.secondary ??\n '#4b5563',\n };\n\n return {\n appName,\n assets,\n colors,\n domain,\n };\n}\n\nfunction resolveTranslation(\n catalogPointer: TranslationCatalogPointer | undefined,\n locales: TenantAppConfig['locales'],\n overrides: TenantAppConfig['translationOverrides']\n): ResolvedTranslation {\n const defaultLocale = locales?.defaultLocale ?? 'en';\n const enabled = locales?.enabledLocales ?? [];\n const supportedLocales = dedupeStrings([defaultLocale, ...enabled]);\n const entries = overrides?.entries ?? [];\n\n return {\n defaultLocale,\n supportedLocales,\n blueprintCatalog: catalogPointer,\n tenantOverrides: entries,\n };\n}\n\nfunction mergeFeatureFlags(\n blueprint: FeatureFlagState[],\n overrides: FeatureFlagState[]\n): FeatureFlagState[] {\n const merged = new Map<string, FeatureFlagState>();\n for (const flag of blueprint) {\n merged.set(flag.key, { ...flag });\n }\n for (const override of overrides) {\n merged.set(override.key, { ...override });\n }\n return [...merged.values()];\n}\n\nfunction mergeRoutes(\n blueprint: AppRouteConfig[],\n overrides: TenantRouteOverride[]\n): AppRouteConfig[] {\n const routes = new Map<string, AppRouteConfig>();\n for (const route of blueprint) {\n routes.set(route.path, { ...route });\n }\n for (const override of overrides) {\n const existing = routes.get(override.path) ?? { path: override.path };\n if (override.label !== undefined) {\n if (override.label === null) delete existing.label;\n else existing.label = override.label;\n }\n if (override.dataView !== undefined) {\n if (override.dataView === null) delete existing.dataView;\n else existing.dataView = override.dataView;\n }\n if (override.workflow !== undefined) {\n if (override.workflow === null) delete existing.workflow;\n else existing.workflow = override.workflow;\n }\n if (override.guard !== undefined) {\n if (override.guard === null) delete existing.guard;\n else existing.guard = override.guard;\n }\n if (override.featureFlag !== undefined) {\n if (override.featureFlag === null) delete existing.featureFlag;\n else existing.featureFlag = override.featureFlag;\n }\n if (override.experiment !== undefined) {\n if (override.experiment === null) delete existing.experiment;\n else existing.experiment = override.experiment;\n }\n routes.set(existing.path, existing);\n }\n return [...routes.values()];\n}\n\nfunction evaluateIntegrationSlots(\n slots: AppIntegrationSlot[] | undefined,\n bindings: AppIntegrationBinding[] | undefined,\n connections: IntegrationConnection[] | undefined,\n specs: IntegrationSpecRegistry | undefined\n): { resolved: ResolvedIntegration[]; missing: MissingReference[] } {\n const resolved: ResolvedIntegration[] = [];\n const missing: MissingReference[] = [];\n const missingKeys = new Set<string>();\n\n const recordMissing = (entry: MissingReference) => {\n const key = `${entry.type}:${entry.identifier}`;\n if (missingKeys.has(key)) return;\n missingKeys.add(key);\n missing.push(entry);\n };\n\n const slotList = slots ?? [];\n const slotById = new Map<string, AppIntegrationSlot>();\n for (const slot of slotList) {\n slotById.set(slot.slotId, slot);\n }\n\n const bindingsBySlot = new Map<string, AppIntegrationBinding[]>();\n for (const binding of bindings ?? []) {\n const slot = slotById.get(binding.slotId);\n if (!slot) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${binding.slotId}`,\n });\n continue;\n }\n const entries = bindingsBySlot.get(binding.slotId);\n if (entries) entries.push(binding);\n else bindingsBySlot.set(binding.slotId, [binding]);\n }\n\n for (const slot of slotList) {\n const slotBindings = bindingsBySlot.get(slot.slotId) ?? [];\n if (slot.required && slotBindings.length === 0) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${slot.slotId}`,\n });\n }\n }\n\n if (!connections || !specs) {\n return { resolved, missing };\n }\n\n const connectionById = new Map<string, IntegrationConnection>();\n for (const connection of connections) {\n connectionById.set(connection.meta.id, connection);\n }\n\n for (const slot of slotList) {\n const slotBindings = bindingsBySlot.get(slot.slotId) ?? [];\n if (slotBindings.length === 0) continue;\n\n const orderedBindings = [...slotBindings].sort((a, b) => {\n const aPriority = a.priority ?? Number.MAX_SAFE_INTEGER;\n const bPriority = b.priority ?? Number.MAX_SAFE_INTEGER;\n if (aPriority === bPriority) return 0;\n return aPriority < bPriority ? -1 : 1;\n });\n\n let slotResolved = false;\n for (const binding of orderedBindings) {\n const connection = connectionById.get(binding.connectionId);\n if (!connection) {\n recordMissing({\n type: 'integrationConnection',\n identifier: `connection:${binding.connectionId}`,\n });\n continue;\n }\n\n const spec = specs.get(\n connection.meta.integrationKey,\n connection.meta.integrationVersion\n );\n if (!spec) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${connection.meta.integrationKey}.v${connection.meta.integrationVersion}`,\n });\n continue;\n }\n\n if (spec.meta.category !== slot.requiredCategory) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.category`,\n });\n continue;\n }\n\n if (!spec.supportedModes.includes(connection.ownershipMode)) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.mode:${connection.ownershipMode}`,\n });\n continue;\n }\n\n if (\n slot.allowedModes &&\n slot.allowedModes.length > 0 &&\n !slot.allowedModes.includes(connection.ownershipMode)\n ) {\n recordMissing({\n type: 'integrationConnection',\n identifier: `connection:${connection.meta.id}:mode`,\n });\n continue;\n }\n\n if (\n slot.requiredCapabilities &&\n !slot.requiredCapabilities.every((requirement) =>\n integrationProvidesCapability(spec, requirement)\n )\n ) {\n recordMissing({\n type: 'integrationSpec',\n identifier: `spec:${spec.meta.key}.capabilities`,\n });\n continue;\n }\n\n resolved.push({\n slot,\n binding,\n connection,\n spec,\n });\n slotResolved = true;\n break;\n }\n\n if (!slotResolved && slot.required) {\n recordMissing({\n type: 'integrationSlot',\n identifier: `slot:${slot.slotId}`,\n });\n }\n }\n\n return { resolved, missing };\n}\n\nfunction integrationProvidesCapability(\n spec: IntegrationSpec,\n required: CapabilityRef\n): boolean {\n return spec.capabilities.provides.some((capability) => {\n if (capability.key !== required.key) return false;\n if (required.version == null) return true;\n return capability.version === required.version;\n });\n}\n\nfunction resolveKnowledgeBindings(\n bindings: AppKnowledgeBinding[] | undefined,\n spaces: KnowledgeSpaceRegistry | undefined,\n sources: KnowledgeSourceConfig[] | undefined\n): ResolvedKnowledge[] {\n if (!bindings?.length || !spaces) return [];\n const sourceList = sources ?? [];\n return bindings\n .map((binding) => {\n const space = spaces.get(binding.spaceKey, binding.spaceVersion);\n if (!space) return null;\n const relevantSources = sourceList.filter((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n return {\n binding,\n space,\n sources: relevantSources,\n };\n })\n .filter((entry): entry is ResolvedKnowledge => entry !== null);\n}\n\nfunction collectMissingKnowledge(\n bindings: AppKnowledgeBinding[],\n spaces: KnowledgeSpaceRegistry | undefined,\n sources: KnowledgeSourceConfig[] | undefined\n): MissingReference[] {\n if (!bindings.length || !spaces) return [];\n const missing: MissingReference[] = [];\n const sourceList = sources ?? [];\n\n for (const binding of bindings) {\n const space = spaces.get(binding.spaceKey, binding.spaceVersion);\n if (!space) {\n missing.push({\n type: 'knowledgeSpace',\n identifier: binding.spaceVersion\n ? `${binding.spaceKey}@${binding.spaceVersion}`\n : binding.spaceKey,\n });\n continue;\n }\n if (sources) {\n const relevantSources = sourceList.filter((source) => {\n if (source.meta.spaceKey !== binding.spaceKey) return false;\n if (binding.spaceVersion != null) {\n return source.meta.spaceVersion === binding.spaceVersion;\n }\n return true;\n });\n if (relevantSources.length === 0) {\n missing.push({\n type: 'knowledgeSource',\n identifier: binding.spaceVersion\n ? `${binding.spaceKey}@${binding.spaceVersion}`\n : binding.spaceKey,\n });\n }\n }\n }\n\n return missing;\n}\n\nfunction resolveCapabilityRefs(\n refs: CapabilityRef[],\n registry: CapabilityRegistry | undefined,\n missing: MissingReference[]\n): CapabilitySpec[] {\n if (!registry) {\n if (refs.length > 0) {\n for (const ref of refs) {\n missing.push({\n type: 'capability',\n identifier: capabilityKey(ref),\n });\n }\n }\n return [];\n }\n\n const resolved: CapabilitySpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.key, ref.version);\n if (!spec) {\n missing.push({\n type: 'capability',\n identifier: capabilityKey(ref),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolveFeatureRefs(\n refs: FeatureRef[],\n registry: FeatureRegistry | undefined,\n missing: MissingReference[]\n): FeatureModuleSpec[] {\n if (!registry) {\n if (refs.length > 0) {\n for (const ref of refs) {\n missing.push({ type: 'feature', identifier: ref.key });\n }\n }\n return [];\n }\n const resolved: FeatureModuleSpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.key);\n if (!spec) {\n missing.push({ type: 'feature', identifier: ref.key });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolvePointerRecord<TSpec>(\n record: Record<string, SpecPointer>,\n registry:\n | { get(name: string, version?: number): TSpec | undefined }\n | undefined,\n type: 'dataView' | 'workflow',\n missing: MissingReference[]\n): Record<string, TSpec> {\n if (!registry) {\n if (Object.keys(record).length > 0) {\n for (const [slot, pointer] of Object.entries(record)) {\n missing.push({\n type,\n identifier: `${slot} -> ${specPointerKey(pointer)}`,\n });\n }\n }\n return {};\n }\n const resolved: Record<string, TSpec> = {};\n for (const [slot, pointer] of Object.entries(record)) {\n const spec = registry.get(pointer.name, pointer.version);\n if (!spec) {\n missing.push({\n type,\n identifier: `${slot} -> ${specPointerKey(pointer)}`,\n });\n continue;\n }\n resolved[slot] = spec;\n }\n return resolved;\n}\n\nfunction resolvePolicies(\n policies: PolicyRef[],\n registry: PolicyRegistry | undefined,\n missing: MissingReference[]\n): PolicySpec[] {\n if (!registry) {\n if (policies.length > 0) {\n for (const policy of policies) {\n missing.push({\n type: 'policy',\n identifier: policyKey(policy),\n });\n }\n }\n return [];\n }\n const resolved: PolicySpec[] = [];\n for (const policy of policies) {\n const spec = registry.get(policy.name, policy.version);\n if (!spec) {\n missing.push({\n type: 'policy',\n identifier: policyKey(policy),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n}\n\nfunction resolveThemeBinding(\n binding: AppThemeBinding | undefined,\n registry: ThemeRegistry | undefined\n): {\n theme?: ThemeSpec;\n fallbacks: ThemeSpec[];\n themeMissing: MissingReference[];\n} {\n const themeMissing: MissingReference[] = [];\n if (!binding) {\n return { theme: undefined, fallbacks: [], themeMissing };\n }\n if (!registry) {\n themeMissing.push({\n type: 'theme',\n identifier: `${binding.primary.name}.v${binding.primary.version}`,\n });\n for (const fallback of binding.fallbacks ?? []) {\n themeMissing.push({\n type: 'theme',\n identifier: `${fallback.name}.v${fallback.version}`,\n });\n }\n return { theme: undefined, fallbacks: [], themeMissing };\n }\n const theme = registry.get(binding.primary.name, binding.primary.version);\n if (!theme) {\n themeMissing.push({\n type: 'theme',\n identifier: `${binding.primary.name}.v${binding.primary.version}`,\n });\n }\n const fallbacks: ThemeSpec[] = [];\n for (const fallback of binding.fallbacks ?? []) {\n const spec = registry.get(fallback.name, fallback.version);\n if (!spec) {\n themeMissing.push({\n type: 'theme',\n identifier: `${fallback.name}.v${fallback.version}`,\n });\n continue;\n }\n fallbacks.push(spec);\n }\n return { theme: theme ?? undefined, fallbacks, themeMissing };\n}\n\nfunction resolveTelemetryBinding(\n binding: TelemetryBinding | undefined,\n registry: TelemetryRegistry | undefined\n): { telemetry?: TelemetrySpec; telemetryMissing: MissingReference[] } {\n const telemetryMissing: MissingReference[] = [];\n if (!binding?.spec) {\n return { telemetry: undefined, telemetryMissing };\n }\n if (!registry) {\n telemetryMissing.push({\n type: 'telemetry',\n identifier: specPointerKey(binding.spec),\n });\n return { telemetry: undefined, telemetryMissing };\n }\n const telemetry = registry.get(binding.spec.name, binding.spec.version);\n if (!telemetry) {\n telemetryMissing.push({\n type: 'telemetry',\n identifier: specPointerKey(binding.spec),\n });\n }\n return { telemetry: telemetry ?? undefined, telemetryMissing };\n}\n\nfunction resolveExperimentsSpecs(\n experiments: ResolvedAppConfig['experiments'],\n registry: ExperimentRegistry | undefined,\n missing: MissingReference[]\n): { active: ExperimentSpec[]; paused: ExperimentSpec[] } {\n const resolveList = (refs: ExperimentRef[]): ExperimentSpec[] => {\n if (refs.length === 0) return [];\n if (!registry) {\n for (const ref of refs) {\n missing.push({\n type: 'experiment',\n identifier: experimentKey(ref),\n });\n }\n return [];\n }\n const resolved: ExperimentSpec[] = [];\n for (const ref of refs) {\n const spec = registry.get(ref.name, ref.version);\n if (!spec) {\n missing.push({\n type: 'experiment',\n identifier: experimentKey(ref),\n });\n continue;\n }\n resolved.push(spec);\n }\n return resolved;\n };\n\n return {\n active: resolveList(experiments.active),\n paused: resolveList(experiments.paused),\n };\n}\n\nfunction capabilityKey(ref: CapabilityRef) {\n return `${ref.key}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction featureKey(ref: FeatureRef) {\n return ref.key;\n}\n\nfunction specPointerKey(pointer: SpecPointer) {\n return `${pointer.name}${pointer.version ? `.v${pointer.version}` : ''}`;\n}\n\nfunction policyKey(ref: PolicyRef) {\n return `${ref.name}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction experimentKey(ref: ExperimentRef) {\n return `${ref.name}${ref.version ? `.v${ref.version}` : ''}`;\n}\n\nfunction dedupeRefs<T>(refs: T[], keyFn: (value: T) => string): T[] {\n const map = new Map<string, T>();\n for (const ref of refs) {\n map.set(keyFn(ref), ref);\n }\n return [...map.values()];\n}\n\nfunction dedupeStrings(values: string[]): string[] {\n return [...new Set(values)];\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","names":[],"sources":["../../src/app-config/spec.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;UAgBiB,WAAA;;EAAA,OAAA,CAAA,EAAA,MAAW;AAK5B;AAUiB,UAVA,cAAA,CAUyB;EAKzB,IAAA,EAAA,MAAA;EAIG,KAAA,CAAA,EAAA,MAAA;EAEH,QAAA,CAAA,EAAA,MAAA;EAEQ,QAAA,CAAA,EAAA,MAAA;EAAa,KAAA,CAAA,EAlB5B,SAkB4B;EAOrB,WAAA,CAAA,EAAA,MAAgB;EAOhB,UAAA,CAAA,EA9BF,aA8BkB;AAMjC;AAKiB,UAtCA,yBAAA,CAsCyB;EASzB,IAAA,EAAA,MAAA;EACT,OAAA,EAAA,MAAA;;AAGO,UA9CE,kBAAA,CA8CF;EAGD;EACA,MAAA,EAAA,MAAA;EAEO;EACR,gBAAA,EAjDO,mBAiDP;EACU;EACM,YAAA,CAAA,EAjDZ,wBAiDY,EAAA;EAAf;EACe,oBAAA,CAAA,EAhDJ,aAgDI,EAAA;EAAf;EACD,QAAA,CAAA,EAAA,OAAA;EACH;EACI,WAAA,CAAA,EAAA,MAAA;;AAGD,UA/CI,gBAAA,CA+CJ;EAEI,GAAA,EAAA,MAAA;EACN,OAAA,EAAA,OAAA;EAAc,OAAA,CAAA,EAAA,MAAA;EAOZ,WAAA,CAAA,EAAA,MAAA;;AAYH,UA9DO,gBAAA,CA8DP;EAI6B,IAAA,CAAA,EAjE9B,WAiE8B;EAAgB,cAAA,CAAA,EAAA,MAAA,EAAA;EAiBvC,iBAAA,CAAA,EAhFM,MAgFa,CAAA,MAAA,EAAO,MAAA,CAAA;AAI1C;AASU,UA1FO,eAAA,CA0FP;EAGe,OAAA,EA5Fd,QA4Fc;EAIF,SAAA,CAAA,EA/FT,QA+FS,EAAA;;AACI,UA7FV,gBAAA,SAAyB,aA6Ff,CAAA;EAGV;EAKA,IAAA,EAAA,MAAA;EAUA;EACT,OAAA,EAAA,MAAA;EAEK;EACC,KAAA,EAAA,MAAA;;AAIA,UA9GG,gBAAA,CA8GH;EAEQ,IAAA,EA/Gd,gBA+Gc;EACA,YAAA,CAAA,EAAA;IACC,OAAA,CAAA,EA/GT,aA+GS,EAAA;IAET,QAAA,CAAA,EAhHC,aAgHD,EAAA;EACE,CAAA;EAGL,QAAA,CAAA,EAAA;IAEa,OAAA,CAAA,EAnHV,UAmHU,EAAA;IAGX,OAAA,CAAA,EArHC,UAqHD,EAAA;EACA,CAAA;EAEI,gBAAA,CAAA,EAtHI,kBAsHJ,EAAA;EACE,QAAA,CAAA,EAtHN,gBAsHM;EACF,kBAAA,CAAA,EAtHM,yBAsHN;EACH,SAAA,CAAA,EAtHA,MAsHA,CAAA,MAAA,EAtHe,WAsHf,CAAA;EAEK,SAAA,CAAA,EAvHL,MAuHK,CAAA,MAAA,EAvHU,WAuHV,CAAA;EACC,QAAA,CAAA,EAvHP,SAuHO,EAAA;EAGN,KAAA,CAAA,EAzHJ,eAyHI;EAED,SAAA,CAAA,EA1HC,gBA0HD;EAAoB,WAAA,CAAA,EAAA;aAxHpB;aACA;;iBAEI;WACN;;;cAOE,oBAAA;;iBAGI;UASP;uCAI6B;;iBAiBvB,mBAAA,OAA0B;UAIzB,mBAAA;;;;;;;;;UASP;;;yBAGe;;;;uBAIF;uBACA;;UAGN,kBAAA;;YAEL;;UAGK,mBAAA;;;;;UAKP;;eAEK;;UAGE,eAAA;QACT;;aAEK;cACC;;;cAGA;cACA;;sBAEQ;sBACA;uBACC;;cAET;gBACE;;;WAGL;;wBAEa;;;aAGX;aACA;;iBAEI;mBACE;iBACF;cACH;;mBAEK;oBACC;;;cAGN;;aAED"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","names":["latest: AppBlueprintSpec | undefined"],"sources":["../../src/app-config/spec.ts"],"sourcesContent":["import type { OwnerShipMeta } from '../ownership';\nimport type { CapabilityRef } from '../capabilities';\nimport type { FeatureRef } from '../features';\nimport type { PolicyRef } from '../policy/spec';\nimport type { ThemeRef } from '../themes';\nimport type { ExperimentRef } from '../experiments/spec';\nimport type {\n IntegrationCategory,\n IntegrationOwnershipMode,\n} from '../integrations/spec';\nimport type { AppIntegrationBinding } from '../integrations/binding';\nimport type { AppKnowledgeBinding } from '../knowledge/binding';\nimport type { BrandingDefaults, TenantBrandingConfig } from './branding';\nimport type { Locale, TranslationEntry } from '../translations/catalog';\nimport type { ConfigStatus } from './lifecycle';\n\nexport interface SpecPointer {\n name: string;\n version?: number;\n}\n\nexport interface AppRouteConfig {\n path: string;\n label?: string;\n dataView?: string;\n workflow?: string;\n guard?: PolicyRef;\n featureFlag?: string;\n experiment?: ExperimentRef;\n}\n\nexport interface TranslationCatalogPointer {\n name: string;\n version: number;\n}\n\nexport interface AppIntegrationSlot {\n /** Slot identifier unique within the blueprint (e.g., \"primaryPayments\"). */\n slotId: string;\n /** Integration category required to satisfy this slot. */\n requiredCategory: IntegrationCategory;\n /** Ownership modes allowed for this slot (defaults to any supported mode). */\n allowedModes?: IntegrationOwnershipMode[];\n /** Capabilities that must be provided by the integration spec. */\n requiredCapabilities?: CapabilityRef[];\n /** Whether this slot must be satisfied for the app to function. */\n required?: boolean;\n /** Description for App Studio UX. */\n description?: string;\n}\n\nexport interface FeatureFlagState {\n key: string;\n enabled: boolean;\n variant?: string;\n description?: string;\n}\n\nexport interface TelemetryBinding {\n spec?: SpecPointer;\n disabledEvents?: string[];\n samplingOverrides?: Record<string, number>;\n}\n\nexport interface AppThemeBinding {\n primary: ThemeRef;\n fallbacks?: ThemeRef[];\n}\n\nexport interface AppBlueprintMeta extends OwnerShipMeta {\n /** Fully qualified blueprint name (e.g. \"artisan.app\"). */\n name: string;\n /** Versioned definition of the blueprint. Increment on breaking changes. */\n version: number;\n /** Logical application id (e.g. \"artisan\"). */\n appId: string;\n}\n\nexport interface AppBlueprintSpec {\n meta: AppBlueprintMeta;\n capabilities?: {\n enabled?: CapabilityRef[];\n disabled?: CapabilityRef[];\n };\n features?: {\n include?: FeatureRef[];\n exclude?: FeatureRef[];\n };\n integrationSlots?: AppIntegrationSlot[];\n branding?: BrandingDefaults;\n translationCatalog?: TranslationCatalogPointer;\n dataViews?: Record<string, SpecPointer>;\n workflows?: Record<string, SpecPointer>;\n policies?: PolicyRef[];\n theme?: AppThemeBinding;\n telemetry?: TelemetryBinding;\n experiments?: {\n active?: ExperimentRef[];\n paused?: ExperimentRef[];\n };\n featureFlags?: FeatureFlagState[];\n routes?: AppRouteConfig[];\n notes?: string;\n}\n\nconst blueprintKey = (meta: Pick<AppBlueprintMeta, 'name' | 'version'>) =>\n `${meta.name}.v${meta.version}`;\n\nexport class AppBlueprintRegistry {\n private readonly items = new Map<string, AppBlueprintSpec>();\n\n register(spec: AppBlueprintSpec): this {\n const key = blueprintKey(spec.meta);\n if (this.items.has(key)) {\n throw new Error(`Duplicate AppBlueprint ${key}`);\n }\n this.items.set(key, spec);\n return this;\n }\n\n list(): AppBlueprintSpec[] {\n return [...this.items.values()];\n }\n\n get(name: string, version?: number): AppBlueprintSpec | undefined {\n if (version != null) {\n return this.items.get(blueprintKey({ name, version }));\n }\n let latest: AppBlueprintSpec | undefined;\n let maxVersion = -Infinity;\n for (const spec of this.items.values()) {\n if (spec.meta.name !== name) continue;\n if (spec.meta.version > maxVersion) {\n maxVersion = spec.meta.version;\n latest = spec;\n }\n }\n return latest;\n }\n}\n\nexport function makeAppBlueprintKey(meta: AppBlueprintMeta) {\n return blueprintKey(meta);\n}\n\nexport interface TenantAppConfigMeta {\n id: string;\n tenantId: string;\n appId: string;\n blueprintName: string;\n blueprintVersion: number;\n environment?: string;\n /** Monotonic version for auditing changes to the tenant config. */\n version: number;\n status: ConfigStatus;\n createdBy?: string;\n publishedBy?: string;\n publishedAt?: string | Date;\n rolledBackFrom?: number;\n rolledBackTo?: number;\n changeSummary?: string;\n createdAt?: string | Date;\n updatedAt?: string | Date;\n}\n\nexport interface TenantSpecOverride {\n slot: string;\n pointer?: SpecPointer | null;\n}\n\nexport interface TenantRouteOverride {\n path: string;\n label?: string | null;\n dataView?: string | null;\n workflow?: string | null;\n guard?: PolicyRef | null;\n featureFlag?: string | null;\n experiment?: ExperimentRef | null;\n}\n\nexport interface TenantAppConfig {\n meta: TenantAppConfigMeta;\n capabilities?: {\n enable?: CapabilityRef[];\n disable?: CapabilityRef[];\n };\n features?: {\n include?: FeatureRef[];\n exclude?: FeatureRef[];\n };\n dataViewOverrides?: TenantSpecOverride[];\n workflowOverrides?: TenantSpecOverride[];\n additionalPolicies?: PolicyRef[];\n themeOverride?: {\n primary?: ThemeRef | null;\n fallbacks?: ThemeRef[];\n };\n telemetryOverride?: {\n spec?: SpecPointer | null;\n disabledEvents?: string[];\n samplingOverrides?: Record<string, number>;\n };\n experiments?: {\n active?: ExperimentRef[];\n paused?: ExperimentRef[];\n };\n featureFlags?: FeatureFlagState[];\n routeOverrides?: TenantRouteOverride[];\n integrations?: AppIntegrationBinding[];\n knowledge?: AppKnowledgeBinding[];\n locales?: {\n defaultLocale: Locale;\n enabledLocales: Locale[];\n };\n translationOverrides?: {\n entries?: TranslationEntry[];\n };\n branding?: TenantBrandingConfig;\n notes?: string;\n}\n"],"mappings":";AAyGA,MAAM,gBAAgB,SACpB,GAAG,KAAK,KAAK,IAAI,KAAK;AAExB,IAAa,uBAAb,MAAkC;CAChC,AAAiB,wBAAQ,IAAI,KAA+B;CAE5D,SAAS,MAA8B;EACrC,MAAM,MAAM,aAAa,KAAK,KAAK;AACnC,MAAI,KAAK,MAAM,IAAI,IAAI,CACrB,OAAM,IAAI,MAAM,0BAA0B,MAAM;AAElD,OAAK,MAAM,IAAI,KAAK,KAAK;AACzB,SAAO;;CAGT,OAA2B;AACzB,SAAO,CAAC,GAAG,KAAK,MAAM,QAAQ,CAAC;;CAGjC,IAAI,MAAc,SAAgD;AAChE,MAAI,WAAW,KACb,QAAO,KAAK,MAAM,IAAI,aAAa;GAAE;GAAM;GAAS,CAAC,CAAC;EAExD,IAAIA;EACJ,IAAI,aAAa;AACjB,OAAK,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE;AACtC,OAAI,KAAK,KAAK,SAAS,KAAM;AAC7B,OAAI,KAAK,KAAK,UAAU,YAAY;AAClC,iBAAa,KAAK,KAAK;AACvB,aAAS;;;AAGb,SAAO;;;AAIX,SAAgB,oBAAoB,MAAwB;AAC1D,QAAO,aAAa,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/app-config/validation.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAkBY,kBAAA;UAEK,eAAA;EAFL,IAAA,EAAA,MAAA;EAEK,QAAA,EAEL,kBAFoB;EASf,IAAA,EAAA,MAAA;EAEP,OAAA,EAAA,MAAA;EACE,UAAA,CAAA,EAAA,MAAA;EACJ,OAAA,CAAA,EAAA,MAAA;;AAGS,UAPA,gBAAA,CAOiB;EACb,KAAA,EAAA,OAAA;EACD,MAAA,EAPV,eAOU,EAAA;EACC,QAAA,EAPT,eAOS,EAAA;EACJ,IAAA,EAPT,eAOS,EAAA;;AAEH,UANG,iBAAA,CAMH;EACQ,gBAAA,CAAA,EAND,uBAMC;EACF,eAAA,CAAA,EANA,sBAMA;EAGZ,gBAAA,CAAA,EARa,qBAQb,EAAA;EACA,YAAA,CAAA,EARS,kBAQT;EAGA,SAAA,CAAA,EAVM,gBAUN;EACA,SAAA,CAAA,EAVM,gBAUN;EAA2B,iBAAA,CAAA,EATb,qBASa,EAAA;EAyHnB,eAAA,CAAA,EAjII,eAiIU,EAAA;EACjB,mBAAA,CAAA,EAAA;IACH,QAAA,CAAA,EAhIF,0BAgIE,GA/HF,0BA+HE,EAAA,GAAA,SAAA;IACC,SAAA,CAAA,EA7HH,2BA6HG,GA5HH,2BA4HG,EAAA,GAAA,SAAA;EACR,CAAA;;AAWa,iBAfA,cAAA,CAeiB,SAAA,EAdpB,gBAcoB,EAAA,MAAA,EAbvB,eAauB,EAAA,OAAA,CAAA,EAZtB,iBAYsB,CAAA,EAX9B,gBAW8B;AACpB,iBADG,iBAAA,CACH,SAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACF,iBADE,CAAA,EAEV,gBAFU;AACF,iBAMK,oBAAA,CANL,SAAA,EAOE,gBAPF,EAAA,MAAA,EAQD,eARC,EAAA,OAAA,CAAA,EASA,iBATA,CAAA,EAUR,gBAVQ;AACR,iBAca,sBAAA,CAdb,SAAA,EAeU,gBAfV,EAAA,QAAA,EAgBS,iBAhBT,EAAA,OAAA,CAAA,EAiBQ,iBAjBR,CAAA,EAkBA,gBAlBA"}
|