@lssm/example.workflow-system 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229
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/dist/approval/approval.contracts.d.ts +136 -135
- package/dist/approval/approval.contracts.d.ts.map +1 -0
- package/dist/approval/approval.contracts.js +23 -24
- package/dist/approval/approval.contracts.js.map +1 -0
- package/dist/approval/approval.enum.d.ts +5 -4
- package/dist/approval/approval.enum.d.ts.map +1 -0
- package/dist/approval/approval.enum.js +5 -5
- package/dist/approval/approval.enum.js.map +1 -0
- package/dist/approval/approval.event.d.ts +34 -33
- package/dist/approval/approval.event.d.ts.map +1 -0
- package/dist/approval/approval.event.js +34 -34
- package/dist/approval/approval.event.js.map +1 -0
- package/dist/approval/approval.handler.d.ts +2 -1
- package/dist/approval/approval.handler.d.ts.map +1 -0
- package/dist/approval/approval.handler.js +2 -1
- package/dist/approval/approval.handler.js.map +1 -0
- package/dist/approval/approval.schema.d.ts +26 -25
- package/dist/approval/approval.schema.d.ts.map +1 -0
- package/dist/approval/approval.schema.js +24 -25
- package/dist/approval/approval.schema.js.map +1 -0
- package/dist/docs/workflow-system.docblock.js +2 -1
- package/dist/docs/workflow-system.docblock.js.map +1 -0
- package/dist/entities/approval.d.ts +38 -37
- package/dist/entities/approval.d.ts.map +1 -0
- package/dist/entities/approval.js +44 -44
- package/dist/entities/approval.js.map +1 -0
- package/dist/entities/index.d.ts +129 -128
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +2 -1
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/instance.d.ts +49 -48
- package/dist/entities/instance.d.ts.map +1 -0
- package/dist/entities/instance.js +58 -58
- package/dist/entities/instance.js.map +1 -0
- package/dist/entities/step.d.ts +34 -33
- package/dist/entities/step.d.ts.map +1 -0
- package/dist/entities/step.js +37 -37
- package/dist/entities/step.js.map +1 -0
- package/dist/entities/workflow.d.ts +25 -24
- package/dist/entities/workflow.d.ts.map +1 -0
- package/dist/entities/workflow.js +28 -28
- package/dist/entities/workflow.js.map +1 -0
- package/dist/example.d.ts +2 -1
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +2 -1
- package/dist/example.js.map +1 -0
- package/dist/instance/instance.contracts.d.ts +258 -257
- package/dist/instance/instance.contracts.d.ts.map +1 -0
- package/dist/instance/instance.contracts.js +23 -24
- package/dist/instance/instance.contracts.js.map +1 -0
- package/dist/instance/instance.enum.d.ts +4 -3
- package/dist/instance/instance.enum.d.ts.map +1 -0
- package/dist/instance/instance.enum.js +4 -4
- package/dist/instance/instance.enum.js.map +1 -0
- package/dist/instance/instance.event.d.ts +89 -88
- package/dist/instance/instance.event.d.ts.map +1 -0
- package/dist/instance/instance.event.js +31 -31
- package/dist/instance/instance.event.js.map +1 -0
- package/dist/instance/instance.handler.d.ts +2 -1
- package/dist/instance/instance.handler.d.ts.map +1 -0
- package/dist/instance/instance.handler.js +2 -1
- package/dist/instance/instance.handler.js.map +1 -0
- package/dist/instance/instance.schema.d.ts +56 -55
- package/dist/instance/instance.schema.d.ts.map +1 -0
- package/dist/instance/instance.schema.js +37 -38
- package/dist/instance/instance.schema.js.map +1 -0
- package/dist/libs/contracts/dist/capabilities/openbanking.js +2 -1
- package/dist/libs/contracts/dist/capabilities/openbanking.js.map +1 -0
- package/dist/libs/contracts/dist/contract-registry/schemas.js +2 -1
- package/dist/libs/contracts/dist/contract-registry/schemas.js.map +1 -0
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/index.js +2 -6
- package/dist/libs/contracts/dist/docs/meta.docs.js +30 -0
- package/dist/libs/contracts/dist/docs/meta.docs.js.map +1 -0
- package/dist/libs/contracts/dist/docs/presentations.js +2 -1
- package/dist/libs/contracts/dist/docs/presentations.js.map +1 -0
- package/dist/libs/contracts/dist/docs/registry.js +2 -1
- package/dist/libs/contracts/dist/docs/registry.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +2 -1
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js.map +1 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js +97 -0
- package/dist/libs/contracts/dist/docs/tech-contracts.docs.js.map +1 -0
- package/dist/libs/contracts/dist/events.js +2 -1
- package/dist/libs/contracts/dist/events.js.map +1 -0
- package/dist/libs/contracts/dist/index.js +3 -2
- package/dist/libs/contracts/dist/integrations/contracts.js +65 -66
- package/dist/libs/contracts/dist/integrations/contracts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +31 -32
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +18 -19
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +32 -33
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/models.js +60 -61
- package/dist/libs/contracts/dist/integrations/openbanking/models.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +2 -1
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/gmail.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/gmail.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/mistral.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/mistral.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/postmark.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/postmark.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/powens.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/powens.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/stripe.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/stripe.js.map +1 -0
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +2 -1
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/contracts.js +44 -45
- package/dist/libs/contracts/dist/knowledge/contracts.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js.map +1 -0
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +2 -1
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js.map +1 -0
- package/dist/libs/contracts/dist/llm/exporters.js +2 -1
- package/dist/libs/contracts/dist/llm/exporters.js.map +1 -0
- package/dist/libs/contracts/dist/onboarding-base.js +22 -23
- package/dist/libs/contracts/dist/onboarding-base.js.map +1 -0
- package/dist/libs/contracts/dist/ownership.js +4 -2
- package/dist/libs/contracts/dist/ownership.js.map +1 -0
- package/dist/libs/contracts/dist/presentations.v2.js +2 -1
- package/dist/libs/contracts/dist/presentations.v2.js.map +1 -0
- package/dist/libs/contracts/dist/regenerator/service.js +2 -1
- package/dist/libs/contracts/dist/regenerator/service.js.map +1 -0
- package/dist/libs/contracts/dist/schema/dist/index.js +3874 -6
- package/dist/libs/contracts/dist/schema/dist/index.js.map +1 -0
- package/dist/libs/contracts/dist/spec.js +2 -1
- package/dist/libs/contracts/dist/spec.js.map +1 -0
- package/dist/libs/schema/dist/index.js +4922 -6
- package/dist/libs/schema/dist/index.js.map +1 -0
- package/dist/presentations/index.d.ts +2 -1
- package/dist/presentations/index.d.ts.map +1 -0
- package/dist/presentations/index.js +2 -1
- package/dist/presentations/index.js.map +1 -0
- package/dist/shared/mock-data.d.ts +2 -1
- package/dist/shared/mock-data.d.ts.map +1 -0
- package/dist/shared/mock-data.js +2 -1
- package/dist/shared/mock-data.js.map +1 -0
- package/dist/shared/types.d.ts +2 -1
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/state-machine/index.d.ts +2 -1
- package/dist/state-machine/index.d.ts.map +1 -0
- package/dist/state-machine/index.js +2 -1
- package/dist/state-machine/index.js.map +1 -0
- package/dist/workflow/workflow.contracts.d.ts +248 -247
- package/dist/workflow/workflow.contracts.d.ts.map +1 -0
- package/dist/workflow/workflow.contracts.js +13 -14
- package/dist/workflow/workflow.contracts.js.map +1 -0
- package/dist/workflow/workflow.enum.d.ts +7 -6
- package/dist/workflow/workflow.enum.d.ts.map +1 -0
- package/dist/workflow/workflow.enum.js +7 -7
- package/dist/workflow/workflow.enum.js.map +1 -0
- package/dist/workflow/workflow.event.d.ts +35 -34
- package/dist/workflow/workflow.event.d.ts.map +1 -0
- package/dist/workflow/workflow.event.js +19 -19
- package/dist/workflow/workflow.event.js.map +1 -0
- package/dist/workflow/workflow.handler.d.ts +2 -1
- package/dist/workflow/workflow.handler.d.ts.map +1 -0
- package/dist/workflow/workflow.handler.js +2 -1
- package/dist/workflow/workflow.handler.js.map +1 -0
- package/dist/workflow/workflow.schema.d.ts +65 -64
- package/dist/workflow/workflow.schema.d.ts.map +1 -0
- package/dist/workflow/workflow.schema.js +47 -48
- package/dist/workflow/workflow.schema.js.map +1 -0
- package/dist/workflow-system.feature.d.ts +2 -1
- package/dist/workflow-system.feature.d.ts.map +1 -0
- package/dist/workflow-system.feature.js +2 -1
- package/dist/workflow-system.feature.js.map +1 -0
- package/package.json +13 -12
- package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
- package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -39
- package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
- package/dist/libs/schema/dist/EnumType.js +0 -56
- package/dist/libs/schema/dist/FieldType.js +0 -49
- package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/schema/dist/SchemaModel.js +0 -39
- package/dist/libs/schema/dist/entity/defineEntity.js +0 -236
- package/dist/libs/schema/dist/entity/index.js +0 -2
- package/dist/libs/schema/dist/entity/types.js +0 -1
|
@@ -288,4 +288,5 @@ const WorkflowSystemPresentations = {
|
|
|
288
288
|
};
|
|
289
289
|
|
|
290
290
|
//#endregion
|
|
291
|
-
export { ApprovalDetailPresentation, ApprovalFormPresentation, ApprovalInboxPresentation, InstanceDetailPresentation, InstanceListPresentation, PendingApprovalsBadgePresentation, ProgressTrackerPresentation, WorkflowDesignerPresentation, WorkflowDetailPresentation, WorkflowListPresentation, WorkflowMetricsPresentation, WorkflowSystemPresentations };
|
|
291
|
+
export { ApprovalDetailPresentation, ApprovalFormPresentation, ApprovalInboxPresentation, InstanceDetailPresentation, InstanceListPresentation, PendingApprovalsBadgePresentation, ProgressTrackerPresentation, WorkflowDesignerPresentation, WorkflowDetailPresentation, WorkflowListPresentation, WorkflowMetricsPresentation, WorkflowSystemPresentations };
|
|
292
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["WorkflowDesignerPresentation: PresentationDescriptorV2","WorkflowListPresentation: PresentationDescriptorV2","WorkflowDetailPresentation: PresentationDescriptorV2","InstanceListPresentation: PresentationDescriptorV2","InstanceDetailPresentation: PresentationDescriptorV2","ProgressTrackerPresentation: PresentationDescriptorV2","ApprovalInboxPresentation: PresentationDescriptorV2","ApprovalDetailPresentation: PresentationDescriptorV2","ApprovalFormPresentation: PresentationDescriptorV2","PendingApprovalsBadgePresentation: PresentationDescriptorV2","WorkflowMetricsPresentation: PresentationDescriptorV2"],"sources":["../../src/presentations/index.ts"],"sourcesContent":["/**\n * Workflow System Presentation Descriptors\n */\nimport type { PresentationDescriptorV2 } from '@lssm/lib.contracts';\nimport { WorkflowDefinitionModel } from '../workflow/workflow.schema';\nimport { WorkflowInstanceModel } from '../instance/instance.schema';\nimport { ApprovalRequestModel } from '../approval/approval.schema';\n\n// ============ Workflow Definition Presentations ============\n\n/**\n * Workflow designer canvas for building workflows.\n */\nexport const WorkflowDesignerPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.designer',\n version: 1,\n description: 'Visual workflow designer with drag-and-drop steps',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'designer', 'admin'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowDesigner',\n props: WorkflowDefinitionModel,\n },\n targets: ['react'],\n policy: {\n flags: ['workflow.designer.enabled'],\n },\n};\n\n/**\n * List of workflow definitions.\n */\nexport const WorkflowListPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.definition.list',\n version: 1,\n description: 'List of workflow definitions with status and actions',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'list', 'admin'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowDefinitionList',\n props: WorkflowDefinitionModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.enabled'],\n },\n};\n\n/**\n * Workflow definition detail view.\n */\nexport const WorkflowDetailPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.definition.detail',\n version: 1,\n description: 'Detailed view of a workflow definition with steps',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'detail'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowDefinitionDetail',\n props: WorkflowDefinitionModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.enabled'],\n },\n};\n\n// ============ Workflow Instance Presentations ============\n\n/**\n * List of running workflow instances.\n */\nexport const InstanceListPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.instance.list',\n version: 1,\n description: 'List of workflow instances with status and progress',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'instance', 'list'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowInstanceList',\n props: WorkflowInstanceModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.enabled'],\n },\n};\n\n/**\n * Workflow instance detail view with timeline.\n */\nexport const InstanceDetailPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.instance.detail',\n version: 1,\n description: 'Detailed view of a workflow instance with step timeline',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'instance', 'detail', 'timeline'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowInstanceDetail',\n props: WorkflowInstanceModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.enabled'],\n },\n};\n\n/**\n * Workflow progress tracker widget.\n */\nexport const ProgressTrackerPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.instance.progress',\n version: 1,\n description: 'Visual progress tracker showing current step in workflow',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'progress', 'widget'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowProgressTracker',\n props: WorkflowInstanceModel,\n },\n targets: ['react'],\n policy: {\n flags: ['workflow.enabled'],\n },\n};\n\n// ============ Approval Presentations ============\n\n/**\n * Approval inbox - list of pending approvals.\n */\nexport const ApprovalInboxPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.approval.inbox',\n version: 1,\n description: 'Inbox showing pending approval requests for current user',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'approval', 'inbox'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'ApprovalInbox',\n props: ApprovalRequestModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.approvals.enabled'],\n },\n};\n\n/**\n * Approval request detail view.\n */\nexport const ApprovalDetailPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.approval.detail',\n version: 1,\n description: 'Detailed approval request view with context and actions',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'approval', 'detail'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'ApprovalRequestDetail',\n props: ApprovalRequestModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.approvals.enabled'],\n },\n};\n\n/**\n * Approval decision form.\n */\nexport const ApprovalFormPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.approval.form',\n version: 1,\n description: 'Form for submitting approval decisions',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'approval', 'form'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'ApprovalDecisionForm',\n },\n targets: ['react'],\n policy: {\n flags: ['workflow.approvals.enabled'],\n },\n};\n\n// ============ Dashboard Widgets ============\n\n/**\n * Pending approvals count badge.\n */\nexport const PendingApprovalsBadgePresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.approval.badge',\n version: 1,\n description: 'Badge showing count of pending approvals',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'approval', 'badge', 'widget'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PendingApprovalsBadge',\n },\n targets: ['react'],\n policy: {\n flags: ['workflow.approvals.enabled'],\n },\n};\n\n/**\n * Workflow metrics dashboard widget.\n */\nexport const WorkflowMetricsPresentation: PresentationDescriptorV2 = {\n meta: {\n name: 'workflow.metrics',\n version: 1,\n description: 'Dashboard widget showing workflow metrics and statistics',\n domain: 'workflow-system',\n owners: ['@workflow-team'],\n tags: ['workflow', 'metrics', 'dashboard'],\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'WorkflowMetricsDashboard',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['workflow.metrics.enabled'],\n },\n};\n\n// ============ All Presentations ============\n\nexport const WorkflowSystemPresentations = {\n // Definition\n WorkflowDesignerPresentation,\n WorkflowListPresentation,\n WorkflowDetailPresentation,\n\n // Instance\n InstanceListPresentation,\n InstanceDetailPresentation,\n ProgressTrackerPresentation,\n\n // Approval\n ApprovalInboxPresentation,\n ApprovalDetailPresentation,\n ApprovalFormPresentation,\n PendingApprovalsBadgePresentation,\n\n // Dashboard\n WorkflowMetricsPresentation,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-data.d.ts","names":[],"sources":["../../src/shared/mock-data.ts"],"sourcesContent":[],"mappings":";;;;cAYa"}
|
package/dist/shared/mock-data.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-data.js","names":[],"sources":["../../src/shared/mock-data.ts"],"sourcesContent":["/**\n * Mock data store for workflow system.\n * In production, this would be backed by a database.\n */\n\nimport type {\n WorkflowDefinitionRecord,\n WorkflowStepRecord,\n WorkflowInstanceRecord,\n ApprovalRequestRecord,\n} from './types';\n\nexport const mockDataStore = {\n workflows: new Map<string, WorkflowDefinitionRecord>(),\n steps: new Map<string, WorkflowStepRecord>(),\n instances: new Map<string, WorkflowInstanceRecord>(),\n approvals: new Map<string, ApprovalRequestRecord>(),\n stepExecutions: new Map<\n string,\n { id: string; instanceId: string; stepId: string; status: string }\n >(),\n};\n"],"mappings":";AAYA,MAAa,gBAAgB;CAC3B,2BAAW,IAAI,KAAuC;CACtD,uBAAO,IAAI,KAAiC;CAC5C,2BAAW,IAAI,KAAqC;CACpD,2BAAW,IAAI,KAAoC;CACnD,gCAAgB,IAAI,KAGjB;CACJ"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -77,4 +77,5 @@ interface HandlerContext {
|
|
|
77
77
|
organizationId: string;
|
|
78
78
|
}
|
|
79
79
|
//#endregion
|
|
80
|
-
export { ApprovalRequestRecord, HandlerContext, WorkflowDefinitionRecord, WorkflowInstanceRecord, WorkflowStepRecord };
|
|
80
|
+
export { ApprovalRequestRecord, HandlerContext, WorkflowDefinitionRecord, WorkflowInstanceRecord, WorkflowStepRecord };
|
|
81
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/shared/types.ts"],"sourcesContent":[],"mappings":";;AAIA;;AAaa,UAbI,wBAAA,CAaJ;EACG,EAAA,EAAA,MAAA;EAAI,GAAA,EAAA,MAAA;EAGH,IAAA,EAAA,MAAA;EAgBF,WAAA,CAAA,EAAA,MAAA;EAIF,OAAA,EAAA,MAAA;EACA,MAAA,EAAA,OAAA,GAAA,QAAA,GAAA,YAAA,GAAA,UAAA;EAAI,WAAA,EAAA,QAAA,GAAA,OAAA,GAAA,WAAA,GAAA,KAAA;EAGA,aAAA,CAAA,EAAA,MAAA;EAeF,cAAA,CAAA,EAAA,MAAA;EAIL,cAAA,EAAA,MAAA;EAEK,SAAA,EAAA,MAAA;EAEF,SAAA,EApDA,IAoDA;EACA,SAAA,EApDA,IAoDA;EACC,WAAA,CAAA,EApDE,IAoDF;;AACM,UAlDH,kBAAA,CAkDG;EAGH,EAAA,EAAA,MAAA;EAkBH,oBAAA,EAAA,MAAA;EACJ,GAAA,EAAA,MAAA;EACU,IAAA,EAAA,MAAA;EAEP,WAAA,CAAA,EAAA,MAAA;EACA,IAAA,EAAA,OAAA,GAAA,UAAA,GAAA,MAAA,GAAA,WAAA,GAAA,UAAA,GAAA,MAAA,GAAA,QAAA,GAAA,KAAA;EAAI,QAAA,EAAA,MAAA;EAGA,WAAA,EA/DF,MA+DgB,CAAA,MAAA,EAAA,MAAA,CAAA;;;;aA3DlB;aACA;;UAGI,sBAAA;;;;;;;eAeF;;;;UAIL;;eAEK;;aAEF;aACA;cACC;gBACE;;UAGC,qBAAA;;;;;;;;;;;cAkBH;UACJ;oBACU;;aAEP;aACA;;UAGI,cAAA"}
|
|
@@ -144,4 +144,5 @@ declare function buildStateMachineDefinition(workflow: {
|
|
|
144
144
|
*/
|
|
145
145
|
declare function createInitialState(definition: StateMachineDefinition, contextData?: Record<string, unknown>): StateMachineState;
|
|
146
146
|
//#endregion
|
|
147
|
-
export { BasicStateMachineEngine, IStateMachineEngine, StateMachineDefinition, StateMachineState, StateMachineStep, TransitionContext, TransitionDefinition, TransitionResult, buildStateMachineDefinition, createInitialState, createStateMachineEngine };
|
|
147
|
+
export { BasicStateMachineEngine, IStateMachineEngine, StateMachineDefinition, StateMachineState, StateMachineStep, TransitionContext, TransitionDefinition, TransitionResult, buildStateMachineDefinition, createInitialState, createStateMachineEngine };
|
|
148
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/state-machine/index.ts"],"sourcesContent":[],"mappings":";;AAaA;AAcA;AA2BA;AAWA;AAuBA;AAWA;AAYA;;;AAQa,UA1GI,oBAAA,CA0GJ;EAOG;EACL,MAAA,EAAA,MAAA;EACE;EAOG,aAAA,EAAA,MAAA;EACL;EAEE,SAAA,CAAA,EAAA,MAAA;EACR;EAOY,YAAA,CAAA,EAAA,MAAA,EAAA;;AAQjB;;;AAKa,UApII,gBAAA,CAoIJ;EA6DG,GAAA,EAAA,MAAA;EACL,IAAA,EAAA,MAAA;EACE,IAAA,EAAA,OAAA,GAAA,UAAA,GAAA,MAAA,GAAA,WAAA,GAAA,UAAA,GAAA,MAAA,GAAA,QAAA,GAAA,KAAA;EAkBG;EACL,WAAA,EAzMI,MAyMJ,CAAA,MAAA,EAAA,MAAA,GAzM4B,oBAyM5B,CAAA;EAEE;EACR,YAAA,CAAA,EAAA,KAAA,GAAA,KAAA,GAAA,UAAA,GAAA,YAAA;EAgEY;EA1J+B,YAAA,CAAA,EAAA,MAAA,EAAA;EAAmB;EA4MnD,cAAA,CAAA,EAAA,MAAA;EASA;EAWyB,mBAAA,CAAA,EAAA,MAAA;;;;AAsCzC;AACc,UA3WG,sBAAA,CA2WH;EACC,GAAA,EAAA,MAAA;EACZ,IAAA,EAAA,MAAA;EAAiB,OAAA,EAAA,MAAA;;SAxWX,eAAe;;;;;UAMP,iBAAA;;;eAWF;;;;eAIA;;;;;;;UAQE,gBAAA;;;;UAIP;;;;;;UAOO,iBAAA;;;SAGR;;;;;;UASQ,mBAAA;;;;4BAKD,+BACL,4CAEE;;;;;;;kCAOG,+BACL,4BACE;;;;yBAOG,+BACL,4CAEE,oBACR;;;;qDAOY;;;;;;cAQJ,uBAAA,YAAmC;4BAEhC,+BACL,4CAEE;;;;kCA6DG,+BACL,4BACE;yBAkBG,+BACL,4CAEE,oBACR;qDAgEY;;;;;iBAkDD,wBAAA,CAAA,GAA4B;;;;iBAS5B,2BAAA;;;;;;;;;eAWC,wBAAwB;;;;;MAMtC;;;;iBAgCa,kBAAA,aACF,sCACC,0BACZ"}
|
|
@@ -154,4 +154,5 @@ function createInitialState(definition, contextData = {}) {
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
//#endregion
|
|
157
|
-
export { BasicStateMachineEngine, buildStateMachineDefinition, createInitialState, createStateMachineEngine };
|
|
157
|
+
export { BasicStateMachineEngine, buildStateMachineDefinition, createInitialState, createStateMachineEngine };
|
|
158
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["newStatus: StateMachineState['status']","stepMap: Record<string, StateMachineStep>"],"sources":["../../src/state-machine/index.ts"],"sourcesContent":["/**\n * Workflow State Machine Engine\n *\n * Provides state machine logic for workflow transitions.\n * This is a spec-level abstraction that defines the interface\n * for workflow state transitions.\n */\n\n// ============ Types ============\n\n/**\n * Represents a transition definition in a workflow step.\n */\nexport interface TransitionDefinition {\n /** The action that triggers this transition (e.g., \"approve\", \"reject\") */\n action: string;\n /** The target step key to transition to */\n targetStepKey: string;\n /** Optional condition expression for conditional transitions */\n condition?: string;\n /** Optional guard roles - only users with these roles can take this action */\n allowedRoles?: string[];\n}\n\n/**\n * Step definition for state machine.\n */\nexport interface StateMachineStep {\n key: string;\n name: string;\n type:\n | 'START'\n | 'APPROVAL'\n | 'TASK'\n | 'CONDITION'\n | 'PARALLEL'\n | 'WAIT'\n | 'ACTION'\n | 'END';\n /** Map of action -> transition definition */\n transitions: Record<string, string | TransitionDefinition>;\n /** For approval steps: how approvals are handled */\n approvalMode?: 'ANY' | 'ALL' | 'MAJORITY' | 'SEQUENTIAL';\n /** Roles that can approve/act on this step */\n allowedRoles?: string[];\n /** Timeout in seconds */\n timeoutSeconds?: number;\n /** Condition expression for CONDITION type */\n conditionExpression?: string;\n}\n\n/**\n * Workflow state machine definition.\n */\nexport interface StateMachineDefinition {\n key: string;\n name: string;\n version: number;\n initialStepKey: string;\n steps: Record<string, StateMachineStep>;\n}\n\n/**\n * Current state of an instance.\n */\nexport interface StateMachineState {\n currentStepKey: string;\n status:\n | 'PENDING'\n | 'RUNNING'\n | 'WAITING'\n | 'PAUSED'\n | 'COMPLETED'\n | 'CANCELLED'\n | 'FAILED'\n | 'TIMEOUT';\n contextData: Record<string, unknown>;\n history: {\n stepKey: string;\n action: string;\n timestamp: Date;\n executedBy: string;\n }[];\n}\n\n/**\n * Result of a transition attempt.\n */\nexport interface TransitionResult {\n success: boolean;\n previousStepKey: string;\n currentStepKey: string | null;\n status: StateMachineState['status'];\n error?: string;\n}\n\n/**\n * Context for transition validation.\n */\nexport interface TransitionContext {\n userId: string;\n userRoles: string[];\n data?: Record<string, unknown>;\n}\n\n// ============ State Machine Engine ============\n\n/**\n * State machine engine interface.\n * Implementation should be provided at runtime.\n */\nexport interface IStateMachineEngine {\n /**\n * Validate that a transition is allowed.\n */\n canTransition(\n definition: StateMachineDefinition,\n state: StateMachineState,\n action: string,\n context: TransitionContext\n ): { allowed: boolean; reason?: string };\n\n /**\n * Get available actions for the current step.\n */\n getAvailableActions(\n definition: StateMachineDefinition,\n state: StateMachineState,\n context: TransitionContext\n ): string[];\n\n /**\n * Execute a transition.\n */\n transition(\n definition: StateMachineDefinition,\n state: StateMachineState,\n action: string,\n context: TransitionContext\n ): TransitionResult;\n\n /**\n * Evaluate a condition expression.\n */\n evaluateCondition(\n expression: string,\n contextData: Record<string, unknown>\n ): boolean;\n}\n\n/**\n * Basic state machine engine implementation.\n * This is a reference implementation for spec validation.\n */\nexport class BasicStateMachineEngine implements IStateMachineEngine {\n canTransition(\n definition: StateMachineDefinition,\n state: StateMachineState,\n action: string,\n context: TransitionContext\n ): { allowed: boolean; reason?: string } {\n // Check if state allows transitions\n if (state.status !== 'RUNNING' && state.status !== 'WAITING') {\n return {\n allowed: false,\n reason: `Workflow is ${state.status}, cannot transition`,\n };\n }\n\n const currentStep = definition.steps[state.currentStepKey];\n if (!currentStep) {\n return {\n allowed: false,\n reason: `Step ${state.currentStepKey} not found`,\n };\n }\n\n // Check if action exists for this step\n const transition = currentStep.transitions[action];\n if (!transition) {\n return {\n allowed: false,\n reason: `Action ${action} not available in step ${state.currentStepKey}`,\n };\n }\n\n // Check role-based access\n if (currentStep.allowedRoles && currentStep.allowedRoles.length > 0) {\n const hasRole = currentStep.allowedRoles.some((role) =>\n context.userRoles.includes(role)\n );\n if (!hasRole) {\n return {\n allowed: false,\n reason: `User lacks required role for this action`,\n };\n }\n }\n\n // Check transition-specific roles if defined\n if (\n typeof transition === 'object' &&\n transition.allowedRoles &&\n transition.allowedRoles.length > 0\n ) {\n const hasRole = transition.allowedRoles.some((role) =>\n context.userRoles.includes(role)\n );\n if (!hasRole) {\n return {\n allowed: false,\n reason: `User lacks required role for action ${action}`,\n };\n }\n }\n\n return { allowed: true };\n }\n\n getAvailableActions(\n definition: StateMachineDefinition,\n state: StateMachineState,\n context: TransitionContext\n ): string[] {\n if (state.status !== 'RUNNING' && state.status !== 'WAITING') {\n return [];\n }\n\n const currentStep = definition.steps[state.currentStepKey];\n if (!currentStep) {\n return [];\n }\n\n return Object.keys(currentStep.transitions).filter((action) => {\n const result = this.canTransition(definition, state, action, context);\n return result.allowed;\n });\n }\n\n transition(\n definition: StateMachineDefinition,\n state: StateMachineState,\n action: string,\n context: TransitionContext\n ): TransitionResult {\n const validation = this.canTransition(definition, state, action, context);\n if (!validation.allowed) {\n return {\n success: false,\n previousStepKey: state.currentStepKey,\n currentStepKey: state.currentStepKey,\n status: state.status,\n error: validation.reason,\n };\n }\n\n const currentStep = definition.steps[state.currentStepKey];\n if (!currentStep) {\n return {\n success: false,\n previousStepKey: state.currentStepKey,\n currentStepKey: state.currentStepKey,\n status: state.status,\n error: `Current step ${state.currentStepKey} not found`,\n };\n }\n const transition = currentStep.transitions[action];\n if (!transition) {\n return {\n success: false,\n previousStepKey: state.currentStepKey,\n currentStepKey: state.currentStepKey,\n status: state.status,\n error: `Transition for action ${action} not found`,\n };\n }\n const targetStepKey =\n typeof transition === 'string' ? transition : transition.targetStepKey;\n const targetStep = definition.steps[targetStepKey];\n\n if (!targetStep) {\n return {\n success: false,\n previousStepKey: state.currentStepKey,\n currentStepKey: state.currentStepKey,\n status: state.status,\n error: `Target step ${targetStepKey} not found`,\n };\n }\n\n // Determine new status\n let newStatus: StateMachineState['status'] = 'RUNNING';\n if (targetStep.type === 'END') {\n newStatus = 'COMPLETED';\n } else if (targetStep.type === 'APPROVAL' || targetStep.type === 'WAIT') {\n newStatus = 'WAITING';\n }\n\n return {\n success: true,\n previousStepKey: state.currentStepKey,\n currentStepKey: targetStepKey,\n status: newStatus,\n };\n }\n\n evaluateCondition(\n expression: string,\n contextData: Record<string, unknown>\n ): boolean {\n // Basic condition evaluation\n // In production, this should use a proper expression language\n try {\n // Simple property checks like \"amount > 1000\"\n const match = expression.match(\n /^(\\w+)\\s*(>=|<=|>|<|===|!==|==|!=)\\s*(.+)$/\n );\n if (match) {\n const [, prop, operator, value] = match;\n if (!prop || !operator || value === undefined) {\n return false;\n }\n const propValue = contextData[prop];\n const compareValue = JSON.parse(value);\n\n switch (operator) {\n case '>':\n return Number(propValue) > Number(compareValue);\n case '<':\n return Number(propValue) < Number(compareValue);\n case '>=':\n return Number(propValue) >= Number(compareValue);\n case '<=':\n return Number(propValue) <= Number(compareValue);\n case '===':\n case '==':\n return propValue === compareValue;\n case '!==':\n case '!=':\n return propValue !== compareValue;\n }\n }\n\n // Check for boolean property\n if (expression in contextData) {\n return Boolean(contextData[expression]);\n }\n\n return false;\n } catch {\n return false;\n }\n }\n}\n\n/**\n * Create a new state machine engine instance.\n */\nexport function createStateMachineEngine(): IStateMachineEngine {\n return new BasicStateMachineEngine();\n}\n\n// ============ Utility Functions ============\n\n/**\n * Build a state machine definition from workflow entities.\n */\nexport function buildStateMachineDefinition(\n workflow: {\n key: string;\n name: string;\n version: number;\n initialStepId: string | null;\n },\n steps: {\n key: string;\n name: string;\n type: string;\n transitions: Record<string, string | TransitionDefinition>;\n approvalMode?: string;\n approverRoles?: string[];\n timeoutSeconds?: number;\n conditionExpression?: string;\n }[]\n): StateMachineDefinition {\n const stepMap: Record<string, StateMachineStep> = {};\n\n for (const step of steps) {\n stepMap[step.key] = {\n key: step.key,\n name: step.name,\n type: step.type as StateMachineStep['type'],\n transitions: step.transitions,\n approvalMode: step.approvalMode as StateMachineStep['approvalMode'],\n allowedRoles: step.approverRoles,\n timeoutSeconds: step.timeoutSeconds,\n conditionExpression: step.conditionExpression,\n };\n }\n\n // Find initial step\n const startStep = steps.find((s) => s.type === 'START');\n const initialStepKey = startStep?.key ?? steps[0]?.key ?? '';\n\n return {\n key: workflow.key,\n name: workflow.name,\n version: workflow.version,\n initialStepKey,\n steps: stepMap,\n };\n}\n\n/**\n * Create initial state for a new workflow instance.\n */\nexport function createInitialState(\n definition: StateMachineDefinition,\n contextData: Record<string, unknown> = {}\n): StateMachineState {\n return {\n currentStepKey: definition.initialStepKey,\n status: 'RUNNING',\n contextData,\n history: [],\n };\n}\n"],"mappings":"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"}
|