@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presentations.v2.js","names":["html: string","markdown: string"],"sources":["../src/presentations.v2.ts"],"sourcesContent":["import type { AnySchemaModel } from '@lssm/lib.schema';\nimport type { OwnerShipMeta } from './ownership';\nimport type { BlockConfig } from '@blocknote/core';\nimport type { DocId } from './docs/registry';\nimport { schemaToMarkdown } from './schema-to-markdown';\nimport React from 'react';\nimport TurndownService from 'turndown';\n\n/** Supported render targets for the transform engine and descriptors. */\nexport type PresentationTarget =\n | 'react'\n | 'markdown'\n | 'application/json'\n | 'application/xml';\n\nexport interface PresentationV2Meta extends Partial<OwnerShipMeta> {\n /** Fully-qualified presentation name (e.g., \"sigil.auth.webauth_tabs_v2\"). */\n name: string;\n /** Version of this descriptor. Increment on breaking changes. */\n version: number;\n /** Human-readable description for docs/a11y. Required by validators. */\n description?: string;\n /** Optional doc block id for this presentation. */\n docId?: DocId;\n}\n\n/** React component presentation source. */\nexport interface PresentationSourceComponentReact {\n /** Source marker for React component presentations. */\n type: 'component';\n /** Framework for the component source (currently only 'react'). */\n framework: 'react';\n /** Component key resolved by host `componentMap`. */\n componentKey: string;\n /** Optional props schema to validate against. */\n props?: AnySchemaModel;\n}\n\n/** BlockNoteJS document presentation source. */\nexport interface PresentationSourceBlocknotejs {\n /** Source marker for BlockNoteJS document presentations. */\n type: 'blocknotejs';\n /** BlockNoteJS JSON document. */\n docJson: unknown;\n /** Optional BlockNote config to guide rendering. */\n blockConfig?: BlockConfig;\n}\n\nexport type PresentationSource =\n | PresentationSourceComponentReact\n | PresentationSourceBlocknotejs;\n\n/**\n * Normalized presentation descriptor decoupled from framework/adapters.\n * Renderers and validators are provided via TransformEngine.\n */\nexport interface PresentationDescriptorV2 {\n meta: PresentationV2Meta;\n policy?: { flags?: string[]; pii?: string[] };\n source: PresentationSource;\n targets: PresentationTarget[]; // which outputs are supported by transforms\n}\n\nexport interface RenderContext {\n /** Optional locale hint (i18n). */\n locale?: string;\n /** Enabled feature flags to drive conditional rendering. */\n featureFlags?: string[];\n /** Redaction hook for custom PII handling. */\n redact?: (path: string, value: unknown) => unknown;\n /** Optional data for schema-driven rendering (arrays or objects). */\n data?: unknown;\n /** Optional async data fetcher for renderers that need to load data on demand. */\n fetchData?: () => Promise<unknown>;\n}\n\nexport interface PresentationRenderer<TOut> {\n target: PresentationTarget;\n render: (\n desc: PresentationDescriptorV2,\n ctx?: RenderContext\n ) => Promise<TOut>;\n}\n\nexport interface PresentationValidator {\n validate: (\n desc: PresentationDescriptorV2,\n target: PresentationTarget,\n ctx?: RenderContext\n ) => Promise<void> | void;\n}\n\n/**\n * Pluggable transform engine that renders descriptors to various targets\n * and runs validators (e.g., basic metadata checks, PII redaction policies).\n */\nconst turndown = new TurndownService();\n\ninterface BlockNoteNode {\n type?: string;\n content?: BlockNoteNode[];\n text?: string;\n marks?: { type?: string; attrs?: Record<string, any> }[];\n attrs?: Record<string, any>;\n}\n\nfunction renderTextNode(node: BlockNoteNode): string {\n const text = node.text ?? '';\n if (!node.marks || node.marks.length === 0) return text;\n\n return node.marks.reduce((acc, mark) => {\n switch (mark.type) {\n case 'bold':\n return `**${acc}**`;\n case 'italic':\n return `*${acc}*`;\n case 'underline':\n return `__${acc}__`;\n case 'strike':\n return `~~${acc}~~`;\n case 'code':\n return `\\`${acc}\\``;\n case 'link': {\n const href = mark.attrs?.href ?? '';\n return href ? `[${acc}](${href})` : acc;\n }\n default:\n return acc;\n }\n }, text);\n}\n\nfunction renderInline(nodes: BlockNoteNode[] | undefined): string {\n if (!nodes?.length) return '';\n return nodes.map((child) => renderNode(child)).join('');\n}\n\nfunction renderList(\n nodes: BlockNoteNode[] | undefined,\n ordered = false\n): string {\n if (!nodes?.length) return '';\n let counter = 1;\n return nodes\n .map((item) => {\n const body = renderInline(item.content ?? []);\n if (!body) return '';\n const prefix = ordered ? `${counter++}. ` : '- ';\n return `${prefix}${body}`;\n })\n .filter(Boolean)\n .join('\\n');\n}\n\nfunction renderNode(node: BlockNoteNode): string {\n switch (node.type) {\n case 'doc':\n return renderInline(node.content);\n case 'paragraph': {\n const text = renderInline(node.content);\n return text.trim().length ? text : '';\n }\n case 'heading': {\n const level = Math.min(Math.max(node.attrs?.level ?? 1, 1), 6);\n return `${'#'.repeat(level)} ${renderInline(node.content)}`.trim();\n }\n case 'bullet_list':\n return renderList(node.content, false);\n case 'ordered_list':\n return renderList(node.content, true);\n case 'list_item':\n return renderInline(node.content);\n case 'blockquote': {\n const body = renderInline(node.content);\n return body\n .split('\\n')\n .map((line) => `> ${line}`)\n .join('\\n');\n }\n case 'code_block': {\n const body = renderInline(node.content);\n return body ? `\\`\\`\\`\\n${body}\\n\\`\\`\\`` : '';\n }\n case 'horizontal_rule':\n return '---';\n case 'hard_break':\n return '\\n';\n case 'text':\n return renderTextNode(node);\n default:\n if (node.text) return renderTextNode(node);\n return '';\n }\n}\n\nfunction blockNoteToMarkdown(docJson: unknown): string {\n // If already markdown string, return as-is\n if (typeof docJson === 'string') return docJson;\n\n // If HTML string, convert via Turndown\n if (docJson && typeof docJson === 'object' && 'html' in (docJson as any)) {\n const html = String((docJson as any).html);\n return turndown.turndown(html);\n }\n\n const root = docJson as BlockNoteNode;\n if (root?.type === 'doc' || root?.content) {\n const blocks = (root.content ?? [])\n .map((n) => renderNode(n))\n .filter(Boolean);\n return blocks.join('\\n\\n').trim();\n }\n\n try {\n return JSON.stringify(docJson, null, 2);\n } catch {\n return String(docJson);\n }\n}\n\nexport class TransformEngine {\n private renderers = new Map<\n PresentationTarget,\n PresentationRenderer<any>[]\n >();\n private validators: PresentationValidator[] = [];\n\n register<TOut>(renderer: PresentationRenderer<TOut>): this {\n const arr = this.renderers.get(renderer.target) ?? [];\n arr.push(renderer);\n this.renderers.set(renderer.target, arr);\n return this;\n }\n\n /**\n * Register a renderer that will be tried BEFORE existing renderers for the same target.\n * Useful for custom renderers that should take priority over default ones.\n */\n prependRegister<TOut>(renderer: PresentationRenderer<TOut>): this {\n const arr = this.renderers.get(renderer.target) ?? [];\n arr.unshift(renderer);\n this.renderers.set(renderer.target, arr);\n return this;\n }\n\n addValidator(v: PresentationValidator): this {\n this.validators.push(v);\n return this;\n }\n\n async render<TOut = unknown>(\n target: PresentationTarget,\n desc: PresentationDescriptorV2,\n ctx?: RenderContext\n ): Promise<TOut> {\n if (!desc.targets.includes(target))\n throw new Error(\n `Target ${target} not declared for ${desc.meta.name}.v${desc.meta.version}`\n );\n for (const v of this.validators) await v.validate(desc, target, ctx);\n const arr = this.renderers.get(target) ?? [];\n for (const r of arr) {\n try {\n const out = await r.render(desc, ctx);\n // first successful renderer wins\n return out as TOut;\n } catch (_e) {\n // try next\n }\n }\n throw new Error(`No renderer available for ${target}`);\n }\n}\n\n// Minimal built-ins (stubs). Host apps can register concrete adapters.\n/** Create a TransformEngine instance with default markdown/json/xml renderers. */\nexport function createDefaultTransformEngine() {\n const engine = new TransformEngine();\n\n const applyPii = (desc: PresentationDescriptorV2, obj: any) => {\n const clone = JSON.parse(JSON.stringify(obj));\n const paths = desc.policy?.pii ?? [];\n const setAtPath = (root: any, path: string) => {\n const segs = path\n .replace(/^\\//, '')\n .replace(/\\[(\\d+)\\]/g, '.$1')\n .split('.')\n .filter(Boolean);\n let cur = root;\n for (let i = 0; i < segs.length - 1; i++) {\n const k = segs[i]!;\n if (cur && typeof cur === 'object' && k in cur) cur = cur[k];\n else return;\n }\n const last = segs[segs.length - 1];\n if (cur && typeof cur === 'object' && last && last in cur)\n cur[last] = '[REDACTED]';\n };\n for (const p of paths) setAtPath(clone, p);\n return clone;\n };\n\n // markdown output for both blocknote and component\n // Supports schema-driven rendering when ctx.data is provided\n // NOTE: This is a fallback renderer - custom template renderers should be registered\n // AFTER this one and will take priority for presentations they handle\n engine.register<{ mimeType: 'text/markdown'; body: string }>({\n target: 'markdown',\n async render(desc, ctx) {\n // Try to get data from context or fetch it\n let data = ctx?.data;\n if (!data && ctx?.fetchData) {\n data = await ctx.fetchData();\n }\n\n // Schema-driven rendering when data and schema are available\n // Only use schema-driven rendering for SIMPLE data structures:\n // - Arrays of items (for table rendering)\n // - Simple objects matching schema fields (for detail rendering)\n // Complex composite objects (with nested arrays) should be handled by custom renderers\n if (\n desc.source.type === 'component' &&\n desc.source.props &&\n data !== undefined\n ) {\n // Check if data is compatible with schema-driven rendering\n const isArray = Array.isArray(data);\n const isSimpleObject =\n !isArray &&\n typeof data === 'object' &&\n data !== null &&\n !Object.values(data).some(\n (v) => Array.isArray(v) || (typeof v === 'object' && v !== null)\n );\n\n // Only use schema-driven rendering for simple structures\n if (isArray || isSimpleObject) {\n const body = schemaToMarkdown(desc.source.props, data, {\n title: desc.meta.description ?? desc.meta.name,\n description: `${desc.meta.name} v${desc.meta.version}`,\n });\n return { mimeType: 'text/markdown', body };\n }\n\n // Complex data structure - throw to let custom renderers handle\n throw new Error(\n `Complex data structure for ${desc.meta.name} - expecting custom renderer`\n );\n }\n\n // BlockNote rendering\n if (desc.source.type === 'blocknotejs') {\n const markdown = blockNoteToMarkdown(desc.source.docJson);\n const redacted = applyPii(desc, { text: markdown });\n return { mimeType: 'text/markdown', body: String(redacted.text) };\n }\n\n // When data is provided but no schema is available, throw to allow\n // custom renderers in the chain to handle it (they may have their own\n // data fetching and formatting logic)\n if (desc.source.type === 'component' && data !== undefined) {\n throw new Error(\n `No schema (source.props) available for ${desc.meta.name} - expecting custom renderer`\n );\n }\n\n // Metadata-only fallback: only use when no data is expected\n // (e.g., for documentation/introspection purposes)\n if (desc.source.type === 'component') {\n const header = `# ${desc.meta.name} v${desc.meta.version}`;\n const about = desc.meta.description\n ? `\\n\\n${desc.meta.description}`\n : '';\n const tags =\n desc.meta.tags && desc.meta.tags.length\n ? `\\n\\nTags: ${desc.meta.tags.join(', ')}`\n : '';\n const owners =\n desc.meta.owners && desc.meta.owners.length\n ? `\\n\\nOwners: ${desc.meta.owners.join(', ')}`\n : '';\n const comp = `\\n\\nComponent: \\`${desc.source.componentKey}\\``;\n const policy = desc.policy?.pii?.length\n ? `\\n\\nRedacted paths: ${desc.policy.pii.map((p) => `\\`${p}\\``).join(', ')}`\n : '';\n const body = `${header}${about}${tags}${owners}${comp}${policy}`;\n return { mimeType: 'text/markdown', body };\n }\n throw new Error('unsupported');\n },\n });\n\n // json snapshot of source\n engine.register<{ mimeType: 'application/json'; body: string }>({\n target: 'application/json',\n async render(desc) {\n const payload = applyPii(desc, { meta: desc.meta, source: desc.source });\n return {\n mimeType: 'application/json',\n body: JSON.stringify(payload, null, 2),\n };\n },\n });\n\n // xml (simple wrapper around json for now)\n engine.register<{ mimeType: 'application/xml'; body: string }>({\n target: 'application/xml',\n async render(desc) {\n const json = applyPii(desc, { meta: desc.meta, source: desc.source });\n const body = `<presentation name=\"${desc.meta.name}\" version=\"${desc.meta.version}\"><json>${encodeURIComponent(\n JSON.stringify(json)\n )}</json></presentation>`;\n return { mimeType: 'application/xml', body };\n },\n });\n\n return engine;\n}\n\n// React target returns a serializable descriptor the host can render.\n/** Serializable render descriptor for React hosts. */\nexport type ReactRenderDescriptor =\n | {\n kind: 'react_component';\n componentKey: string;\n props?: Record<string, unknown>;\n }\n | { kind: 'blocknotejs'; docJson: unknown; blockConfig?: BlockConfig };\n\n/** Register a default React target renderer that returns a serializable descriptor. */\nexport function registerDefaultReactRenderer(engine: TransformEngine) {\n engine.register<ReactRenderDescriptor>({\n target: 'react',\n async render(desc) {\n if (desc.source.type === 'component') {\n const props = desc.source.props\n ? desc.source.props.getZod().safeParse({}).success\n ? {}\n : undefined\n : undefined;\n return {\n kind: 'react_component',\n componentKey: desc.source.componentKey,\n props,\n } as ReactRenderDescriptor;\n }\n // blocknote\n return {\n kind: 'blocknotejs',\n docJson: desc.source.docJson,\n blockConfig: desc.source.blockConfig,\n } as ReactRenderDescriptor;\n },\n });\n return engine;\n}\n\n/**\n * Add basic validators (e.g., meta.description presence) to the engine.\n */\nexport function registerBasicValidation(engine: TransformEngine) {\n // Ensure description is provided for a11y/i18n/docs\n engine.addValidator({\n validate(desc) {\n if (!desc.meta.description || desc.meta.description.length < 3)\n throw new Error(\n `Presentation ${desc.meta.name}.v${desc.meta.version} missing meta.description`\n );\n },\n });\n return engine;\n}\n\n/**\n * Component map type for React rendering.\n */\nexport type ComponentMap = Record<string, React.ComponentType<any>>;\n\n/**\n * Register a React-to-markdown renderer that renders React components to HTML\n * and converts them to markdown using turndown.\n * This renderer takes priority over the default metadata-only renderer.\n */\nexport function registerReactToMarkdownRenderer(\n engine: TransformEngine,\n componentMap: ComponentMap\n): TransformEngine {\n const turndownService = new TurndownService({\n headingStyle: 'atx',\n codeBlockStyle: 'fenced',\n bulletListMarker: '-',\n });\n\n // Configure turndown to handle links properly\n turndownService.addRule('link', {\n filter: 'a',\n replacement: (content, node) => {\n const href = (node as HTMLAnchorElement).href;\n if (href && content) {\n return `[${content}](${href})`;\n }\n return content || '';\n },\n });\n\n engine.prependRegister<{ mimeType: 'text/markdown'; body: string }>({\n target: 'markdown',\n async render(desc, ctx) {\n // Only handle React component presentations\n if (desc.source.type !== 'component') {\n throw new Error(\n 'React-to-markdown renderer only handles component presentations'\n );\n }\n\n const { renderToStaticMarkup } = await import('react-dom/server');\n\n // Get component from map\n const Component = componentMap[desc.source.componentKey];\n if (!Component) {\n throw new Error(\n `Component ${desc.source.componentKey} not found in componentMap`\n );\n }\n\n // Render component to HTML\n let html: string;\n try {\n const element = React.createElement(\n Component,\n desc.source.props ? {} : undefined\n );\n html = renderToStaticMarkup(element);\n } catch (error) {\n throw new Error(\n `Failed to render component ${desc.source.componentKey}: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`\n );\n }\n\n // Convert HTML to markdown\n let markdown: string;\n try {\n markdown = turndownService.turndown(html);\n } catch (error) {\n throw new Error(\n `Failed to convert HTML to markdown: ${\n error instanceof Error ? error.message : 'Unknown error'\n }`\n );\n }\n\n // Apply PII redaction if needed\n if (desc.policy?.pii && desc.policy.pii.length > 0) {\n // Simple PII redaction - replace text content at paths\n // This is a basic implementation; more sophisticated redaction\n // would require parsing the markdown AST\n const redacted = markdown.replace(/\\[REDACTED\\]/g, '[REDACTED]');\n return { mimeType: 'text/markdown', body: redacted };\n }\n\n return { mimeType: 'text/markdown', body: markdown };\n },\n });\n\n return engine;\n}\n"],"mappings":"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"}
|
package/dist/prompt.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","names":[],"sources":["../src/prompt.ts"],"sourcesContent":[],"mappings":";;;KAEY,eAAA;;AAAA,UAGK,SAAA,CAHU;EAGV,IAAA,EAAA,MAAS;EAWd,WAAA,CAAA,EAAA,MAAiB;EAKZ,QAAA,CAAA,EAAA,OAAU;EAWV,MAAA,EAvBP,GAAA,CAAE,OAuBiB;EAOZ,YAAA,CAAU,EAAA,MAAA;;;;;AAIhB,KA3BC,iBAAA,GA2BD;EAIO,IAAA,EAAA,MAAA;EAAR,IAAE,EAAA,MAAA;CAKyB,GAAA;EAEtB,IAAA,EAAA,UAAA;EAAR,GAAA,EAAA,MAAA;EAAO,KAAA,CAAA,EAAA,MAAA;AAId,CAAA;;AACmB,UAtCF,UAAA,CAsCE;EAAX,IAAA,EAAA,MAAA;EACM,OAAA,EAAA,MAAA;EAAX,KAAA,EAAA,MAAA;EAAU,WAAA,EAAA,MAAA;;cAjCC;;;;UAKG,YAAA;;;;;;;;;UAOA,qBAAqB,GAAA,CAAE;QAChC;QACA;SACC;WACE;;iBAID,GAAA,CAAE,MAAM;;;;mCAKmB;QAE9B,QAAQ;;;iBAIC,uBAAuB,GAAA,CAAE,eACjC,WAAW,KAChB,WAAW"}
|
package/dist/prompt.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","names":[],"sources":["../src/prompt.ts"],"sourcesContent":["import * as z from 'zod';\n\nexport type PromptStability = 'experimental' | 'beta' | 'stable' | 'deprecated';\n\n/** Parameter definition for a prompt argument. */\nexport interface PromptArg {\n name: string;\n description?: string;\n required?: boolean;\n schema: z.ZodType; // zod schema for this argument\n completeWith?: string; // optional completion source name\n}\n\n/**\n * Rendered content part for a prompt. Clients (MCP) can fetch referenced resources.\n */\nexport type PromptContentPart =\n | { type: 'text'; text: string }\n | { type: 'resource'; uri: string; title?: string };\n\n/** Prompt metadata for discoverability and governance. */\nexport interface PromptMeta {\n name: string; // e.g. \"sigil.signup-help\"\n version: number; // bump on breaking change\n title: string;\n description: string;\n tags?: string[];\n stability?: PromptStability;\n owners?: string[];\n}\n\n/** Policy constraints for prompts (flags, PII paths, rate limits). */\nexport interface PromptPolicy {\n flags?: string[];\n pii?: string[]; // JSON-like paths within args to redact in logs/prompts\n rateLimit?: { rpm: number; key: 'user' | 'org' | 'global' };\n}\n\n/** Full prompt specification including args schema and render function. */\nexport interface PromptSpec<I extends z.ZodType> {\n meta: PromptMeta;\n args: PromptArg[];\n input: I; // full args object schema (zod)\n policy?: PromptPolicy;\n\n /** Render MCP-friendly content parts. DO NOT perform side effects here. */\n render: (\n args: z.infer<I>,\n ctx: {\n userId?: string | null;\n orgId?: string | null;\n locale?: string;\n link: (template: string, vars: Record<string, string | number>) => string;\n }\n ) => Promise<PromptContentPart[]>;\n}\n\n/** Identity helper that preserves generic inference when declaring prompts. */\nexport function definePrompt<I extends z.ZodType>(\n spec: PromptSpec<I>\n): PromptSpec<I> {\n return spec;\n}\n"],"mappings":";;;;AA0DA,SAAgB,aACd,MACe;AACf,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptRegistry.d.ts","names":[],"sources":["../src/promptRegistry.ts"],"sourcesContent":[],"mappings":";;;;cAGa,cAAA;;EAAA;EAIQ,QAAE,CAAA,UAAF,GAAA,CAAE,OAAA,CAAA,CAAA,CAAA,EAAY,UAAZ,CAAuB,CAAvB,CAAA,CAAA,EAAA,IAAA;EAAuB;EAAX,IAAA,CAAA,CAAA,EAQ7B,UAR6B,CAAA,GAAA,CAAA,EAAA;EAQ7B;EAK8B,GAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,UAAA,CAAA,GAAA,CAAA,GAAA,SAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promptRegistry.js","names":["candidate: PromptSpec<any> | undefined"],"sources":["../src/promptRegistry.ts"],"sourcesContent":["import type { PromptSpec } from './prompt';\nimport * as z from 'zod';\n\nexport class PromptRegistry {\n private prompts = new Map<string, PromptSpec<any>>(); // key = name.vX\n\n /** Register a prompt. Throws on duplicate name+version. */\n register<I extends z.ZodType>(p: PromptSpec<I>): this {\n const key = `${p.meta.name}.v${p.meta.version}`;\n if (this.prompts.has(key)) throw new Error(`Duplicate prompt ${key}`);\n this.prompts.set(key, p);\n return this;\n }\n\n /** List all registered prompts. */\n list() {\n return [...this.prompts.values()];\n }\n\n /** Get prompt by name; when version omitted, returns highest version. */\n get(name: string, version?: number) {\n if (version != null) return this.prompts.get(`${name}.v${version}`);\n // latest by highest version\n let candidate: PromptSpec<any> | undefined;\n let max = -Infinity;\n for (const [k, p] of this.prompts.entries()) {\n if (!k.startsWith(`${name}.v`)) continue;\n if (p.meta.version > max) {\n max = p.meta.version;\n candidate = p;\n }\n }\n return candidate;\n }\n}\n"],"mappings":";;;AAGA,IAAa,iBAAb,MAA4B;CAC1B,AAAQ,0BAAU,IAAI,KAA8B;;CAGpD,SAA8B,GAAwB;EACpD,MAAM,MAAM,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK;AACtC,MAAI,KAAK,QAAQ,IAAI,IAAI,CAAE,OAAM,IAAI,MAAM,oBAAoB,MAAM;AACrE,OAAK,QAAQ,IAAI,KAAK,EAAE;AACxB,SAAO;;;CAIT,OAAO;AACL,SAAO,CAAC,GAAG,KAAK,QAAQ,QAAQ,CAAC;;;CAInC,IAAI,MAAc,SAAkB;AAClC,MAAI,WAAW,KAAM,QAAO,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,UAAU;EAEnE,IAAIA;EACJ,IAAI,MAAM;AACV,OAAK,MAAM,CAAC,GAAG,MAAM,KAAK,QAAQ,SAAS,EAAE;AAC3C,OAAI,CAAC,EAAE,WAAW,GAAG,KAAK,IAAI,CAAE;AAChC,OAAI,EAAE,KAAK,UAAU,KAAK;AACxB,UAAM,EAAE,KAAK;AACb,gBAAY;;;AAGhB,SAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","names":[],"sources":["../../src/regenerator/adapters.ts"],"sourcesContent":[],"mappings":";;;UAOiB,uBAAA;yBAEJ,4BACF,aACA,OACN,QAAQ;AALb;AAEa,UAMI,mBAAA,CANJ;EACF,UAAA,CAAA,OAAA,EAOE,mBAPF,EAAA,KAAA,EAQA,IARA,EAAA,KAAA,EASA,IATA,CAAA,EAUN,OAVM,CAUE,WAVF,EAAA,CAAA;;AAEE,UAWI,sBAAA,CAXJ;EAAR,YAAA,CAAA,OAAA,EAaQ,mBAbR,EAAA,KAAA,EAcM,IAdN,EAAA,KAAA,EAeM,IAfN,CAAA,EAgBA,OAhBA,CAgBQ,cAhBR,EAAA,CAAA;;AAGY,UAgBA,cAAA,CAhBmB;EAEvB,SAAA,CAAA,EAeC,uBAfD;EACF,MAAA,CAAA,EAeA,mBAfA;EACA,QAAA,CAAA,EAeE,sBAfF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regenerator.docblock.d.ts","names":[],"sources":["../../../src/regenerator/docs/regenerator.docblock.ts"],"sourcesContent":[],"mappings":";;;cAGa,sCAAsC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"regenerator.docblock.js","names":["tech_contracts_regenerator_DocBlocks: DocBlock[]"],"sources":["../../../src/regenerator/docs/regenerator.docblock.ts"],"sourcesContent":["import type { DocBlock } from '@lssm/lib.contracts/docs';\nimport { registerDocBlocks } from '../../registry';\n\nexport const tech_contracts_regenerator_DocBlocks: DocBlock[] = [\n {\n id: 'docs.tech.contracts.regenerator',\n title: 'Regenerator Service',\n summary:\n 'The Regenerator daemon observes telemetry, error, and behavior streams, then suggests spec-level changes (not code patches) that can be reviewed and applied through the App Studio.',\n kind: 'reference',\n visibility: 'public',\n route: '/docs/tech/contracts/regenerator',\n tags: ['tech', 'contracts', 'regenerator'],\n body: \"## Regenerator Service\\n\\nThe Regenerator daemon observes telemetry, error, and behavior streams, then suggests spec-level changes (not code patches) that can be reviewed and applied through the App Studio.\\n\\n- Runtime entrypoint: `packages/libs/contracts/src/regenerator/service.ts`\\n- Types/interfaces: `packages/libs/contracts/src/regenerator/types.ts`\\n- Signal adapters: `packages/libs/contracts/src/regenerator/adapters.ts`\\n\\n### Architecture\\n\\n```text\\nSignal Adapters \\u2500\\u2500\\u25ba RegeneratorService \\u2500\\u2500\\u25ba Rules \\u2500\\u2500\\u25ba ProposalSink\\n \\u25b2 \\u2502\\n \\u2502 \\u25bc\\n Telemetry / Errors / Behavior Spec change proposals\\n```\\n\\n1. **Signal adapters** pull batches of telemetry, error logs, or behavior metrics for each `RegenerationContext`.\\n2. `RegeneratorService` schedules polling (`resolveAppConfig` + `composeAppConfig` provide context).\\n3. **Rules** implement domain heuristics and emit `SpecChangeProposal` objects.\\n4. **Proposal sinks** persist or forward proposals for human review.\\n\\n### Key types\\n\\n```ts\\nexport interface RegenerationContext {\\n id: string;\\n blueprint: AppBlueprintSpec;\\n tenantConfig: TenantAppConfig;\\n resolved: ResolvedAppConfig;\\n}\\n\\nexport interface RegeneratorRule {\\n id: string;\\n description: string;\\n evaluate(\\n context: RegenerationContext,\\n signals: RegeneratorSignal[]\\n ): Promise<SpecChangeProposal[]>;\\n}\\n\\nexport interface SpecChangeProposal {\\n id: string;\\n title: string;\\n summary: string;\\n confidence: 'low' | 'medium' | 'high';\\n target: ProposalTarget;\\n actions: ProposalAction[];\\n blockers?: ProposalBlocker[];\\n signalIds: string[];\\n createdAt: Date;\\n}\\n```\\n\\n- Signals are normalized envelopes: telemetry (`count`, anomaly score), errors, and behavior trends.\\n- Proposals reference blueprint or tenant specs via `ProposalTarget`.\\n- Actions encode what the automation should perform (update blueprint, run tests/migrations, trigger regeneration).\\n\\n### Providing signals\\n\\nImplement `TelemetrySignalProvider`, `ErrorSignalProvider`, or `BehaviorSignalProvider`:\\n\\n```ts\\nconst service = new RegeneratorService({\\n contexts,\\n adapters: {\\n telemetry: new PosthogTelemetryAdapter(),\\n errors: new SentryErrorAdapter(),\\n },\\n rules: [new WorkflowFailureRule(), new DataViewUsageRule()],\\n sink: new ProposalQueueSink(),\\n pollIntervalMs: 60_000,\\n});\\n```\\n\\nAdapters receive the full `RegenerationContext`, making it easy to scope queries per tenant/app.\\n\\n### Authoring rules\\n\\nRules focus on signals \\u2192 proposals:\\n\\n```ts\\nclass WorkflowFailureRule implements RegeneratorRule {\\n id = 'workflow-failure';\\n description = 'Suggest splitting workflows that exceed failure thresholds';\\n\\n async evaluate(context, signals) {\\n const failures = signals.filter(\\n (signal) =>\\n signal.type === 'telemetry' &&\\n signal.signal.eventName === 'workflow.failure' &&\\n signal.signal.count >= 10\\n );\\n\\n if (failures.length === 0) return [];\\n\\n return [\\n {\\n id: `${this.id}-${context.id}`,\\n title: 'Split onboarding workflow',\\n summary: 'Step 3 fails consistently; propose dedicated remediation branch.',\\n confidence: 'medium',\\n rationale: ['Failure count \\u2265 10 within last window'],\\n target: {\\n specType: 'workflow',\\n reference: { name: 'onboarding.workflow', version: 1 },\\n tenantScoped: true,\\n },\\n actions: [\\n { kind: 'update_tenant_config', summary: 'Add alternate fallback path' },\\n { kind: 'run_tests', tests: ['workflows/onboarding.spec.ts'] },\\n ],\\n signalIds: failures.map((f) => f.signal.eventName),\\n createdAt: new Date(),\\n },\\n ];\\n }\\n}\\n```\\n\\n### Reviewing proposals\\n\\nProposals flow to a `ProposalSink` (queue, DB, messaging bus). The Studio will surface:\\n\\n1. Signal evidence (telemetry counts, error metadata)\\n2. Proposed spec diffs and required actions (tests/migrations)\\n3. Approval workflow (approve \\u2192 write spec diff \\u2192 run automation)\\n\\n### CLI driver\\n\\nRun the regenerator daemon from the CLI:\\n\\n```bash\\nbunx contracts regenerator ./app.blueprint.ts ./tenant.config.ts ./regenerator.rules.ts auto \\\\\\n --executor ./regenerator.executor.ts \\\\\\n --poll-interval 60000 \\\\\\n --batch-duration 300000 \\\\\\n --dry-run\\n```\\n\\n- Expects modules exporting default `AppBlueprintSpec`, `TenantAppConfig`, and one or more `RegenerationRule`s.\\n- Pass a sink module path, or use the special `auto` value with `--executor <module>` to instantiate an `ExecutorProposalSink`.\\n- Executor modules can export a `ProposalExecutor` instance, a factory, or a plain dependency object for the executor constructor. Optional exports: `sinkOptions`, `logger`, `onResult`, `dryRun`.\\n- Optionally provide `--contexts ./contexts.ts` to load custom context arrays (advanced multi-tenant scenarios).\\n- Use `--dry-run` to preview actions without mutating specs/configs, and `--once` for CI smoke tests.\\n\\n### Proposal executor\\n\\n`ProposalExecutor` + `ExecutorProposalSink` orchestrate follow-up actions once a proposal is approved:\\n\\n- Interfaces for applying blueprint or tenant-config updates (`BlueprintUpdater`, `TenantConfigUpdater`).\\n- Hooks for running contract tests and migrations (`TestExecutor`, `MigrationExecutor`).\\n- Optional trigger to recompose the runtime (`RegenerationTrigger`).\\n- Built-in `dryRun` mode to preview outcomes.\\n- Pluggable result logging/forwarding via `ExecutorSinkOptions`.\\n\\n```ts\\nimport {\\n ProposalExecutor,\\n ExecutorProposalSink,\\n} from '@lssm/lib.contracts/regenerator';\\n\\nconst executor = new ProposalExecutor({\\n tenantConfigUpdater,\\n testExecutor,\\n migrationExecutor,\\n regenerationTrigger,\\n});\\n\\nconst sink = new ExecutorProposalSink(executor, {\\n dryRun: false,\\n onResult: ({ result }) => console.log(result.status),\\n});\\n```\\n\\nExecution results include per-action status (`success`, `skipped`, `failed`) plus aggregated proposal status (`success`, `partial`, `failed`). Missing dependencies mark actions as `skipped`, making it easy to plug into partial automation flows today and extend later.\\n\\n### Next steps\\n\\n- Build adapters for existing telemetry/error providers.\\n- Encode canonical rules (workflow failure, feature under-use, high latency).\\n- Integrate with App Studio proposal inbox and automate acceptance (write spec diff, run tests, queue migrations).\\n\\n\",\n },\n];\nregisterDocBlocks(tech_contracts_regenerator_DocBlocks);\n"],"mappings":";;;;AAGA,MAAaA,uCAAmD,CAC9D;CACE,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;CACN,YAAY;CACZ,OAAO;CACP,MAAM;EAAC;EAAQ;EAAa;EAAc;CAC1C,MAAM;CACP,CACF;AACD,kBAAkB,qCAAqC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","names":[],"sources":["../../src/regenerator/executor.ts"],"sourcesContent":[],"mappings":";;;KAMY,eAAA;UAEK,qBAAA;EAFL,KAAA,EAAA,MAAA;EAEK,MAAA,EAEP,cAFO;EAEP,MAAA,EACA,eADA;EACA,SAAA,EACG,IADH;EACG,UAAA,EACC,IADD;EACC,MAAA,CAAA,EAAA,MAAA;EAEJ,KAAA,CAAA,EAAA,KAAA;EAAK,MAAA,CAAA,EAAA,OAAA;AAIf;AAGa,UAHI,uBAAA,CAGJ;EACC,UAAA,EAAA,MAAA;EAEH,SAAA,EAAA,MAAA;EAAqB,SAAA,EAHnB,IAGmB;EAGpB,UAAA,EALE,IAKF;EAIA,MAAA,EAAA,SAAA,GAAA,SAAwB,GAAA,QAClC;EAGU,OAAA,EAXD,qBAW0B,EAAA;AACrC;AAIY,KAbA,qBAAA,GAAwB,OAaC,CAZnC,cAaA,EAAA;EAIe,IAAA,EAAA,kBAAgB;CAEpB,CAAA;AACC,KAjBF,wBAAA,GAA2B,OAiBzB,CAhBZ,cAgBY,EAAA;EACF,IAAA,EAAA,sBAAA;CACP,CAAA;AAAO,KAfA,cAAA,GAAiB,OAejB,CAfyB,cAezB,EAAA;EAGK,IAAA,EAAA,WAAA;CAEJ,CAAA;AACC,KApBF,mBAAA,GAAsB,OAoBpB,CAnBZ,cAmBY,EAAA;EACF,IAAA,EAAA,gBAAA;CACP,CAAA;AAAO,KAlBA,yBAAA,GAA4B,OAkB5B,CAjBV,cAiBU,EAAA;EAGK,IAAA,EAAA,sBAAY;CAEhB,CAAA;AACC,UAnBG,gBAAA,CAmBH;EACF,oBAAA,CAAA,OAAA,EAlBC,mBAkBD,EAAA,QAAA,EAjBE,kBAiBF,EAAA,MAAA,EAhBA,qBAgBA,CAAA,EAfP,OAeO,CAAA,OAAA,CAAA;;AACA,UAbK,mBAAA,CAaL;EAGK,uBAAiB,CAAA,OAAA,EAdrB,mBAcqB,EAAA,QAAA,EAbpB,kBAaoB,EAAA,MAAA,EAZtB,wBAYsB,CAAA,EAX7B,OAW6B,CAAA,OAAA,CAAA;;AAGpB,UAXG,YAAA,CAWH;EACF,QAAA,CAAA,OAAA,EAVC,mBAUD,EAAA,QAAA,EATE,kBASF,EAAA,MAAA,EARA,cAQA,CAAA,EAPP,OAOO,CAAA,OAAA,CAAA;;AACA,UALK,iBAAA,CAKL;EAGK,aAAA,CAAA,OAAA,EANJ,mBAMuB,EAAA,QAAA,EALtB,kBAKsB,EAAA,MAAA,EAJxB,mBAIwB,CAAA,EAH/B,OAG+B,CAAA,OAAA,CAAA;;AAGtB,UAHG,mBAAA,CAGH;EACF,mBAAA,CAAA,OAAA,EAFC,mBAED,EAAA,QAAA,EADE,kBACF,EAAA,MAAA,EAAA,yBAAA,CAAA,EACP,OADO,CAAA,OAAA,CAAA;;AACA,UAGK,uBAAA,CAHL;EAGK,MAAA,CAAA,EAAA,OAAA;AAIjB;AACqB,UADJ,oBAAA,CACI;EACG,gBAAA,CAAA,EADH,gBACG;EACP,mBAAA,CAAA,EADO,mBACP;EACK,YAAA,CAAA,EADL,YACK;EACE,iBAAA,CAAA,EADF,iBACE;EAAmB,mBAAA,CAAA,EAAnB,mBAAmB;AAG3C;AACqC,cADxB,gBAAA,CACwB;EAGxB,iBAAA,IAAA;EACC,WAAA,CAAA,IAAA,CAAA,EAJuB,oBAIvB;EACD,OAAA,CAAA,OAAA,EAFA,mBAEA,EAAA,QAAA,EADC,kBACD,EAAA,OAAA,CAAA,EAAA,uBAAA,CAAA,EACR,OADQ,CACA,uBADA,CAAA;EACA,QAAA,aAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","names":["deps: ProposalExecutorDeps","actionResults: ActionExecutionResult[]"],"sources":["../../src/regenerator/executor.ts"],"sourcesContent":["import type {\n SpecChangeProposal,\n ProposalAction,\n RegenerationContext,\n} from './types';\n\nexport type ExecutionStatus = 'success' | 'skipped' | 'failed';\n\nexport interface ActionExecutionResult {\n index: number;\n action: ProposalAction;\n status: ExecutionStatus;\n startedAt: Date;\n finishedAt: Date;\n reason?: string;\n error?: Error;\n output?: unknown;\n}\n\nexport interface ProposalExecutionResult {\n proposalId: string;\n contextId: string;\n startedAt: Date;\n finishedAt: Date;\n status: 'success' | 'partial' | 'failed';\n actions: ActionExecutionResult[];\n}\n\nexport type UpdateBlueprintAction = Extract<\n ProposalAction,\n { kind: 'update_blueprint' }\n>;\nexport type UpdateTenantConfigAction = Extract<\n ProposalAction,\n { kind: 'update_tenant_config' }\n>;\nexport type RunTestsAction = Extract<ProposalAction, { kind: 'run_tests' }>;\nexport type RunMigrationsAction = Extract<\n ProposalAction,\n { kind: 'run_migrations' }\n>;\nexport type TriggerRegenerationAction = Extract<\n ProposalAction,\n { kind: 'trigger_regeneration' }\n>;\n\nexport interface BlueprintUpdater {\n applyBlueprintUpdate(\n context: RegenerationContext,\n proposal: SpecChangeProposal,\n action: UpdateBlueprintAction\n ): Promise<unknown>;\n}\n\nexport interface TenantConfigUpdater {\n applyTenantConfigUpdate(\n context: RegenerationContext,\n proposal: SpecChangeProposal,\n action: UpdateTenantConfigAction\n ): Promise<unknown>;\n}\n\nexport interface TestExecutor {\n runTests(\n context: RegenerationContext,\n proposal: SpecChangeProposal,\n action: RunTestsAction\n ): Promise<unknown>;\n}\n\nexport interface MigrationExecutor {\n runMigrations(\n context: RegenerationContext,\n proposal: SpecChangeProposal,\n action: RunMigrationsAction\n ): Promise<unknown>;\n}\n\nexport interface RegenerationTrigger {\n triggerRegeneration(\n context: RegenerationContext,\n proposal: SpecChangeProposal,\n action: TriggerRegenerationAction\n ): Promise<unknown>;\n}\n\nexport interface ProposalExecutorOptions {\n dryRun?: boolean;\n}\n\nexport interface ProposalExecutorDeps {\n blueprintUpdater?: BlueprintUpdater;\n tenantConfigUpdater?: TenantConfigUpdater;\n testExecutor?: TestExecutor;\n migrationExecutor?: MigrationExecutor;\n regenerationTrigger?: RegenerationTrigger;\n}\n\nexport class ProposalExecutor {\n constructor(private readonly deps: ProposalExecutorDeps = {}) {}\n\n async execute(\n context: RegenerationContext,\n proposal: SpecChangeProposal,\n options: ProposalExecutorOptions = {}\n ): Promise<ProposalExecutionResult> {\n const startedAt = new Date();\n const actionResults: ActionExecutionResult[] = [];\n\n for (const [index, action] of proposal.actions.entries()) {\n const result = await this.executeAction({\n index,\n action,\n context,\n proposal,\n options,\n });\n actionResults.push(result);\n }\n\n const finishedAt = new Date();\n const summaryStatus = summarizeStatus(actionResults);\n\n return {\n proposalId: proposal.id,\n contextId: context.id,\n startedAt,\n finishedAt,\n status: summaryStatus,\n actions: actionResults,\n };\n }\n\n private async executeAction({\n index,\n action,\n context,\n proposal,\n options,\n }: {\n index: number;\n action: ProposalAction;\n context: RegenerationContext;\n proposal: SpecChangeProposal;\n options: ProposalExecutorOptions;\n }): Promise<ActionExecutionResult> {\n const startedAt = new Date();\n const dryRun = options.dryRun ?? false;\n\n const complete = (\n status: ExecutionStatus,\n params: {\n reason?: string;\n output?: unknown;\n error?: Error;\n } = {}\n ): ActionExecutionResult => ({\n index,\n action,\n status,\n startedAt,\n finishedAt: new Date(),\n reason: params.reason,\n output: params.output,\n error: params.error,\n });\n\n if (dryRun) {\n return complete('skipped', { reason: 'dry_run' });\n }\n\n try {\n switch (action.kind) {\n case 'update_blueprint': {\n const updater = this.deps.blueprintUpdater;\n if (!updater) {\n return complete('skipped', { reason: 'missing_blueprint_updater' });\n }\n const output = await updater.applyBlueprintUpdate(\n context,\n proposal,\n action\n );\n return complete('success', { output });\n }\n case 'update_tenant_config': {\n const updater = this.deps.tenantConfigUpdater;\n if (!updater) {\n return complete('skipped', {\n reason: 'missing_tenant_config_updater',\n });\n }\n const output = await updater.applyTenantConfigUpdate(\n context,\n proposal,\n action\n );\n return complete('success', { output });\n }\n case 'run_tests': {\n const executor = this.deps.testExecutor;\n if (!executor) {\n return complete('skipped', { reason: 'missing_test_executor' });\n }\n const output = await executor.runTests(context, proposal, action);\n return complete('success', { output });\n }\n case 'run_migrations': {\n const executor = this.deps.migrationExecutor;\n if (!executor) {\n return complete('skipped', {\n reason: 'missing_migration_executor',\n });\n }\n const output = await executor.runMigrations(\n context,\n proposal,\n action\n );\n return complete('success', { output });\n }\n case 'trigger_regeneration': {\n const trigger = this.deps.regenerationTrigger;\n if (!trigger) {\n return complete('skipped', {\n reason: 'missing_regeneration_trigger',\n });\n }\n const output = await trigger.triggerRegeneration(\n context,\n proposal,\n action\n );\n return complete('success', { output });\n }\n default: {\n return complete('skipped', { reason: 'unknown_action' });\n }\n }\n } catch (error) {\n return complete('failed', {\n error: error instanceof Error ? error : new Error(String(error)),\n });\n }\n }\n}\n\nfunction summarizeStatus(\n actionResults: ActionExecutionResult[]\n): ProposalExecutionResult['status'] {\n if (actionResults.some((result) => result.status === 'failed')) {\n return 'failed';\n }\n if (\n actionResults.some((result) => result.status === 'success') &&\n actionResults.some((result) => result.status === 'skipped')\n ) {\n return 'partial';\n }\n if (actionResults.every((result) => result.status === 'skipped')) {\n return 'partial';\n }\n return 'success';\n}\n"],"mappings":";AAkGA,IAAa,mBAAb,MAA8B;CAC5B,YAAY,AAAiBA,OAA6B,EAAE,EAAE;EAAjC;;CAE7B,MAAM,QACJ,SACA,UACA,UAAmC,EAAE,EACH;EAClC,MAAM,4BAAY,IAAI,MAAM;EAC5B,MAAMC,gBAAyC,EAAE;AAEjD,OAAK,MAAM,CAAC,OAAO,WAAW,SAAS,QAAQ,SAAS,EAAE;GACxD,MAAM,SAAS,MAAM,KAAK,cAAc;IACtC;IACA;IACA;IACA;IACA;IACD,CAAC;AACF,iBAAc,KAAK,OAAO;;EAG5B,MAAM,6BAAa,IAAI,MAAM;EAC7B,MAAM,gBAAgB,gBAAgB,cAAc;AAEpD,SAAO;GACL,YAAY,SAAS;GACrB,WAAW,QAAQ;GACnB;GACA;GACA,QAAQ;GACR,SAAS;GACV;;CAGH,MAAc,cAAc,EAC1B,OACA,QACA,SACA,UACA,WAOiC;EACjC,MAAM,4BAAY,IAAI,MAAM;EAC5B,MAAM,SAAS,QAAQ,UAAU;EAEjC,MAAM,YACJ,QACA,SAII,EAAE,MACqB;GAC3B;GACA;GACA;GACA;GACA,4BAAY,IAAI,MAAM;GACtB,QAAQ,OAAO;GACf,QAAQ,OAAO;GACf,OAAO,OAAO;GACf;AAED,MAAI,OACF,QAAO,SAAS,WAAW,EAAE,QAAQ,WAAW,CAAC;AAGnD,MAAI;AACF,WAAQ,OAAO,MAAf;IACE,KAAK,oBAAoB;KACvB,MAAM,UAAU,KAAK,KAAK;AAC1B,SAAI,CAAC,QACH,QAAO,SAAS,WAAW,EAAE,QAAQ,6BAA6B,CAAC;AAOrE,YAAO,SAAS,WAAW,EAAE,QALd,MAAM,QAAQ,qBAC3B,SACA,UACA,OACD,EACoC,CAAC;;IAExC,KAAK,wBAAwB;KAC3B,MAAM,UAAU,KAAK,KAAK;AAC1B,SAAI,CAAC,QACH,QAAO,SAAS,WAAW,EACzB,QAAQ,iCACT,CAAC;AAOJ,YAAO,SAAS,WAAW,EAAE,QALd,MAAM,QAAQ,wBAC3B,SACA,UACA,OACD,EACoC,CAAC;;IAExC,KAAK,aAAa;KAChB,MAAM,WAAW,KAAK,KAAK;AAC3B,SAAI,CAAC,SACH,QAAO,SAAS,WAAW,EAAE,QAAQ,yBAAyB,CAAC;AAGjE,YAAO,SAAS,WAAW,EAAE,QADd,MAAM,SAAS,SAAS,SAAS,UAAU,OAAO,EAC5B,CAAC;;IAExC,KAAK,kBAAkB;KACrB,MAAM,WAAW,KAAK,KAAK;AAC3B,SAAI,CAAC,SACH,QAAO,SAAS,WAAW,EACzB,QAAQ,8BACT,CAAC;AAOJ,YAAO,SAAS,WAAW,EAAE,QALd,MAAM,SAAS,cAC5B,SACA,UACA,OACD,EACoC,CAAC;;IAExC,KAAK,wBAAwB;KAC3B,MAAM,UAAU,KAAK,KAAK;AAC1B,SAAI,CAAC,QACH,QAAO,SAAS,WAAW,EACzB,QAAQ,gCACT,CAAC;AAOJ,YAAO,SAAS,WAAW,EAAE,QALd,MAAM,QAAQ,oBAC3B,SACA,UACA,OACD,EACoC,CAAC;;IAExC,QACE,QAAO,SAAS,WAAW,EAAE,QAAQ,kBAAkB,CAAC;;WAGrD,OAAO;AACd,UAAO,SAAS,UAAU,EACxB,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC,EACjE,CAAC;;;;AAKR,SAAS,gBACP,eACmC;AACnC,KAAI,cAAc,MAAM,WAAW,OAAO,WAAW,SAAS,CAC5D,QAAO;AAET,KACE,cAAc,MAAM,WAAW,OAAO,WAAW,UAAU,IAC3D,cAAc,MAAM,WAAW,OAAO,WAAW,UAAU,CAE3D,QAAO;AAET,KAAI,cAAc,OAAO,WAAW,OAAO,WAAW,UAAU,CAC9D,QAAO;AAET,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","names":[],"sources":["../../src/regenerator/service.ts"],"sourcesContent":[],"mappings":";;;;UAeiB,kBAAA;YACL;EADK,QAAA,EAEL,cAFuB;EACvB,KAAA,EAEH,gBAFG,EAAA;EACA,IAAA,EAEJ,YAFI;EACH,cAAA,CAAA,EAAA,MAAA;EACD,eAAA,CAAA,EAAA,MAAA;EAGQ,KAAA,CAAA,EAAA,GAAA,GAAA,IAAA;;AAMH,cAAA,kBAAA,CAS2B;;;;;;;;;uBAAA;;;aA4BrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","names":["options: RegeneratorOptions","proposals: SpecChangeProposal[]","envelopes: RegeneratorSignal[]","delay"],"sources":["../../src/regenerator/service.ts"],"sourcesContent":["import { setTimeout as delay } from 'node:timers/promises';\nimport type {\n ProposalSink,\n RegeneratorSignal,\n RegenerationRule,\n RegenerationContext,\n SpecChangeProposal,\n} from './types';\nimport type { SignalAdapters } from './adapters';\nimport {\n telemetryToEnvelope,\n errorToEnvelope,\n behaviorToEnvelope,\n} from './utils';\n\nexport interface RegeneratorOptions {\n contexts: RegenerationContext[];\n adapters: SignalAdapters;\n rules: RegenerationRule[];\n sink: ProposalSink;\n pollIntervalMs?: number;\n batchDurationMs?: number;\n clock?: () => Date;\n}\n\nconst DEFAULT_POLL_INTERVAL = 60_000;\nconst DEFAULT_BATCH_DURATION = 5 * 60_000;\n\nexport class RegeneratorService {\n private readonly contexts: Map<string, RegenerationContext>;\n private readonly lastPoll = new Map<string, Date>();\n private timer?: NodeJS.Timeout | number;\n private running = false;\n private readonly pollInterval: number;\n private readonly batchDuration: number;\n private readonly clock: () => Date;\n\n constructor(private readonly options: RegeneratorOptions) {\n this.contexts = new Map(options.contexts.map((ctx) => [ctx.id, ctx]));\n this.pollInterval = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL;\n this.batchDuration = options.batchDurationMs ?? DEFAULT_BATCH_DURATION;\n this.clock = options.clock ?? (() => new Date());\n if (this.options.rules.length === 0) {\n throw new Error('RegeneratorService requires at least one rule');\n }\n }\n\n start() {\n if (this.running) return;\n this.running = true;\n void this.tick();\n this.timer = setInterval(() => {\n void this.tick();\n }, this.pollInterval);\n }\n\n stop() {\n if (!this.running) return;\n this.running = false;\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n }\n }\n\n async runOnce(): Promise<void> {\n await this.tick();\n }\n\n private async tick(): Promise<void> {\n const now = this.clock();\n const sinceDefault = new Date(now.getTime() - this.batchDuration);\n for (const context of this.contexts.values()) {\n const last = this.lastPoll.get(context.id) ?? sinceDefault;\n await this.evaluateContext(context, last, now);\n this.lastPoll.set(context.id, now);\n }\n }\n\n private async evaluateContext(\n context: RegenerationContext,\n since: Date,\n until: Date\n ): Promise<void> {\n const signals = await this.collectSignals(context, since, until);\n if (signals.length === 0) return;\n\n for (const rule of this.options.rules) {\n let proposals: SpecChangeProposal[] = [];\n try {\n proposals = await rule.evaluate(context, signals);\n } catch (error) {\n console.error(\n `[regenerator] rule ${rule.id} failed`,\n error instanceof Error ? error : new Error(String(error))\n );\n continue;\n }\n await this.flushProposals(context, proposals);\n }\n }\n\n private async collectSignals(\n context: RegenerationContext,\n since: Date,\n until: Date\n ): Promise<RegeneratorSignal[]> {\n const envelopes: RegeneratorSignal[] = [];\n const { adapters } = this.options;\n if (adapters.telemetry) {\n const telemetrySignals = await adapters.telemetry.pollTelemetry(\n context,\n since,\n until\n );\n envelopes.push(\n ...telemetrySignals.map((signal) =>\n telemetryToEnvelope(context.id, signal, this.clock)\n )\n );\n }\n if (adapters.errors) {\n const errorSignals = await adapters.errors.pollErrors(\n context,\n since,\n until\n );\n envelopes.push(\n ...errorSignals.map((signal) =>\n errorToEnvelope(context.id, signal, this.clock)\n )\n );\n }\n if (adapters.behavior) {\n const behaviorSignals = await adapters.behavior.pollBehavior(\n context,\n since,\n until\n );\n envelopes.push(\n ...behaviorSignals.map((signal) =>\n behaviorToEnvelope(context.id, signal, this.clock)\n )\n );\n }\n return envelopes;\n }\n\n private async flushProposals(\n context: RegenerationContext,\n proposals: SpecChangeProposal[]\n ): Promise<void> {\n for (const proposal of proposals) {\n if (proposal.signalIds.length === 0) continue;\n await this.options.sink.submit(context, proposal);\n // allow event loop to breathe when large volumes\n if (proposals.length > 10) {\n await delay(0);\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sinks.d.ts","names":[],"sources":["../../src/regenerator/sinks.ts"],"sourcesContent":[],"mappings":";;;;UAQiB,qBAAA;EAAA,OAAA,EACN,mBAD2B;EAC3B,QAAA,EACC,kBADD;EACC,MAAA,EACF,uBADE;;AACqB,UAGhB,kBAAA,CAHgB;EAGhB,IAAA,CAAA,EAAA,CAAA,OAAA,EAAA,MAAkB,EAAA,IAAA,CAAA,EACD,MADC,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IAAA;EACD,KAAA,CAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAGvB,KAHuB,EAAA,IAAA,CAAA,EAIvB,MAJuB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IAAA;;AAIvB,UAIM,mBAAA,CAJN;EAAM,MAAA,CAAA,EAAA,OAAA;EAIA,QAAA,CAAA,EAAA,CAAA,OAAA,EAEM,qBAFa,EAAA,GAAA,IAAA,GAEoB,OAFpB,CAAA,IAAA,CAAA;EAEb,MAAA,CAAA,EACZ,kBADY;;AACZ,cAGE,oBAAA,YAAgC,YAHlC,CAAA;EAAkB,iBAAA,QAAA;EAGhB,iBAAA,OAAqB;EAEH,WAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EACD,mBADC;EACD,MAAA,CAAA,OAAA,EAIjB,mBAJiB,EAAA,QAAA,EAKhB,kBALgB,CAAA,EAMzB,OANyB,CAAA,IAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sinks.js","names":["executor: ProposalExecutor","options: ExecutorSinkOptions"],"sources":["../../src/regenerator/sinks.ts"],"sourcesContent":["import type {\n ProposalSink,\n RegenerationContext,\n SpecChangeProposal,\n} from './types';\nimport { ProposalExecutor } from './executor';\nimport type { ProposalExecutionResult } from './executor';\n\nexport interface ExecutorResultPayload {\n context: RegenerationContext;\n proposal: SpecChangeProposal;\n result: ProposalExecutionResult;\n}\n\nexport interface ExecutorSinkLogger {\n info?: (message: string, meta?: Record<string, unknown>) => void;\n error?: (\n message: string,\n error: Error,\n meta?: Record<string, unknown>\n ) => void;\n}\n\nexport interface ExecutorSinkOptions {\n dryRun?: boolean;\n onResult?: (payload: ExecutorResultPayload) => void | Promise<void>;\n logger?: ExecutorSinkLogger;\n}\n\nexport class ExecutorProposalSink implements ProposalSink {\n constructor(\n private readonly executor: ProposalExecutor,\n private readonly options: ExecutorSinkOptions = {}\n ) {}\n\n async submit(\n context: RegenerationContext,\n proposal: SpecChangeProposal\n ): Promise<void> {\n const dryRun = this.options.dryRun ?? false;\n try {\n const result = await this.executor.execute(context, proposal, { dryRun });\n if (this.options.logger?.info) {\n this.options.logger.info('[regenerator] proposal executed', {\n proposalId: proposal.id,\n contextId: context.id,\n status: result.status,\n });\n }\n if (this.options.onResult) {\n await this.options.onResult({ context, proposal, result });\n }\n } catch (error) {\n if (this.options.logger?.error) {\n this.options.logger.error(\n '[regenerator] proposal execution failed',\n error instanceof Error ? error : new Error(String(error)),\n { proposalId: proposal.id, contextId: context.id }\n );\n }\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n}\n"],"mappings":";AA6BA,IAAa,uBAAb,MAA0D;CACxD,YACE,AAAiBA,UACjB,AAAiBC,UAA+B,EAAE,EAClD;EAFiB;EACA;;CAGnB,MAAM,OACJ,SACA,UACe;EACf,MAAM,SAAS,KAAK,QAAQ,UAAU;AACtC,MAAI;GACF,MAAM,SAAS,MAAM,KAAK,SAAS,QAAQ,SAAS,UAAU,EAAE,QAAQ,CAAC;AACzE,OAAI,KAAK,QAAQ,QAAQ,KACvB,MAAK,QAAQ,OAAO,KAAK,mCAAmC;IAC1D,YAAY,SAAS;IACrB,WAAW,QAAQ;IACnB,QAAQ,OAAO;IAChB,CAAC;AAEJ,OAAI,KAAK,QAAQ,SACf,OAAM,KAAK,QAAQ,SAAS;IAAE;IAAS;IAAU;IAAQ,CAAC;WAErD,OAAO;AACd,OAAI,KAAK,QAAQ,QAAQ,MACvB,MAAK,QAAQ,OAAO,MAClB,2CACA,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC,EACzD;IAAE,YAAY,SAAS;IAAI,WAAW,QAAQ;IAAI,CACnD;AAEH,SAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/regenerator/types.ts"],"sourcesContent":[],"mappings":";;;;;KAIY,iBAAA,GACR,0BACA,sBACA;UAEa,uBAAA;EALL,IAAA,EAAA,WAAA;EACR,SAAA,EAAA,MAAA;EACA,MAAA,EAMM,eANN;;AACsB,UAQT,eAAA,CARS;EAET,SAAA,EAAA,MAAA;EAMA,YAAA,EAAA,MAAe;EAIjB,KAAA,EAAA,MAAA;EACF,WAAA,EADE,IACF;EAGA,SAAA,EAHA,IAGA;EACK,YAAA,CAAA,EAAA,MAAA;EAAa,cAAA,CAAA,EAAA,QAAA,GAAA,SAAA,GAAA,UAAA;EAGd,QAAA,CAAA,EAJJ,MAII,CAAA,MAAmB,EAAA,OAAA,CAAA;EAMnB,aAAA,CAAW,EATV,aAaJ;AAKd;AAMiB,UArBA,mBAAA,CAqBc;EAKhB,IAAA,EAAA,OAAA;EACF,SAAA,EAAA,MAAA;EACA,MAAA,EAzBH,WAyBG;;AAGI,UAzBA,WAAA,CAyBkB;EAIrB,EAAA,EAAA,MAAA;EAEJ,cAAA,EAAA,SAAA,GAAA,QAAA,GAAA,UAAA,GAAA,SAAA;EAEC,OAAA,EAAA,MAAA;EACE,UAAA,EA9BC,IA8BD;EACA,KAAA,EAAA,MAAA;EAAI,QAAA,CAAA,EA7BJ,MA6BI,CAAA,MAAA,EAAA,OAAA,CAAA;AAIjB;AAEiB,UAhCA,sBAAA,CAgCc;EAiBnB,IAAA,EAAA,UAAA;EAsBK,SAAA,EAAA,MAAA;EASA,MAAA,EA7EP,cA6E0B;;AAGpB,UA7EC,cAAA,CA6ED;EACJ,OAAA,EAAA,MAAA;EAAiB,MAAA,EAAA,OAAA,GAAA,YAAA,GAAA,SAAA,GAAA,QAAA;EAGZ,KAAA,EAAA,MAAA;EAIJ,QAAA,CAAA,EAAA,MAAA;EACA,WAAA,EAjFE,IAiFF;EACA,SAAA,EAjFA,IAiFA;EAAR,QAAA,CAAA,EAhFQ,MAgFR,CAAA,MAAA,EAAA,OAAA,CAAA;;AAGY,UAhFA,kBAAA,CAgFY;EAEhB,EAAA,EAAA,MAAA;EACC,KAAA,EAAA,MAAA;EACT,OAAA,EAAA,MAAA;EAAO,UAAA,EAhFE,kBAgFF;;UA9EF;;WAEC;aACE;aACA;;;KAID,kBAAA;UAEK,cAAA;;;;;;;;KAiBL,cAAA;;;;;;;;;;;;;;;;UAsBK,eAAA;;;;UASA,mBAAA;;aAEJ;gBACG;YACJ;;UAGK,gBAAA;;;oBAIJ,8BACA,sBACR,QAAQ;;UAGI,YAAA;kBAEJ,+BACC,qBACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/regenerator/utils.ts"],"sourcesContent":[],"mappings":";;;KASK,KAAA,SAAc;iBAEH,mBAAA,4BAEN,wBACD,QACN;AANE,iBAcW,eAAA,CAdO,SAAA,EAAA,MAAA,EAAA,MAAA,EAgBb,WAhBa,EAAA,KAAA,EAiBd,KAjBc,CAAA,EAkBpB,mBAlBoB;AAEP,iBAwBA,kBAAA,CAxBmB,SAAA,EAAA,MAAA,EAAA,MAAA,EA0BzB,cA1ByB,EAAA,KAAA,EA2B1B,KA3B0B,CAAA,EA4BhC,sBA5BgC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../src/regenerator/utils.ts"],"sourcesContent":["import type {\n BehaviorSignal,\n BehaviorSignalEnvelope,\n ErrorSignal,\n ErrorSignalEnvelope,\n TelemetrySignal,\n TelemetrySignalEnvelope,\n} from './types';\n\ntype Clock = () => Date;\n\nexport function telemetryToEnvelope(\n contextId: string,\n signal: TelemetrySignal,\n clock: Clock\n): TelemetrySignalEnvelope {\n return {\n type: 'telemetry',\n contextId,\n signal: normalizeTelemetryDates(signal, clock),\n };\n}\n\nexport function errorToEnvelope(\n contextId: string,\n signal: ErrorSignal,\n clock: Clock\n): ErrorSignalEnvelope {\n return {\n type: 'error',\n contextId,\n signal: normalizeErrorDates(signal, clock),\n };\n}\n\nexport function behaviorToEnvelope(\n contextId: string,\n signal: BehaviorSignal,\n clock: Clock\n): BehaviorSignalEnvelope {\n return {\n type: 'behavior',\n contextId,\n signal: normalizeBehaviorDates(signal, clock),\n };\n}\n\nfunction normalizeTelemetryDates(\n signal: TelemetrySignal,\n clock: Clock\n): TelemetrySignal {\n return {\n ...signal,\n windowStart: toDate(signal.windowStart, clock),\n windowEnd: toDate(signal.windowEnd, clock),\n };\n}\n\nfunction normalizeErrorDates(signal: ErrorSignal, clock: Clock): ErrorSignal {\n return {\n ...signal,\n occurredAt: toDate(signal.occurredAt, clock),\n };\n}\n\nfunction normalizeBehaviorDates(\n signal: BehaviorSignal,\n clock: Clock\n): BehaviorSignal {\n return {\n ...signal,\n windowStart: toDate(signal.windowStart, clock),\n windowEnd: toDate(signal.windowEnd, clock),\n };\n}\n\nfunction toDate(value: Date | string, clock: Clock): Date {\n if (value instanceof Date) return value;\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) {\n return clock();\n }\n return parsed;\n}\n"],"mappings":";AAWA,SAAgB,oBACd,WACA,QACA,OACyB;AACzB,QAAO;EACL,MAAM;EACN;EACA,QAAQ,wBAAwB,QAAQ,MAAM;EAC/C;;AAGH,SAAgB,gBACd,WACA,QACA,OACqB;AACrB,QAAO;EACL,MAAM;EACN;EACA,QAAQ,oBAAoB,QAAQ,MAAM;EAC3C;;AAGH,SAAgB,mBACd,WACA,QACA,OACwB;AACxB,QAAO;EACL,MAAM;EACN;EACA,QAAQ,uBAAuB,QAAQ,MAAM;EAC9C;;AAGH,SAAS,wBACP,QACA,OACiB;AACjB,QAAO;EACL,GAAG;EACH,aAAa,OAAO,OAAO,aAAa,MAAM;EAC9C,WAAW,OAAO,OAAO,WAAW,MAAM;EAC3C;;AAGH,SAAS,oBAAoB,QAAqB,OAA2B;AAC3E,QAAO;EACL,GAAG;EACH,YAAY,OAAO,OAAO,YAAY,MAAM;EAC7C;;AAGH,SAAS,uBACP,QACA,OACgB;AAChB,QAAO;EACL,GAAG;EACH,aAAa,OAAO,OAAO,aAAa,MAAM;EAC9C,WAAW,OAAO,OAAO,WAAW,MAAM;EAC3C;;AAGH,SAAS,OAAO,OAAsB,OAAoB;AACxD,KAAI,iBAAiB,KAAM,QAAO;CAClC,MAAM,SAAS,IAAI,KAAK,MAAM;AAC9B,KAAI,OAAO,MAAM,OAAO,SAAS,CAAC,CAChC,QAAO,OAAO;AAEhB,QAAO"}
|
package/dist/registry.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","names":[],"sources":["../src/registry.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA0Be,KANH,YAAA,GAMG,GAAA,MAAA,KAAA,MAAA,EAAA;AAAY,iBAJX,KAAA,CAIW,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAJ2B,YAI3B;AAAA,KAAtB,OAAA,GAAU,YAIA,CAHb,cAGgD,EAFhD,cAEuD,GAFtC,qBAEsC,CAAA,OAAA,CAAA,CAAA;AAMzD,KANK,UAAA,GAMQ,CAAY,IAAA,EAAA,GAAA,EAAA,GAAA,EANU,UAMV,EAAA,GANyB,OAMzB,CAAA,OAAA,CAAA;;;;;AAcC,cAdb,YAAA,CAca;EAAhB,QAAA,KAAA;EAgBI,QAAA,QAAA;EACA;;;;;;;EACoC,QAAA,CAAA,UApBpC,cAoBoC,EAAA,UAnBpC,cAmBoC,GAnBnB,qBAmBmB,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,EAlBxC,YAkBwC,CAlB3B,CAkB2B,EAlBxB,CAkBwB,CAAA,CAAA,EAAA,IAAA;EAAX;;;;;;;;EA2E3B,IAAA,CAAA,UA7EE,cA6EF,EAAA,UA5EE,cA4EF,GA5EmB,qBA4EnB,CAAA,OAAA,CAAA,CAAA,CAAA,IAAA,EA3EF,YA2EE,CA3EW,CA2EX,EA3Ec,CA2Ed,CAAA,EAAA,OAAA,EA3E2B,UA2E3B,CA3EsC,YA2EtC,CA3EmD,CA2EnD,EA3EsD,CA2EtD,CAAA,CAAA,CAAA,EAAA,IAAA;;;;;;;;2CAzD+B;;;;8CAkBG;;eAO/B;;;UAKQ;aAAkB;;;;;;;;;;;;;;;6EA0BhC,aACJ"}
|
package/dist/registry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","names":["key: OperationKey","found: AnySpec | undefined","out: { spec: AnySpec; handler: AnyHandler }[]","key","result: unknown"],"sources":["../src/registry.ts"],"sourcesContent":["/**\n * SpecRegistry:\n * - Registers ContractSpecs (unique by name+version)\n * - Binds runtime handlers to specs\n * - Provides lookup, iteration, and a safe execute() with validation/policy/enforcement\n *\n * Includes a minimal OpRegistry shim for backward-compat (deprecated).\n */\nimport {\n type ContractSpec,\n type TelemetryTrigger,\n isEmitDeclRef,\n} from './spec';\nimport type { ResourceRefDescriptor } from './resources';\nimport type { HandlerCtx } from './types';\nimport { eventKey } from './events';\nimport type { AnySchemaModel, ZodSchemaModel } from '@lssm/lib.schema';\nimport type { HandlerFor } from './install';\nexport { registerDocBlocks, defaultDocRegistry, docId } from './docs/registry';\n\nexport type OperationKey = `${string}.v${number}`;\n\nexport function opKey(name: string, version: number): OperationKey {\n return `${name}.v${version}`;\n}\n\ntype AnySpec = ContractSpec<\n AnySchemaModel,\n AnySchemaModel | ResourceRefDescriptor<boolean>\n>;\ntype AnyHandler = (args: any, ctx: HandlerCtx) => Promise<unknown>;\n\n/**\n * In-memory registry for ContractSpecs and their bound handlers.\n * Provides validation, policy enforcement, and guarded event emission at execute time.\n */\nexport class SpecRegistry {\n private specs = new Map<OperationKey, AnySpec>();\n private handlers = new Map<OperationKey, AnyHandler>();\n\n /**\n * Registers a ContractSpec definition.\n *\n * @param spec - The contract specification to register.\n * @returns The registry instance for chaining.\n * @throws If a spec with the same name and version is already registered.\n */\n register<\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n >(spec: ContractSpec<I, O>): this {\n const key = opKey(spec.meta.name, spec.meta.version);\n if (this.specs.has(key)) throw new Error(`Duplicate spec ${key}`);\n this.specs.set(key, spec as AnySpec);\n return this;\n }\n\n /**\n * Binds a runtime handler implementation to a previously registered spec.\n *\n * @param spec - The spec to bind to.\n * @param handler - The async function implementing the business logic.\n * @returns The registry instance for chaining.\n * @throws If the spec is not found or a handler is already bound.\n */\n bind<\n I extends AnySchemaModel,\n O extends AnySchemaModel | ResourceRefDescriptor<boolean>,\n >(spec: ContractSpec<I, O>, handler: HandlerFor<ContractSpec<I, O>>): this {\n const key: OperationKey = opKey(spec.meta.name, spec.meta.version);\n\n if (!this.specs.has(key))\n throw new Error(`Cannot bind; spec not found: ${key}`);\n if (this.handlers.has(key))\n throw new Error(`Handler already bound for ${key}`);\n this.handlers.set(key, handler);\n return this;\n }\n\n /**\n * Retrieves a registered spec by name and version.\n * If version is omitted, returns the highest version found.\n *\n * @param name - Operation name.\n * @param version - (Optional) Specific version.\n */\n getSpec(name: string, version?: number): AnySpec | undefined {\n if (version != null) return this.specs.get(opKey(name, version));\n // find highest version by scanning keys of the same name\n let found: AnySpec | undefined;\n let maxV = -Infinity;\n for (const [k, s] of this.specs.entries()) {\n if (!k.startsWith(`${name}.v`)) continue;\n if (s.meta.version > maxV) {\n maxV = s.meta.version;\n found = s;\n }\n }\n return found;\n }\n\n /**\n * Retrieves the bound handler for a spec.\n */\n getHandler(name: string, version?: number): AnyHandler | undefined {\n const spec = this.getSpec(name, version);\n if (!spec) return undefined;\n return this.handlers.get(opKey(spec.meta.name, spec.meta.version));\n }\n\n /** Iterate all registered specs. */\n listSpecs(): AnySpec[] {\n return [...this.specs.values()];\n }\n\n /** Iterate all bound operations (spec+handler). */\n listBound(): { spec: AnySpec; handler: AnyHandler }[] {\n const out: { spec: AnySpec; handler: AnyHandler }[] = [];\n for (const [k, spec] of this.specs.entries()) {\n const h = this.handlers.get(k);\n if (h) out.push({ spec, handler: h });\n }\n return out;\n }\n\n /**\n * Execute an operation by name/version with full runtime protections:\n * 1. Validates input against Zod schema.\n * 2. Enforces policy (Auth, RBAC, Rate Limits) via PDP.\n * 3. Guards event emission to ensure only declared events are sent.\n * 4. Validates output against Zod schema (if applicable).\n * 5. Tracks telemetry (success/failure).\n *\n * @param name - Operation name.\n * @param version - Operation version (optional, defaults to latest).\n * @param rawInput - The raw input payload (e.g. from JSON body).\n * @param ctx - The runtime context (actor, tenant, etc.).\n */\n async execute(\n name: string,\n version: number | undefined,\n rawInput: unknown,\n ctx: HandlerCtx\n ): Promise<unknown> {\n const baseSpec = this.getSpec(name, version);\n if (!baseSpec)\n throw new Error(\n `Spec not found for ${name}${version ? `.v${version}` : ''}`\n );\n const spec =\n (await ctx.specVariantResolver?.resolve(\n {\n name: baseSpec.meta.name,\n version: baseSpec.meta.version,\n kind: baseSpec.meta.kind,\n },\n ctx\n )) ?? baseSpec;\n\n let key = opKey(spec.meta.name, spec.meta.version);\n let handler = this.handlers.get(key);\n if (!handler) {\n const fallbackKey = opKey(baseSpec.meta.name, baseSpec.meta.version);\n handler = this.handlers.get(fallbackKey);\n key = fallbackKey;\n }\n if (!handler) throw new Error(`No handler bound for ${key}`);\n\n // 1) Validate input\n const parsedInput = spec.io.input?.getZod().parse(rawInput);\n\n // 2) Policy enforcement\n if (ctx.decide) {\n const [service, command] = spec.meta.name.split('.');\n const decision = await ctx.decide({\n service: service!,\n command: command!,\n version: spec.meta.version,\n actor: ctx.actor ?? 'anonymous',\n channel: ctx.channel,\n roles: ctx.roles,\n organizationId: ctx.organizationId,\n userId: ctx.userId,\n flags: [], // adapter may fill flags from request\n });\n if (decision.effect === 'deny') {\n throw new Error(\n `PolicyDenied: ${spec.meta.name}.v${spec.meta.version}`\n );\n }\n if (decision.rateLimit && ctx.rateLimit) {\n const key = decision.rateLimit.key ?? 'default';\n const rpm = decision.rateLimit.rpm ?? 60;\n await ctx.rateLimit(key, 1, rpm);\n }\n // escalations are advisory; adapter may short-circuit if needed\n }\n\n // 3) Event emission guard\n const allowedEvents = new Map<string, AnySchemaModel>();\n if (spec.sideEffects?.emits) {\n for (const e of spec.sideEffects.emits) {\n if (isEmitDeclRef(e)) {\n allowedEvents.set(`${e.ref.name}.v${e.ref.version}`, e.ref.payload);\n } else {\n allowedEvents.set(`${e.name}.v${e.version}`, e.payload);\n }\n }\n }\n\n const emitGuard = async (\n eventName: string,\n eventVersion: number,\n payload: unknown\n ) => {\n const key2 = eventKey(eventName, eventVersion);\n const schema = allowedEvents.get(key2);\n if (!schema)\n throw new Error(\n `UndeclaredEvent: ${key2} not allowed by ${opKey(spec.meta.name, spec.meta.version)}`\n );\n const parsed = schema.getZod().parse(payload);\n // Delegate to service publisher if present\n await ctx.eventPublisher?.({\n name: eventName,\n version: eventVersion,\n payload: parsed,\n traceId: ctx.traceId,\n });\n };\n\n // 4) Execute handler with guarded ctx\n if (ctx.appConfig) {\n if (!ctx.branding) {\n ctx.branding = ctx.appConfig.branding;\n }\n if (!ctx.translation) {\n ctx.translation = { config: ctx.appConfig.translation };\n } else if (!ctx.translation.config) {\n ctx.translation = {\n ...ctx.translation,\n config: ctx.appConfig.translation,\n };\n }\n }\n const telemetryContext = ctx.telemetry;\n const trackTelemetry = async (\n trigger: TelemetryTrigger | undefined,\n details: { input: unknown; output?: unknown; error?: unknown }\n ) => {\n if (!telemetryContext || !trigger?.event) return;\n try {\n const props = trigger.properties?.(details) ?? {};\n await telemetryContext.track(\n trigger.event.name,\n trigger.event.version ?? 1,\n props,\n {\n tenantId: ctx.organizationId ?? undefined,\n organizationId: ctx.organizationId,\n userId: ctx.userId,\n actor: ctx.actor,\n channel: ctx.channel,\n metadata: ctx.traceId ? { traceId: ctx.traceId } : undefined,\n }\n );\n } catch (_error) {\n // Best-effort telemetry: swallow errors to avoid breaking the handler.\n }\n };\n\n let result: unknown;\n try {\n result = await handler(parsedInput, {\n ...ctx,\n __emitGuard__: emitGuard,\n });\n } catch (error) {\n if (spec.telemetry?.failure) {\n await trackTelemetry(spec.telemetry.failure, {\n input: parsedInput ?? rawInput,\n error,\n });\n }\n throw error;\n }\n\n if (spec.telemetry?.success) {\n await trackTelemetry(spec.telemetry.success, {\n input: parsedInput ?? rawInput,\n output: result,\n });\n }\n\n // 5) Validate output when the spec declares a SchemaModel output.\n const outputModel = spec.io.output as\n | AnySchemaModel\n | ResourceRefDescriptor<boolean>;\n if ((outputModel as AnySchemaModel)?.getZod) {\n const parsedOutput = (outputModel as AnySchemaModel)\n .getZod()\n .parse(result);\n return parsedOutput;\n }\n // ResourceRefDescriptor path: adapter may hydrate entity; leave as-is\n return result;\n }\n}\n"],"mappings":"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"}
|
package/dist/resources.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","names":[],"sources":["../src/resources.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,YAAA;;EAAA,WAAA,EAAA,MAAY;EAaZ;EAA+B,KAAE,EAAA,MAAA;EAC1C;EAEC,WAAA,CAAA,EAAA,MAAA;EAMS;EAAR,QAAE,EAAA,MAAA;EAE2C;EAAhD,IAAA,CAAA,EAdE,GAcF,EAAA;;AAGS,UAdC,oBAcqB,CAAA,UAdU,GAAA,CAAE,OAcZ,CAAA,CAAA;EAAW,IAAE,EAb3C,YAa2C;EACtB;EAArB,KAAA,EAZC,CAYD;EACgB;;;AAIxB;EAGqB,OAAE,EAAA,CAAA,IAAA,EAdb,GAAA,CAAE,KAcW,CAdL,CAcK,CAAA,EAAA,GAAA,EAAA;IAAoC,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAArB,KAAA,CAAA,EAAA,MAAA,GAAA,IAAA;IAKvB,MAAA,CAAA,EAAA,MAAA;EASD,CAAA,EAAA,GA1BP,OA0BO,CAAA;IAAmC,GAAA,EAAA,MAAA;IAAM,QAAA,CAAA,EAAA,MAAA;IAoBtC,IAAA,EA9CsC,UA8CtC,GAAA,MAAqB;EAYtB,CAAA,CAAA;;AAGS,iBA1DT,sBA0DS,CAAA,UA1DwB,GAAA,CAAE,OA0D1B,CAAA,CAAA,IAAA,EAzDjB,oBAyDiB,CAzDI,CAyDJ,CAAA,CAAA,EAxDtB,oBAwDsB,CAxDD,CAwDC,CAAA;AAAtB,cApDU,gBAAA,CAoDV;EAAqB,QAAA,SAAA;EAUR,QAAA,CAAA,UA3DK,GAAA,CAAE,OA2DM,CAAmB,CAAA,IAAA,EA3DV,oBA2D+B,CA3DV,CA2DU,CAAA,CAAA,EAAA,IAAA;mBAtDtD;;;UASD;YAAmC;;;UAoBhC;;;;;;;;;QAST;;iBAGQ;;;QAEuC;IACpD,sBAAsB;iBAUT,aAAA,mBAAgC"}
|
package/dist/resources.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","names":["params: Record<string, string>"],"sources":["../src/resources.ts"],"sourcesContent":["import * as z from 'zod';\nimport type { Tag } from './ownership';\n\nexport interface ResourceMeta {\n /** URI scheme, e.g. \"content://doc/{id}\" or \"marketplace://offers/{city}/{tag}\" */\n uriTemplate: string;\n /** Human title for discovery */\n title: string;\n /** Short description */\n description?: string;\n /** MIME type for resource body */\n mimeType: string; // e.g., \"application/json\" | \"text/markdown\"\n /** Tags for filtering/grouping */\n tags?: Tag[];\n}\n\nexport interface ResourceTemplateSpec<I extends z.ZodType> {\n meta: ResourceMeta;\n /** Arguments to materialize the URI (zod validates input) */\n input: I;\n /**\n * Resolve returns the resource body and a resolved URI.\n * It MUST be read-only (no side effects).\n */\n resolve: (\n args: z.infer<I>,\n ctx: { userId?: string | null; orgId?: string | null; locale?: string }\n ) => Promise<{ uri: string; mimeType?: string; data: Uint8Array | string }>;\n}\n\nexport function defineResourceTemplate<I extends z.ZodType>(\n spec: ResourceTemplateSpec<I>\n): ResourceTemplateSpec<I> {\n return spec;\n}\n\nexport class ResourceRegistry {\n private templates: ResourceTemplateSpec<any>[] = [];\n\n register<I extends z.ZodType>(tmpl: ResourceTemplateSpec<I>): this {\n this.templates.push(tmpl);\n return this;\n }\n\n listTemplates() {\n return [...this.templates];\n }\n\n /** Try to match a concrete URI to a template by naive pattern substitution */\n // MVP: simple matcher; replace {param} with (.+) and capture\n match(\n uri: string\n ):\n | { tmpl: ResourceTemplateSpec<any>; params: Record<string, string> }\n | undefined {\n for (const tmpl of this.templates) {\n const re = new RegExp(\n '^' + tmpl.meta.uriTemplate.replace(/\\{[^}]+\\}/g, '([^/]+)') + '$'\n );\n const m = uri.match(re);\n if (!m) continue;\n const names = [...tmpl.meta.uriTemplate.matchAll(/\\{([^}]+)\\}/g)].map(\n (x) => x[1]\n );\n const params: Record<string, string> = {};\n names.forEach((n, i) => (params[n!] = decodeURIComponent(m[i + 1]!)));\n return { tmpl, params };\n }\n return undefined;\n }\n}\n\n// ResourceRef (output descriptor for ContractSpecs)\nexport interface ResourceRefDescriptor<Many extends boolean> {\n kind: 'resource_ref';\n /** URI template, e.g. 'strit://spot/{id}' */\n uriTemplate: string;\n /** Variable name inside result payload to substitute into template; defaults to 'id' */\n varName?: string;\n /** Optional GraphQL type name to use when exposing over GraphQL (e.g., 'Spot') */\n graphQLType: string;\n /** Cardinality: when present and true, the handler returns an array of resources */\n many: Many;\n}\n\nexport function resourceRef<Many extends boolean>(\n uriTemplate: string,\n opts: { varName?: string; graphQLType: string; many: Many }\n): ResourceRefDescriptor<Many> {\n return {\n kind: 'resource_ref',\n uriTemplate,\n varName: opts.varName ?? 'id',\n graphQLType: opts.graphQLType,\n many: opts.many,\n };\n}\n\nexport function isResourceRef(x: unknown): x is ResourceRefDescriptor<boolean> {\n const o = x as any;\n return !!o && o.kind === 'resource_ref' && typeof o.uriTemplate === 'string';\n}\n"],"mappings":";;;AA8BA,SAAgB,uBACd,MACyB;AACzB,QAAO;;AAGT,IAAa,mBAAb,MAA8B;CAC5B,AAAQ,YAAyC,EAAE;CAEnD,SAA8B,MAAqC;AACjE,OAAK,UAAU,KAAK,KAAK;AACzB,SAAO;;CAGT,gBAAgB;AACd,SAAO,CAAC,GAAG,KAAK,UAAU;;;CAK5B,MACE,KAGY;AACZ,OAAK,MAAM,QAAQ,KAAK,WAAW;GACjC,MAAM,qBAAK,IAAI,OACb,MAAM,KAAK,KAAK,YAAY,QAAQ,cAAc,UAAU,GAAG,IAChE;GACD,MAAM,IAAI,IAAI,MAAM,GAAG;AACvB,OAAI,CAAC,EAAG;GACR,MAAM,QAAQ,CAAC,GAAG,KAAK,KAAK,YAAY,SAAS,eAAe,CAAC,CAAC,KAC/D,MAAM,EAAE,GACV;GACD,MAAMA,SAAiC,EAAE;AACzC,SAAM,SAAS,GAAG,MAAO,OAAO,KAAM,mBAAmB,EAAE,IAAI,GAAI,CAAE;AACrE,UAAO;IAAE;IAAM;IAAQ;;;;AAmB7B,SAAgB,YACd,aACA,MAC6B;AAC7B,QAAO;EACL,MAAM;EACN;EACA,SAAS,KAAK,WAAW;EACzB,aAAa,KAAK;EAClB,MAAM,KAAK;EACZ;;AAGH,SAAgB,cAAc,GAAiD;CAC7E,MAAM,IAAI;AACV,QAAO,CAAC,CAAC,KAAK,EAAE,SAAS,kBAAkB,OAAO,EAAE,gBAAgB"}
|