@contractspec/lib.contracts 1.44.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/LICENSE +21 -0
- package/README.md +109 -0
- package/dist/_virtual/rolldown_runtime.js +37 -0
- package/dist/app-config/app-config.feature.d.ts +12 -0
- package/dist/app-config/app-config.feature.js +54 -0
- package/dist/app-config/branding.d.ts +55 -0
- package/dist/app-config/branding.js +0 -0
- package/dist/app-config/contracts.d.ts +245 -0
- package/dist/app-config/contracts.js +395 -0
- package/dist/app-config/docs/app-config.docblock.d.ts +6 -0
- package/dist/app-config/docs/app-config.docblock.js +21 -0
- package/dist/app-config/events.d.ts +122 -0
- package/dist/app-config/events.js +174 -0
- package/dist/app-config/index.d.ts +9 -0
- package/dist/app-config/index.js +8 -0
- package/dist/app-config/lifecycle-contracts.d.ts +273 -0
- package/dist/app-config/lifecycle-contracts.js +440 -0
- package/dist/app-config/lifecycle.d.ts +27 -0
- package/dist/app-config/lifecycle.js +0 -0
- package/dist/app-config/runtime.d.ts +120 -0
- package/dist/app-config/runtime.js +617 -0
- package/dist/app-config/spec.d.ts +173 -0
- package/dist/app-config/spec.js +36 -0
- package/dist/app-config/validation.d.ts +49 -0
- package/dist/app-config/validation.js +538 -0
- package/dist/capabilities/capabilities.d.ts +48 -0
- package/dist/capabilities/capabilities.js +50 -0
- package/dist/capabilities/docs/capabilities.docblock.d.ts +6 -0
- package/dist/capabilities/docs/capabilities.docblock.js +21 -0
- package/dist/capabilities/index.d.ts +3 -0
- package/dist/capabilities/index.js +4 -0
- package/dist/capabilities/openbanking.d.ts +10 -0
- package/dist/capabilities/openbanking.js +92 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +9 -0
- package/dist/client/react/drivers/rn-reusables.d.ts +22 -0
- package/dist/client/react/drivers/rn-reusables.js +21 -0
- package/dist/client/react/drivers/shadcn.d.ts +12 -0
- package/dist/client/react/drivers/shadcn.js +11 -0
- package/dist/client/react/feature-render.d.ts +23 -0
- package/dist/client/react/feature-render.js +44 -0
- package/dist/client/react/form-render.d.ts +92 -0
- package/dist/client/react/form-render.js +298 -0
- package/dist/client/react/index.d.ts +5 -0
- package/dist/client/react/index.js +8 -0
- package/dist/contract-registry/index.d.ts +3 -0
- package/dist/contract-registry/index.js +3 -0
- package/dist/contract-registry/schemas.d.ts +124 -0
- package/dist/contract-registry/schemas.js +61 -0
- package/dist/contract-registry/types.d.ts +46 -0
- package/dist/contract-registry/types.js +0 -0
- package/dist/data-views/data-views.d.ts +5 -0
- package/dist/data-views/data-views.js +4 -0
- package/dist/data-views/docs/data-views.docblock.d.ts +6 -0
- package/dist/data-views/docs/data-views.docblock.js +21 -0
- package/dist/data-views/index.d.ts +4 -0
- package/dist/data-views/index.js +4 -0
- package/dist/data-views/query-generator.d.ts +40 -0
- package/dist/data-views/query-generator.js +48 -0
- package/dist/data-views/registry.d.ts +51 -0
- package/dist/data-views/registry.js +82 -0
- package/dist/data-views/runtime.d.ts +28 -0
- package/dist/data-views/runtime.js +39 -0
- package/dist/data-views/spec.d.ts +32 -0
- package/dist/data-views/spec.js +10 -0
- package/dist/data-views/types.d.ts +157 -0
- package/dist/data-views/types.js +0 -0
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +6 -0
- package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +17 -0
- package/dist/docs/index.d.ts +6 -0
- package/dist/docs/index.js +29 -0
- package/dist/docs/meta.docs.d.ts +6 -0
- package/dist/docs/meta.docs.js +29 -0
- package/dist/docs/presentations.d.ts +33 -0
- package/dist/docs/presentations.js +64 -0
- package/dist/docs/registry.d.ts +23 -0
- package/dist/docs/registry.js +51 -0
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +6 -0
- package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +81 -0
- package/dist/docs/tech/contracts/README.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/README.docblock.js +21 -0
- package/dist/docs/tech/contracts/create-subscription.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/create-subscription.docblock.js +21 -0
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/graphql-typed-outputs.docblock.js +21 -0
- package/dist/docs/tech/contracts/migrations.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/migrations.docblock.js +21 -0
- package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/openapi-export.docblock.js +58 -0
- package/dist/docs/tech/contracts/openapi-import.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/openapi-import.docblock.js +65 -0
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +21 -0
- package/dist/docs/tech/contracts/overlays.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/overlays.docblock.js +21 -0
- package/dist/docs/tech/contracts/tests.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/tests.docblock.js +21 -0
- package/dist/docs/tech/contracts/themes.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/themes.docblock.js +21 -0
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +6 -0
- package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +21 -0
- package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +6 -0
- package/dist/docs/tech/lifecycle-stage-system.docblock.js +17 -0
- package/dist/docs/tech/llm/llm-integration.docblock.d.ts +7 -0
- package/dist/docs/tech/llm/llm-integration.docblock.js +358 -0
- package/dist/docs/tech/mcp-endpoints.docblock.d.ts +6 -0
- package/dist/docs/tech/mcp-endpoints.docblock.js +38 -0
- package/dist/docs/tech/presentation-runtime.docblock.d.ts +6 -0
- package/dist/docs/tech/presentation-runtime.docblock.js +17 -0
- package/dist/docs/tech/schema/README.docblock.d.ts +6 -0
- package/dist/docs/tech/schema/README.docblock.js +21 -0
- package/dist/docs/tech/studio/learning-events.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/learning-events.docblock.js +49 -0
- package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/learning-journeys.docblock.js +80 -0
- package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/platform-admin-panel.docblock.js +85 -0
- package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/project-access-teams.docblock.js +46 -0
- package/dist/docs/tech/studio/project-routing.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/project-routing.docblock.js +68 -0
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +41 -0
- package/dist/docs/tech/studio/team-invitations.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/team-invitations.docblock.js +70 -0
- package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/workspace-ops.docblock.js +48 -0
- package/dist/docs/tech/studio/workspaces.docblock.d.ts +6 -0
- package/dist/docs/tech/studio/workspaces.docblock.js +63 -0
- package/dist/docs/tech/telemetry-ingest.docblock.d.ts +6 -0
- package/dist/docs/tech/telemetry-ingest.docblock.js +156 -0
- package/dist/docs/tech/templates/runtime.docblock.d.ts +6 -0
- package/dist/docs/tech/templates/runtime.docblock.js +21 -0
- package/dist/docs/tech/vscode-extension.docblock.d.ts +6 -0
- package/dist/docs/tech/vscode-extension.docblock.js +102 -0
- package/dist/docs/tech-contracts.docs.d.ts +6 -0
- package/dist/docs/tech-contracts.docs.js +96 -0
- package/dist/docs/types.d.ts +41 -0
- package/dist/docs/types.js +0 -0
- package/dist/events.d.ts +47 -0
- package/dist/events.js +19 -0
- package/dist/experiments/docs/experiments.docblock.d.ts +6 -0
- package/dist/experiments/docs/experiments.docblock.js +21 -0
- package/dist/experiments/evaluator.d.ts +37 -0
- package/dist/experiments/evaluator.js +101 -0
- package/dist/experiments/spec-resolver.d.ts +17 -0
- package/dist/experiments/spec-resolver.js +0 -0
- package/dist/experiments/spec.d.ts +82 -0
- package/dist/experiments/spec.js +33 -0
- package/dist/features/index.d.ts +5 -0
- package/dist/features/index.js +5 -0
- package/dist/features/install.d.ts +22 -0
- package/dist/features/install.js +36 -0
- package/dist/features/registry.d.ts +26 -0
- package/dist/features/registry.js +49 -0
- package/dist/features/types.d.ts +88 -0
- package/dist/features/types.js +0 -0
- package/dist/features/validation.d.ts +8 -0
- package/dist/features/validation.js +14 -0
- package/dist/forms/docs/forms.docblock.d.ts +6 -0
- package/dist/forms/docs/forms.docblock.js +21 -0
- package/dist/forms/forms.d.ts +266 -0
- package/dist/forms/forms.js +146 -0
- package/dist/forms/index.d.ts +2 -0
- package/dist/forms/index.js +3 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.js +121 -0
- package/dist/install.d.ts +77 -0
- package/dist/install.js +40 -0
- package/dist/integrations/binding.d.ts +17 -0
- package/dist/integrations/binding.js +0 -0
- package/dist/integrations/connection.d.ts +51 -0
- package/dist/integrations/connection.js +0 -0
- package/dist/integrations/docs/integrations.docblock.d.ts +6 -0
- package/dist/integrations/docs/integrations.docblock.js +94 -0
- package/dist/integrations/health.d.ts +21 -0
- package/dist/integrations/health.js +69 -0
- package/dist/integrations/index.d.ts +34 -0
- package/dist/integrations/index.js +23 -0
- package/dist/integrations/integrations.feature.d.ts +12 -0
- package/dist/integrations/integrations.feature.js +60 -0
- package/dist/integrations/openbanking/contracts/accounts.d.ts +289 -0
- package/dist/integrations/openbanking/contracts/accounts.js +236 -0
- package/dist/integrations/openbanking/contracts/balances.d.ts +165 -0
- package/dist/integrations/openbanking/contracts/balances.js +166 -0
- package/dist/integrations/openbanking/contracts/index.d.ts +10 -0
- package/dist/integrations/openbanking/contracts/index.js +12 -0
- package/dist/integrations/openbanking/contracts/transactions.d.ts +213 -0
- package/dist/integrations/openbanking/contracts/transactions.js +217 -0
- package/dist/integrations/openbanking/guards.d.ts +12 -0
- package/dist/integrations/openbanking/guards.js +33 -0
- package/dist/integrations/openbanking/models.d.ts +228 -0
- package/dist/integrations/openbanking/models.js +240 -0
- package/dist/integrations/openbanking/openbanking.feature.d.ts +12 -0
- package/dist/integrations/openbanking/openbanking.feature.js +69 -0
- package/dist/integrations/openbanking/telemetry.d.ts +15 -0
- package/dist/integrations/openbanking/telemetry.js +39 -0
- package/dist/integrations/operations.d.ts +437 -0
- package/dist/integrations/operations.js +392 -0
- package/dist/integrations/providers/calendar.d.ts +78 -0
- package/dist/integrations/providers/calendar.js +0 -0
- package/dist/integrations/providers/elevenlabs.d.ts +7 -0
- package/dist/integrations/providers/elevenlabs.js +55 -0
- package/dist/integrations/providers/email.d.ts +86 -0
- package/dist/integrations/providers/email.js +0 -0
- package/dist/integrations/providers/embedding.d.ts +24 -0
- package/dist/integrations/providers/embedding.js +0 -0
- package/dist/integrations/providers/gcs-storage.d.ts +7 -0
- package/dist/integrations/providers/gcs-storage.js +78 -0
- package/dist/integrations/providers/gmail.d.ts +7 -0
- package/dist/integrations/providers/gmail.js +90 -0
- package/dist/integrations/providers/google-calendar.d.ts +7 -0
- package/dist/integrations/providers/google-calendar.js +69 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.d.ts +20 -0
- package/dist/integrations/providers/impls/elevenlabs-voice.js +95 -0
- package/dist/integrations/providers/impls/gcs-storage.d.ts +24 -0
- package/dist/integrations/providers/impls/gcs-storage.js +88 -0
- package/dist/integrations/providers/impls/gmail-inbound.d.ts +26 -0
- package/dist/integrations/providers/impls/gmail-inbound.js +200 -0
- package/dist/integrations/providers/impls/gmail-outbound.d.ts +18 -0
- package/dist/integrations/providers/impls/gmail-outbound.js +105 -0
- package/dist/integrations/providers/impls/google-calendar.d.ts +23 -0
- package/dist/integrations/providers/impls/google-calendar.js +154 -0
- package/dist/integrations/providers/impls/index.d.ts +15 -0
- package/dist/integrations/providers/impls/index.js +16 -0
- package/dist/integrations/providers/impls/mistral-embedding.d.ts +23 -0
- package/dist/integrations/providers/impls/mistral-embedding.js +41 -0
- package/dist/integrations/providers/impls/mistral-llm.d.ts +31 -0
- package/dist/integrations/providers/impls/mistral-llm.js +247 -0
- package/dist/integrations/providers/impls/postmark-email.d.ts +19 -0
- package/dist/integrations/providers/impls/postmark-email.js +55 -0
- package/dist/integrations/providers/impls/powens-client.d.ts +124 -0
- package/dist/integrations/providers/impls/powens-client.js +171 -0
- package/dist/integrations/providers/impls/powens-openbanking.d.ts +27 -0
- package/dist/integrations/providers/impls/powens-openbanking.js +218 -0
- package/dist/integrations/providers/impls/provider-factory.d.ts +26 -0
- package/dist/integrations/providers/impls/provider-factory.js +145 -0
- package/dist/integrations/providers/impls/qdrant-vector.d.ts +24 -0
- package/dist/integrations/providers/impls/qdrant-vector.js +69 -0
- package/dist/integrations/providers/impls/stripe-payments.d.ts +28 -0
- package/dist/integrations/providers/impls/stripe-payments.js +202 -0
- package/dist/integrations/providers/impls/twilio-sms.d.ts +20 -0
- package/dist/integrations/providers/impls/twilio-sms.js +58 -0
- package/dist/integrations/providers/index.d.ts +22 -0
- package/dist/integrations/providers/index.js +13 -0
- package/dist/integrations/providers/llm.d.ts +82 -0
- package/dist/integrations/providers/llm.js +0 -0
- package/dist/integrations/providers/mistral.d.ts +7 -0
- package/dist/integrations/providers/mistral.js +71 -0
- package/dist/integrations/providers/openbanking.d.ts +128 -0
- package/dist/integrations/providers/openbanking.js +0 -0
- package/dist/integrations/providers/payments.d.ts +109 -0
- package/dist/integrations/providers/payments.js +0 -0
- package/dist/integrations/providers/postmark.d.ts +7 -0
- package/dist/integrations/providers/postmark.js +71 -0
- package/dist/integrations/providers/powens.d.ts +7 -0
- package/dist/integrations/providers/powens.js +119 -0
- package/dist/integrations/providers/qdrant.d.ts +7 -0
- package/dist/integrations/providers/qdrant.js +76 -0
- package/dist/integrations/providers/registry.d.ts +11 -0
- package/dist/integrations/providers/registry.js +34 -0
- package/dist/integrations/providers/sms.d.ts +34 -0
- package/dist/integrations/providers/sms.js +0 -0
- package/dist/integrations/providers/storage.d.ts +60 -0
- package/dist/integrations/providers/storage.js +0 -0
- package/dist/integrations/providers/stripe.d.ts +7 -0
- package/dist/integrations/providers/stripe.js +86 -0
- package/dist/integrations/providers/twilio-sms.d.ts +7 -0
- package/dist/integrations/providers/twilio-sms.js +64 -0
- package/dist/integrations/providers/vector-store.d.ts +43 -0
- package/dist/integrations/providers/vector-store.js +0 -0
- package/dist/integrations/providers/voice.d.ts +34 -0
- package/dist/integrations/providers/voice.js +0 -0
- package/dist/integrations/runtime.d.ts +99 -0
- package/dist/integrations/runtime.js +186 -0
- package/dist/integrations/secrets/aws-secret-manager.d.ts +31 -0
- package/dist/integrations/secrets/aws-secret-manager.js +231 -0
- package/dist/integrations/secrets/env-secret-provider.d.ts +31 -0
- package/dist/integrations/secrets/env-secret-provider.js +81 -0
- package/dist/integrations/secrets/gcp-secret-manager.d.ts +32 -0
- package/dist/integrations/secrets/gcp-secret-manager.js +229 -0
- package/dist/integrations/secrets/index.d.ts +7 -0
- package/dist/integrations/secrets/index.js +8 -0
- package/dist/integrations/secrets/manager.d.ts +47 -0
- package/dist/integrations/secrets/manager.js +103 -0
- package/dist/integrations/secrets/provider.d.ts +52 -0
- package/dist/integrations/secrets/provider.js +58 -0
- package/dist/integrations/secrets/scaleway-secret-manager.d.ts +38 -0
- package/dist/integrations/secrets/scaleway-secret-manager.js +247 -0
- package/dist/integrations/secrets-types.d.ts +17 -0
- package/dist/integrations/secrets-types.js +0 -0
- package/dist/integrations/spec.d.ts +75 -0
- package/dist/integrations/spec.js +39 -0
- package/dist/jobs/define-job.d.ts +18 -0
- package/dist/jobs/define-job.js +16 -0
- package/dist/jobs/gcp-cloud-tasks.d.ts +41 -0
- package/dist/jobs/gcp-cloud-tasks.js +53 -0
- package/dist/jobs/gcp-pubsub.d.ts +25 -0
- package/dist/jobs/gcp-pubsub.js +39 -0
- package/dist/jobs/handlers/gmail-sync-handler.d.ts +9 -0
- package/dist/jobs/handlers/gmail-sync-handler.js +9 -0
- package/dist/jobs/handlers/index.d.ts +9 -0
- package/dist/jobs/handlers/index.js +12 -0
- package/dist/jobs/handlers/ping-handler.d.ts +10 -0
- package/dist/jobs/handlers/ping-handler.js +15 -0
- package/dist/jobs/handlers/storage-document-handler.d.ts +12 -0
- package/dist/jobs/handlers/storage-document-handler.js +14 -0
- package/dist/jobs/index.d.ts +3 -0
- package/dist/jobs/index.js +4 -0
- package/dist/jobs/memory-queue.d.ts +18 -0
- package/dist/jobs/memory-queue.js +71 -0
- package/dist/jobs/queue.d.ts +131 -0
- package/dist/jobs/queue.js +33 -0
- package/dist/jobs/scaleway-sqs-queue.d.ts +30 -0
- package/dist/jobs/scaleway-sqs-queue.js +153 -0
- package/dist/jsonschema.d.ts +27 -0
- package/dist/jsonschema.js +32 -0
- package/dist/knowledge/binding.d.ts +25 -0
- package/dist/knowledge/binding.js +0 -0
- package/dist/knowledge/docs/knowledge.docblock.d.ts +6 -0
- package/dist/knowledge/docs/knowledge.docblock.js +21 -0
- package/dist/knowledge/index.d.ts +11 -0
- package/dist/knowledge/index.js +10 -0
- package/dist/knowledge/ingestion/document-processor.d.ts +24 -0
- package/dist/knowledge/ingestion/document-processor.js +54 -0
- package/dist/knowledge/ingestion/embedding-service.d.ts +12 -0
- package/dist/knowledge/ingestion/embedding-service.js +25 -0
- package/dist/knowledge/ingestion/gmail-adapter.d.ts +18 -0
- package/dist/knowledge/ingestion/gmail-adapter.js +51 -0
- package/dist/knowledge/ingestion/index.d.ts +6 -0
- package/dist/knowledge/ingestion/index.js +7 -0
- package/dist/knowledge/ingestion/storage-adapter.d.ts +15 -0
- package/dist/knowledge/ingestion/storage-adapter.js +26 -0
- package/dist/knowledge/ingestion/vector-indexer.d.ts +18 -0
- package/dist/knowledge/ingestion/vector-indexer.js +32 -0
- package/dist/knowledge/knowledge.feature.d.ts +12 -0
- package/dist/knowledge/knowledge.feature.js +61 -0
- package/dist/knowledge/operations.d.ts +318 -0
- package/dist/knowledge/operations.js +321 -0
- package/dist/knowledge/query/index.d.ts +2 -0
- package/dist/knowledge/query/index.js +3 -0
- package/dist/knowledge/query/service.d.ts +29 -0
- package/dist/knowledge/query/service.js +65 -0
- package/dist/knowledge/runtime.d.ts +32 -0
- package/dist/knowledge/runtime.js +49 -0
- package/dist/knowledge/source.d.ts +32 -0
- package/dist/knowledge/source.js +0 -0
- package/dist/knowledge/spaces/email-threads.d.ts +7 -0
- package/dist/knowledge/spaces/email-threads.js +37 -0
- package/dist/knowledge/spaces/financial-docs.d.ts +7 -0
- package/dist/knowledge/spaces/financial-docs.js +37 -0
- package/dist/knowledge/spaces/financial-overview.d.ts +7 -0
- package/dist/knowledge/spaces/financial-overview.js +41 -0
- package/dist/knowledge/spaces/index.d.ts +7 -0
- package/dist/knowledge/spaces/index.js +8 -0
- package/dist/knowledge/spaces/product-canon.d.ts +7 -0
- package/dist/knowledge/spaces/product-canon.js +37 -0
- package/dist/knowledge/spaces/support-faq.d.ts +7 -0
- package/dist/knowledge/spaces/support-faq.js +40 -0
- package/dist/knowledge/spaces/uploaded-docs.d.ts +7 -0
- package/dist/knowledge/spaces/uploaded-docs.js +37 -0
- package/dist/knowledge/spec.d.ts +48 -0
- package/dist/knowledge/spec.js +39 -0
- package/dist/llm/exporters.d.ts +70 -0
- package/dist/llm/exporters.js +542 -0
- package/dist/llm/index.d.ts +4 -0
- package/dist/llm/index.js +4 -0
- package/dist/llm/prompts.d.ts +52 -0
- package/dist/llm/prompts.js +410 -0
- package/dist/llm/types.d.ts +215 -0
- package/dist/llm/types.js +0 -0
- package/dist/markdown.d.ts +22 -0
- package/dist/markdown.js +119 -0
- package/dist/migrations.d.ts +52 -0
- package/dist/migrations.js +33 -0
- package/dist/model-registry.d.ts +13 -0
- package/dist/model-registry.js +33 -0
- package/dist/onboarding-base.d.ts +138 -0
- package/dist/onboarding-base.js +195 -0
- package/dist/openapi.d.ts +31 -0
- package/dist/openapi.js +75 -0
- package/dist/operations/index.d.ts +3 -0
- package/dist/operations/index.js +4 -0
- package/dist/operations/operation.d.ts +186 -0
- package/dist/operations/operation.js +35 -0
- package/dist/operations/registry.d.ts +103 -0
- package/dist/operations/registry.js +252 -0
- package/dist/ownership.d.ts +84 -0
- package/dist/ownership.js +38 -0
- package/dist/policy/docs/policy.docblock.d.ts +6 -0
- package/dist/policy/docs/policy.docblock.js +21 -0
- package/dist/policy/engine.d.ts +40 -0
- package/dist/policy/engine.js +223 -0
- package/dist/policy/index.d.ts +5 -0
- package/dist/policy/index.js +5 -0
- package/dist/policy/opa-adapter.d.ts +45 -0
- package/dist/policy/opa-adapter.js +71 -0
- package/dist/policy/registry.d.ts +9 -0
- package/dist/policy/registry.js +11 -0
- package/dist/policy/spec.d.ts +103 -0
- package/dist/policy/spec.js +0 -0
- package/dist/presentations/docs/presentations-conventions.docblock.d.ts +6 -0
- package/dist/presentations/docs/presentations-conventions.docblock.js +21 -0
- package/dist/presentations/index.d.ts +4 -0
- package/dist/presentations/index.js +5 -0
- package/dist/presentations/presentations.d.ts +50 -0
- package/dist/presentations/presentations.js +7 -0
- package/dist/presentations/registry.d.ts +10 -0
- package/dist/presentations/registry.js +12 -0
- package/dist/presentations/transform-engine.d.ts +66 -0
- package/dist/presentations/transform-engine.js +282 -0
- package/dist/prompt.d.ts +60 -0
- package/dist/prompt.js +10 -0
- package/dist/promptRegistry.d.ts +15 -0
- package/dist/promptRegistry.js +34 -0
- package/dist/regenerator/adapters.d.ts +19 -0
- package/dist/regenerator/adapters.js +0 -0
- package/dist/regenerator/docs/regenerator.docblock.d.ts +6 -0
- package/dist/regenerator/docs/regenerator.docblock.js +21 -0
- package/dist/regenerator/executor.d.ts +70 -0
- package/dist/regenerator/executor.js +86 -0
- package/dist/regenerator/index.d.ts +7 -0
- package/dist/regenerator/index.js +6 -0
- package/dist/regenerator/service.d.ts +33 -0
- package/dist/regenerator/service.js +93 -0
- package/dist/regenerator/sinks.d.ts +26 -0
- package/dist/regenerator/sinks.js +32 -0
- package/dist/regenerator/types.d.ts +107 -0
- package/dist/regenerator/types.js +0 -0
- package/dist/regenerator/utils.d.ts +9 -0
- package/dist/regenerator/utils.js +51 -0
- package/dist/registry-utils.d.ts +106 -0
- package/dist/registry-utils.js +122 -0
- package/dist/registry.d.ts +31 -0
- package/dist/registry.js +61 -0
- package/dist/resources.d.ts +64 -0
- package/dist/resources.js +50 -0
- package/dist/schema-to-markdown.d.ts +54 -0
- package/dist/schema-to-markdown.js +217 -0
- package/dist/server/contracts-adapter-hydration.d.ts +15 -0
- package/dist/server/contracts-adapter-hydration.js +41 -0
- package/dist/server/contracts-adapter-input.d.ts +9 -0
- package/dist/server/contracts-adapter-input.js +83 -0
- package/dist/server/graphql-pothos.d.ts +31 -0
- package/dist/server/graphql-pothos.js +134 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.js +10 -0
- package/dist/server/mcp/createMcpServer.d.ts +15 -0
- package/dist/server/mcp/createMcpServer.js +27 -0
- package/dist/server/mcp/mcpTypes.d.ts +27 -0
- package/dist/server/mcp/mcpTypes.js +0 -0
- package/dist/server/mcp/registerPresentations.d.ts +7 -0
- package/dist/server/mcp/registerPresentations.js +63 -0
- package/dist/server/mcp/registerPrompts.d.ts +8 -0
- package/dist/server/mcp/registerPrompts.js +37 -0
- package/dist/server/mcp/registerResources.d.ts +8 -0
- package/dist/server/mcp/registerResources.js +35 -0
- package/dist/server/mcp/registerTools.d.ts +8 -0
- package/dist/server/mcp/registerTools.js +22 -0
- package/dist/server/provider-mcp.d.ts +2 -0
- package/dist/server/provider-mcp.js +3 -0
- package/dist/server/rest-elysia.d.ts +40 -0
- package/dist/server/rest-elysia.js +20 -0
- package/dist/server/rest-express.d.ts +16 -0
- package/dist/server/rest-express.js +36 -0
- package/dist/server/rest-generic.d.ts +32 -0
- package/dist/server/rest-generic.js +124 -0
- package/dist/server/rest-next-app.d.ts +35 -0
- package/dist/server/rest-next-app.js +38 -0
- package/dist/server/rest-next-mcp.d.ts +11 -0
- package/dist/server/rest-next-mcp.js +45 -0
- package/dist/server/rest-next-pages.d.ts +9 -0
- package/dist/server/rest-next-pages.js +22 -0
- package/dist/telemetry/anomaly.d.ts +27 -0
- package/dist/telemetry/anomaly.js +48 -0
- package/dist/telemetry/docs/telemetry.docblock.d.ts +6 -0
- package/dist/telemetry/docs/telemetry.docblock.js +21 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/index.js +5 -0
- package/dist/telemetry/spec.d.ts +91 -0
- package/dist/telemetry/spec.js +69 -0
- package/dist/telemetry/tracker.d.ts +51 -0
- package/dist/telemetry/tracker.js +76 -0
- package/dist/tests/index.d.ts +3 -0
- package/dist/tests/index.js +4 -0
- package/dist/tests/runner.d.ts +43 -0
- package/dist/tests/runner.js +150 -0
- package/dist/tests/spec.d.ts +81 -0
- package/dist/tests/spec.js +33 -0
- package/dist/themes.d.ts +53 -0
- package/dist/themes.js +39 -0
- package/dist/translations/catalog.d.ts +28 -0
- package/dist/translations/catalog.js +0 -0
- package/dist/translations/tenant.d.ts +15 -0
- package/dist/translations/tenant.js +0 -0
- package/dist/types.d.ts +92 -0
- package/dist/types.js +0 -0
- package/dist/workflow/adapters/db-adapter.d.ts +46 -0
- package/dist/workflow/adapters/db-adapter.js +83 -0
- package/dist/workflow/adapters/file-adapter.d.ts +14 -0
- package/dist/workflow/adapters/file-adapter.js +11 -0
- package/dist/workflow/adapters/index.d.ts +4 -0
- package/dist/workflow/adapters/index.js +5 -0
- package/dist/workflow/adapters/memory-store.d.ts +18 -0
- package/dist/workflow/adapters/memory-store.js +58 -0
- package/dist/workflow/expression.d.ts +9 -0
- package/dist/workflow/expression.js +99 -0
- package/dist/workflow/index.d.ts +10 -0
- package/dist/workflow/index.js +9 -0
- package/dist/workflow/overview.docblock.d.ts +6 -0
- package/dist/workflow/overview.docblock.js +21 -0
- package/dist/workflow/runner.d.ts +75 -0
- package/dist/workflow/runner.js +337 -0
- package/dist/workflow/sla-monitor.d.ts +20 -0
- package/dist/workflow/sla-monitor.js +47 -0
- package/dist/workflow/spec.d.ts +106 -0
- package/dist/workflow/spec.js +55 -0
- package/dist/workflow/state.d.ts +35 -0
- package/dist/workflow/state.js +0 -0
- package/dist/workflow/validation.d.ts +29 -0
- package/dist/workflow/validation.js +176 -0
- package/dist/workspace-config/contractsrc-schema.d.ts +862 -0
- package/dist/workspace-config/contractsrc-schema.js +281 -0
- package/dist/workspace-config/index.d.ts +2 -0
- package/dist/workspace-config/index.js +3 -0
- package/dist/workspace-config/workspace-config.docblock.d.ts +6 -0
- package/dist/workspace-config/workspace-config.docblock.js +45 -0
- package/package.json +598 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { StateStore, WorkflowState, WorkflowStateFilters } from "../state.js";
|
|
2
|
+
|
|
3
|
+
//#region src/workflow/adapters/db-adapter.d.ts
|
|
4
|
+
interface WorkflowStateRecord {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
version: string;
|
|
8
|
+
status: string;
|
|
9
|
+
currentStep: string;
|
|
10
|
+
data: unknown;
|
|
11
|
+
history: unknown[];
|
|
12
|
+
retryCounts: Record<string, number>;
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
updatedAt: Date;
|
|
15
|
+
}
|
|
16
|
+
interface PrismaClientLike {
|
|
17
|
+
workflowState: {
|
|
18
|
+
create: (args: {
|
|
19
|
+
data: Record<string, unknown>;
|
|
20
|
+
}) => Promise<WorkflowStateRecord>;
|
|
21
|
+
findUnique: (args: {
|
|
22
|
+
where: {
|
|
23
|
+
id: string;
|
|
24
|
+
};
|
|
25
|
+
}) => Promise<WorkflowStateRecord | null>;
|
|
26
|
+
update: (args: {
|
|
27
|
+
where: {
|
|
28
|
+
id: string;
|
|
29
|
+
};
|
|
30
|
+
data: Record<string, unknown>;
|
|
31
|
+
}) => Promise<WorkflowStateRecord>;
|
|
32
|
+
findMany: (args: {
|
|
33
|
+
where?: Record<string, unknown>;
|
|
34
|
+
}) => Promise<WorkflowStateRecord[]>;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
declare class PrismaStateStore implements StateStore {
|
|
38
|
+
private readonly prisma;
|
|
39
|
+
constructor(prisma: PrismaClientLike);
|
|
40
|
+
create(state: WorkflowState): Promise<void>;
|
|
41
|
+
get(workflowId: string): Promise<WorkflowState | undefined>;
|
|
42
|
+
update(workflowId: string, updater: (current: WorkflowState) => WorkflowState): Promise<WorkflowState>;
|
|
43
|
+
list(filters?: WorkflowStateFilters): Promise<WorkflowState[]>;
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { PrismaStateStore };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
//#region src/workflow/adapters/db-adapter.ts
|
|
2
|
+
var PrismaStateStore = class {
|
|
3
|
+
constructor(prisma) {
|
|
4
|
+
this.prisma = prisma;
|
|
5
|
+
}
|
|
6
|
+
async create(state) {
|
|
7
|
+
await this.prisma.workflowState.create({ data: {
|
|
8
|
+
id: state.workflowId,
|
|
9
|
+
name: state.workflowName,
|
|
10
|
+
version: state.workflowVersion,
|
|
11
|
+
status: state.status,
|
|
12
|
+
currentStep: state.currentStep,
|
|
13
|
+
data: state.data,
|
|
14
|
+
history: state.history,
|
|
15
|
+
retryCounts: state.retryCounts ?? {},
|
|
16
|
+
createdAt: state.createdAt,
|
|
17
|
+
updatedAt: state.updatedAt
|
|
18
|
+
} });
|
|
19
|
+
}
|
|
20
|
+
async get(workflowId) {
|
|
21
|
+
const record = await this.prisma.workflowState.findUnique({ where: { id: workflowId } });
|
|
22
|
+
if (!record) return void 0;
|
|
23
|
+
return {
|
|
24
|
+
workflowId: record.id,
|
|
25
|
+
workflowName: record.name,
|
|
26
|
+
workflowVersion: parseInt(record.version, 10),
|
|
27
|
+
currentStep: record.currentStep,
|
|
28
|
+
data: record.data,
|
|
29
|
+
history: record.history,
|
|
30
|
+
retryCounts: record.retryCounts,
|
|
31
|
+
status: record.status,
|
|
32
|
+
createdAt: record.createdAt,
|
|
33
|
+
updatedAt: record.updatedAt
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async update(workflowId, updater) {
|
|
37
|
+
const current = await this.get(workflowId);
|
|
38
|
+
if (!current) throw new Error(`Workflow ${workflowId} not found`);
|
|
39
|
+
const next = updater(current);
|
|
40
|
+
const updated = await this.prisma.workflowState.update({
|
|
41
|
+
where: { id: workflowId },
|
|
42
|
+
data: {
|
|
43
|
+
status: next.status,
|
|
44
|
+
currentStep: next.currentStep,
|
|
45
|
+
data: next.data,
|
|
46
|
+
history: next.history,
|
|
47
|
+
retryCounts: next.retryCounts,
|
|
48
|
+
updatedAt: next.updatedAt
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
workflowId: updated.id,
|
|
53
|
+
workflowName: updated.name,
|
|
54
|
+
workflowVersion: parseInt(updated.version, 10),
|
|
55
|
+
currentStep: updated.currentStep,
|
|
56
|
+
data: updated.data,
|
|
57
|
+
history: updated.history,
|
|
58
|
+
retryCounts: updated.retryCounts,
|
|
59
|
+
status: updated.status,
|
|
60
|
+
createdAt: updated.createdAt,
|
|
61
|
+
updatedAt: updated.updatedAt
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async list(filters) {
|
|
65
|
+
const where = {};
|
|
66
|
+
if (filters?.status) where.status = filters.status;
|
|
67
|
+
return (await this.prisma.workflowState.findMany({ where })).map((record) => ({
|
|
68
|
+
workflowId: record.id,
|
|
69
|
+
workflowName: record.name,
|
|
70
|
+
workflowVersion: parseInt(record.version, 10),
|
|
71
|
+
currentStep: record.currentStep,
|
|
72
|
+
data: record.data,
|
|
73
|
+
history: record.history,
|
|
74
|
+
retryCounts: record.retryCounts,
|
|
75
|
+
status: record.status,
|
|
76
|
+
createdAt: record.createdAt,
|
|
77
|
+
updatedAt: record.updatedAt
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { PrismaStateStore };
|
|
@@ -0,0 +1,14 @@
|
|
|
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 };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/workflow/adapters/file-adapter.ts
|
|
2
|
+
/**
|
|
3
|
+
* Placeholder for a file-backed state store adapter.
|
|
4
|
+
* Implementations should manage locking/concurrency and JSON serialization.
|
|
5
|
+
*/
|
|
6
|
+
function createFileStateStore(_options) {
|
|
7
|
+
throw new Error("File-backed state store adapter not implemented. Provide a custom adapter that satisfies StateStore.");
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { createFileStateStore };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InMemoryStateStore } from "./memory-store.js";
|
|
2
|
+
import { PrismaStateStore } from "./db-adapter.js";
|
|
3
|
+
import { FileStateStoreOptions, createFileStateStore } from "./file-adapter.js";
|
|
4
|
+
export { FileStateStoreOptions, InMemoryStateStore, PrismaStateStore, createFileStateStore };
|
|
@@ -0,0 +1,18 @@
|
|
|
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 };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
//#region src/workflow/adapters/memory-store.ts
|
|
2
|
+
function cloneState(state) {
|
|
3
|
+
return {
|
|
4
|
+
...state,
|
|
5
|
+
data: deepCopy(state.data),
|
|
6
|
+
history: state.history.map((execution) => ({
|
|
7
|
+
...execution,
|
|
8
|
+
input: deepCopy(execution.input),
|
|
9
|
+
output: deepCopy(execution.output),
|
|
10
|
+
startedAt: new Date(execution.startedAt),
|
|
11
|
+
completedAt: execution.completedAt ? new Date(execution.completedAt) : void 0
|
|
12
|
+
})),
|
|
13
|
+
createdAt: new Date(state.createdAt),
|
|
14
|
+
updatedAt: new Date(state.updatedAt)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Naive in-memory state store. Suitable for tests and single-node development
|
|
19
|
+
* environments. Swap with a database-backed adapter in production.
|
|
20
|
+
*/
|
|
21
|
+
var InMemoryStateStore = class {
|
|
22
|
+
items = /* @__PURE__ */ new Map();
|
|
23
|
+
async create(state) {
|
|
24
|
+
if (this.items.has(state.workflowId)) throw new Error(`Workflow state already exists: ${state.workflowId}`);
|
|
25
|
+
this.items.set(state.workflowId, cloneState(state));
|
|
26
|
+
}
|
|
27
|
+
async get(workflowId) {
|
|
28
|
+
const state = this.items.get(workflowId);
|
|
29
|
+
return state ? cloneState(state) : void 0;
|
|
30
|
+
}
|
|
31
|
+
async update(workflowId, updater) {
|
|
32
|
+
const current = this.items.get(workflowId);
|
|
33
|
+
if (!current) throw new Error(`Workflow state not found for ${workflowId}`);
|
|
34
|
+
const next = cloneState(updater(cloneState(current)));
|
|
35
|
+
this.items.set(workflowId, next);
|
|
36
|
+
return cloneState(next);
|
|
37
|
+
}
|
|
38
|
+
async list(filters) {
|
|
39
|
+
const all = [...this.items.values()];
|
|
40
|
+
return (filters?.status ? all.filter((state) => state.status === filters.status) : all).map(cloneState);
|
|
41
|
+
}
|
|
42
|
+
clear() {
|
|
43
|
+
this.items.clear();
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
function deepCopy(value) {
|
|
47
|
+
if (value instanceof Date) return new Date(value.getTime());
|
|
48
|
+
if (Array.isArray(value)) return value.map((item) => deepCopy(item));
|
|
49
|
+
if (value && typeof value === "object") {
|
|
50
|
+
const result = {};
|
|
51
|
+
for (const [key, val] of Object.entries(value)) result[key] = deepCopy(val);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
export { InMemoryStateStore };
|
|
@@ -0,0 +1,9 @@
|
|
|
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 };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
//#region src/workflow/expression.ts
|
|
2
|
+
function evaluateExpression(expression, ctx) {
|
|
3
|
+
if (!expression) return true;
|
|
4
|
+
const trimmed = expression.trim();
|
|
5
|
+
if (!trimmed) return true;
|
|
6
|
+
const orParts = splitByOperator(trimmed, "||");
|
|
7
|
+
if (orParts.length > 1) return orParts.some((part) => evaluateExpression(part, ctx));
|
|
8
|
+
const andParts = splitByOperator(trimmed, "&&");
|
|
9
|
+
if (andParts.length > 1) return andParts.every((part) => evaluateExpression(part, ctx));
|
|
10
|
+
return evaluateSingle(trimmed, ctx);
|
|
11
|
+
}
|
|
12
|
+
function evaluateSingle(expr, ctx) {
|
|
13
|
+
const trimmed = expr.trim();
|
|
14
|
+
if (!trimmed) return true;
|
|
15
|
+
if (trimmed.startsWith("!")) return !evaluateSingle(trimmed.slice(1), ctx);
|
|
16
|
+
const comparisonMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)\s*(===|==|!==|!=|>=|<=|>|<)\s*(.+)$/);
|
|
17
|
+
if (comparisonMatch) {
|
|
18
|
+
const [, root, path, operator, rawRight] = comparisonMatch;
|
|
19
|
+
return compare(resolveRoot(root, ctx, path), parseLiteral(rawRight), operator);
|
|
20
|
+
}
|
|
21
|
+
const truthyMatch = trimmed.match(/^(data|input|output)\.([A-Za-z0-9_.[\]]+)$/);
|
|
22
|
+
if (truthyMatch) {
|
|
23
|
+
const [, root, path] = truthyMatch;
|
|
24
|
+
const value = resolveRoot(root, ctx, path);
|
|
25
|
+
return Boolean(value);
|
|
26
|
+
}
|
|
27
|
+
const literal = parseLiteral(trimmed);
|
|
28
|
+
return Boolean(literal);
|
|
29
|
+
}
|
|
30
|
+
function compare(left, right, operator) {
|
|
31
|
+
switch (operator) {
|
|
32
|
+
case "===":
|
|
33
|
+
case "==": return left === right;
|
|
34
|
+
case "!==":
|
|
35
|
+
case "!=": return left !== right;
|
|
36
|
+
case ">": return Number(left) > Number(right);
|
|
37
|
+
case ">=": return Number(left) >= Number(right);
|
|
38
|
+
case "<": return Number(left) < Number(right);
|
|
39
|
+
case "<=": return Number(left) <= Number(right);
|
|
40
|
+
default: return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function parseLiteral(value) {
|
|
44
|
+
const trimmed = (value ?? "").trim();
|
|
45
|
+
if (trimmed.startsWith("\"") && trimmed.endsWith("\"") || trimmed.startsWith("'") && trimmed.endsWith("'")) return trimmed.slice(1, -1);
|
|
46
|
+
if (/^-?\d+(\.\d+)?$/.test(trimmed)) return Number(trimmed);
|
|
47
|
+
if (/^true$/i.test(trimmed)) return true;
|
|
48
|
+
if (/^false$/i.test(trimmed)) return false;
|
|
49
|
+
if (/^null$/i.test(trimmed)) return null;
|
|
50
|
+
if (/^undefined$/i.test(trimmed)) return void 0;
|
|
51
|
+
return trimmed;
|
|
52
|
+
}
|
|
53
|
+
function resolveRoot(root, ctx, path) {
|
|
54
|
+
return resolvePath(root === "data" ? ctx.data : root === "input" ? ctx.input : ctx.output, path);
|
|
55
|
+
}
|
|
56
|
+
function resolvePath(source, path) {
|
|
57
|
+
if (source == null) return void 0;
|
|
58
|
+
if (!path) return source;
|
|
59
|
+
const segments = path.replace(/\[(\d+)\]/g, ".$1").split(".").filter(Boolean);
|
|
60
|
+
let current = source;
|
|
61
|
+
for (const segment of segments) {
|
|
62
|
+
if (current == null) return void 0;
|
|
63
|
+
current = current[segment];
|
|
64
|
+
}
|
|
65
|
+
return current;
|
|
66
|
+
}
|
|
67
|
+
function splitByOperator(expr, operator) {
|
|
68
|
+
const parts = [];
|
|
69
|
+
let buffer = "";
|
|
70
|
+
let inSingleQuote = false;
|
|
71
|
+
let inDoubleQuote = false;
|
|
72
|
+
for (let i = 0; i < expr.length; i++) {
|
|
73
|
+
const char = expr[i];
|
|
74
|
+
if (!char) continue;
|
|
75
|
+
const next = expr.slice(i, i + operator.length);
|
|
76
|
+
if (char === "'" && !inDoubleQuote) {
|
|
77
|
+
inSingleQuote = !inSingleQuote;
|
|
78
|
+
buffer += char;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
if (char === "\"" && !inSingleQuote) {
|
|
82
|
+
inDoubleQuote = !inDoubleQuote;
|
|
83
|
+
buffer += char;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (!inSingleQuote && !inDoubleQuote && next === operator) {
|
|
87
|
+
parts.push(buffer.trim());
|
|
88
|
+
buffer = "";
|
|
89
|
+
i += operator.length - 1;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
buffer += char;
|
|
93
|
+
}
|
|
94
|
+
if (buffer.trim().length) parts.push(buffer.trim());
|
|
95
|
+
return parts;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
//#endregion
|
|
99
|
+
export { evaluateExpression };
|
|
@@ -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 { PrismaStateStore } from "./adapters/db-adapter.js";
|
|
8
|
+
import { FileStateStoreOptions, createFileStateStore } from "./adapters/file-adapter.js";
|
|
9
|
+
import "./adapters/index.js";
|
|
10
|
+
export { CompensationStep, CompensationStrategy, ExpressionContext, FileStateStoreOptions, FormRef, GuardCondition, GuardConditionKind, GuardContext, GuardEvaluator, InMemoryStateStore, OperationExecutor, OperationExecutorContext, PrismaStateStore, 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, createFileStateStore, evaluateExpression, validateWorkflowSpec };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { WorkflowRegistry } from "./spec.js";
|
|
2
|
+
import { WorkflowValidationError, assertWorkflowSpecValid, validateWorkflowSpec } from "./validation.js";
|
|
3
|
+
import { evaluateExpression } from "./expression.js";
|
|
4
|
+
import { WorkflowPreFlightError, WorkflowRunner } from "./runner.js";
|
|
5
|
+
import { InMemoryStateStore } from "./adapters/memory-store.js";
|
|
6
|
+
import { PrismaStateStore } from "./adapters/db-adapter.js";
|
|
7
|
+
import { createFileStateStore } from "./adapters/file-adapter.js";
|
|
8
|
+
|
|
9
|
+
export { InMemoryStateStore, PrismaStateStore, WorkflowPreFlightError, WorkflowRegistry, WorkflowRunner, WorkflowValidationError, assertWorkflowSpecValid, createFileStateStore, evaluateExpression, validateWorkflowSpec };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { registerDocBlocks } from "../docs/registry.js";
|
|
2
|
+
|
|
3
|
+
//#region src/workflow/overview.docblock.ts
|
|
4
|
+
const tech_workflows_overview_DocBlocks = [{
|
|
5
|
+
id: "docs.tech.workflows.overview",
|
|
6
|
+
title: "WorkflowSpec Overview",
|
|
7
|
+
summary: "WorkflowSpec provides a declarative, versioned format for long-running flows that mix automation and human review. Specs stay inside `@contractspec/lib.contracts` (`src/workflow/spec.ts`) so the same definition powers runtime execution, documentation, and future generation.",
|
|
8
|
+
kind: "reference",
|
|
9
|
+
visibility: "public",
|
|
10
|
+
route: "/docs/tech/workflows/overview",
|
|
11
|
+
tags: [
|
|
12
|
+
"tech",
|
|
13
|
+
"workflows",
|
|
14
|
+
"overview"
|
|
15
|
+
],
|
|
16
|
+
body: "# WorkflowSpec Overview\n\n## Purpose\n\nWorkflowSpec provides a declarative, versioned format for long-running flows that mix automation and human review. Specs stay inside `@contractspec/lib.contracts` (`src/workflow/spec.ts`) so the same definition powers runtime execution, documentation, and future generation.\n\n## Core Types\n\n- `WorkflowMeta`: ownership metadata (`title`, `domain`, `owners`, `tags`, `stability`) plus `name` and `version`.\n- `WorkflowDefinition`:\n - `entryStepId?`: optional explicit entry point (defaults to first step).\n - `steps[]`: ordered list of `Step` descriptors.\n - `transitions[]`: directed edges between steps with optional expressions.\n - `sla?`: aggregated timing hints for the overall flow or per-step budgets.\n - `compensation?`: fallback operations executed when a workflow is rolled back or fails.\n- `Step`:\n - `type`: `human`, `automation`, or `decision`.\n - `action`: references either a `ContractSpec` (`operation`) or `FormSpec` (`form`).\n - Optional `guard`, `timeoutMs`, and retry policy (`maxAttempts`, `backoff`, `delayMs`, `maxDelayMs?`).\n - `requiredIntegrations?`: integration slot ids that must be bound before the step may execute.\n - `requiredCapabilities?`: `CapabilityRef[]` that must be enabled in the resolved app config.\n- `Transition`: `from` → `to` with optional `condition` string (simple data expressions).\n\n## Registry & Validation\n\n- `WorkflowRegistry` (`src/workflow/spec.ts`) stores specs by key `<name>.v<version>` and exposes `register`, `list`, and `get`.\n- `validateWorkflowSpec()` (`src/workflow/validation.ts`) checks:\n - Duplicate step IDs.\n - Unknown `from`/`to` transitions.\n - Empty guards/conditions.\n - Reachability from the entry step.\n - Cycles in the graph.\n - Operation/Form references against provided registries.\n- `assertWorkflowSpecValid()` wraps validation and throws `WorkflowValidationError` when errors remain.\n\n## Runtime\n\n- `WorkflowRunner` (`src/workflow/runner.ts`) executes workflows and coordinates steps.\n - `start(name, version?, initialData?)` returns a `workflowId`.\n - `executeStep(workflowId, input?)` runs the current step (automation or human).\n - `getState(workflowId)` retrieves the latest state snapshot.\n - `cancel(workflowId)` marks the workflow as cancelled.\n - `preFlightCheck(name, version?, resolvedConfig?)` evaluates integration/capability requirements before the workflow starts.\n - Throws `WorkflowPreFlightError` if required integration slots are unbound or required capabilities are disabled.\n- `StateStore` (`src/workflow/state.ts`) abstracts persistence. V1 ships with:\n - `InMemoryStateStore` (`src/workflow/adapters/memory-store.ts`) for tests/dev.\n - Placeholder factories for file/database adapters (`adapters/file-adapter.ts`, `adapters/db-adapter.ts`).\n- Guard evaluation: expression guards run through `evaluateExpression()` (`src/workflow/expression.ts`); custom policy guards can be provided via `guardEvaluator`.\n- Events: the runner emits `workflow.started`, `workflow.step_completed`, `workflow.step_failed`, and `workflow.cancelled` through the optional `eventEmitter`.\n- React bindings (`@contractspec/lib.presentation-runtime-react`):\n - `useWorkflow` hook (polls state, exposes `executeStep`, `cancel`, `refresh`).\n - `WorkflowStepper` progress indicator using design-system Stepper.\n - `WorkflowStepRenderer` helper to render human/automation/decision steps with sensible fallbacks.\n\n## Authoring Checklist\n\n1. Reuse existing operations/forms; create new specs when missing.\n2. Prefer explicit `entryStepId` for clarity (especially with decision branches).\n3. Give automation steps an `operation` and human steps a `form` (warnings surface otherwise).\n4. Use short, meaningful step IDs (`submit`, `review`, `finalize`) to simplify analytics.\n5. Keep guard expressions deterministic; complex policy logic should move to PolicySpec (Phase 2).\n\n## Testing\n\n- Add unit tests for new workflows via `assertWorkflowSpecValid`.\n- Use the new Vitest suites (`validation.test.ts`, `expression.test.ts`, `runner.test.ts`) as examples.\n- CLI support will arrive in Phase 1 PR 3 (`contractspec create --type workflow`).\n\n## Tooling\n\n- `contractspec create --type workflow` scaffolds a WorkflowSpec with interactive prompts.\n- `contractspec build <spec.workflow.ts>` generates a runner scaffold (`.runner.ts`) wired to `WorkflowRunner` and the in-memory store.\n- `contractspec validate` understands `.workflow.ts` files and checks core structure (meta, steps, transitions).\n\n## Next Steps (Non-MVP)\n\n- Persistence adapters (database/file) for workflow state (Phase 2).\n- React bindings (`useWorkflow`, `WorkflowStepper`) and presentation-runtime integration (PR 3).\n- Policy engine integration (`guard.type === 'policy'` validated against PolicySpec).\n- Telemetry hooks for step execution metrics.\n\n"
|
|
17
|
+
}];
|
|
18
|
+
registerDocBlocks(tech_workflows_overview_DocBlocks);
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { tech_workflows_overview_DocBlocks };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { GuardCondition, Step, WorkflowRegistry } from "./spec.js";
|
|
2
|
+
import { ResolvedBranding } from "../app-config/branding.js";
|
|
3
|
+
import { ResolvedAppConfig, ResolvedIntegration, ResolvedKnowledge, ResolvedTranslation } from "../app-config/runtime.js";
|
|
4
|
+
import { SecretProvider } from "../integrations/secrets/provider.js";
|
|
5
|
+
import { TranslationResolver } from "../types.js";
|
|
6
|
+
import { OpRef } from "../features/types.js";
|
|
7
|
+
import "../features/index.js";
|
|
8
|
+
import { StateStore, WorkflowState } from "./state.js";
|
|
9
|
+
|
|
10
|
+
//#region src/workflow/runner.d.ts
|
|
11
|
+
interface OperationExecutorContext {
|
|
12
|
+
workflow: WorkflowState;
|
|
13
|
+
step: Step;
|
|
14
|
+
resolvedAppConfig?: ResolvedAppConfig;
|
|
15
|
+
integrations?: ResolvedIntegration[];
|
|
16
|
+
knowledge?: ResolvedKnowledge[];
|
|
17
|
+
branding?: ResolvedBranding;
|
|
18
|
+
translation?: ResolvedTranslation;
|
|
19
|
+
translationResolver?: TranslationResolver;
|
|
20
|
+
secretProvider?: SecretProvider;
|
|
21
|
+
}
|
|
22
|
+
type OperationExecutor = (op: OpRef, input: unknown, context: OperationExecutorContext) => Promise<unknown>;
|
|
23
|
+
type WorkflowPreFlightIssueType = 'integration' | 'capability';
|
|
24
|
+
type WorkflowPreFlightIssueSeverity = 'error' | 'warning';
|
|
25
|
+
interface WorkflowPreFlightIssue {
|
|
26
|
+
stepId: string;
|
|
27
|
+
type: WorkflowPreFlightIssueType;
|
|
28
|
+
identifier: string;
|
|
29
|
+
severity: WorkflowPreFlightIssueSeverity;
|
|
30
|
+
reason: string;
|
|
31
|
+
}
|
|
32
|
+
interface WorkflowPreFlightResult {
|
|
33
|
+
canStart: boolean;
|
|
34
|
+
issues: WorkflowPreFlightIssue[];
|
|
35
|
+
}
|
|
36
|
+
interface GuardContext {
|
|
37
|
+
workflow: WorkflowState;
|
|
38
|
+
step: Step;
|
|
39
|
+
input?: unknown;
|
|
40
|
+
}
|
|
41
|
+
type GuardEvaluator = (guard: GuardCondition, context: GuardContext) => Promise<boolean> | boolean;
|
|
42
|
+
interface WorkflowRunnerConfig {
|
|
43
|
+
registry: WorkflowRegistry;
|
|
44
|
+
stateStore: StateStore;
|
|
45
|
+
opExecutor: OperationExecutor;
|
|
46
|
+
guardEvaluator?: GuardEvaluator;
|
|
47
|
+
eventEmitter?: (event: string, payload: Record<string, unknown>) => void;
|
|
48
|
+
appConfigProvider?: (state: WorkflowState) => ResolvedAppConfig | undefined | Promise<ResolvedAppConfig | undefined>;
|
|
49
|
+
enforceCapabilities?: (operation: OpRef, context: OperationExecutorContext) => void | Promise<void>;
|
|
50
|
+
secretProvider?: SecretProvider;
|
|
51
|
+
translationResolver?: TranslationResolver;
|
|
52
|
+
}
|
|
53
|
+
declare class WorkflowRunner {
|
|
54
|
+
private readonly config;
|
|
55
|
+
constructor(config: WorkflowRunnerConfig);
|
|
56
|
+
preFlightCheck(workflowName: string, version?: number, resolvedConfig?: ResolvedAppConfig): Promise<WorkflowPreFlightResult>;
|
|
57
|
+
start(workflowName: string, version?: number, initialData?: Record<string, unknown>): Promise<string>;
|
|
58
|
+
executeStep(workflowId: string, input?: unknown): Promise<void>;
|
|
59
|
+
rollback(workflowId: string): Promise<void>;
|
|
60
|
+
getState(workflowId: string): Promise<WorkflowState>;
|
|
61
|
+
cancel(workflowId: string): Promise<void>;
|
|
62
|
+
private performPreFlight;
|
|
63
|
+
private evaluateGuard;
|
|
64
|
+
private runStepAction;
|
|
65
|
+
private pickNextStepId;
|
|
66
|
+
private getSpec;
|
|
67
|
+
private getStateOrThrow;
|
|
68
|
+
private emit;
|
|
69
|
+
}
|
|
70
|
+
declare class WorkflowPreFlightError extends Error {
|
|
71
|
+
readonly issues: WorkflowPreFlightIssue[];
|
|
72
|
+
constructor(issues: WorkflowPreFlightIssue[]);
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { GuardContext, GuardEvaluator, OperationExecutor, OperationExecutorContext, WorkflowPreFlightError, WorkflowPreFlightIssue, WorkflowPreFlightIssueSeverity, WorkflowPreFlightIssueType, WorkflowPreFlightResult, WorkflowRunner, WorkflowRunnerConfig };
|