@lssm/lib.contracts 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +361 -0
- package/dist/app-config/branding.d.ts +56 -0
- package/dist/app-config/branding.d.ts.map +1 -0
- package/dist/app-config/branding.js +0 -0
- package/dist/app-config/contracts.d.ts +243 -0
- package/dist/app-config/contracts.d.ts.map +1 -0
- package/dist/app-config/contracts.js +2 -0
- package/dist/app-config/contracts.js.map +1 -0
- package/dist/app-config/events.d.ts +121 -0
- package/dist/app-config/events.d.ts.map +1 -0
- package/dist/app-config/events.js +2 -0
- package/dist/app-config/events.js.map +1 -0
- package/dist/app-config/index.d.ts +8 -0
- package/dist/app-config/index.js +1 -0
- package/dist/app-config/lifecycle-contracts.d.ts +381 -0
- package/dist/app-config/lifecycle-contracts.d.ts.map +1 -0
- package/dist/app-config/lifecycle-contracts.js +2 -0
- package/dist/app-config/lifecycle-contracts.js.map +1 -0
- package/dist/app-config/lifecycle.d.ts +28 -0
- package/dist/app-config/lifecycle.d.ts.map +1 -0
- package/dist/app-config/lifecycle.js +0 -0
- package/dist/app-config/runtime.d.ts +115 -0
- package/dist/app-config/runtime.d.ts.map +1 -0
- package/dist/app-config/runtime.js +2 -0
- package/dist/app-config/runtime.js.map +1 -0
- package/dist/app-config/spec.d.ts +176 -0
- package/dist/app-config/spec.d.ts.map +1 -0
- package/dist/app-config/spec.js +2 -0
- package/dist/app-config/spec.js.map +1 -0
- package/dist/app-config/validation.d.ts +48 -0
- package/dist/app-config/validation.d.ts.map +1 -0
- package/dist/app-config/validation.js +2 -0
- package/dist/app-config/validation.js.map +1 -0
- package/dist/capabilities/openbanking.d.ts +10 -0
- package/dist/capabilities/openbanking.d.ts.map +1 -0
- package/dist/capabilities/openbanking.js +2 -0
- package/dist/capabilities/openbanking.js.map +1 -0
- package/dist/capabilities.d.ts +45 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +2 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +1 -0
- package/dist/client/react/drivers/rn-reusables.d.ts +23 -0
- package/dist/client/react/drivers/rn-reusables.d.ts.map +1 -0
- package/dist/client/react/drivers/rn-reusables.js +2 -0
- package/dist/client/react/drivers/rn-reusables.js.map +1 -0
- package/dist/client/react/drivers/shadcn.d.ts +13 -0
- package/dist/client/react/drivers/shadcn.d.ts.map +1 -0
- package/dist/client/react/drivers/shadcn.js +2 -0
- package/dist/client/react/drivers/shadcn.js.map +1 -0
- package/dist/client/react/feature-render.d.ts +21 -0
- package/dist/client/react/feature-render.d.ts.map +1 -0
- package/dist/client/react/feature-render.js +2 -0
- package/dist/client/react/feature-render.js.map +1 -0
- package/dist/client/react/form-render.d.ts +91 -0
- package/dist/client/react/form-render.d.ts.map +1 -0
- package/dist/client/react/form-render.js +2 -0
- package/dist/client/react/form-render.js.map +1 -0
- package/dist/client/react/index.d.ts +5 -0
- package/dist/client/react/index.js +1 -0
- package/dist/contracts-adapter-hydration.d.ts +16 -0
- package/dist/contracts-adapter-hydration.d.ts.map +1 -0
- package/dist/contracts-adapter-hydration.js +2 -0
- package/dist/contracts-adapter-hydration.js.map +1 -0
- package/dist/contracts-adapter-input.d.ts +10 -0
- package/dist/contracts-adapter-input.d.ts.map +1 -0
- package/dist/contracts-adapter-input.js +2 -0
- package/dist/contracts-adapter-input.js.map +1 -0
- package/dist/data-views.d.ts +132 -0
- package/dist/data-views.d.ts.map +1 -0
- package/dist/data-views.js +2 -0
- package/dist/data-views.js.map +1 -0
- package/dist/events.d.ts +44 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -0
- package/dist/experiments/evaluator.d.ts +38 -0
- package/dist/experiments/evaluator.d.ts.map +1 -0
- package/dist/experiments/evaluator.js +2 -0
- package/dist/experiments/evaluator.js.map +1 -0
- package/dist/experiments/spec.d.ts +90 -0
- package/dist/experiments/spec.d.ts.map +1 -0
- package/dist/experiments/spec.js +2 -0
- package/dist/experiments/spec.js.map +1 -0
- package/dist/features.d.ts +88 -0
- package/dist/features.d.ts.map +1 -0
- package/dist/features.js +2 -0
- package/dist/features.js.map +1 -0
- package/dist/forms.d.ts +258 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +2 -0
- package/dist/forms.js.map +1 -0
- package/dist/graphql-federation/src/index.js +2 -0
- package/dist/graphql-federation/src/index.js.map +1 -0
- package/dist/index.d.ts +129 -0
- package/dist/index.js +1 -0
- package/dist/install.d.ts +76 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +2 -0
- package/dist/install.js.map +1 -0
- package/dist/integrations/binding.d.ts +18 -0
- package/dist/integrations/binding.d.ts.map +1 -0
- package/dist/integrations/binding.js +0 -0
- package/dist/integrations/connection.d.ts +52 -0
- package/dist/integrations/connection.d.ts.map +1 -0
- package/dist/integrations/connection.js +0 -0
- package/dist/integrations/contracts.d.ts +434 -0
- package/dist/integrations/contracts.d.ts.map +1 -0
- package/dist/integrations/contracts.js +2 -0
- package/dist/integrations/contracts.js.map +1 -0
- package/dist/integrations/health.d.ts +22 -0
- package/dist/integrations/health.d.ts.map +1 -0
- package/dist/integrations/health.js +2 -0
- package/dist/integrations/health.js.map +1 -0
- package/dist/integrations/index.d.ts +53 -0
- package/dist/integrations/index.js +1 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts +286 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/accounts.js +2 -0
- package/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts +162 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/balances.js +2 -0
- package/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
- package/dist/integrations/openbanking/contracts/index.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/index.js +2 -0
- package/dist/integrations/openbanking/contracts/index.js.map +1 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts +210 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts.map +1 -0
- package/dist/integrations/openbanking/contracts/transactions.js +2 -0
- package/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/integrations/openbanking/guards.d.ts +13 -0
- package/dist/integrations/openbanking/guards.d.ts.map +1 -0
- package/dist/integrations/openbanking/guards.js +2 -0
- package/dist/integrations/openbanking/guards.js.map +1 -0
- package/dist/integrations/openbanking/models.d.ts +226 -0
- package/dist/integrations/openbanking/models.d.ts.map +1 -0
- package/dist/integrations/openbanking/models.js +2 -0
- package/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/integrations/openbanking/telemetry.d.ts +16 -0
- package/dist/integrations/openbanking/telemetry.d.ts.map +1 -0
- package/dist/integrations/openbanking/telemetry.js +2 -0
- package/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/integrations/providers/calendar.d.ts +79 -0
- package/dist/integrations/providers/calendar.d.ts.map +1 -0
- package/dist/integrations/providers/calendar.js +0 -0
- package/dist/integrations/providers/elevenlabs.d.ts +8 -0
- package/dist/integrations/providers/elevenlabs.d.ts.map +1 -0
- package/dist/integrations/providers/elevenlabs.js +2 -0
- package/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/integrations/providers/email.d.ts +87 -0
- package/dist/integrations/providers/email.d.ts.map +1 -0
- package/dist/integrations/providers/email.js +0 -0
- package/dist/integrations/providers/embedding.d.ts +25 -0
- package/dist/integrations/providers/embedding.d.ts.map +1 -0
- package/dist/integrations/providers/embedding.js +0 -0
- package/dist/integrations/providers/gcs-storage.d.ts +8 -0
- package/dist/integrations/providers/gcs-storage.d.ts.map +1 -0
- package/dist/integrations/providers/gcs-storage.js +2 -0
- package/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/integrations/providers/gmail.d.ts +8 -0
- package/dist/integrations/providers/gmail.d.ts.map +1 -0
- package/dist/integrations/providers/gmail.js +2 -0
- package/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/integrations/providers/google-calendar.d.ts +8 -0
- package/dist/integrations/providers/google-calendar.d.ts.map +1 -0
- package/dist/integrations/providers/google-calendar.js +2 -0
- package/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +21 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts.map +1 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js +2 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js.map +1 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts +25 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gcs-storage.js +2 -0
- package/dist/integrations/providers/impls/gcs-storage.js.map +1 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +27 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gmail-inbound.js +2 -0
- package/dist/integrations/providers/impls/gmail-inbound.js.map +1 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +19 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts.map +1 -0
- package/dist/integrations/providers/impls/gmail-outbound.js +7 -0
- package/dist/integrations/providers/impls/gmail-outbound.js.map +1 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts +24 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts.map +1 -0
- package/dist/integrations/providers/impls/google-calendar.js +2 -0
- package/dist/integrations/providers/impls/google-calendar.js.map +1 -0
- package/dist/integrations/providers/impls/index.d.ts +15 -0
- package/dist/integrations/providers/impls/index.js +1 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +24 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts.map +1 -0
- package/dist/integrations/providers/impls/mistral-embedding.js +2 -0
- package/dist/integrations/providers/impls/mistral-embedding.js.map +1 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts +32 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts.map +1 -0
- package/dist/integrations/providers/impls/mistral-llm.js +2 -0
- package/dist/integrations/providers/impls/mistral-llm.js.map +1 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts +20 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts.map +1 -0
- package/dist/integrations/providers/impls/postmark-email.js +2 -0
- package/dist/integrations/providers/impls/postmark-email.js.map +1 -0
- package/dist/integrations/providers/impls/powens-client.d.ts +125 -0
- package/dist/integrations/providers/impls/powens-client.d.ts.map +1 -0
- package/dist/integrations/providers/impls/powens-client.js +2 -0
- package/dist/integrations/providers/impls/powens-client.js.map +1 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +28 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts.map +1 -0
- package/dist/integrations/providers/impls/powens-openbanking.js +2 -0
- package/dist/integrations/providers/impls/powens-openbanking.js.map +1 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts +27 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts.map +1 -0
- package/dist/integrations/providers/impls/provider-factory.js +2 -0
- package/dist/integrations/providers/impls/provider-factory.js.map +1 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +25 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts.map +1 -0
- package/dist/integrations/providers/impls/qdrant-vector.js +2 -0
- package/dist/integrations/providers/impls/qdrant-vector.js.map +1 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts +29 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts.map +1 -0
- package/dist/integrations/providers/impls/stripe-payments.js +2 -0
- package/dist/integrations/providers/impls/stripe-payments.js.map +1 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts +21 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts.map +1 -0
- package/dist/integrations/providers/impls/twilio-sms.js +2 -0
- package/dist/integrations/providers/impls/twilio-sms.js.map +1 -0
- package/dist/integrations/providers/index.d.ts +36 -0
- package/dist/integrations/providers/index.js +1 -0
- package/dist/integrations/providers/llm.d.ts +83 -0
- package/dist/integrations/providers/llm.d.ts.map +1 -0
- package/dist/integrations/providers/llm.js +0 -0
- package/dist/integrations/providers/mistral.d.ts +8 -0
- package/dist/integrations/providers/mistral.d.ts.map +1 -0
- package/dist/integrations/providers/mistral.js +2 -0
- package/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/integrations/providers/openbanking.d.ts +129 -0
- package/dist/integrations/providers/openbanking.d.ts.map +1 -0
- package/dist/integrations/providers/openbanking.js +0 -0
- package/dist/integrations/providers/payments.d.ts +110 -0
- package/dist/integrations/providers/payments.d.ts.map +1 -0
- package/dist/integrations/providers/payments.js +0 -0
- package/dist/integrations/providers/postmark.d.ts +8 -0
- package/dist/integrations/providers/postmark.d.ts.map +1 -0
- package/dist/integrations/providers/postmark.js +2 -0
- package/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/integrations/providers/powens.d.ts +8 -0
- package/dist/integrations/providers/powens.d.ts.map +1 -0
- package/dist/integrations/providers/powens.js +2 -0
- package/dist/integrations/providers/powens.js.map +1 -0
- package/dist/integrations/providers/qdrant.d.ts +8 -0
- package/dist/integrations/providers/qdrant.d.ts.map +1 -0
- package/dist/integrations/providers/qdrant.js +2 -0
- package/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/integrations/providers/sms.d.ts +35 -0
- package/dist/integrations/providers/sms.d.ts.map +1 -0
- package/dist/integrations/providers/sms.js +0 -0
- package/dist/integrations/providers/storage.d.ts +61 -0
- package/dist/integrations/providers/storage.d.ts.map +1 -0
- package/dist/integrations/providers/storage.js +0 -0
- package/dist/integrations/providers/stripe.d.ts +8 -0
- package/dist/integrations/providers/stripe.d.ts.map +1 -0
- package/dist/integrations/providers/stripe.js +2 -0
- package/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/integrations/providers/twilio-sms.d.ts +8 -0
- package/dist/integrations/providers/twilio-sms.d.ts.map +1 -0
- package/dist/integrations/providers/twilio-sms.js +2 -0
- package/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/integrations/providers/vector-store.d.ts +44 -0
- package/dist/integrations/providers/vector-store.d.ts.map +1 -0
- package/dist/integrations/providers/vector-store.js +0 -0
- package/dist/integrations/providers/voice.d.ts +35 -0
- package/dist/integrations/providers/voice.d.ts.map +1 -0
- package/dist/integrations/providers/voice.js +0 -0
- package/dist/integrations/runtime.d.ts +100 -0
- package/dist/integrations/runtime.d.ts.map +1 -0
- package/dist/integrations/runtime.js +2 -0
- package/dist/integrations/runtime.js.map +1 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts +32 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts.map +1 -0
- package/dist/integrations/secrets/env-secret-provider.js +2 -0
- package/dist/integrations/secrets/env-secret-provider.js.map +1 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +33 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts.map +1 -0
- package/dist/integrations/secrets/gcp-secret-manager.js +2 -0
- package/dist/integrations/secrets/gcp-secret-manager.js.map +1 -0
- package/dist/integrations/secrets/index.d.ts +5 -0
- package/dist/integrations/secrets/index.js +1 -0
- package/dist/integrations/secrets/manager.d.ts +48 -0
- package/dist/integrations/secrets/manager.d.ts.map +1 -0
- package/dist/integrations/secrets/manager.js +2 -0
- package/dist/integrations/secrets/manager.js.map +1 -0
- package/dist/integrations/secrets/provider.d.ts +53 -0
- package/dist/integrations/secrets/provider.d.ts.map +1 -0
- package/dist/integrations/secrets/provider.js +2 -0
- package/dist/integrations/secrets/provider.js.map +1 -0
- package/dist/integrations/spec.d.ts +80 -0
- package/dist/integrations/spec.d.ts.map +1 -0
- package/dist/integrations/spec.js +2 -0
- package/dist/integrations/spec.js.map +1 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts +42 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts.map +1 -0
- package/dist/jobs/gcp-cloud-tasks.js +2 -0
- package/dist/jobs/gcp-cloud-tasks.js.map +1 -0
- package/dist/jobs/gcp-pubsub.d.ts +26 -0
- package/dist/jobs/gcp-pubsub.d.ts.map +1 -0
- package/dist/jobs/gcp-pubsub.js +2 -0
- package/dist/jobs/gcp-pubsub.js.map +1 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +10 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts.map +1 -0
- package/dist/jobs/handlers/gmail-sync-handler.js +2 -0
- package/dist/jobs/handlers/gmail-sync-handler.js.map +1 -0
- package/dist/jobs/handlers/index.d.ts +3 -0
- package/dist/jobs/handlers/index.js +1 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts +13 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts.map +1 -0
- package/dist/jobs/handlers/storage-document-handler.js +2 -0
- package/dist/jobs/handlers/storage-document-handler.js.map +1 -0
- package/dist/jobs/index.d.ts +7 -0
- package/dist/jobs/index.js +1 -0
- package/dist/jobs/memory-queue.d.ts +19 -0
- package/dist/jobs/memory-queue.d.ts.map +1 -0
- package/dist/jobs/memory-queue.js +2 -0
- package/dist/jobs/memory-queue.js.map +1 -0
- package/dist/jobs/queue.d.ts +27 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +0 -0
- package/dist/jsonschema.d.ts +27 -0
- package/dist/jsonschema.d.ts.map +1 -0
- package/dist/jsonschema.js +2 -0
- package/dist/jsonschema.js.map +1 -0
- package/dist/knowledge/binding.d.ts +26 -0
- package/dist/knowledge/binding.d.ts.map +1 -0
- package/dist/knowledge/binding.js +0 -0
- package/dist/knowledge/contracts.d.ts +315 -0
- package/dist/knowledge/contracts.d.ts.map +1 -0
- package/dist/knowledge/contracts.js +2 -0
- package/dist/knowledge/contracts.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.js +1 -0
- package/dist/knowledge/ingestion/document-processor.d.ts +25 -0
- package/dist/knowledge/ingestion/document-processor.d.ts.map +1 -0
- package/dist/knowledge/ingestion/document-processor.js +2 -0
- package/dist/knowledge/ingestion/document-processor.js.map +1 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts +13 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts.map +1 -0
- package/dist/knowledge/ingestion/embedding-service.js +2 -0
- package/dist/knowledge/ingestion/embedding-service.js.map +1 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +19 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts.map +1 -0
- package/dist/knowledge/ingestion/gmail-adapter.js +7 -0
- package/dist/knowledge/ingestion/gmail-adapter.js.map +1 -0
- package/dist/knowledge/ingestion/index.d.ts +6 -0
- package/dist/knowledge/ingestion/index.js +1 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts +16 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts.map +1 -0
- package/dist/knowledge/ingestion/storage-adapter.js +2 -0
- package/dist/knowledge/ingestion/storage-adapter.js.map +1 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts +19 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts.map +1 -0
- package/dist/knowledge/ingestion/vector-indexer.js +2 -0
- package/dist/knowledge/ingestion/vector-indexer.js.map +1 -0
- package/dist/knowledge/query/index.d.ts +2 -0
- package/dist/knowledge/query/index.js +1 -0
- package/dist/knowledge/query/service.d.ts +30 -0
- package/dist/knowledge/query/service.d.ts.map +1 -0
- package/dist/knowledge/query/service.js +4 -0
- package/dist/knowledge/query/service.js.map +1 -0
- package/dist/knowledge/runtime.d.ts +33 -0
- package/dist/knowledge/runtime.d.ts.map +1 -0
- package/dist/knowledge/runtime.js +2 -0
- package/dist/knowledge/runtime.js.map +1 -0
- package/dist/knowledge/source.d.ts +33 -0
- package/dist/knowledge/source.d.ts.map +1 -0
- package/dist/knowledge/source.js +0 -0
- package/dist/knowledge/spaces/email-threads.d.ts +8 -0
- package/dist/knowledge/spaces/email-threads.d.ts.map +1 -0
- package/dist/knowledge/spaces/email-threads.js +2 -0
- package/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/knowledge/spaces/financial-docs.d.ts +8 -0
- package/dist/knowledge/spaces/financial-docs.d.ts.map +1 -0
- package/dist/knowledge/spaces/financial-docs.js +2 -0
- package/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/knowledge/spaces/financial-overview.d.ts +8 -0
- package/dist/knowledge/spaces/financial-overview.d.ts.map +1 -0
- package/dist/knowledge/spaces/financial-overview.js +2 -0
- package/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/knowledge/spaces/index.d.ts +7 -0
- package/dist/knowledge/spaces/index.js +1 -0
- package/dist/knowledge/spaces/product-canon.d.ts +8 -0
- package/dist/knowledge/spaces/product-canon.d.ts.map +1 -0
- package/dist/knowledge/spaces/product-canon.js +2 -0
- package/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/knowledge/spaces/support-faq.d.ts +8 -0
- package/dist/knowledge/spaces/support-faq.d.ts.map +1 -0
- package/dist/knowledge/spaces/support-faq.js +2 -0
- package/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts +8 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts.map +1 -0
- package/dist/knowledge/spaces/uploaded-docs.js +2 -0
- package/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/knowledge/spec.d.ts +53 -0
- package/dist/knowledge/spec.d.ts.map +1 -0
- package/dist/knowledge/spec.js +2 -0
- package/dist/knowledge/spec.js.map +1 -0
- package/dist/markdown.d.ts +22 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +4 -0
- package/dist/markdown.js.map +1 -0
- package/dist/migrations.d.ts +53 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +2 -0
- package/dist/migrations.js.map +1 -0
- package/dist/onboarding-base.d.ts +136 -0
- package/dist/onboarding-base.d.ts.map +1 -0
- package/dist/onboarding-base.js +2 -0
- package/dist/onboarding-base.js.map +1 -0
- package/dist/ownership.d.ts +76 -0
- package/dist/ownership.d.ts.map +1 -0
- package/dist/ownership.js +2 -0
- package/dist/ownership.js.map +1 -0
- package/dist/policy/engine.d.ts +40 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +2 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/opa-adapter.d.ts +46 -0
- package/dist/policy/opa-adapter.d.ts.map +1 -0
- package/dist/policy/opa-adapter.js +2 -0
- package/dist/policy/opa-adapter.js.map +1 -0
- package/dist/policy/spec.d.ts +115 -0
- package/dist/policy/spec.d.ts.map +1 -0
- package/dist/policy/spec.js +2 -0
- package/dist/policy/spec.js.map +1 -0
- package/dist/presentations.backcompat.d.ts +8 -0
- package/dist/presentations.backcompat.d.ts.map +1 -0
- package/dist/presentations.backcompat.js +2 -0
- package/dist/presentations.backcompat.js.map +1 -0
- package/dist/presentations.d.ts +96 -0
- package/dist/presentations.d.ts.map +1 -0
- package/dist/presentations.js +2 -0
- package/dist/presentations.js.map +1 -0
- package/dist/presentations.v2.d.ts +95 -0
- package/dist/presentations.v2.d.ts.map +1 -0
- package/dist/presentations.v2.js +2 -0
- package/dist/presentations.v2.js.map +1 -0
- package/dist/prompt.d.ts +61 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +2 -0
- package/dist/prompt.js.map +1 -0
- package/dist/promptRegistry.d.ts +16 -0
- package/dist/promptRegistry.d.ts.map +1 -0
- package/dist/promptRegistry.js +2 -0
- package/dist/promptRegistry.js.map +1 -0
- package/dist/regenerator/adapters.d.ts +20 -0
- package/dist/regenerator/adapters.d.ts.map +1 -0
- package/dist/regenerator/adapters.js +0 -0
- package/dist/regenerator/executor.d.ts +71 -0
- package/dist/regenerator/executor.d.ts.map +1 -0
- package/dist/regenerator/executor.js +2 -0
- package/dist/regenerator/executor.js.map +1 -0
- package/dist/regenerator/index.d.ts +7 -0
- package/dist/regenerator/index.js +1 -0
- package/dist/regenerator/service.d.ts +34 -0
- package/dist/regenerator/service.d.ts.map +1 -0
- package/dist/regenerator/service.js +2 -0
- package/dist/regenerator/service.js.map +1 -0
- package/dist/regenerator/sinks.d.ts +27 -0
- package/dist/regenerator/sinks.d.ts.map +1 -0
- package/dist/regenerator/sinks.js +2 -0
- package/dist/regenerator/sinks.js.map +1 -0
- package/dist/regenerator/types.d.ts +108 -0
- package/dist/regenerator/types.d.ts.map +1 -0
- package/dist/regenerator/types.js +0 -0
- package/dist/regenerator/utils.d.ts +10 -0
- package/dist/regenerator/utils.d.ts.map +1 -0
- package/dist/regenerator/utils.js +2 -0
- package/dist/regenerator/utils.js.map +1 -0
- package/dist/registry.d.ts +45 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +2 -0
- package/dist/registry.js.map +1 -0
- package/dist/resources.d.ts +65 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +2 -0
- package/dist/resources.js.map +1 -0
- package/dist/schema/src/EnumType.js +1 -0
- package/dist/schema/src/FieldType.js +2 -0
- package/dist/schema/src/FieldType.js.map +1 -0
- package/dist/schema/src/ScalarTypeEnum.js +2 -0
- package/dist/schema/src/ScalarTypeEnum.js.map +1 -0
- package/dist/schema/src/SchemaModel.js +2 -0
- package/dist/schema/src/SchemaModel.js.map +1 -0
- package/dist/schema/src/index.js +1 -0
- package/dist/server/graphql-pothos.d.ts +19 -0
- package/dist/server/graphql-pothos.d.ts.map +1 -0
- package/dist/server/graphql-pothos.js +2 -0
- package/dist/server/graphql-pothos.js.map +1 -0
- package/dist/server/graphql-schema-export.d.ts +7 -0
- package/dist/server/graphql-schema-export.d.ts.map +1 -0
- package/dist/server/graphql-schema-export.js +2 -0
- package/dist/server/graphql-schema-export.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +1 -0
- package/dist/server/provider-mcp.d.ts +34 -0
- package/dist/server/provider-mcp.d.ts.map +1 -0
- package/dist/server/provider-mcp.js +2 -0
- package/dist/server/provider-mcp.js.map +1 -0
- package/dist/server/rest-elysia.d.ts +41 -0
- package/dist/server/rest-elysia.d.ts.map +1 -0
- package/dist/server/rest-elysia.js +2 -0
- package/dist/server/rest-elysia.js.map +1 -0
- package/dist/server/rest-express.d.ts +17 -0
- package/dist/server/rest-express.d.ts.map +1 -0
- package/dist/server/rest-express.js +2 -0
- package/dist/server/rest-express.js.map +1 -0
- package/dist/server/rest-generic.d.ts +33 -0
- package/dist/server/rest-generic.d.ts.map +1 -0
- package/dist/server/rest-generic.js +2 -0
- package/dist/server/rest-generic.js.map +1 -0
- package/dist/server/rest-next-app.d.ts +16 -0
- package/dist/server/rest-next-app.d.ts.map +1 -0
- package/dist/server/rest-next-app.js +2 -0
- package/dist/server/rest-next-app.js.map +1 -0
- package/dist/server/rest-next-mcp.d.ts +12 -0
- package/dist/server/rest-next-mcp.d.ts.map +1 -0
- package/dist/server/rest-next-mcp.js +2 -0
- package/dist/server/rest-next-mcp.js.map +1 -0
- package/dist/server/rest-next-pages.d.ts +10 -0
- package/dist/server/rest-next-pages.d.ts.map +1 -0
- package/dist/server/rest-next-pages.js +2 -0
- package/dist/server/rest-next-pages.js.map +1 -0
- package/dist/spec.d.ts +149 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +2 -0
- package/dist/spec.js.map +1 -0
- package/dist/telemetry/anomaly.d.ts +28 -0
- package/dist/telemetry/anomaly.d.ts.map +1 -0
- package/dist/telemetry/anomaly.js +2 -0
- package/dist/telemetry/anomaly.js.map +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.js +1 -0
- package/dist/telemetry/spec.d.ts +99 -0
- package/dist/telemetry/spec.d.ts.map +1 -0
- package/dist/telemetry/spec.js +2 -0
- package/dist/telemetry/spec.js.map +1 -0
- package/dist/telemetry/tracker.d.ts +52 -0
- package/dist/telemetry/tracker.d.ts.map +1 -0
- package/dist/telemetry/tracker.js +2 -0
- package/dist/telemetry/tracker.js.map +1 -0
- package/dist/tests/index.d.ts +3 -0
- package/dist/tests/index.js +1 -0
- package/dist/tests/runner.d.ts +44 -0
- package/dist/tests/runner.d.ts.map +1 -0
- package/dist/tests/runner.js +2 -0
- package/dist/tests/runner.js.map +1 -0
- package/dist/tests/spec.d.ts +90 -0
- package/dist/tests/spec.d.ts.map +1 -0
- package/dist/tests/spec.js +2 -0
- package/dist/tests/spec.js.map +1 -0
- package/dist/themes.d.ts +56 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +2 -0
- package/dist/themes.js.map +1 -0
- package/dist/translations/catalog.d.ts +29 -0
- package/dist/translations/catalog.d.ts.map +1 -0
- package/dist/translations/catalog.js +0 -0
- package/dist/translations/tenant.d.ts +16 -0
- package/dist/translations/tenant.d.ts.map +1 -0
- package/dist/translations/tenant.js +0 -0
- package/dist/types/all.d.ts +60 -0
- package/dist/types/all.js +0 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/workflow/adapters/db-adapter.d.ts +15 -0
- package/dist/workflow/adapters/db-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/db-adapter.js +2 -0
- package/dist/workflow/adapters/db-adapter.js.map +1 -0
- package/dist/workflow/adapters/file-adapter.d.ts +15 -0
- package/dist/workflow/adapters/file-adapter.d.ts.map +1 -0
- package/dist/workflow/adapters/file-adapter.js +2 -0
- package/dist/workflow/adapters/file-adapter.js.map +1 -0
- package/dist/workflow/adapters/index.d.ts +4 -0
- package/dist/workflow/adapters/index.js +1 -0
- package/dist/workflow/adapters/memory-store.d.ts +19 -0
- package/dist/workflow/adapters/memory-store.d.ts.map +1 -0
- package/dist/workflow/adapters/memory-store.js +2 -0
- package/dist/workflow/adapters/memory-store.js.map +1 -0
- package/dist/workflow/expression.d.ts +10 -0
- package/dist/workflow/expression.d.ts.map +1 -0
- package/dist/workflow/expression.js +2 -0
- package/dist/workflow/expression.js.map +1 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.js +1 -0
- package/dist/workflow/runner.d.ts +74 -0
- package/dist/workflow/runner.d.ts.map +1 -0
- package/dist/workflow/runner.js +2 -0
- package/dist/workflow/runner.js.map +1 -0
- package/dist/workflow/spec.d.ts +100 -0
- package/dist/workflow/spec.d.ts.map +1 -0
- package/dist/workflow/spec.js +2 -0
- package/dist/workflow/spec.js.map +1 -0
- package/dist/workflow/state.d.ts +35 -0
- package/dist/workflow/state.d.ts.map +1 -0
- package/dist/workflow/state.js +0 -0
- package/dist/workflow/validation.d.ts +29 -0
- package/dist/workflow/validation.d.ts.map +1 -0
- package/dist/workflow/validation.js +2 -0
- package/dist/workflow/validation.js.map +1 -0
- package/package.json +401 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BrandingAssetRef, BrandingDefaults, ResolvedBranding, TenantBrandingAsset, TenantBrandingConfig } from "../app-config/branding.js";
|
|
2
|
+
import { Owner, OwnerShipMeta, Owners, OwnersEnum, Stability, StabilityEnum, Tag, Tags, TagsEnum } from "../ownership.js";
|
|
3
|
+
import { EventEnvelope, EventKey, EventSpec, defineEvent, eventKey } from "../events.js";
|
|
4
|
+
import { ResourceMeta, ResourceRefDescriptor, ResourceRegistry, ResourceTemplateSpec, defineResourceTemplate, isResourceRef, resourceRef } from "../resources.js";
|
|
5
|
+
import { AttributeMatcher, ConsentDefinition, FieldPolicyRule, PIIPolicy, PolicyCondition, PolicyEffect, PolicyMeta, PolicyOPAConfig, PolicyRef, PolicyRegistry, PolicyRule, PolicySpec, RateLimitDefinition, RelationshipDefinition, RelationshipMatcher, ResourceMatcher, SubjectMatcher, makePolicyKey } from "../policy/spec.js";
|
|
6
|
+
import { Action, Assertion, CoverageRequirement, ExpectErrorAssertion, ExpectEventsAssertion, ExpectOutputAssertion, ExpectedEvent, Fixture, OperationTargetRef, TestRegistry, TestScenario, TestSpec, TestSpecMeta, TestSpecRef, TestTarget, WorkflowTargetRef, makeTestKey } from "../tests/spec.js";
|
|
7
|
+
import { AnyContractSpec, ContractSpec, EmitDecl, EmitDeclInline, EmitDeclRef, OpKind, TelemetryTrigger, defineCommand, defineQuery, isEmitDeclRef } from "../spec.js";
|
|
8
|
+
import { TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyThreshold, TelemetryConfig, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySpec, makeTelemetryKey } from "../telemetry/spec.js";
|
|
9
|
+
import { TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions } from "../telemetry/anomaly.js";
|
|
10
|
+
import { RuntimeTelemetryProvider, TelemetryDispatch, TelemetryEventContext, TelemetryTracker, TelemetryTrackerOptions } from "../telemetry/tracker.js";
|
|
11
|
+
import { CapabilityKind, CapabilityMeta, CapabilityRef, CapabilityRegistry, CapabilityRequirement, CapabilitySpec, CapabilitySurface, CapabilitySurfaceRef, capabilityKey } from "../capabilities.js";
|
|
12
|
+
import { DataPresentation, MarkdownPresentation, PresentationContent, PresentationKind, PresentationMeta, PresentationPolicy, PresentationRegistry, PresentationSpec, WebComponentPresentation, jsonSchemaForPresentation } from "../presentations.js";
|
|
13
|
+
import { PresentationDescriptorV2, PresentationRenderer, PresentationSource, PresentationSourceBlocknotejs, PresentationSourceComponentReact, PresentationTarget, PresentationV2Meta, PresentationValidator, ReactRenderDescriptor, RenderContext, TransformEngine, createDefaultTransformEngine, registerBasicValidation, registerDefaultReactRenderer } from "../presentations.v2.js";
|
|
14
|
+
import { AllocationStrategy, ExperimentMeta, ExperimentOverride, ExperimentOverrideType, ExperimentRef, ExperimentRegistry, ExperimentSpec, ExperimentVariant, MetricAggregation, SuccessMetric, TargetingRule, makeExperimentKey } from "../experiments/spec.js";
|
|
15
|
+
import { EventRef, FeatureModuleMeta, FeatureModuleSpec, FeatureRef, FeatureRegistry, OpRef, PresentationRef, installFeature, validateFeatureTargetsV2 } from "../features.js";
|
|
16
|
+
import { DataViewAction, DataViewBaseConfig, DataViewConfig, DataViewDetailConfig, DataViewField, DataViewFieldFormat, DataViewFilter, DataViewGridConfig, DataViewKind, DataViewListConfig, DataViewMeta, DataViewRegistry, DataViewSections, DataViewSource, DataViewSpec, DataViewStates, DataViewTableColumn, DataViewTableConfig, dataViewKey } from "../data-views.js";
|
|
17
|
+
import { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus } from "../workflow/spec.js";
|
|
18
|
+
import { ComponentVariantDefinition, ComponentVariantSpec, ThemeMeta, ThemeOverride, ThemeRef, ThemeRegistry, ThemeScope, ThemeSpec, ThemeToken, ThemeTokens, makeThemeRef } from "../themes.js";
|
|
19
|
+
import { IntegrationByokSetup, IntegrationCapabilityMapping, IntegrationCategory, IntegrationConfigSchema, IntegrationHealthCheck, IntegrationMeta, IntegrationOwnershipMode, IntegrationSecretSchema, IntegrationSpec, IntegrationSpecRegistry, makeIntegrationSpecKey } from "../integrations/spec.js";
|
|
20
|
+
import { ConnectionStatus, IntegrationConnection, IntegrationConnectionHealth, IntegrationConnectionMeta, IntegrationUsageMetrics } from "../integrations/connection.js";
|
|
21
|
+
import { AppIntegrationBinding } from "../integrations/binding.js";
|
|
22
|
+
import { KnowledgeAccessPolicy, KnowledgeCategory, KnowledgeIndexingConfig, KnowledgeRetentionPolicy, KnowledgeSpaceMeta, KnowledgeSpaceRegistry, KnowledgeSpaceSpec, makeKnowledgeSpaceKey } from "../knowledge/spec.js";
|
|
23
|
+
import { KnowledgeSourceConfig, KnowledgeSourceMeta, KnowledgeSourceType } from "../knowledge/source.js";
|
|
24
|
+
import { AppKnowledgeBinding } from "../knowledge/binding.js";
|
|
25
|
+
import { BlueprintTranslationCatalog, Locale, MessageKey, PlatformTranslationCatalog, TranslationCatalogMeta, TranslationEntry } from "../translations/catalog.js";
|
|
26
|
+
import { AppBlueprintMeta, AppBlueprintRegistry, AppBlueprintSpec, AppIntegrationSlot, AppRouteConfig, AppThemeBinding, FeatureFlagState, SpecPointer, TelemetryBinding, TenantAppConfig, TenantAppConfigMeta, TenantRouteOverride, TenantSpecOverride, TranslationCatalogPointer, makeAppBlueprintKey } from "../app-config/spec.js";
|
|
27
|
+
import { AppComposition, AppCompositionDeps, ComposeOptions, MissingReference, ResolveAppConfigDeps, ResolvedAppConfig, ResolvedIntegration, ResolvedKnowledge, ResolvedTranslation, composeAppConfig, resolveAppConfig } from "../app-config/runtime.js";
|
|
28
|
+
import { Actor, Channel, EventPublisher, FieldLevelDecision, HandlerCtx, PolicyDecider, PolicyDeciderInput, PolicyDecision, RateLimiter, TranslationResolver } from "../types.js";
|
|
29
|
+
import { GetResolvedBrandingQuery, ResolveMessageQuery, UpdateBlueprintTranslationCatalogCommand, UpdateTenantBrandingCommand, UpdateTenantTranslationOverridesCommand, VerifyCustomDomainCommand, appConfigContracts, registerAppConfigContracts } from "../app-config/contracts.js";
|
|
30
|
+
import { ArrayFieldSpec, BaseFieldSpec, CheckboxFieldSpec, ConstraintDecl, ConstraintHandler, EnhanceFields, FieldSpec, FormAction, FormOption, FormRegistry, FormSpec, FormValuesFor, GroupFieldSpec, OptionsSource, Predicate, PredicateOp, RadioFieldSpec, SelectFieldSpec, SwitchFieldSpec, TextFieldSpec, TextareaFieldSpec, TypedOptionsSource, TypedPredicate, TypedWhenClause, WhenClause, buildZodWithRelations, defineFormSpec, evalPredicate } from "../forms.js";
|
|
31
|
+
import { defaultGqlField, defaultMcpTool, defaultRestPath, jsonSchemaForSpec } from "../jsonschema.js";
|
|
32
|
+
import { toV2FromV1 } from "../presentations.backcompat.js";
|
|
33
|
+
import { DecisionContext, PolicyEngine, ResourceContext, SubjectContext, SubjectRelationship } from "../policy/engine.js";
|
|
34
|
+
import { DataMigrationStep, MigrationCheck, MigrationMeta, MigrationPlan, MigrationRegistry, MigrationSpec, MigrationStep, MigrationStepBase, MigrationStepKind, SchemaMigrationStep, ValidationMigrationStep } from "../migrations.js";
|
|
35
|
+
import { AssertionResult, ScenarioRunResult, TestRunResult, TestRunner, TestRunnerConfig } from "../tests/runner.js";
|
|
36
|
+
import { IntegrationCallContext, IntegrationCallError, IntegrationCallGuard, IntegrationCallGuardOptions, IntegrationCallResult, IntegrationContext, IntegrationInvocationStatus, IntegrationTelemetryEmitter, IntegrationTelemetryEvent, IntegrationTraceMetadata, connectionStatusLabel, ensureConnectionReady } from "../integrations/runtime.js";
|
|
37
|
+
import { productCanonKnowledgeSpace, registerProductCanonKnowledgeSpace } from "../knowledge/spaces/product-canon.js";
|
|
38
|
+
import { registerSupportFaqKnowledgeSpace, supportFaqKnowledgeSpace } from "../knowledge/spaces/support-faq.js";
|
|
39
|
+
import { emailThreadsKnowledgeSpace, registerEmailThreadsKnowledgeSpace } from "../knowledge/spaces/email-threads.js";
|
|
40
|
+
import { registerUploadedDocsKnowledgeSpace, uploadedDocsKnowledgeSpace } from "../knowledge/spaces/uploaded-docs.js";
|
|
41
|
+
import { financialDocsKnowledgeSpace, registerFinancialDocsKnowledgeSpace } from "../knowledge/spaces/financial-docs.js";
|
|
42
|
+
import { financialOverviewKnowledgeSpace, registerFinancialOverviewKnowledgeSpace } from "../knowledge/spaces/financial-overview.js";
|
|
43
|
+
import { BehaviorSignal, BehaviorSignalEnvelope, ErrorSignal, ErrorSignalEnvelope, ProposalAction, ProposalBlocker, ProposalConfidence, ProposalSink, ProposalTarget, RegenerationContext, RegenerationRule, RegeneratorSignal, SpecChangeProposal, TelemetrySignal, TelemetrySignalEnvelope } from "../regenerator/types.js";
|
|
44
|
+
import { BehaviorSignalProvider, ErrorSignalProvider, SignalAdapters, TelemetrySignalProvider } from "../regenerator/adapters.js";
|
|
45
|
+
import { RegeneratorOptions, RegeneratorService } from "../regenerator/service.js";
|
|
46
|
+
import { ActionExecutionResult, BlueprintUpdater, ExecutionStatus, MigrationExecutor, ProposalExecutionResult, ProposalExecutor, ProposalExecutorDeps, ProposalExecutorOptions, RegenerationTrigger, RunMigrationsAction, RunTestsAction, TenantConfigUpdater, TestExecutor, TriggerRegenerationAction, UpdateBlueprintAction, UpdateTenantConfigAction } from "../regenerator/executor.js";
|
|
47
|
+
import { behaviorToEnvelope, errorToEnvelope, telemetryToEnvelope } from "../regenerator/utils.js";
|
|
48
|
+
import { ExecutorProposalSink, ExecutorResultPayload, ExecutorSinkLogger, ExecutorSinkOptions } from "../regenerator/sinks.js";
|
|
49
|
+
import { ValidateWorkflowSpecOptions, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, validateWorkflowSpec } from "../workflow/validation.js";
|
|
50
|
+
import { StateStore, StepExecution, WorkflowState, WorkflowStateFilters } from "../workflow/state.js";
|
|
51
|
+
import { ExpressionContext, evaluateExpression } from "../workflow/expression.js";
|
|
52
|
+
import { ValidationContext, ValidationIssue, ValidationResult, ValidationSeverity, validateBlueprint, validateConfig, validateResolvedConfig, validateTenantConfig } from "../app-config/validation.js";
|
|
53
|
+
import { CreateTenantConfigDraftCommand, GetTenantConfigVersionQuery, ListTenantConfigVersionsQuery, PromoteTenantConfigToPreviewCommand, PublishTenantConfigCommand, RollbackTenantConfigCommand, lifecycleContracts, registerAppConfigLifecycleContracts } from "../app-config/lifecycle-contracts.js";
|
|
54
|
+
import { DocumentFragment, DocumentProcessor, RawDocument } from "../knowledge/ingestion/document-processor.js";
|
|
55
|
+
import { EmbeddingService } from "../knowledge/ingestion/embedding-service.js";
|
|
56
|
+
import { VectorIndexConfig, VectorIndexer } from "../knowledge/ingestion/vector-indexer.js";
|
|
57
|
+
import { StorageIngestionAdapter } from "../knowledge/ingestion/storage-adapter.js";
|
|
58
|
+
import { KnowledgeAnswer, KnowledgeQueryConfig, KnowledgeQueryService } from "../knowledge/query/service.js";
|
|
59
|
+
import { KnowledgeAccessContext, KnowledgeAccessGuard, KnowledgeAccessGuardOptions, KnowledgeAccessResult } from "../knowledge/runtime.js";
|
|
60
|
+
export { Action, ActionExecutionResult, Actor, AllocationStrategy, AnyContractSpec, AppBlueprintMeta, AppBlueprintRegistry, AppBlueprintSpec, AppComposition, AppCompositionDeps, AppIntegrationBinding, AppIntegrationSlot, AppKnowledgeBinding, AppRouteConfig, AppThemeBinding, ArrayFieldSpec, Assertion, AssertionResult, AttributeMatcher, BaseFieldSpec, BehaviorSignal, BehaviorSignalEnvelope, BehaviorSignalProvider, BlueprintTranslationCatalog, BlueprintUpdater, BrandingAssetRef, BrandingDefaults, CapabilityKind, CapabilityMeta, CapabilityRef, CapabilityRegistry, CapabilityRequirement, CapabilitySpec, CapabilitySurface, CapabilitySurfaceRef, Channel, CheckboxFieldSpec, CompensationStep, CompensationStrategy, ComponentVariantDefinition, ComponentVariantSpec, ComposeOptions, ConnectionStatus, ConsentDefinition, ConstraintDecl, ConstraintHandler, ContractSpec, CoverageRequirement, CreateTenantConfigDraftCommand, DataMigrationStep, DataPresentation, DataViewAction, DataViewBaseConfig, DataViewConfig, DataViewDetailConfig, DataViewField, DataViewFieldFormat, DataViewFilter, DataViewGridConfig, DataViewKind, DataViewListConfig, DataViewMeta, DataViewRegistry, DataViewSections, DataViewSource, DataViewSpec, DataViewStates, DataViewTableColumn, DataViewTableConfig, DecisionContext, DocumentFragment, DocumentProcessor, EmbeddingService, EmitDecl, EmitDeclInline, EmitDeclRef, EnhanceFields, ErrorSignal, ErrorSignalEnvelope, ErrorSignalProvider, EventEnvelope, EventKey, EventPublisher, EventRef, EventSpec, ExecutionStatus, ExecutorProposalSink, ExecutorResultPayload, ExecutorSinkLogger, ExecutorSinkOptions, ExpectErrorAssertion, ExpectEventsAssertion, ExpectOutputAssertion, ExpectedEvent, ExperimentMeta, ExperimentOverride, ExperimentOverrideType, ExperimentRef, ExperimentRegistry, ExperimentSpec, ExperimentVariant, ExpressionContext, FeatureFlagState, FeatureModuleMeta, FeatureModuleSpec, FeatureRef, FeatureRegistry, FieldLevelDecision, FieldPolicyRule, FieldSpec, Fixture, FormAction, FormOption, FormRef, FormRegistry, FormSpec, FormValuesFor, GetResolvedBrandingQuery, GetTenantConfigVersionQuery, GroupFieldSpec, GuardCondition, GuardConditionKind, HandlerCtx, IntegrationByokSetup, IntegrationCallContext, IntegrationCallError, IntegrationCallGuard, IntegrationCallGuardOptions, IntegrationCallResult, IntegrationCapabilityMapping, IntegrationCategory, IntegrationConfigSchema, IntegrationConnection, IntegrationConnectionHealth, IntegrationConnectionMeta, IntegrationContext, IntegrationHealthCheck, IntegrationInvocationStatus, IntegrationMeta, IntegrationOwnershipMode, IntegrationSecretSchema, IntegrationSpec, IntegrationSpecRegistry, IntegrationTelemetryEmitter, IntegrationTelemetryEvent, IntegrationTraceMetadata, IntegrationUsageMetrics, KnowledgeAccessContext, KnowledgeAccessGuard, KnowledgeAccessGuardOptions, KnowledgeAccessPolicy, KnowledgeAccessResult, KnowledgeAnswer, KnowledgeCategory, KnowledgeIndexingConfig, KnowledgeQueryConfig, KnowledgeQueryService, KnowledgeRetentionPolicy, KnowledgeSourceConfig, KnowledgeSourceMeta, KnowledgeSourceType, KnowledgeSpaceMeta, KnowledgeSpaceRegistry, KnowledgeSpaceSpec, ListTenantConfigVersionsQuery, Locale, MarkdownPresentation, MessageKey, MetricAggregation, MigrationCheck, MigrationExecutor, MigrationMeta, MigrationPlan, MigrationRegistry, MigrationSpec, MigrationStep, MigrationStepBase, MigrationStepKind, MissingReference, OpKind, OpRef, OperationTargetRef, OptionsSource, Owner, OwnerShipMeta, Owners, OwnersEnum, PIIPolicy, PlatformTranslationCatalog, PolicyCondition, PolicyDecider, PolicyDeciderInput, PolicyDecision, PolicyEffect, PolicyEngine, PolicyMeta, PolicyOPAConfig, PolicyRef, PolicyRegistry, PolicyRule, PolicySpec, Predicate, PredicateOp, PresentationContent, PresentationDescriptorV2, PresentationKind, PresentationMeta, PresentationPolicy, PresentationRef, PresentationRegistry, PresentationRenderer, PresentationSource, PresentationSourceBlocknotejs, PresentationSourceComponentReact, PresentationSpec, PresentationTarget, PresentationV2Meta, PresentationValidator, PromoteTenantConfigToPreviewCommand, ProposalAction, ProposalBlocker, ProposalConfidence, ProposalExecutionResult, ProposalExecutor, ProposalExecutorDeps, ProposalExecutorOptions, ProposalSink, ProposalTarget, PublishTenantConfigCommand, RadioFieldSpec, RateLimitDefinition, RateLimiter, RawDocument, ReactRenderDescriptor, RegenerationContext, RegenerationRule, RegenerationTrigger, RegeneratorOptions, RegeneratorService, RegeneratorSignal, RelationshipDefinition, RelationshipMatcher, RenderContext, ResolveAppConfigDeps, ResolveMessageQuery, ResolvedAppConfig, ResolvedBranding, ResolvedIntegration, ResolvedKnowledge, ResolvedTranslation, ResourceContext, ResourceMatcher, ResourceMeta, ResourceRefDescriptor, ResourceRegistry, ResourceTemplateSpec, RetryPolicy, RollbackTenantConfigCommand, RunMigrationsAction, RunTestsAction, RuntimeTelemetryProvider, SLA, ScenarioRunResult, SchemaMigrationStep, SelectFieldSpec, SignalAdapters, SpecChangeProposal, SpecPointer, Stability, StabilityEnum, StateStore, Step, StepAction, StepExecution, StepType, StorageIngestionAdapter, SubjectContext, SubjectMatcher, SubjectRelationship, SuccessMetric, SwitchFieldSpec, Tag, Tags, TagsEnum, TargetingRule, TelemetryAnomalyAction, TelemetryAnomalyDetectionConfig, TelemetryAnomalyEvent, TelemetryAnomalyMonitor, TelemetryAnomalyMonitorOptions, TelemetryAnomalyThreshold, TelemetryBinding, TelemetryConfig, TelemetryDispatch, TelemetryEventContext, TelemetryEventDef, TelemetryMeta, TelemetryPrivacyLevel, TelemetryPropertyDef, TelemetryProviderConfig, TelemetryRegistry, TelemetryRetentionConfig, TelemetrySamplingConfig, TelemetrySignal, TelemetrySignalEnvelope, TelemetrySignalProvider, TelemetrySpec, TelemetryTracker, TelemetryTrackerOptions, TelemetryTrigger, TenantAppConfig, TenantAppConfigMeta, TenantBrandingAsset, TenantBrandingConfig, TenantConfigUpdater, TenantRouteOverride, TenantSpecOverride, TestExecutor, TestRegistry, TestRunResult, TestRunner, TestRunnerConfig, TestScenario, TestSpec, TestSpecMeta, TestSpecRef, TestTarget, TextFieldSpec, TextareaFieldSpec, ThemeMeta, ThemeOverride, ThemeRef, ThemeRegistry, ThemeScope, ThemeSpec, ThemeToken, ThemeTokens, TransformEngine, Transition, TranslationCatalogMeta, TranslationCatalogPointer, TranslationEntry, TranslationResolver, TriggerRegenerationAction, TypedOptionsSource, TypedPredicate, TypedWhenClause, UpdateBlueprintAction, UpdateBlueprintTranslationCatalogCommand, UpdateTenantBrandingCommand, UpdateTenantConfigAction, UpdateTenantTranslationOverridesCommand, ValidateWorkflowSpecOptions, ValidationContext, ValidationIssue, ValidationMigrationStep, ValidationResult, ValidationSeverity, VectorIndexConfig, VectorIndexer, VerifyCustomDomainCommand, WebComponentPresentation, WhenClause, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowState, WorkflowStateFilters, WorkflowStatus, WorkflowTargetRef, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, appConfigContracts, assertWorkflowSpecValid, behaviorToEnvelope, buildZodWithRelations, capabilityKey, composeAppConfig, connectionStatusLabel, createDefaultTransformEngine, dataViewKey, defaultGqlField, defaultMcpTool, defaultRestPath, defineCommand, defineEvent, defineFormSpec, defineQuery, defineResourceTemplate, emailThreadsKnowledgeSpace, ensureConnectionReady, errorToEnvelope, evalPredicate, evaluateExpression, eventKey, financialDocsKnowledgeSpace, financialOverviewKnowledgeSpace, installFeature, isEmitDeclRef, isResourceRef, jsonSchemaForPresentation, jsonSchemaForSpec, lifecycleContracts, makeAppBlueprintKey, makeExperimentKey, makeIntegrationSpecKey, makeKnowledgeSpaceKey, makePolicyKey, makeTelemetryKey, makeTestKey, makeThemeRef, productCanonKnowledgeSpace, registerAppConfigContracts, registerAppConfigLifecycleContracts, registerBasicValidation, registerDefaultReactRenderer, registerEmailThreadsKnowledgeSpace, registerFinancialDocsKnowledgeSpace, registerFinancialOverviewKnowledgeSpace, registerProductCanonKnowledgeSpace, registerSupportFaqKnowledgeSpace, registerUploadedDocsKnowledgeSpace, resolveAppConfig, resourceRef, supportFaqKnowledgeSpace, telemetryToEnvelope, toV2FromV1, uploadedDocsKnowledgeSpace, validateBlueprint, validateConfig, validateFeatureTargetsV2, validateResolvedConfig, validateTenantConfig, validateWorkflowSpec };
|
|
File without changes
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ResolvedBranding } from "./app-config/branding.js";
|
|
2
|
+
import { ConsentDefinition, PolicySpec, RateLimitDefinition } from "./policy/spec.js";
|
|
3
|
+
import { TelemetryTracker } from "./telemetry/tracker.js";
|
|
4
|
+
import { Locale, MessageKey } from "./translations/catalog.js";
|
|
5
|
+
import { ResolvedAppConfig, ResolvedIntegration, ResolvedKnowledge, ResolvedTranslation } from "./app-config/runtime.js";
|
|
6
|
+
import { SecretProvider } from "./integrations/secrets/provider.js";
|
|
7
|
+
|
|
8
|
+
//#region src/types.d.ts
|
|
9
|
+
/**
|
|
10
|
+
* Common runtime types: execution context, policy decision & event emission.
|
|
11
|
+
*/
|
|
12
|
+
type Actor = 'anonymous' | 'user' | 'admin';
|
|
13
|
+
type Channel = 'web' | 'mobile' | 'job' | 'agent';
|
|
14
|
+
interface FieldLevelDecision {
|
|
15
|
+
field: string;
|
|
16
|
+
effect: 'allow' | 'deny';
|
|
17
|
+
reason?: string;
|
|
18
|
+
}
|
|
19
|
+
interface PolicyDecision {
|
|
20
|
+
effect: 'allow' | 'deny';
|
|
21
|
+
reason?: string;
|
|
22
|
+
rateLimit?: Pick<RateLimitDefinition, 'rpm' | 'key' | 'windowSeconds' | 'burst'>;
|
|
23
|
+
escalate?: 'human_review' | null;
|
|
24
|
+
fieldDecisions?: FieldLevelDecision[];
|
|
25
|
+
pii?: PolicySpec['pii'];
|
|
26
|
+
requiredConsents?: ConsentDefinition[];
|
|
27
|
+
evaluatedBy?: 'engine' | 'opa';
|
|
28
|
+
}
|
|
29
|
+
interface PolicyDeciderInput {
|
|
30
|
+
service: string;
|
|
31
|
+
command: string;
|
|
32
|
+
version: number;
|
|
33
|
+
actor: Actor;
|
|
34
|
+
channel?: Channel;
|
|
35
|
+
roles?: string[];
|
|
36
|
+
organizationId?: string | null;
|
|
37
|
+
userId?: string | null;
|
|
38
|
+
flags?: string[];
|
|
39
|
+
}
|
|
40
|
+
type PolicyDecider = (input: PolicyDeciderInput) => Promise<PolicyDecision>;
|
|
41
|
+
type RateLimiter = (key: string, cost: number, rpm: number) => Promise<void>;
|
|
42
|
+
type TranslationResolver = (key: MessageKey, locale?: Locale) => Promise<string | null> | string | null;
|
|
43
|
+
/** Outbox/bus event publisher (after validation & guarding) */
|
|
44
|
+
type EventPublisher = (envelope: {
|
|
45
|
+
name: string;
|
|
46
|
+
version: number;
|
|
47
|
+
payload: unknown;
|
|
48
|
+
traceId?: string;
|
|
49
|
+
}) => Promise<void>;
|
|
50
|
+
interface HandlerCtx {
|
|
51
|
+
traceId?: string;
|
|
52
|
+
idemKey?: string;
|
|
53
|
+
organizationId?: string | null;
|
|
54
|
+
userId?: string | null;
|
|
55
|
+
actor?: Actor;
|
|
56
|
+
channel?: Channel;
|
|
57
|
+
roles?: string[];
|
|
58
|
+
/** Policy engine hook (policy.yaml) */
|
|
59
|
+
decide?: PolicyDecider;
|
|
60
|
+
/** Rate limiter (e.g., Redis) */
|
|
61
|
+
rateLimit?: RateLimiter;
|
|
62
|
+
/** Telemetry tracker */
|
|
63
|
+
telemetry?: TelemetryTracker;
|
|
64
|
+
/** Event publisher (outbox+bus) */
|
|
65
|
+
eventPublisher?: EventPublisher;
|
|
66
|
+
/** Secret provider for secure credentials */
|
|
67
|
+
secretProvider?: SecretProvider;
|
|
68
|
+
/** Internal pipe: filled by executor to enforce declared events */
|
|
69
|
+
__emitGuard__?: (name: string, version: number, payload: unknown) => Promise<void>;
|
|
70
|
+
/** Resolved application configuration for the current execution context */
|
|
71
|
+
appConfig?: ResolvedAppConfig;
|
|
72
|
+
/** Resolved integration connections available to this execution */
|
|
73
|
+
integrations?: ResolvedIntegration[];
|
|
74
|
+
/** Resolved knowledge spaces available to this execution */
|
|
75
|
+
knowledge?: ResolvedKnowledge[];
|
|
76
|
+
/** Resolved branding context */
|
|
77
|
+
branding?: ResolvedBranding;
|
|
78
|
+
/** Translation context */
|
|
79
|
+
translation?: {
|
|
80
|
+
config: ResolvedTranslation;
|
|
81
|
+
resolve?: TranslationResolver;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
export { Actor, Channel, EventPublisher, FieldLevelDecision, HandlerCtx, PolicyDecider, PolicyDeciderInput, PolicyDecision, RateLimiter, TranslationResolver };
|
|
86
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;KAGY,KAAA;KACA,OAAA;AAwBK,UANA,kBAAA,CAMc;EAGZ,KAAA,EAAA,MAAA;EAAL,MAAA,EAAA,OAAA,GAAA,MAAA;EAEK,MAAA,CAAA,EAAA,MAAA;;AAEE,UAPJ,cAAA,CAOI;EAAiB,MAAA,EAAA,OAAA,GAAA,MAAA;EAIrB,MAAA,CAAA,EAAA,MAAA;EAYL,SAAA,CAAA,EApBE,IAoBW,CApBN,mBAoBM,EAAA,KAAA,GAAA,KAAA,GAAA,eAAA,GAAA,OAAA,CAAA;EAChB,QAAA,CAAA,EAAA,cAAA,GAAA,IAAA;EACI,cAAA,CAAA,EApBM,kBAoBN,EAAA;EAAR,GAAA,CAAA,EAnBG,UAmBH,CAAA,KAAA,CAAA;EAAO,gBAAA,CAAA,EAlBS,iBAkBT,EAAA;EAEA,WAAA,CAAA,EAAW,QAAA,GAIlB,KAAA;AAEL;AACO,UAvBU,kBAAA,CAuBV;EACI,OAAA,EAAA,MAAA;EACN,OAAA,EAAA,MAAA;EAAO,OAAA,EAAA,MAAA;EAGA,KAAA,EAxBH,KAwBG;EAOK,OAAA,CAAA,EA9BL,OA8Be;EAKjB,KAAA,CAAA,EAAA,MAAA,EAAA;EACE,cAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EAID,MAAA,CAAA,EAAA,MAAA,GAAA,IAAA;EAEG,KAAA,CAAA,EAAA,MAAA,EAAA;;AAIK,KAvCP,aAAA,GAuCO,CAAA,KAAA,EAtCV,kBAsCU,EAAA,GArCd,OAqCc,CArCN,cAqCM,CAAA;AAEA,KArCP,WAAA,GAqCO,CAAA,GAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,MAAA,EAAA,GAjCd,OAiCc,CAAA,IAAA,CAAA;AAOZ,KAtCK,mBAAA,GAsCL,CAAA,GAAA,EArCA,UAqCA,EAAA,MAAA,CAAA,EApCI,MAoCJ,EAAA,GAnCF,OAmCE,CAAA,MAAA,GAAA,IAAA,CAAA,GAAA,MAAA,GAAA,IAAA;;AAIU,KApCL,cAAA,GAoCK,CAAA,QAAA,EAAA;EAEH,IAAA,EAAA,MAAA;EAED,OAAA,EAAA,MAAA;EAGD,OAAA,EAAA,OAAA;EACE,OAAA,CAAA,EAAA,MAAA;CAAmB,EAAA,GAvC3B,OAuC2B,CAAA,IAAA,CAAA;UArChB,UAAA;;;;;UAKP;YACE;;;WAID;;cAEG;;cAEA;;mBAEK;;mBAEA;;uEAOZ;;cAEO;;iBAEG;;cAEH;;aAED;;;YAGD;cACE"}
|
package/dist/types.js
ADDED
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { StateStore } from "../state.js";
|
|
2
|
+
|
|
3
|
+
//#region src/workflow/adapters/db-adapter.d.ts
|
|
4
|
+
interface DatabaseStateStoreOptions {
|
|
5
|
+
/** Placeholder for connection string / client injection. */
|
|
6
|
+
connection?: unknown;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Placeholder factory to guide future database adapters (PostgreSQL, MongoDB, etc.).
|
|
10
|
+
* Consumers should provide their own implementation that satisfies {@link StateStore}.
|
|
11
|
+
*/
|
|
12
|
+
declare function createDatabaseStateStore(_options: DatabaseStateStoreOptions): StateStore;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { DatabaseStateStoreOptions, createDatabaseStateStore };
|
|
15
|
+
//# sourceMappingURL=db-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-adapter.d.ts","names":[],"sources":["../../../src/workflow/adapters/db-adapter.ts"],"sourcesContent":[],"mappings":";;;UAEiB,yBAAA;;EAAA,UAAA,CAAA,EAAA,OAAA;AASjB;;;;;iBAAgB,wBAAA,WACJ,4BACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-adapter.js","names":[],"sources":["../../../src/workflow/adapters/db-adapter.ts"],"sourcesContent":["import type { StateStore } from '../state';\n\nexport interface DatabaseStateStoreOptions {\n /** Placeholder for connection string / client injection. */\n connection?: unknown;\n}\n\n/**\n * Placeholder factory to guide future database adapters (PostgreSQL, MongoDB, etc.).\n * Consumers should provide their own implementation that satisfies {@link StateStore}.\n */\nexport function createDatabaseStateStore(\n _options: DatabaseStateStoreOptions\n): StateStore {\n throw new Error(\n 'Database state store adapter not implemented. Provide a custom adapter that satisfies StateStore.'\n );\n}\n\n"],"mappings":"AAWA,SAAgB,EACd,EACY,CACZ,MAAU,MACR,oGACD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { StateStore } from "../state.js";
|
|
2
|
+
|
|
3
|
+
//#region src/workflow/adapters/file-adapter.d.ts
|
|
4
|
+
interface FileStateStoreOptions {
|
|
5
|
+
/** Absolute or relative path to the persistence file. */
|
|
6
|
+
filePath: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Placeholder for a file-backed state store adapter.
|
|
10
|
+
* Implementations should manage locking/concurrency and JSON serialization.
|
|
11
|
+
*/
|
|
12
|
+
declare function createFileStateStore(_options: FileStateStoreOptions): StateStore;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { FileStateStoreOptions, createFileStateStore };
|
|
15
|
+
//# sourceMappingURL=file-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-adapter.d.ts","names":[],"sources":["../../../src/workflow/adapters/file-adapter.ts"],"sourcesContent":[],"mappings":";;;UAEiB,qBAAA;;EAAA,QAAA,EAAA,MAAA;AASjB;;;;;iBAAgB,oBAAA,WACJ,wBACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-adapter.js","names":[],"sources":["../../../src/workflow/adapters/file-adapter.ts"],"sourcesContent":["import type { StateStore } from '../state';\n\nexport interface FileStateStoreOptions {\n /** Absolute or relative path to the persistence file. */\n filePath: string;\n}\n\n/**\n * Placeholder for a file-backed state store adapter.\n * Implementations should manage locking/concurrency and JSON serialization.\n */\nexport function createFileStateStore(\n _options: FileStateStoreOptions\n): StateStore {\n throw new Error(\n 'File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.'\n );\n}\n\n"],"mappings":"AAWA,SAAgB,EACd,EACY,CACZ,MAAU,MACR,uGACD"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InMemoryStateStore } from "./memory-store.js";
|
|
2
|
+
import { DatabaseStateStoreOptions, createDatabaseStateStore } from "./db-adapter.js";
|
|
3
|
+
import { FileStateStoreOptions, createFileStateStore } from "./file-adapter.js";
|
|
4
|
+
export { DatabaseStateStoreOptions, FileStateStoreOptions, InMemoryStateStore, createDatabaseStateStore, createFileStateStore };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{InMemoryStateStore as e}from"./memory-store.js";import{createDatabaseStateStore as t}from"./db-adapter.js";import{createFileStateStore as n}from"./file-adapter.js";export{e as InMemoryStateStore,t as createDatabaseStateStore,n as createFileStateStore};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { StateStore, WorkflowState, WorkflowStateFilters } from "../state.js";
|
|
2
|
+
|
|
3
|
+
//#region src/workflow/adapters/memory-store.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Naive in-memory state store. Suitable for tests and single-node development
|
|
7
|
+
* environments. Swap with a database-backed adapter in production.
|
|
8
|
+
*/
|
|
9
|
+
declare class InMemoryStateStore implements StateStore {
|
|
10
|
+
private readonly items;
|
|
11
|
+
create(state: WorkflowState): Promise<void>;
|
|
12
|
+
get(workflowId: string): Promise<WorkflowState | undefined>;
|
|
13
|
+
update(workflowId: string, updater: (current: WorkflowState) => WorkflowState): Promise<WorkflowState>;
|
|
14
|
+
list(filters?: WorkflowStateFilters): Promise<WorkflowState[]>;
|
|
15
|
+
clear(): void;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { InMemoryStateStore };
|
|
19
|
+
//# sourceMappingURL=memory-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.d.ts","names":[],"sources":["../../../src/workflow/adapters/memory-store.ts"],"sourcesContent":[],"mappings":";;;;;;AA4BA;;AAGsC,cAHzB,kBAAA,YAA8B,UAGL,CAAA;EAMG,iBAAA,KAAA;EAAR,MAAA,CAAA,KAAA,EANX,aAMW,CAAA,EANK,OAML,CAAA,IAAA,CAAA;EAOV,GAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAPU,OAOV,CAPkB,aAOlB,GAAA,SAAA,CAAA;EAAkB,MAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAlB,aAAkB,EAAA,GAAA,aAAA,CAAA,EACpC,OADoC,CAC5B,aAD4B,CAAA;EAC5B,IAAA,CAAA,OAAA,CAAA,EASU,oBATV,CAAA,EASiC,OATjC,CASyC,aATzC,EAAA,CAAA;EAAR,KAAA,CAAA,CAAA,EAAA,IAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){return{...e,data:n(e.data),history:e.history.map(e=>({...e,input:n(e.input),output:n(e.output),startedAt:new Date(e.startedAt),completedAt:e.completedAt?new Date(e.completedAt):void 0})),createdAt:new Date(e.createdAt),updatedAt:new Date(e.updatedAt)}}var t=class{items=new Map;async create(t){if(this.items.has(t.workflowId))throw Error(`Workflow state already exists: ${t.workflowId}`);this.items.set(t.workflowId,e(t))}async get(t){let n=this.items.get(t);return n?e(n):void 0}async update(t,n){let r=this.items.get(t);if(!r)throw Error(`Workflow state not found for ${t}`);let i=e(n(e(r)));return this.items.set(t,i),e(i)}async list(t){let n=[...this.items.values()];return(t?.status?n.filter(e=>e.status===t.status):n).map(e)}clear(){this.items.clear()}};function n(e){if(e instanceof Date)return new Date(e.getTime());if(Array.isArray(e))return e.map(e=>n(e));if(e&&typeof e==`object`){let t={};for(let[r,i]of Object.entries(e))t[r]=n(i);return t}return e}export{t as InMemoryStateStore};
|
|
2
|
+
//# sourceMappingURL=memory-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-store.js","names":["result: Record<string, unknown>"],"sources":["../../../src/workflow/adapters/memory-store.ts"],"sourcesContent":["import type {\n StateStore,\n WorkflowState,\n WorkflowStateFilters,\n} from '../state';\n\nfunction cloneState(state: WorkflowState): WorkflowState {\n return {\n ...state,\n data: deepCopy(state.data),\n history: state.history.map((execution) => ({\n ...execution,\n input: deepCopy(execution.input),\n output: deepCopy(execution.output),\n startedAt: new Date(execution.startedAt),\n completedAt: execution.completedAt\n ? new Date(execution.completedAt)\n : undefined,\n })),\n createdAt: new Date(state.createdAt),\n updatedAt: new Date(state.updatedAt),\n };\n}\n\n/**\n * Naive in-memory state store. Suitable for tests and single-node development\n * environments. Swap with a database-backed adapter in production.\n */\nexport class InMemoryStateStore implements StateStore {\n private readonly items = new Map<string, WorkflowState>();\n\n async create(state: WorkflowState): Promise<void> {\n if (this.items.has(state.workflowId))\n throw new Error(`Workflow state already exists: ${state.workflowId}`);\n this.items.set(state.workflowId, cloneState(state));\n }\n\n async get(workflowId: string): Promise<WorkflowState | undefined> {\n const state = this.items.get(workflowId);\n return state ? cloneState(state) : undefined;\n }\n\n async update(\n workflowId: string,\n updater: (current: WorkflowState) => WorkflowState\n ): Promise<WorkflowState> {\n const current = this.items.get(workflowId);\n if (!current)\n throw new Error(`Workflow state not found for ${workflowId}`);\n const next = cloneState(updater(cloneState(current)));\n this.items.set(workflowId, next);\n return cloneState(next);\n }\n\n async list(filters?: WorkflowStateFilters): Promise<WorkflowState[]> {\n const all = [...this.items.values()];\n const filtered = filters?.status\n ? all.filter((state) => state.status === filters.status)\n : all;\n return filtered.map(cloneState);\n }\n\n clear() {\n this.items.clear();\n }\n}\n\nfunction deepCopy<T>(value: T): T {\n if (value instanceof Date) return new Date(value.getTime()) as T;\n if (Array.isArray(value)) return value.map((item) => deepCopy(item)) as T;\n if (value && typeof value === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value as Record<string, unknown>)) {\n result[key] = deepCopy(val);\n }\n return result as T;\n }\n return value;\n}\n\n"],"mappings":"AAMA,SAAS,EAAW,EAAqC,CACvD,MAAO,CACL,GAAG,EACH,KAAM,EAAS,EAAM,KAAK,CAC1B,QAAS,EAAM,QAAQ,IAAK,IAAe,CACzC,GAAG,EACH,MAAO,EAAS,EAAU,MAAM,CAChC,OAAQ,EAAS,EAAU,OAAO,CAClC,UAAW,IAAI,KAAK,EAAU,UAAU,CACxC,YAAa,EAAU,YACnB,IAAI,KAAK,EAAU,YAAY,CAC/B,IAAA,GACL,EAAE,CACH,UAAW,IAAI,KAAK,EAAM,UAAU,CACpC,UAAW,IAAI,KAAK,EAAM,UAAU,CACrC,CAOH,IAAa,EAAb,KAAsD,CACpD,MAAyB,IAAI,IAE7B,MAAM,OAAO,EAAqC,CAChD,GAAI,KAAK,MAAM,IAAI,EAAM,WAAW,CAClC,MAAU,MAAM,kCAAkC,EAAM,aAAa,CACvE,KAAK,MAAM,IAAI,EAAM,WAAY,EAAW,EAAM,CAAC,CAGrD,MAAM,IAAI,EAAwD,CAChE,IAAM,EAAQ,KAAK,MAAM,IAAI,EAAW,CACxC,OAAO,EAAQ,EAAW,EAAM,CAAG,IAAA,GAGrC,MAAM,OACJ,EACA,EACwB,CACxB,IAAM,EAAU,KAAK,MAAM,IAAI,EAAW,CAC1C,GAAI,CAAC,EACH,MAAU,MAAM,gCAAgC,IAAa,CAC/D,IAAM,EAAO,EAAW,EAAQ,EAAW,EAAQ,CAAC,CAAC,CAErD,OADA,KAAK,MAAM,IAAI,EAAY,EAAK,CACzB,EAAW,EAAK,CAGzB,MAAM,KAAK,EAA0D,CACnE,IAAM,EAAM,CAAC,GAAG,KAAK,MAAM,QAAQ,CAAC,CAIpC,OAHiB,GAAS,OACtB,EAAI,OAAQ,GAAU,EAAM,SAAW,EAAQ,OAAO,CACtD,GACY,IAAI,EAAW,CAGjC,OAAQ,CACN,KAAK,MAAM,OAAO,GAItB,SAAS,EAAY,EAAa,CAChC,GAAI,aAAiB,KAAM,OAAO,IAAI,KAAK,EAAM,SAAS,CAAC,CAC3D,GAAI,MAAM,QAAQ,EAAM,CAAE,OAAO,EAAM,IAAK,GAAS,EAAS,EAAK,CAAC,CACpE,GAAI,GAAS,OAAO,GAAU,SAAU,CACtC,IAAMA,EAAkC,EAAE,CAC1C,IAAK,GAAM,CAAC,EAAK,KAAQ,OAAO,QAAQ,EAAiC,CACvE,EAAO,GAAO,EAAS,EAAI,CAE7B,OAAO,EAET,OAAO"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//#region src/workflow/expression.d.ts
|
|
2
|
+
interface ExpressionContext {
|
|
3
|
+
data: Record<string, unknown>;
|
|
4
|
+
input?: unknown;
|
|
5
|
+
output?: unknown;
|
|
6
|
+
}
|
|
7
|
+
declare function evaluateExpression(expression: string | undefined, ctx: ExpressionContext): boolean;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { ExpressionContext, evaluateExpression };
|
|
10
|
+
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.d.ts","names":[],"sources":["../../src/workflow/expression.ts"],"sourcesContent":[],"mappings":";UAAiB,iBAAA;EAAA,IAAA,EACT,MADS,CAAA,MAAA,EAAiB,OAAA,CAAA;EAMlB,KAAA,CAAA,EAAA,OAAA;;;iBAAA,kBAAA,sCAET"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(n,r){if(!n)return!0;let i=n.trim();if(!i)return!0;let a=o(i,`||`);if(a.length>1)return a.some(t=>e(t,r));let s=o(i,`&&`);return s.length>1?s.every(t=>e(t,r)):t(i,r)}function t(e,a){let o=e.trim();if(!o)return!0;if(o.startsWith(`!`))return!t(o.slice(1),a);let s=o.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);if(s){let[,e,t,o,c]=s;return n(i(e,a,t),r(c),o)}let c=o.match(/^(data|input|output)\.([A-Za-z0-9_.\[\]]+)$/);if(c){let[,e,t]=c;return!!i(e,a,t)}return!!r(o)}function n(e,t,n){switch(n){case`===`:case`==`:return e===t;case`!==`:case`!=`:return e!==t;case`>`:return Number(e)>Number(t);case`>=`:return Number(e)>=Number(t);case`<`:return Number(e)<Number(t);case`<=`:return Number(e)<=Number(t);default:return!1}}function r(e){let t=(e??``).trim();if(t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))return t.slice(1,-1);if(/^-?\d+(\.\d+)?$/.test(t))return Number(t);if(/^true$/i.test(t))return!0;if(/^false$/i.test(t))return!1;if(/^null$/i.test(t))return null;if(!/^undefined$/i.test(t))return t}function i(e,t,n){return a(e===`data`?t.data:e===`input`?t.input:t.output,n)}function a(e,t){if(e==null)return;if(!t)return e;let n=t.replace(/\[(\d+)\]/g,`.$1`).split(`.`).filter(Boolean),r=e;for(let e of n){if(r==null)return;r=r[e]}return r}function o(e,t){let n=[],r=``,i=!1,a=!1;for(let o=0;o<e.length;o++){let s=e[o],c=e.slice(o,o+t.length);if(s===`'`&&!a){i=!i,r+=s;continue}if(s===`"`&&!i){a=!a,r+=s;continue}if(!i&&!a&&c===t){n.push(r.trim()),r=``,o+=t.length-1;continue}r+=s}return r.trim().length&&n.push(r.trim()),n}export{e as evaluateExpression};
|
|
2
|
+
//# sourceMappingURL=expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.js","names":["current: any","parts: string[]"],"sources":["../../src/workflow/expression.ts"],"sourcesContent":["export interface ExpressionContext {\n data: Record<string, unknown>;\n input?: unknown;\n output?: unknown;\n}\n\nexport function evaluateExpression(\n expression: string | undefined,\n ctx: ExpressionContext\n): boolean {\n if (!expression) return true;\n const trimmed = expression.trim();\n if (!trimmed) return true;\n\n const orParts = splitByOperator(trimmed, '||');\n if (orParts.length > 1) return orParts.some((part) => evaluateExpression(part, ctx));\n\n const andParts = splitByOperator(trimmed, '&&');\n if (andParts.length > 1) return andParts.every((part) => evaluateExpression(part, ctx));\n\n return evaluateSingle(trimmed, ctx);\n}\n\nfunction evaluateSingle(expr: string, ctx: ExpressionContext): boolean {\n const trimmed = expr.trim();\n if (!trimmed) return true;\n if (trimmed.startsWith('!')) return !evaluateSingle(trimmed.slice(1), ctx);\n\n const comparisonMatch = trimmed.match(\n /^(data|input|output)\\.([A-Za-z0-9_.\\[\\]]+)\\s*(===|==|!==|!=|>=|<=|>|<)\\s*(.+)$/\n );\n if (comparisonMatch) {\n const [, root, path, operator, rawRight] = comparisonMatch as [\n string,\n string,\n string,\n ComparisonOperator,\n string\n ];\n const left = resolveRoot(root, ctx, path);\n const right = parseLiteral(rawRight);\n return compare(left, right, operator);\n }\n\n const truthyMatch = trimmed.match(/^(data|input|output)\\.([A-Za-z0-9_.\\[\\]]+)$/);\n if (truthyMatch) {\n const [, root, path] = truthyMatch as [string, string, string];\n const value = resolveRoot(root, ctx, path);\n return Boolean(value);\n }\n\n const literal = parseLiteral(trimmed);\n return Boolean(literal);\n}\n\ntype ComparisonOperator = '===' | '==' | '!==' | '!=' | '>=' | '<=' | '>' | '<';\n\nfunction compare(\n left: unknown,\n right: unknown,\n operator: ComparisonOperator\n): boolean {\n switch (operator) {\n case '===':\n case '==':\n return left === right;\n case '!==':\n case '!=':\n return left !== right;\n case '>':\n return Number(left) > Number(right);\n case '>=':\n return Number(left) >= Number(right);\n case '<':\n return Number(left) < Number(right);\n case '<=':\n return Number(left) <= Number(right);\n default:\n return false;\n }\n}\n\nfunction parseLiteral(value: string): unknown {\n const trimmed = (value ?? '').trim();\n if (\n (trimmed.startsWith('\"') && trimmed.endsWith('\"')) ||\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\"))\n )\n return trimmed.slice(1, -1);\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) return Number(trimmed);\n if (/^true$/i.test(trimmed)) return true;\n if (/^false$/i.test(trimmed)) return false;\n if (/^null$/i.test(trimmed)) return null;\n if (/^undefined$/i.test(trimmed)) return undefined;\n return trimmed;\n}\n\nfunction resolveRoot(\n root: string,\n ctx: ExpressionContext,\n path: string\n): unknown {\n const source =\n root === 'data'\n ? ctx.data\n : root === 'input'\n ? ctx.input\n : ctx.output;\n return resolvePath(source, path);\n}\n\nfunction resolvePath(source: unknown, path: string): unknown {\n if (source == null) return undefined;\n if (!path) return source;\n const segments = path\n .replace(/\\[(\\d+)\\]/g, '.$1')\n .split('.')\n .filter(Boolean);\n\n let current: any = source;\n for (const segment of segments) {\n if (current == null) return undefined;\n current = current[segment as keyof typeof current];\n }\n return current;\n}\n\nfunction splitByOperator(expr: string, operator: '&&' | '||'): string[] {\n const parts: string[] = [];\n let buffer = '';\n let inSingleQuote = false;\n let inDoubleQuote = false;\n\n for (let i = 0; i < expr.length; i++) {\n const char = expr[i]!;\n const next = expr.slice(i, i + operator.length);\n\n if (char === \"'\" && !inDoubleQuote) {\n inSingleQuote = !inSingleQuote;\n buffer += char;\n continue;\n }\n if (char === '\"' && !inSingleQuote) {\n inDoubleQuote = !inDoubleQuote;\n buffer += char;\n continue;\n }\n\n if (!inSingleQuote && !inDoubleQuote && next === operator) {\n parts.push(buffer.trim());\n buffer = '';\n i += operator.length - 1;\n continue;\n }\n\n buffer += char;\n }\n\n if (buffer.trim().length) parts.push(buffer.trim());\n return parts;\n}\n\n"],"mappings":"AAMA,SAAgB,EACd,EACA,EACS,CACT,GAAI,CAAC,EAAY,MAAO,GACxB,IAAM,EAAU,EAAW,MAAM,CACjC,GAAI,CAAC,EAAS,MAAO,GAErB,IAAM,EAAU,EAAgB,EAAS,KAAK,CAC9C,GAAI,EAAQ,OAAS,EAAG,OAAO,EAAQ,KAAM,GAAS,EAAmB,EAAM,EAAI,CAAC,CAEpF,IAAM,EAAW,EAAgB,EAAS,KAAK,CAG/C,OAFI,EAAS,OAAS,EAAU,EAAS,MAAO,GAAS,EAAmB,EAAM,EAAI,CAAC,CAEhF,EAAe,EAAS,EAAI,CAGrC,SAAS,EAAe,EAAc,EAAiC,CACrE,IAAM,EAAU,EAAK,MAAM,CAC3B,GAAI,CAAC,EAAS,MAAO,GACrB,GAAI,EAAQ,WAAW,IAAI,CAAE,MAAO,CAAC,EAAe,EAAQ,MAAM,EAAE,CAAE,EAAI,CAE1E,IAAM,EAAkB,EAAQ,MAC9B,iFACD,CACD,GAAI,EAAiB,CACnB,GAAM,EAAG,EAAM,EAAM,EAAU,GAAY,EAS3C,OAAO,EAFM,EAAY,EAAM,EAAK,EAAK,CAC3B,EAAa,EAAS,CACR,EAAS,CAGvC,IAAM,EAAc,EAAQ,MAAM,8CAA8C,CAChF,GAAI,EAAa,CACf,GAAM,EAAG,EAAM,GAAQ,EAEvB,MAAO,EADO,EAAY,EAAM,EAAK,EAAK,CAK5C,MAAO,EADS,EAAa,EAAQ,CAMvC,SAAS,EACP,EACA,EACA,EACS,CACT,OAAQ,EAAR,CACE,IAAK,MACL,IAAK,KACH,OAAO,IAAS,EAClB,IAAK,MACL,IAAK,KACH,OAAO,IAAS,EAClB,IAAK,IACH,OAAO,OAAO,EAAK,CAAG,OAAO,EAAM,CACrC,IAAK,KACH,OAAO,OAAO,EAAK,EAAI,OAAO,EAAM,CACtC,IAAK,IACH,OAAO,OAAO,EAAK,CAAG,OAAO,EAAM,CACrC,IAAK,KACH,OAAO,OAAO,EAAK,EAAI,OAAO,EAAM,CACtC,QACE,MAAO,IAIb,SAAS,EAAa,EAAwB,CAC5C,IAAM,GAAW,GAAS,IAAI,MAAM,CACpC,GACG,EAAQ,WAAW,IAAI,EAAI,EAAQ,SAAS,IAAI,EAChD,EAAQ,WAAW,IAAI,EAAI,EAAQ,SAAS,IAAI,CAEjD,OAAO,EAAQ,MAAM,EAAG,GAAG,CAC7B,GAAI,kBAAkB,KAAK,EAAQ,CAAE,OAAO,OAAO,EAAQ,CAC3D,GAAI,UAAU,KAAK,EAAQ,CAAE,MAAO,GACpC,GAAI,WAAW,KAAK,EAAQ,CAAE,MAAO,GACrC,GAAI,UAAU,KAAK,EAAQ,CAAE,OAAO,KAChC,mBAAe,KAAK,EAAQ,CAChC,OAAO,EAGT,SAAS,EACP,EACA,EACA,EACS,CAOT,OAAO,EALL,IAAS,OACL,EAAI,KACJ,IAAS,QACP,EAAI,MACJ,EAAI,OACe,EAAK,CAGlC,SAAS,EAAY,EAAiB,EAAuB,CAC3D,GAAI,GAAU,KAAM,OACpB,GAAI,CAAC,EAAM,OAAO,EAClB,IAAM,EAAW,EACd,QAAQ,aAAc,MAAM,CAC5B,MAAM,IAAI,CACV,OAAO,QAAQ,CAEdA,EAAe,EACnB,IAAK,IAAM,KAAW,EAAU,CAC9B,GAAI,GAAW,KAAM,OACrB,EAAU,EAAQ,GAEpB,OAAO,EAGT,SAAS,EAAgB,EAAc,EAAiC,CACtE,IAAMC,EAAkB,EAAE,CACtB,EAAS,GACT,EAAgB,GAChB,EAAgB,GAEpB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,IAAM,EAAO,EAAK,GACZ,EAAO,EAAK,MAAM,EAAG,EAAI,EAAS,OAAO,CAE/C,GAAI,IAAS,KAAO,CAAC,EAAe,CAClC,EAAgB,CAAC,EACjB,GAAU,EACV,SAEF,GAAI,IAAS,KAAO,CAAC,EAAe,CAClC,EAAgB,CAAC,EACjB,GAAU,EACV,SAGF,GAAI,CAAC,GAAiB,CAAC,GAAiB,IAAS,EAAU,CACzD,EAAM,KAAK,EAAO,MAAM,CAAC,CACzB,EAAS,GACT,GAAK,EAAS,OAAS,EACvB,SAGF,GAAU,EAIZ,OADI,EAAO,MAAM,CAAC,QAAQ,EAAM,KAAK,EAAO,MAAM,CAAC,CAC5C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus } from "./spec.js";
|
|
2
|
+
import { ValidateWorkflowSpecOptions, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, validateWorkflowSpec } from "./validation.js";
|
|
3
|
+
import { StateStore, StepExecution, WorkflowState, WorkflowStateFilters } from "./state.js";
|
|
4
|
+
import { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig } from "./runner.js";
|
|
5
|
+
import { ExpressionContext, evaluateExpression } from "./expression.js";
|
|
6
|
+
import { InMemoryStateStore } from "./adapters/memory-store.js";
|
|
7
|
+
import { DatabaseStateStoreOptions, createDatabaseStateStore } from "./adapters/db-adapter.js";
|
|
8
|
+
import { FileStateStoreOptions, createFileStateStore } from "./adapters/file-adapter.js";
|
|
9
|
+
import "./adapters/index.js";
|
|
10
|
+
export { CompensationStep, CompensationStrategy, DatabaseStateStoreOptions, ExpressionContext, FileStateStoreOptions, FormRef, GuardCondition, GuardConditionKind, GuardContext, GuardEvaluator, InMemoryStateStore, OperationExecutor, OperationExecutorContext, RetryPolicy, SLA, StateStore, Step, StepAction, StepExecution, StepType, Transition, ValidateWorkflowSpecOptions, WorkflowDefinition, WorkflowMeta, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRegistry, WorkflowRunner, WorkflowRunnerConfig, WorkflowSpec, WorkflowState, WorkflowStateFilters, WorkflowStatus, WorkflowValidationError, WorkflowValidationIssue, WorkflowValidationLevel, assertWorkflowSpecValid, createDatabaseStateStore, createFileStateStore, evaluateExpression, validateWorkflowSpec };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{WorkflowRegistry as e}from"./spec.js";import{WorkflowValidationError as t,assertWorkflowSpecValid as n,validateWorkflowSpec as r}from"./validation.js";import{evaluateExpression as i}from"./expression.js";import{WorkflowPreFlightError as a,WorkflowRunner as o}from"./runner.js";import{InMemoryStateStore as s}from"./adapters/memory-store.js";import{createDatabaseStateStore as c}from"./adapters/db-adapter.js";import{createFileStateStore as l}from"./adapters/file-adapter.js";export{s as InMemoryStateStore,a as WorkflowPreFlightError,e as WorkflowRegistry,o as WorkflowRunner,t as WorkflowValidationError,n as assertWorkflowSpecValid,c as createDatabaseStateStore,l as createFileStateStore,i as evaluateExpression,r as validateWorkflowSpec};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ResolvedBranding } from "../app-config/branding.js";
|
|
2
|
+
import { OpRef } from "../features.js";
|
|
3
|
+
import { GuardCondition, Step, WorkflowRegistry } from "./spec.js";
|
|
4
|
+
import { ResolvedAppConfig, ResolvedIntegration, ResolvedKnowledge, ResolvedTranslation } from "../app-config/runtime.js";
|
|
5
|
+
import { SecretProvider } from "../integrations/secrets/provider.js";
|
|
6
|
+
import { TranslationResolver } from "../types.js";
|
|
7
|
+
import { StateStore, WorkflowState } from "./state.js";
|
|
8
|
+
|
|
9
|
+
//#region src/workflow/runner.d.ts
|
|
10
|
+
interface OperationExecutorContext {
|
|
11
|
+
workflow: WorkflowState;
|
|
12
|
+
step: Step;
|
|
13
|
+
resolvedAppConfig?: ResolvedAppConfig;
|
|
14
|
+
integrations?: ResolvedIntegration[];
|
|
15
|
+
knowledge?: ResolvedKnowledge[];
|
|
16
|
+
branding?: ResolvedBranding;
|
|
17
|
+
translation?: ResolvedTranslation;
|
|
18
|
+
translationResolver?: TranslationResolver;
|
|
19
|
+
secretProvider?: SecretProvider;
|
|
20
|
+
}
|
|
21
|
+
type OperationExecutor = (op: OpRef, input: unknown, context: OperationExecutorContext) => Promise<unknown>;
|
|
22
|
+
type WorkflowPreFlightIssueType = 'integration' | 'capability';
|
|
23
|
+
type WorkflowPreFlightIssueSeverity = 'error' | 'warning';
|
|
24
|
+
interface WorkflowPreFlightIssue {
|
|
25
|
+
stepId: string;
|
|
26
|
+
type: WorkflowPreFlightIssueType;
|
|
27
|
+
identifier: string;
|
|
28
|
+
severity: WorkflowPreFlightIssueSeverity;
|
|
29
|
+
reason: string;
|
|
30
|
+
}
|
|
31
|
+
interface WorkflowPreFlightResult {
|
|
32
|
+
canStart: boolean;
|
|
33
|
+
issues: WorkflowPreFlightIssue[];
|
|
34
|
+
}
|
|
35
|
+
interface GuardContext {
|
|
36
|
+
workflow: WorkflowState;
|
|
37
|
+
step: Step;
|
|
38
|
+
input?: unknown;
|
|
39
|
+
}
|
|
40
|
+
type GuardEvaluator = (guard: GuardCondition, context: GuardContext) => Promise<boolean> | boolean;
|
|
41
|
+
interface WorkflowRunnerConfig {
|
|
42
|
+
registry: WorkflowRegistry;
|
|
43
|
+
stateStore: StateStore;
|
|
44
|
+
opExecutor: OperationExecutor;
|
|
45
|
+
guardEvaluator?: GuardEvaluator;
|
|
46
|
+
eventEmitter?: (event: string, payload: Record<string, unknown>) => void;
|
|
47
|
+
appConfigProvider?: (state: WorkflowState) => ResolvedAppConfig | undefined | Promise<ResolvedAppConfig | undefined>;
|
|
48
|
+
enforceCapabilities?: (operation: OpRef, context: OperationExecutorContext) => void | Promise<void>;
|
|
49
|
+
secretProvider?: SecretProvider;
|
|
50
|
+
translationResolver?: TranslationResolver;
|
|
51
|
+
}
|
|
52
|
+
declare class WorkflowRunner {
|
|
53
|
+
private readonly config;
|
|
54
|
+
constructor(config: WorkflowRunnerConfig);
|
|
55
|
+
preFlightCheck(workflowName: string, version?: number, resolvedConfig?: ResolvedAppConfig): Promise<WorkflowPreFlightResult>;
|
|
56
|
+
start(workflowName: string, version?: number, initialData?: Record<string, unknown>): Promise<string>;
|
|
57
|
+
executeStep(workflowId: string, input?: unknown): Promise<void>;
|
|
58
|
+
getState(workflowId: string): Promise<WorkflowState>;
|
|
59
|
+
cancel(workflowId: string): Promise<void>;
|
|
60
|
+
private performPreFlight;
|
|
61
|
+
private evaluateGuard;
|
|
62
|
+
private runStepAction;
|
|
63
|
+
private pickNextStepId;
|
|
64
|
+
private getSpec;
|
|
65
|
+
private getStateOrThrow;
|
|
66
|
+
private emit;
|
|
67
|
+
}
|
|
68
|
+
declare class WorkflowPreFlightError extends Error {
|
|
69
|
+
readonly issues: WorkflowPreFlightIssue[];
|
|
70
|
+
constructor(issues: WorkflowPreFlightIssue[]);
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig };
|
|
74
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","names":[],"sources":["../../src/workflow/runner.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{evaluateExpression as e}from"./expression.js";import{randomUUID as t}from"node:crypto";var n=class{constructor(e){this.config=e}async preFlightCheck(e,t,n){let r=this.getSpec(e,t);return this.performPreFlight(r,n)}async start(e,n,i){let a=this.getSpec(e,n),o=r(a),s=new Date,l=t(),u={workflowId:l,workflowName:a.meta.name,workflowVersion:a.meta.version,currentStep:o,data:{...i??{}},history:[],status:`running`,createdAt:s,updatedAt:s},d=this.config.appConfigProvider?await this.config.appConfigProvider(u):void 0,f=await this.performPreFlight(a,d);if(!f.canStart)throw new c(f.issues);return await this.config.stateStore.create(u),this.emit(`workflow.started`,{workflowId:l,workflowName:a.meta.name,workflowVersion:a.meta.version,currentStep:o}),l}async executeStep(e,t){let n=await this.getStateOrThrow(e);if(s(n.status))throw Error(`Workflow ${e} is in terminal status "${n.status}".`);let r=this.getSpec(n.workflowName,n.workflowVersion),c=i(r,n.currentStep);if(!await this.evaluateGuard(c,n,t))throw Error(`GuardRejected: ${n.workflowName} -> ${c.id}`);let l={stepId:c.id,startedAt:new Date,status:`running`,input:t},u={...n,data:{...n.data},history:[...n.history]};try{let i=await this.runStepAction(c,u,t);l.output=i,l.status=`completed`,l.completedAt=new Date,u.history.push(l),u.updatedAt=new Date,o(t)&&(u.data={...u.data,...t}),o(i)&&(u.data={...u.data,...i});let s=this.pickNextStepId(r,u,c,t,i);if(s)u.currentStep=s,u.status=`running`;else if(!a(r,c.id))u.status=`completed`;else throw Error(`No transition matched after executing step "${c.id}".`);await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_completed`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,status:u.status})}catch(t){throw l.status=`failed`,l.completedAt=new Date,l.error=t instanceof Error?t.message:String(t),u.history.push(l),u.status=`failed`,u.updatedAt=new Date,await this.config.stateStore.update(e,()=>u),this.emit(`workflow.step_failed`,{workflowId:e,workflowName:n.workflowName,stepId:c.id,error:l.error??`unknown`}),t}}async getState(e){return this.getStateOrThrow(e)}async cancel(e){let t=await this.getStateOrThrow(e);if(t.status===`cancelled`)return;let n={...t,status:`cancelled`,updatedAt:new Date};await this.config.stateStore.update(e,()=>n),this.emit(`workflow.cancelled`,{workflowId:e,workflowName:t.workflowName})}async performPreFlight(e,t){if(!t)return{canStart:!0,issues:[]};let n=[],r=new Map;for(let e of t.integrations)r.set(e.slot.slotId,e);for(let t of e.definition.steps)for(let e of t.requiredIntegrations??[]){let i=r.get(e);if(!i){n.push({stepId:t.id,type:`integration`,identifier:e,severity:`error`,reason:`Integration slot "${e}" is not bound in the resolved app config.`});continue}let a=i.connection.status;a===`disconnected`||a===`error`?n.push({stepId:t.id,type:`integration`,identifier:e,severity:`error`,reason:`Integration slot "${e}" is in status "${a}".`}):a===`unknown`&&n.push({stepId:t.id,type:`integration`,identifier:e,severity:`warning`,reason:`Integration slot "${e}" reports unknown health status.`})}let i=new Set(t.capabilities.enabled.map(l));for(let t of e.definition.steps)for(let e of t.requiredCapabilities??[])i.has(l(e))||n.push({stepId:t.id,type:`capability`,identifier:l(e),severity:`error`,reason:`Capability "${e.key}@${e.version}" is not enabled.`});return{canStart:n.every(e=>e.severity!==`error`),issues:n}}async evaluateGuard(t,n,r){return t.guard?this.config.guardEvaluator?this.config.guardEvaluator(t.guard,{workflow:n,step:t,input:r}):t.guard.type===`expression`?e(t.guard.value,{data:n.data,input:r}):!0:!0}async runStepAction(e,t,n){if(e.type===`automation`){let r=e.action?.operation;if(!r)throw Error(`Automation step "${e.id}" requires an operation.`);let i=this.config.appConfigProvider?await this.config.appConfigProvider(t):void 0,a={workflow:t,step:e,resolvedAppConfig:i,integrations:i?.integrations??[],knowledge:i?.knowledge??[],branding:i?.branding,translation:i?.translation,translationResolver:this.config.translationResolver,secretProvider:this.config.secretProvider};return this.config.enforceCapabilities&&await this.config.enforceCapabilities(r,a),this.config.opExecutor(r,n,a)}return e.type,n}pickNextStepId(t,n,r,i,a){let o=t.definition.transitions.filter(e=>e.from===r.id);for(let r of o)if(e(r.condition,{data:n.data,input:i,output:a})){let e=t.definition.steps.find(e=>e.id===r.to);if(!e)throw Error(`Transition ${r.from} -> ${r.to} points to missing step.`);return e.id}return null}getSpec(e,t){let n=this.config.registry.get(e,t);if(!n)throw Error(`Workflow spec not found for ${e}${t?`.v${t}`:``}`);return n}async getStateOrThrow(e){let t=await this.config.stateStore.get(e);if(!t)throw Error(`Workflow state not found for ${e}`);return t}emit(e,t){this.config.eventEmitter?.(e,t)}};function r(e){let t=e.definition.entryStepId??e.definition.steps[0]?.id??null;if(!t)throw Error(`Workflow ${e.meta.name}.v${e.meta.version} has no entry step.`);return t}function i(e,t){let n=e.definition.steps.find(e=>e.id===t);if(!n)throw Error(`Step "${t}" not found in workflow ${e.meta.name}.v${e.meta.version}.`);return n}function a(e,t){return e.definition.transitions.some(e=>e.from===t)}function o(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function s(e){return e===`completed`||e===`failed`||e===`cancelled`}var c=class extends Error{constructor(e){super(`Workflow pre-flight failed: ${e.filter(e=>e.severity===`error`).map(e=>`${e.type}:${e.identifier}`).join(`, `)}`),this.issues=e,this.name=`WorkflowPreFlightError`}};function l(e){return`${e.key}@${e.version}`}export{c as WorkflowPreFlightError,n as WorkflowRunner};
|
|
2
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","names":["config: WorkflowRunnerConfig","state: WorkflowState","execution: StepExecution","workingState: WorkflowState","nextState: WorkflowState","issues: WorkflowPreFlightIssue[]","executorContext: OperationExecutorContext"],"sources":["../../src/workflow/runner.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type {\n GuardCondition,\n Step,\n WorkflowRegistry,\n WorkflowSpec,\n} from './spec';\nimport type { StateStore, WorkflowState, StepExecution } from './state';\nimport { evaluateExpression } from './expression';\nimport type { OpRef } from '../features';\nimport type { CapabilityRef } from '../capabilities';\nimport type {\n ResolvedAppConfig,\n ResolvedIntegration,\n ResolvedKnowledge,\n ResolvedTranslation,\n} from '../app-config/runtime';\nimport type { ResolvedBranding } from '../app-config/branding';\nimport type { TranslationResolver } from '../types';\nimport type { SecretProvider } from '../integrations/secrets/provider';\n\nexport interface OperationExecutorContext {\n workflow: WorkflowState;\n step: Step;\n resolvedAppConfig?: ResolvedAppConfig;\n integrations?: ResolvedIntegration[];\n knowledge?: ResolvedKnowledge[];\n branding?: ResolvedBranding;\n translation?: ResolvedTranslation;\n translationResolver?: TranslationResolver;\n secretProvider?: SecretProvider;\n}\n\nexport type OperationExecutor = (\n op: OpRef,\n input: unknown,\n context: OperationExecutorContext\n) => Promise<unknown>;\n\nexport type WorkflowPreFlightIssueType = 'integration' | 'capability';\n\nexport type WorkflowPreFlightIssueSeverity = 'error' | 'warning';\n\nexport interface WorkflowPreFlightIssue {\n stepId: string;\n type: WorkflowPreFlightIssueType;\n identifier: string;\n severity: WorkflowPreFlightIssueSeverity;\n reason: string;\n}\n\nexport interface WorkflowPreFlightResult {\n canStart: boolean;\n issues: WorkflowPreFlightIssue[];\n}\n\nexport interface GuardContext {\n workflow: WorkflowState;\n step: Step;\n input?: unknown;\n}\n\nexport type GuardEvaluator = (\n guard: GuardCondition,\n context: GuardContext\n) => Promise<boolean> | boolean;\n\nexport interface WorkflowRunnerConfig {\n registry: WorkflowRegistry;\n stateStore: StateStore;\n opExecutor: OperationExecutor;\n guardEvaluator?: GuardEvaluator;\n eventEmitter?: (event: string, payload: Record<string, unknown>) => void;\n appConfigProvider?: (\n state: WorkflowState\n ) => ResolvedAppConfig | undefined | Promise<ResolvedAppConfig | undefined>;\n enforceCapabilities?: (\n operation: OpRef,\n context: OperationExecutorContext\n ) => void | Promise<void>;\n secretProvider?: SecretProvider;\n translationResolver?: TranslationResolver;\n}\n\nexport class WorkflowRunner {\n constructor(private readonly config: WorkflowRunnerConfig) {}\n\n async preFlightCheck(\n workflowName: string,\n version?: number,\n resolvedConfig?: ResolvedAppConfig\n ): Promise<WorkflowPreFlightResult> {\n const spec = this.getSpec(workflowName, version);\n return this.performPreFlight(spec, resolvedConfig);\n }\n\n async start(\n workflowName: string,\n version?: number,\n initialData?: Record<string, unknown>\n ): Promise<string> {\n const spec = this.getSpec(workflowName, version);\n const entryStepId = resolveEntryStepId(spec);\n const now = new Date();\n const workflowId = randomUUID();\n\n const state: WorkflowState = {\n workflowId,\n workflowName: spec.meta.name,\n workflowVersion: spec.meta.version,\n currentStep: entryStepId,\n data: { ...(initialData ?? {}) },\n history: [],\n status: 'running',\n createdAt: now,\n updatedAt: now,\n };\n\n const resolvedAppConfig = this.config.appConfigProvider\n ? await this.config.appConfigProvider(state)\n : undefined;\n\n const preFlightResult = await this.performPreFlight(\n spec,\n resolvedAppConfig\n );\n if (!preFlightResult.canStart) {\n throw new WorkflowPreFlightError(preFlightResult.issues);\n }\n\n await this.config.stateStore.create(state);\n this.emit('workflow.started', {\n workflowId,\n workflowName: spec.meta.name,\n workflowVersion: spec.meta.version,\n currentStep: entryStepId,\n });\n return workflowId;\n }\n\n async executeStep(workflowId: string, input?: unknown): Promise<void> {\n const state = await this.getStateOrThrow(workflowId);\n if (isTerminalStatus(state.status)) {\n throw new Error(\n `Workflow ${workflowId} is in terminal status \"${state.status}\".`\n );\n }\n\n const spec = this.getSpec(state.workflowName, state.workflowVersion);\n const step = getCurrentStep(spec, state.currentStep);\n const guardOk = await this.evaluateGuard(step, state, input);\n if (!guardOk)\n throw new Error(`GuardRejected: ${state.workflowName} -> ${step.id}`);\n\n const execution: StepExecution = {\n stepId: step.id,\n startedAt: new Date(),\n status: 'running',\n input,\n };\n\n const workingState: WorkflowState = {\n ...state,\n data: { ...state.data },\n history: [...state.history],\n };\n\n try {\n const output = await this.runStepAction(step, workingState, input);\n execution.output = output;\n execution.status = 'completed';\n execution.completedAt = new Date();\n workingState.history.push(execution);\n workingState.updatedAt = new Date();\n\n if (isRecord(input)) {\n workingState.data = { ...workingState.data, ...input };\n }\n if (isRecord(output)) {\n workingState.data = { ...workingState.data, ...output };\n }\n\n const nextStepId = this.pickNextStepId(\n spec,\n workingState,\n step,\n input,\n output\n );\n\n if (nextStepId) {\n workingState.currentStep = nextStepId;\n workingState.status = 'running';\n } else if (!hasOutgoing(spec, step.id)) {\n workingState.status = 'completed';\n } else {\n throw new Error(\n `No transition matched after executing step \"${step.id}\".`\n );\n }\n\n await this.config.stateStore.update(workflowId, () => workingState);\n this.emit('workflow.step_completed', {\n workflowId,\n workflowName: state.workflowName,\n stepId: step.id,\n status: workingState.status,\n });\n } catch (error) {\n execution.status = 'failed';\n execution.completedAt = new Date();\n execution.error =\n error instanceof Error ? error.message : String(error);\n workingState.history.push(execution);\n workingState.status = 'failed';\n workingState.updatedAt = new Date();\n await this.config.stateStore.update(workflowId, () => workingState);\n this.emit('workflow.step_failed', {\n workflowId,\n workflowName: state.workflowName,\n stepId: step.id,\n error: execution.error ?? 'unknown',\n });\n throw error;\n }\n }\n\n async getState(workflowId: string): Promise<WorkflowState> {\n return this.getStateOrThrow(workflowId);\n }\n\n async cancel(workflowId: string): Promise<void> {\n const state = await this.getStateOrThrow(workflowId);\n if (state.status === 'cancelled') return;\n\n const nextState: WorkflowState = {\n ...state,\n status: 'cancelled',\n updatedAt: new Date(),\n };\n await this.config.stateStore.update(workflowId, () => nextState);\n this.emit('workflow.cancelled', {\n workflowId,\n workflowName: state.workflowName,\n });\n }\n\n private async performPreFlight(\n spec: WorkflowSpec,\n resolvedConfig?: ResolvedAppConfig\n ): Promise<WorkflowPreFlightResult> {\n if (!resolvedConfig) {\n return { canStart: true, issues: [] };\n }\n\n const issues: WorkflowPreFlightIssue[] = [];\n const integrationBySlot = new Map<string, ResolvedIntegration>();\n for (const integration of resolvedConfig.integrations) {\n integrationBySlot.set(integration.slot.slotId, integration);\n }\n\n for (const step of spec.definition.steps) {\n for (const slotId of step.requiredIntegrations ?? []) {\n const integration = integrationBySlot.get(slotId);\n if (!integration) {\n issues.push({\n stepId: step.id,\n type: 'integration',\n identifier: slotId,\n severity: 'error',\n reason: `Integration slot \"${slotId}\" is not bound in the resolved app config.`,\n });\n continue;\n }\n const status = integration.connection.status;\n if (status === 'disconnected' || status === 'error') {\n issues.push({\n stepId: step.id,\n type: 'integration',\n identifier: slotId,\n severity: 'error',\n reason: `Integration slot \"${slotId}\" is in status \"${status}\".`,\n });\n } else if (status === 'unknown') {\n issues.push({\n stepId: step.id,\n type: 'integration',\n identifier: slotId,\n severity: 'warning',\n reason: `Integration slot \"${slotId}\" reports unknown health status.`,\n });\n }\n }\n }\n\n const enabledCapabilities = new Set(\n resolvedConfig.capabilities.enabled.map(capabilityKey)\n );\n for (const step of spec.definition.steps) {\n for (const required of step.requiredCapabilities ?? []) {\n if (!enabledCapabilities.has(capabilityKey(required))) {\n issues.push({\n stepId: step.id,\n type: 'capability',\n identifier: capabilityKey(required),\n severity: 'error',\n reason: `Capability \"${required.key}@${required.version}\" is not enabled.`,\n });\n }\n }\n }\n\n const canStart = issues.every((issue) => issue.severity !== 'error');\n return { canStart, issues };\n }\n\n private async evaluateGuard(\n step: Step,\n state: WorkflowState,\n input: unknown\n ) {\n if (!step.guard) return true;\n if (this.config.guardEvaluator)\n return this.config.guardEvaluator(step.guard, {\n workflow: state,\n step,\n input,\n });\n if (step.guard.type === 'expression') {\n return evaluateExpression(step.guard.value, {\n data: state.data,\n input,\n });\n }\n return true;\n }\n\n private async runStepAction(\n step: Step,\n state: WorkflowState,\n input: unknown\n ): Promise<unknown> {\n if (step.type === 'automation') {\n const op = step.action?.operation;\n if (!op)\n throw new Error(`Automation step \"${step.id}\" requires an operation.`);\n const resolvedAppConfig = this.config.appConfigProvider\n ? await this.config.appConfigProvider(state)\n : undefined;\n const executorContext: OperationExecutorContext = {\n workflow: state,\n step,\n resolvedAppConfig,\n integrations: resolvedAppConfig?.integrations ?? [],\n knowledge: resolvedAppConfig?.knowledge ?? [],\n branding: resolvedAppConfig?.branding,\n translation: resolvedAppConfig?.translation,\n translationResolver: this.config.translationResolver,\n secretProvider: this.config.secretProvider,\n };\n if (this.config.enforceCapabilities) {\n await this.config.enforceCapabilities(op, executorContext);\n }\n return this.config.opExecutor(op, input, executorContext);\n }\n\n if (step.type === 'human') {\n return input;\n }\n\n // decision step\n return input;\n }\n\n private pickNextStepId(\n spec: WorkflowSpec,\n state: WorkflowState,\n step: Step,\n input: unknown,\n output: unknown\n ): string | null {\n const transitions = spec.definition.transitions.filter(\n (t) => t.from === step.id\n );\n for (const transition of transitions) {\n if (\n evaluateExpression(transition.condition, {\n data: state.data,\n input,\n output,\n })\n ) {\n const target = spec.definition.steps.find((s) => s.id === transition.to);\n if (!target)\n throw new Error(\n `Transition ${transition.from} -> ${transition.to} points to missing step.`\n );\n return target.id;\n }\n }\n return null;\n }\n\n private getSpec(name: string, version?: number): WorkflowSpec {\n const spec = this.config.registry.get(name, version);\n if (!spec)\n throw new Error(\n `Workflow spec not found for ${name}${version ? `.v${version}` : ''}`\n );\n return spec;\n }\n\n private async getStateOrThrow(workflowId: string): Promise<WorkflowState> {\n const state = await this.config.stateStore.get(workflowId);\n if (!state) throw new Error(`Workflow state not found for ${workflowId}`);\n return state;\n }\n\n private emit(event: string, payload: Record<string, unknown>) {\n this.config.eventEmitter?.(event, payload);\n }\n}\n\nfunction resolveEntryStepId(spec: WorkflowSpec): string {\n const entry =\n spec.definition.entryStepId ?? spec.definition.steps[0]?.id ?? null;\n if (!entry)\n throw new Error(\n `Workflow ${spec.meta.name}.v${spec.meta.version} has no entry step.`\n );\n return entry;\n}\n\nfunction getCurrentStep(spec: WorkflowSpec, stepId: string): Step {\n const step = spec.definition.steps.find((s) => s.id === stepId);\n if (!step)\n throw new Error(\n `Step \"${stepId}\" not found in workflow ${spec.meta.name}.v${spec.meta.version}.`\n );\n return step;\n}\n\nfunction hasOutgoing(spec: WorkflowSpec, stepId: string): boolean {\n return spec.definition.transitions.some((t) => t.from === stepId);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return (\n value != null &&\n typeof value === 'object' &&\n !Array.isArray(value)\n );\n}\n\nfunction isTerminalStatus(status: WorkflowState['status']) {\n return status === 'completed' || status === 'failed' || status === 'cancelled';\n}\n\nexport class WorkflowPreFlightError extends Error {\n constructor(public readonly issues: WorkflowPreFlightIssue[]) {\n super(\n `Workflow pre-flight failed: ${issues\n .filter((issue) => issue.severity === 'error')\n .map((issue) => `${issue.type}:${issue.identifier}`)\n .join(', ')}`\n );\n this.name = 'WorkflowPreFlightError';\n }\n}\n\nfunction capabilityKey(ref: CapabilityRef): string {\n return `${ref.key}@${ref.version}`;\n}\n\n"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { OwnerShipMeta } from "../ownership.js";
|
|
2
|
+
import { CapabilityRef } from "../capabilities.js";
|
|
3
|
+
import { ExperimentRef } from "../experiments/spec.js";
|
|
4
|
+
import { OpRef } from "../features.js";
|
|
5
|
+
|
|
6
|
+
//#region src/workflow/spec.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Reference to a form spec declared in {@link FormRegistry}.
|
|
10
|
+
*/
|
|
11
|
+
interface FormRef {
|
|
12
|
+
key: string;
|
|
13
|
+
version: number;
|
|
14
|
+
}
|
|
15
|
+
type StepType = 'human' | 'automation' | 'decision';
|
|
16
|
+
type WorkflowStatus = 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
17
|
+
type GuardConditionKind = 'policy' | 'expression';
|
|
18
|
+
interface GuardCondition {
|
|
19
|
+
type: GuardConditionKind;
|
|
20
|
+
/** Policy name or expression string depending on the type. */
|
|
21
|
+
value: string;
|
|
22
|
+
}
|
|
23
|
+
interface RetryPolicy {
|
|
24
|
+
maxAttempts: number;
|
|
25
|
+
backoff: 'linear' | 'exponential';
|
|
26
|
+
delayMs: number;
|
|
27
|
+
/** Optional max delay cap for exponential backoff. */
|
|
28
|
+
maxDelayMs?: number;
|
|
29
|
+
}
|
|
30
|
+
interface StepAction {
|
|
31
|
+
/** Operation executed for automation steps. */
|
|
32
|
+
operation?: OpRef;
|
|
33
|
+
/** Form rendered for human input steps. */
|
|
34
|
+
form?: FormRef;
|
|
35
|
+
}
|
|
36
|
+
interface Step {
|
|
37
|
+
id: string;
|
|
38
|
+
type: StepType;
|
|
39
|
+
label: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
action?: StepAction;
|
|
42
|
+
guard?: GuardCondition;
|
|
43
|
+
timeoutMs?: number;
|
|
44
|
+
retry?: RetryPolicy;
|
|
45
|
+
/** Integration slot identifiers required before this step can execute. */
|
|
46
|
+
requiredIntegrations?: string[];
|
|
47
|
+
/** Capabilities that must be enabled for this step to execute. */
|
|
48
|
+
requiredCapabilities?: CapabilityRef[];
|
|
49
|
+
}
|
|
50
|
+
interface Transition {
|
|
51
|
+
from: string;
|
|
52
|
+
to: string;
|
|
53
|
+
label?: string;
|
|
54
|
+
/** Expression evaluated against workflow data (e.g., `data.approved === true`). */
|
|
55
|
+
condition?: string;
|
|
56
|
+
}
|
|
57
|
+
interface SLA {
|
|
58
|
+
totalDurationMs?: number;
|
|
59
|
+
stepDurationMs?: Record<string, number>;
|
|
60
|
+
}
|
|
61
|
+
interface CompensationStep {
|
|
62
|
+
stepId: string;
|
|
63
|
+
operation: OpRef;
|
|
64
|
+
description?: string;
|
|
65
|
+
}
|
|
66
|
+
interface CompensationStrategy {
|
|
67
|
+
trigger?: 'on_failure' | 'manual';
|
|
68
|
+
steps: CompensationStep[];
|
|
69
|
+
}
|
|
70
|
+
interface WorkflowDefinition {
|
|
71
|
+
steps: Step[];
|
|
72
|
+
transitions: Transition[];
|
|
73
|
+
/** Optional explicit entry step. Defaults to the first step when omitted. */
|
|
74
|
+
entryStepId?: string;
|
|
75
|
+
sla?: SLA;
|
|
76
|
+
compensation?: CompensationStrategy;
|
|
77
|
+
}
|
|
78
|
+
interface WorkflowMeta extends OwnerShipMeta {
|
|
79
|
+
/** Fully-qualified workflow name (e.g., `sigil.onboarding.basic`). */
|
|
80
|
+
name: string;
|
|
81
|
+
/** Version of the workflow. Increment on breaking changes. */
|
|
82
|
+
version: number;
|
|
83
|
+
}
|
|
84
|
+
interface WorkflowSpec {
|
|
85
|
+
meta: WorkflowMeta;
|
|
86
|
+
definition: WorkflowDefinition;
|
|
87
|
+
policy?: {
|
|
88
|
+
flags?: string[];
|
|
89
|
+
};
|
|
90
|
+
experiments?: ExperimentRef[];
|
|
91
|
+
}
|
|
92
|
+
declare class WorkflowRegistry {
|
|
93
|
+
private readonly items;
|
|
94
|
+
register(spec: WorkflowSpec): this;
|
|
95
|
+
list(): WorkflowSpec[];
|
|
96
|
+
get(name: string, version?: number): WorkflowSpec | undefined;
|
|
97
|
+
}
|
|
98
|
+
//#endregion
|
|
99
|
+
export { CompensationStep, CompensationStrategy, FormRef, GuardCondition, GuardConditionKind, RetryPolicy, SLA, Step, StepAction, StepType, Transition, WorkflowDefinition, WorkflowMeta, WorkflowRegistry, WorkflowSpec, WorkflowStatus };
|
|
100
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","names":[],"sources":["../../src/workflow/spec.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAQA;AAKY,UALK,OAAA,CAKG;EAER,GAAA,EAAA,MAAA;EAOA,OAAA,EAAA,MAAA;AAEZ;AAMiB,KAjBL,QAAA,GAiBgB,OAAA,GAAA,YAAA,GAAA,UAAA;AAQX,KAvBL,cAAA,GAuBe,SAIlB,GAAA,QAAO,GAAA,WAAA,GAAA,QAAA,GAAA,WAAA;AAGC,KAvBL,kBAAA,GAuBS,QAAA,GAAA,YAAA;AAEb,UAvBS,cAAA,CAuBT;EAGG,IAAA,EAzBH,kBAyBG;EACD;EAEA,KAAA,EAAA,MAAA;;AAI4B,UA3BrB,WAAA,CA2BqB;EAGrB,WAAA,EAAU,MAAA;EAQV,OAAG,EAAA,QAAA,GAED,aAAM;EAGR,OAAA,EAAA,MAAA;EAMA;EAKA,UAAA,CAAA,EAAA,MAAA;;AAEF,UAhDE,UAAA,CAgDF;EAGP;EACS,SAAA,CAAA,EAlDH,KAkDG;EAAoB;EAGpB,IAAA,CAAA,EAnDR,OAmDQ;AAOjB;AACQ,UAxDS,IAAA,CAwDT;EACM,EAAA,EAAA,MAAA;EAEE,IAAA,EAzDR,QAyDQ;EAAa,KAAA,EAAA,MAAA;EAOhB,WAAA,CAAA,EAAA,MAAgB;EAGZ,MAAA,CAAA,EAhEN,UAgEM;EAOP,KAAA,CAAA,EAtEA,cAsEA;EAI6B,SAAA,CAAA,EAAA,MAAA;EAAY,KAAA,CAAA,EAxEzC,WAwEyC;;;;yBApE1B;;UAGR,UAAA;;;;;;;UAQA,GAAA;;mBAEE;;UAGF,gBAAA;;aAEJ;;;UAII,oBAAA;;SAER;;UAGQ,kBAAA;SACR;eACM;;;QAGP;iBACS;;UAGA,YAAA,SAAqB;;;;;;UAOrB,YAAA;QACT;cACM;;;;gBAEE;;cAOH,gBAAA;;iBAGI;UAOP;uCAI6B"}
|