@contractspec/example.workflow-system 1.57.0 → 1.58.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.
Files changed (209) hide show
  1. package/dist/approval/approval.enum.d.ts +2 -7
  2. package/dist/approval/approval.enum.d.ts.map +1 -1
  3. package/dist/approval/approval.enum.js +20 -26
  4. package/dist/approval/approval.event.d.ts +108 -114
  5. package/dist/approval/approval.event.d.ts.map +1 -1
  6. package/dist/approval/approval.event.js +103 -210
  7. package/dist/approval/approval.handler.d.ts +17 -18
  8. package/dist/approval/approval.handler.d.ts.map +1 -1
  9. package/dist/approval/approval.operations.d.ts +429 -435
  10. package/dist/approval/approval.operations.d.ts.map +1 -1
  11. package/dist/approval/approval.operations.js +364 -339
  12. package/dist/approval/approval.schema.d.ts +86 -91
  13. package/dist/approval/approval.schema.d.ts.map +1 -1
  14. package/dist/approval/approval.schema.js +71 -107
  15. package/dist/approval/index.d.ts +8 -5
  16. package/dist/approval/index.d.ts.map +1 -0
  17. package/dist/approval/index.js +484 -5
  18. package/dist/browser/approval/approval.enum.js +22 -0
  19. package/dist/browser/approval/approval.event.js +112 -0
  20. package/dist/browser/approval/approval.operations.js +369 -0
  21. package/dist/browser/approval/approval.schema.js +73 -0
  22. package/dist/browser/approval/index.js +484 -0
  23. package/dist/browser/docs/index.js +103 -0
  24. package/dist/browser/docs/workflow-system.docblock.js +103 -0
  25. package/dist/browser/entities/approval.js +119 -0
  26. package/dist/browser/entities/index.js +508 -0
  27. package/dist/browser/entities/instance.js +161 -0
  28. package/dist/browser/entities/step.js +124 -0
  29. package/dist/browser/entities/workflow.js +82 -0
  30. package/dist/browser/example.js +42 -0
  31. package/dist/browser/handlers/index.js +253 -0
  32. package/dist/browser/handlers/workflow.handlers.js +253 -0
  33. package/dist/browser/index.js +3120 -0
  34. package/dist/browser/instance/index.js +677 -0
  35. package/dist/browser/instance/instance.enum.js +15 -0
  36. package/dist/browser/instance/instance.event.js +164 -0
  37. package/dist/browser/instance/instance.handler.js +356 -0
  38. package/dist/browser/instance/instance.operations.js +9 -0
  39. package/dist/browser/instance/instance.schema.js +101 -0
  40. package/dist/browser/presentations/index.js +109 -0
  41. package/dist/browser/seeders/index.js +3 -0
  42. package/dist/browser/shared/index.js +3 -0
  43. package/dist/browser/shared/mock-data.js +11 -0
  44. package/dist/browser/shared/types.js +0 -0
  45. package/dist/browser/state-machine/index.js +6 -0
  46. package/dist/browser/tests/operations.test-spec.js +6 -0
  47. package/dist/browser/ui/WorkflowDashboard.js +3 -0
  48. package/dist/browser/ui/hooks/index.js +50 -0
  49. package/dist/browser/ui/hooks/useWorkflowList.js +50 -0
  50. package/dist/browser/ui/index.js +54 -0
  51. package/dist/browser/ui/renderers/index.js +227 -0
  52. package/dist/browser/ui/renderers/workflow.markdown.js +227 -0
  53. package/dist/browser/workflow/index.js +21 -0
  54. package/dist/browser/workflow/workflow.enum.js +36 -0
  55. package/dist/browser/workflow/workflow.event.js +6 -0
  56. package/dist/browser/workflow/workflow.handler.js +5 -0
  57. package/dist/browser/workflow/workflow.operations.js +8 -0
  58. package/dist/browser/workflow/workflow.schema.js +151 -0
  59. package/dist/browser/workflow-system.capability.js +5 -0
  60. package/dist/browser/workflow-system.feature.js +3 -0
  61. package/dist/docs/index.d.ts +2 -1
  62. package/dist/docs/index.d.ts.map +1 -0
  63. package/dist/docs/index.js +104 -1
  64. package/dist/docs/workflow-system.docblock.d.ts +2 -1
  65. package/dist/docs/workflow-system.docblock.d.ts.map +1 -0
  66. package/dist/docs/workflow-system.docblock.js +45 -56
  67. package/dist/entities/approval.d.ts +35 -40
  68. package/dist/entities/approval.d.ts.map +1 -1
  69. package/dist/entities/approval.js +116 -124
  70. package/dist/entities/index.d.ts +132 -137
  71. package/dist/entities/index.d.ts.map +1 -1
  72. package/dist/entities/index.js +506 -29
  73. package/dist/entities/instance.d.ts +46 -51
  74. package/dist/entities/instance.d.ts.map +1 -1
  75. package/dist/entities/instance.js +158 -164
  76. package/dist/entities/step.d.ts +31 -36
  77. package/dist/entities/step.d.ts.map +1 -1
  78. package/dist/entities/step.js +122 -132
  79. package/dist/entities/workflow.d.ts +22 -27
  80. package/dist/entities/workflow.d.ts.map +1 -1
  81. package/dist/entities/workflow.js +80 -99
  82. package/dist/example.d.ts +2 -6
  83. package/dist/example.d.ts.map +1 -1
  84. package/dist/example.js +41 -55
  85. package/dist/handlers/index.d.ts +2 -2
  86. package/dist/handlers/index.d.ts.map +1 -0
  87. package/dist/handlers/index.js +254 -3
  88. package/dist/handlers/workflow.handlers.d.ts +107 -106
  89. package/dist/handlers/workflow.handlers.d.ts.map +1 -1
  90. package/dist/handlers/workflow.handlers.js +237 -246
  91. package/dist/index.d.ts +15 -26
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +3121 -26
  94. package/dist/instance/index.d.ts +8 -5
  95. package/dist/instance/index.d.ts.map +1 -0
  96. package/dist/instance/index.js +677 -5
  97. package/dist/instance/instance.enum.d.ts +1 -6
  98. package/dist/instance/instance.enum.d.ts.map +1 -1
  99. package/dist/instance/instance.enum.js +14 -18
  100. package/dist/instance/instance.event.d.ts +313 -319
  101. package/dist/instance/instance.event.d.ts.map +1 -1
  102. package/dist/instance/instance.event.js +151 -279
  103. package/dist/instance/instance.handler.d.ts +21 -22
  104. package/dist/instance/instance.handler.d.ts.map +1 -1
  105. package/dist/instance/instance.handler.js +352 -89
  106. package/dist/instance/instance.operations.d.ts +819 -825
  107. package/dist/instance/instance.operations.d.ts.map +1 -1
  108. package/dist/instance/instance.operations.js +10 -464
  109. package/dist/instance/instance.schema.d.ts +196 -201
  110. package/dist/instance/instance.schema.d.ts.map +1 -1
  111. package/dist/instance/instance.schema.js +97 -167
  112. package/dist/presentations/index.d.ts +23 -28
  113. package/dist/presentations/index.d.ts.map +1 -1
  114. package/dist/presentations/index.js +104 -334
  115. package/dist/seeders/index.d.ts +4 -8
  116. package/dist/seeders/index.d.ts.map +1 -1
  117. package/dist/seeders/index.js +4 -19
  118. package/dist/shared/index.d.ts +6 -3
  119. package/dist/shared/index.d.ts.map +1 -0
  120. package/dist/shared/index.js +4 -3
  121. package/dist/shared/mock-data.d.ts +16 -16
  122. package/dist/shared/mock-data.d.ts.map +1 -1
  123. package/dist/shared/mock-data.js +11 -11
  124. package/dist/shared/types.d.ts +69 -72
  125. package/dist/shared/types.d.ts.map +1 -1
  126. package/dist/shared/types.js +1 -0
  127. package/dist/state-machine/index.d.ts +92 -95
  128. package/dist/state-machine/index.d.ts.map +1 -1
  129. package/dist/state-machine/index.js +6 -157
  130. package/dist/tests/operations.test-spec.d.ts +4 -9
  131. package/dist/tests/operations.test-spec.d.ts.map +1 -1
  132. package/dist/tests/operations.test-spec.js +7 -123
  133. package/dist/ui/WorkflowDashboard.d.ts +1 -6
  134. package/dist/ui/WorkflowDashboard.d.ts.map +1 -1
  135. package/dist/ui/WorkflowDashboard.js +3 -222
  136. package/dist/ui/hooks/index.d.ts +2 -2
  137. package/dist/ui/hooks/index.d.ts.map +1 -0
  138. package/dist/ui/hooks/index.js +51 -5
  139. package/dist/ui/hooks/useWorkflowList.d.ts +15 -19
  140. package/dist/ui/hooks/useWorkflowList.d.ts.map +1 -1
  141. package/dist/ui/hooks/useWorkflowList.js +47 -51
  142. package/dist/ui/index.d.ts +7 -6
  143. package/dist/ui/index.d.ts.map +1 -0
  144. package/dist/ui/index.js +55 -6
  145. package/dist/ui/renderers/index.d.ts +2 -2
  146. package/dist/ui/renderers/index.d.ts.map +1 -0
  147. package/dist/ui/renderers/index.js +227 -2
  148. package/dist/ui/renderers/workflow.markdown.d.ts +13 -14
  149. package/dist/ui/renderers/workflow.markdown.d.ts.map +1 -1
  150. package/dist/ui/renderers/workflow.markdown.js +223 -229
  151. package/dist/workflow/index.d.ts +8 -5
  152. package/dist/workflow/index.d.ts.map +1 -0
  153. package/dist/workflow/index.js +22 -6
  154. package/dist/workflow/workflow.enum.d.ts +4 -9
  155. package/dist/workflow/workflow.enum.d.ts.map +1 -1
  156. package/dist/workflow/workflow.enum.js +32 -42
  157. package/dist/workflow/workflow.event.d.ts +112 -118
  158. package/dist/workflow/workflow.event.d.ts.map +1 -1
  159. package/dist/workflow/workflow.event.js +7 -150
  160. package/dist/workflow/workflow.handler.d.ts +23 -24
  161. package/dist/workflow/workflow.handler.d.ts.map +1 -1
  162. package/dist/workflow/workflow.handler.js +6 -66
  163. package/dist/workflow/workflow.operations.d.ts +847 -853
  164. package/dist/workflow/workflow.operations.d.ts.map +1 -1
  165. package/dist/workflow/workflow.operations.js +9 -345
  166. package/dist/workflow/workflow.schema.d.ts +229 -234
  167. package/dist/workflow/workflow.schema.d.ts.map +1 -1
  168. package/dist/workflow/workflow.schema.js +146 -243
  169. package/dist/workflow-system.capability.d.ts +3 -8
  170. package/dist/workflow-system.capability.d.ts.map +1 -1
  171. package/dist/workflow-system.capability.js +6 -34
  172. package/dist/workflow-system.feature.d.ts +1 -6
  173. package/dist/workflow-system.feature.d.ts.map +1 -1
  174. package/dist/workflow-system.feature.js +4 -346
  175. package/package.json +415 -93
  176. package/dist/approval/approval.enum.js.map +0 -1
  177. package/dist/approval/approval.event.js.map +0 -1
  178. package/dist/approval/approval.handler.js +0 -72
  179. package/dist/approval/approval.handler.js.map +0 -1
  180. package/dist/approval/approval.operations.js.map +0 -1
  181. package/dist/approval/approval.schema.js.map +0 -1
  182. package/dist/docs/workflow-system.docblock.js.map +0 -1
  183. package/dist/entities/approval.js.map +0 -1
  184. package/dist/entities/index.js.map +0 -1
  185. package/dist/entities/instance.js.map +0 -1
  186. package/dist/entities/step.js.map +0 -1
  187. package/dist/entities/workflow.js.map +0 -1
  188. package/dist/example.js.map +0 -1
  189. package/dist/handlers/workflow.handlers.js.map +0 -1
  190. package/dist/instance/instance.enum.js.map +0 -1
  191. package/dist/instance/instance.event.js.map +0 -1
  192. package/dist/instance/instance.handler.js.map +0 -1
  193. package/dist/instance/instance.operations.js.map +0 -1
  194. package/dist/instance/instance.schema.js.map +0 -1
  195. package/dist/presentations/index.js.map +0 -1
  196. package/dist/seeders/index.js.map +0 -1
  197. package/dist/shared/mock-data.js.map +0 -1
  198. package/dist/state-machine/index.js.map +0 -1
  199. package/dist/tests/operations.test-spec.js.map +0 -1
  200. package/dist/ui/WorkflowDashboard.js.map +0 -1
  201. package/dist/ui/hooks/useWorkflowList.js.map +0 -1
  202. package/dist/ui/renderers/workflow.markdown.js.map +0 -1
  203. package/dist/workflow/workflow.enum.js.map +0 -1
  204. package/dist/workflow/workflow.event.js.map +0 -1
  205. package/dist/workflow/workflow.handler.js.map +0 -1
  206. package/dist/workflow/workflow.operations.js.map +0 -1
  207. package/dist/workflow/workflow.schema.js.map +0 -1
  208. package/dist/workflow-system.capability.js.map +0 -1
  209. package/dist/workflow-system.feature.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.markdown.js","names":[],"sources":["../../../src/ui/renderers/workflow.markdown.ts"],"sourcesContent":["/**\n * Markdown renderers for Workflow System presentations\n */\nimport type { PresentationRenderer } from '@contractspec/lib.contracts';\n\n// Mock data for workflow rendering\nconst mockWorkflowDefinitions = [\n {\n id: 'wf-1',\n name: 'Purchase Approval',\n type: 'APPROVAL',\n steps: [\n {\n id: 's1',\n name: 'Manager Review',\n order: 1,\n requiredRoles: ['manager'],\n },\n {\n id: 's2',\n name: 'Finance Review',\n order: 2,\n requiredRoles: ['finance'],\n },\n { id: 's3', name: 'Final Approval', order: 3, requiredRoles: ['admin'] },\n ],\n status: 'ACTIVE',\n },\n {\n id: 'wf-2',\n name: 'Leave Request',\n type: 'APPROVAL',\n steps: [\n {\n id: 's1',\n name: 'Supervisor Approval',\n order: 1,\n requiredRoles: ['supervisor'],\n },\n { id: 's2', name: 'HR Review', order: 2, requiredRoles: ['hr'] },\n ],\n status: 'ACTIVE',\n },\n {\n id: 'wf-3',\n name: 'Document Review',\n type: 'SEQUENTIAL',\n steps: [\n { id: 's1', name: 'Author Review', order: 1, requiredRoles: ['author'] },\n { id: 's2', name: 'Peer Review', order: 2, requiredRoles: ['reviewer'] },\n { id: 's3', name: 'Publish', order: 3, requiredRoles: ['publisher'] },\n ],\n status: 'DRAFT',\n },\n];\n\nconst mockWorkflowInstances = [\n {\n id: 'inst-1',\n definitionId: 'wf-1',\n definitionName: 'Purchase Approval',\n status: 'IN_PROGRESS',\n currentStepId: 's2',\n startedAt: '2024-01-15T10:00:00Z',\n requestedBy: 'John Doe',\n },\n {\n id: 'inst-2',\n definitionId: 'wf-1',\n definitionName: 'Purchase Approval',\n status: 'COMPLETED',\n currentStepId: null,\n startedAt: '2024-01-10T09:00:00Z',\n completedAt: '2024-01-12T14:00:00Z',\n requestedBy: 'Jane Smith',\n },\n {\n id: 'inst-3',\n definitionId: 'wf-2',\n definitionName: 'Leave Request',\n status: 'PENDING',\n currentStepId: 's1',\n startedAt: '2024-01-16T08:00:00Z',\n requestedBy: 'Bob Wilson',\n },\n];\n\n/**\n * Markdown renderer for Workflow Dashboard\n */\nexport const workflowDashboardMarkdownRenderer: PresentationRenderer<{\n mimeType: string;\n body: string;\n}> = {\n target: 'markdown',\n render: async (desc) => {\n if (\n desc.source.type !== 'component' ||\n desc.source.componentKey !== 'WorkflowDashboard'\n ) {\n throw new Error(\n 'workflowDashboardMarkdownRenderer: not WorkflowDashboard'\n );\n }\n\n const definitions = mockWorkflowDefinitions;\n const instances = mockWorkflowInstances;\n\n // Calculate stats\n const activeDefinitions = definitions.filter((d) => d.status === 'ACTIVE');\n const pendingInstances = instances.filter((i) => i.status === 'PENDING');\n const inProgressInstances = instances.filter(\n (i) => i.status === 'IN_PROGRESS'\n );\n const completedInstances = instances.filter(\n (i) => i.status === 'COMPLETED'\n );\n\n const lines: string[] = [\n '# Workflow Dashboard',\n '',\n '> Workflow and approval management overview',\n '',\n '## Summary',\n '',\n '| Metric | Value |',\n '|--------|-------|',\n `| Active Workflows | ${activeDefinitions.length} |`,\n `| Pending Approvals | ${pendingInstances.length} |`,\n `| In Progress | ${inProgressInstances.length} |`,\n `| Completed | ${completedInstances.length} |`,\n '',\n '## Active Workflow Definitions',\n '',\n ];\n\n if (activeDefinitions.length === 0) {\n lines.push('_No active workflow definitions._');\n } else {\n lines.push('| Name | Type | Steps | Status |');\n lines.push('|------|------|-------|--------|');\n for (const def of activeDefinitions) {\n lines.push(\n `| ${def.name} | ${def.type} | ${def.steps.length} | ${def.status} |`\n );\n }\n }\n\n lines.push('');\n lines.push('## Recent Instances');\n lines.push('');\n\n if (instances.length === 0) {\n lines.push('_No workflow instances._');\n } else {\n lines.push('| Workflow | Requested By | Status | Started |');\n lines.push('|----------|--------------|--------|---------|');\n for (const inst of instances.slice(0, 10)) {\n const startedDate = new Date(inst.startedAt).toLocaleDateString();\n lines.push(\n `| ${inst.definitionName} | ${inst.requestedBy} | ${inst.status} | ${startedDate} |`\n );\n }\n }\n\n return {\n mimeType: 'text/markdown',\n body: lines.join('\\n'),\n };\n },\n};\n\n/**\n * Markdown renderer for Workflow Definition List\n */\nexport const workflowDefinitionListMarkdownRenderer: PresentationRenderer<{\n mimeType: string;\n body: string;\n}> = {\n target: 'markdown',\n render: async (desc) => {\n if (\n desc.source.type !== 'component' ||\n desc.source.componentKey !== 'WorkflowDefinitionList'\n ) {\n throw new Error(\n 'workflowDefinitionListMarkdownRenderer: not WorkflowDefinitionList'\n );\n }\n\n const definitions = mockWorkflowDefinitions;\n\n const lines: string[] = [\n '# Workflow Definitions',\n '',\n '> Configure automated approval and process workflows',\n '',\n ];\n\n for (const def of definitions) {\n lines.push(`## ${def.name}`);\n lines.push('');\n lines.push(`**Type:** ${def.type} | **Status:** ${def.status}`);\n lines.push('');\n lines.push('### Steps');\n lines.push('');\n\n for (const step of def.steps) {\n lines.push(\n `${step.order}. **${step.name}** - Roles: ${step.requiredRoles.join(', ')}`\n );\n }\n\n lines.push('');\n }\n\n return {\n mimeType: 'text/markdown',\n body: lines.join('\\n'),\n };\n },\n};\n\n/**\n * Markdown renderer for Workflow Instance Detail\n */\nexport const workflowInstanceDetailMarkdownRenderer: PresentationRenderer<{\n mimeType: string;\n body: string;\n}> = {\n target: 'markdown',\n render: async (desc) => {\n if (\n desc.source.type !== 'component' ||\n desc.source.componentKey !== 'WorkflowInstanceDetail'\n ) {\n throw new Error(\n 'workflowInstanceDetailMarkdownRenderer: not WorkflowInstanceDetail'\n );\n }\n\n const instance = mockWorkflowInstances[0];\n if (!instance) {\n return {\n mimeType: 'text/markdown',\n body: '# No Workflow Instances\\n\\nNo workflow instances available.',\n };\n }\n const definition = mockWorkflowDefinitions.find(\n (d) => d.id === instance.definitionId\n );\n\n const lines: string[] = [\n `# Workflow: ${instance.definitionName}`,\n '',\n `**Instance ID:** ${instance.id}`,\n `**Status:** ${instance.status}`,\n `**Requested By:** ${instance.requestedBy}`,\n `**Started:** ${new Date(instance.startedAt).toLocaleString()}`,\n '',\n '## Steps Progress',\n '',\n ];\n\n if (definition) {\n for (const step of definition.steps) {\n const isCurrent = step.id === instance.currentStepId;\n const isCompleted =\n definition.steps.indexOf(step) <\n definition.steps.findIndex((s) => s.id === instance.currentStepId);\n\n let status = '⬜ Pending';\n if (isCompleted) status = '✅ Completed';\n if (isCurrent) status = '🔄 In Progress';\n\n lines.push(`- ${status} **${step.name}**`);\n }\n }\n\n lines.push('');\n lines.push('## Actions');\n lines.push('');\n lines.push('- **Approve** - Move to next step');\n lines.push('- **Reject** - Reject and return');\n lines.push('- **Delegate** - Assign to another approver');\n\n return {\n mimeType: 'text/markdown',\n body: lines.join('\\n'),\n };\n },\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.enum.js","names":[],"sources":["../../src/workflow/workflow.enum.ts"],"sourcesContent":["import { defineEnum } from '@contractspec/lib.schema';\n\n/**\n * Workflow status enum.\n */\nexport const WorkflowStatusEnum = defineEnum('WorkflowStatus', [\n 'DRAFT',\n 'ACTIVE',\n 'DEPRECATED',\n 'ARCHIVED',\n]);\n\n/**\n * Trigger type enum.\n */\nexport const TriggerTypeEnum = defineEnum('WorkflowTriggerType', [\n 'MANUAL',\n 'EVENT',\n 'SCHEDULED',\n 'API',\n]);\n\n/**\n * Step type enum.\n */\nexport const StepTypeEnum = defineEnum('StepType', [\n 'START',\n 'APPROVAL',\n 'TASK',\n 'CONDITION',\n 'PARALLEL',\n 'WAIT',\n 'ACTION',\n 'END',\n]);\n\n/**\n * Approval mode enum.\n */\nexport const ApprovalModeEnum = defineEnum('ApprovalMode', [\n 'ANY',\n 'ALL',\n 'MAJORITY',\n 'SEQUENTIAL',\n]);\n"],"mappings":";;;;;;AAKA,MAAa,qBAAqB,WAAW,kBAAkB;CAC7D;CACA;CACA;CACA;CACD,CAAC;;;;AAKF,MAAa,kBAAkB,WAAW,uBAAuB;CAC/D;CACA;CACA;CACA;CACD,CAAC;;;;AAKF,MAAa,eAAe,WAAW,YAAY;CACjD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;;;;AAKF,MAAa,mBAAmB,WAAW,gBAAgB;CACzD;CACA;CACA;CACA;CACD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.event.js","names":[],"sources":["../../src/workflow/workflow.event.ts"],"sourcesContent":["import { defineEvent, defineSchemaModel } from '@contractspec/lib.contracts';\nimport { ScalarTypeEnum } from '@contractspec/lib.schema';\n\n/**\n * Payload for workflow definition events.\n */\nconst WorkflowDefinitionPayload = defineSchemaModel({\n name: 'WorkflowDefinitionEventPayload',\n description: 'Payload for workflow definition events',\n fields: {\n workflowId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n version: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when a step is added.\n */\nconst StepAddedPayload = defineSchemaModel({\n name: 'StepAddedEventPayload',\n description: 'Payload when a step is added',\n fields: {\n stepId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n workflowId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n stepKey: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n stepType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n position: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * WorkflowCreatedEvent - A new workflow definition has been created.\n */\nexport const WorkflowCreatedEvent = defineEvent({\n meta: {\n key: 'workflow.definition.created',\n version: '1.0.0',\n description: 'A new workflow definition has been created.',\n stability: 'stable',\n owners: ['@workflow-team'],\n tags: ['workflow', 'definition', 'created'],\n },\n payload: WorkflowDefinitionPayload,\n});\n\n/**\n * WorkflowUpdatedEvent - A workflow definition has been updated.\n */\nexport const WorkflowUpdatedEvent = defineEvent({\n meta: {\n key: 'workflow.definition.updated',\n version: '1.0.0',\n description: 'A workflow definition has been updated.',\n stability: 'stable',\n owners: ['@workflow-team'],\n tags: ['workflow', 'definition', 'updated'],\n },\n payload: WorkflowDefinitionPayload,\n});\n\n/**\n * WorkflowPublishedEvent - A workflow definition has been published.\n */\nexport const WorkflowPublishedEvent = defineEvent({\n meta: {\n key: 'workflow.definition.published',\n version: '1.0.0',\n description: 'A workflow definition has been published and is now active.',\n stability: 'stable',\n owners: ['@workflow-team'],\n tags: ['workflow', 'definition', 'published'],\n },\n payload: WorkflowDefinitionPayload,\n});\n\n/**\n * StepAddedEvent - A step has been added to a workflow definition.\n */\nexport const StepAddedEvent = defineEvent({\n meta: {\n key: 'workflow.step.added',\n version: '1.0.0',\n description: 'A step has been added to a workflow definition.',\n stability: 'stable',\n owners: ['@workflow-team'],\n tags: ['workflow', 'step', 'added'],\n },\n payload: StepAddedPayload,\n});\n"],"mappings":";;;;;;;AAMA,MAAM,4BAA4B,kBAAkB;CAClD,MAAM;CACN,aAAa;CACb,QAAQ;EACN,YAAY;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE,KAAK;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAClE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAM,mBAAmB,kBAAkB;CACzC,MAAM;CACN,aAAa;CACb,QAAQ;EACN,QAAQ;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACrE,YAAY;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,UAAU;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACvE,UAAU;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAO;EACpE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAc;GAAU;EAC5C;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAc;GAAU;EAC5C;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,yBAAyB,YAAY;CAChD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAc;GAAY;EAC9C;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,iBAAiB,YAAY;CACxC,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAY;GAAQ;GAAQ;EACpC;CACD,SAAS;CACV,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.handler.js","names":[],"sources":["../../src/workflow/workflow.handler.ts"],"sourcesContent":["/**\n * Workflow definition handlers.\n */\n\nimport type {\n WorkflowDefinitionRecord,\n WorkflowStepRecord,\n HandlerContext,\n} from '../shared/types';\nimport { mockDataStore } from '../shared/mock-data';\n\nexport async function handleCreateWorkflow(\n input: {\n name: string;\n key: string;\n description?: string;\n triggerType?: 'MANUAL' | 'EVENT' | 'SCHEDULED' | 'API';\n featureFlagKey?: string;\n },\n context: HandlerContext\n): Promise<WorkflowDefinitionRecord> {\n const id = `wf_${Date.now()}`;\n const now = new Date();\n\n const workflow: WorkflowDefinitionRecord = {\n id,\n key: input.key,\n name: input.name,\n description: input.description,\n version: '1.0.0',\n status: 'DRAFT',\n triggerType: input.triggerType ?? 'MANUAL',\n featureFlagKey: input.featureFlagKey,\n organizationId: context.organizationId,\n createdBy: context.userId,\n createdAt: now,\n updatedAt: now,\n };\n\n mockDataStore.workflows.set(id, workflow);\n return workflow;\n}\n\nexport async function handleAddStep(\n input: {\n workflowId: string;\n key: string;\n name: string;\n description?: string;\n type:\n | 'START'\n | 'APPROVAL'\n | 'TASK'\n | 'CONDITION'\n | 'PARALLEL'\n | 'WAIT'\n | 'ACTION'\n | 'END';\n position?: number;\n transitions: Record<string, string>;\n approvalMode?: 'ANY' | 'ALL' | 'MAJORITY' | 'SEQUENTIAL';\n approverRoles?: string[];\n timeoutSeconds?: number;\n },\n _context: HandlerContext\n): Promise<WorkflowStepRecord> {\n const id = `step_${Date.now()}`;\n const now = new Date();\n\n // Calculate position\n const existingSteps = Array.from(mockDataStore.steps.values()).filter(\n (s) => s.workflowDefinitionId === input.workflowId\n );\n const position = input.position ?? existingSteps.length;\n\n const step: WorkflowStepRecord = {\n id,\n workflowDefinitionId: input.workflowId,\n key: input.key,\n name: input.name,\n description: input.description,\n type: input.type,\n position,\n transitions: input.transitions,\n approvalMode: input.approvalMode,\n approverRoles: input.approverRoles ?? [],\n timeoutSeconds: input.timeoutSeconds,\n createdAt: now,\n updatedAt: now,\n };\n\n mockDataStore.steps.set(id, step);\n\n // Update workflow with initial step if this is the first step\n if (existingSteps.length === 0 || input.type === 'START') {\n const workflow = mockDataStore.workflows.get(input.workflowId);\n if (workflow) {\n workflow.initialStepId = id;\n workflow.updatedAt = now;\n }\n }\n\n return step;\n}\n\nexport async function handlePublishWorkflow(\n input: { workflowId: string },\n _context: HandlerContext\n): Promise<WorkflowDefinitionRecord> {\n const workflow = mockDataStore.workflows.get(input.workflowId);\n if (!workflow) {\n throw new Error(`Workflow ${input.workflowId} not found`);\n }\n\n const now = new Date();\n workflow.status = 'ACTIVE';\n workflow.publishedAt = now;\n workflow.updatedAt = now;\n\n return workflow;\n}\n"],"mappings":";;;AAWA,eAAsB,qBACpB,OAOA,SACmC;CACnC,MAAM,KAAK,MAAM,KAAK,KAAK;CAC3B,MAAM,sBAAM,IAAI,MAAM;CAEtB,MAAM,WAAqC;EACzC;EACA,KAAK,MAAM;EACX,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,SAAS;EACT,QAAQ;EACR,aAAa,MAAM,eAAe;EAClC,gBAAgB,MAAM;EACtB,gBAAgB,QAAQ;EACxB,WAAW,QAAQ;EACnB,WAAW;EACX,WAAW;EACZ;AAED,eAAc,UAAU,IAAI,IAAI,SAAS;AACzC,QAAO;;AAGT,eAAsB,cACpB,OAoBA,UAC6B;CAC7B,MAAM,KAAK,QAAQ,KAAK,KAAK;CAC7B,MAAM,sBAAM,IAAI,MAAM;CAGtB,MAAM,gBAAgB,MAAM,KAAK,cAAc,MAAM,QAAQ,CAAC,CAAC,QAC5D,MAAM,EAAE,yBAAyB,MAAM,WACzC;CACD,MAAM,WAAW,MAAM,YAAY,cAAc;CAEjD,MAAM,OAA2B;EAC/B;EACA,sBAAsB,MAAM;EAC5B,KAAK,MAAM;EACX,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,MAAM,MAAM;EACZ;EACA,aAAa,MAAM;EACnB,cAAc,MAAM;EACpB,eAAe,MAAM,iBAAiB,EAAE;EACxC,gBAAgB,MAAM;EACtB,WAAW;EACX,WAAW;EACZ;AAED,eAAc,MAAM,IAAI,IAAI,KAAK;AAGjC,KAAI,cAAc,WAAW,KAAK,MAAM,SAAS,SAAS;EACxD,MAAM,WAAW,cAAc,UAAU,IAAI,MAAM,WAAW;AAC9D,MAAI,UAAU;AACZ,YAAS,gBAAgB;AACzB,YAAS,YAAY;;;AAIzB,QAAO;;AAGT,eAAsB,sBACpB,OACA,UACmC;CACnC,MAAM,WAAW,cAAc,UAAU,IAAI,MAAM,WAAW;AAC9D,KAAI,CAAC,SACH,OAAM,IAAI,MAAM,YAAY,MAAM,WAAW,YAAY;CAG3D,MAAM,sBAAM,IAAI,MAAM;AACtB,UAAS,SAAS;AAClB,UAAS,cAAc;AACvB,UAAS,YAAY;AAErB,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.operations.js","names":[],"sources":["../../src/workflow/workflow.operations.ts"],"sourcesContent":["import {\n defineCommand,\n defineQuery,\n} from '@contractspec/lib.contracts/operations';\nimport { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\nimport { WorkflowStatusEnum } from './workflow.enum';\nimport {\n AddStepInputModel,\n CreateWorkflowInputModel,\n UpdateWorkflowInputModel,\n WorkflowDefinitionModel,\n WorkflowStepModel,\n} from './workflow.schema';\n\nconst OWNERS = ['@example.workflow-system'] as const;\n\n/**\n * Create a new workflow definition.\n */\nexport const CreateWorkflowContract = defineCommand({\n meta: {\n key: 'workflow.definition.create',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['workflow', 'definition', 'create'],\n description: 'Create a new workflow definition.',\n goal: 'Allow users to define new workflow blueprints.',\n context: 'Workflow designer, admin panel.',\n },\n io: {\n input: CreateWorkflowInputModel,\n output: WorkflowDefinitionModel,\n },\n policy: { auth: 'user' },\n sideEffects: {\n emits: [\n {\n key: 'workflow.definition.created',\n version: '1.0.0',\n when: 'Workflow is created',\n payload: WorkflowDefinitionModel,\n },\n ],\n audit: ['workflow.definition.created'],\n },\n acceptance: {\n scenarios: [\n {\n key: 'create-workflow-happy-path',\n given: ['User is admin'],\n when: ['User creates new workflow definition'],\n then: [\n 'Definition is created',\n 'WorkflowDefinitionCreated event is emitted',\n ],\n },\n ],\n examples: [\n {\n key: 'create-onboarding',\n input: {\n key: 'onboarding-v1',\n name: 'Employee Onboarding',\n version: '1.0.0',\n },\n output: { id: 'def-123', status: 'draft' },\n },\n ],\n },\n});\n\n/**\n * Update an existing workflow definition.\n */\nexport const UpdateWorkflowContract = defineCommand({\n meta: {\n key: 'workflow.definition.update',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['workflow', 'definition', 'update'],\n description: 'Update an existing workflow definition.',\n goal: 'Allow users to modify workflow blueprints.',\n context: 'Workflow designer.',\n },\n io: {\n input: UpdateWorkflowInputModel,\n output: WorkflowDefinitionModel,\n },\n policy: { auth: 'user' },\n sideEffects: {\n emits: [\n {\n key: 'workflow.definition.updated',\n version: '1.0.0',\n when: 'Workflow is updated',\n payload: WorkflowDefinitionModel,\n },\n ],\n audit: ['workflow.definition.updated'],\n },\n acceptance: {\n scenarios: [\n {\n key: 'update-workflow-happy-path',\n given: ['Workflow definition exists'],\n when: ['User updates definition'],\n then: [\n 'Definition is updated',\n 'WorkflowDefinitionUpdated event is emitted',\n ],\n },\n ],\n examples: [\n {\n key: 'update-name',\n input: { workflowId: 'def-123', name: 'New Employee Onboarding' },\n output: { id: 'def-123', name: 'New Employee Onboarding' },\n },\n ],\n },\n});\n\n/**\n * Add a step to a workflow definition.\n */\nexport const AddStepContract = defineCommand({\n meta: {\n key: 'workflow.step.add',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['workflow', 'step', 'add'],\n description: 'Add a step to a workflow definition.',\n goal: 'Build workflow structure step by step.',\n context: 'Workflow designer.',\n },\n io: {\n input: AddStepInputModel,\n output: WorkflowStepModel,\n },\n policy: { auth: 'user' },\n sideEffects: {\n emits: [\n {\n key: 'workflow.step.added',\n version: '1.0.0',\n when: 'Step is added',\n payload: WorkflowStepModel,\n },\n ],\n audit: ['workflow.step.added'],\n },\n acceptance: {\n scenarios: [\n {\n key: 'add-step-happy-path',\n given: ['Workflow definition exists'],\n when: ['User adds a step'],\n then: ['Step is added', 'StepAdded event is emitted'],\n },\n ],\n examples: [\n {\n key: 'add-approval-step',\n input: {\n workflowId: 'def-123',\n stepKey: 'approve-contract',\n type: 'approval',\n },\n output: { id: 'step-456', key: 'approve-contract' },\n },\n ],\n },\n});\n\n/**\n * Publish a workflow definition (make it active).\n */\nexport const PublishWorkflowContract = defineCommand({\n meta: {\n key: 'workflow.definition.publish',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['workflow', 'definition', 'publish'],\n description: 'Publish a workflow definition to make it available for use.',\n goal: 'Activate workflow for production use.',\n context: 'Workflow designer, deployment.',\n },\n io: {\n input: defineSchemaModel({\n name: 'PublishWorkflowInput',\n fields: {\n workflowId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n },\n }),\n output: WorkflowDefinitionModel,\n },\n policy: { auth: 'user' },\n sideEffects: {\n emits: [\n {\n key: 'workflow.definition.published',\n version: '1.0.0',\n when: 'Workflow is published',\n payload: WorkflowDefinitionModel,\n },\n ],\n audit: ['workflow.definition.published'],\n },\n acceptance: {\n scenarios: [\n {\n key: 'publish-workflow-happy-path',\n given: ['Workflow definition is valid'],\n when: ['User publishes workflow'],\n then: ['Workflow becomes active', 'WorkflowPublished event is emitted'],\n },\n ],\n examples: [\n {\n key: 'publish-onboarding',\n input: { workflowId: 'def-123' },\n output: { id: 'def-123', status: 'published' },\n },\n ],\n },\n});\n\n/**\n * List workflow definitions.\n */\nexport const ListWorkflowsContract = defineQuery({\n meta: {\n key: 'workflow.definition.list',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['workflow', 'definition', 'list'],\n description: 'List workflow definitions with filtering.',\n goal: 'Browse and search available workflows.',\n context: 'Workflow list, search.',\n },\n io: {\n input: defineSchemaModel({\n name: 'ListWorkflowsInput',\n fields: {\n status: { type: WorkflowStatusEnum, isOptional: true },\n search: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n limit: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n defaultValue: 20,\n },\n offset: {\n type: ScalarTypeEnum.Int_unsecure(),\n isOptional: true,\n defaultValue: 0,\n },\n },\n }),\n output: defineSchemaModel({\n name: 'ListWorkflowsOutput',\n fields: {\n workflows: {\n type: WorkflowDefinitionModel,\n isArray: true,\n isOptional: false,\n },\n total: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n },\n }),\n },\n policy: { auth: 'user' },\n acceptance: {\n scenarios: [\n {\n key: 'list-workflows-happy-path',\n given: ['Workflow definitions exist'],\n when: ['User lists workflows'],\n then: ['List of workflows is returned'],\n },\n ],\n examples: [\n {\n key: 'list-all',\n input: { limit: 10 },\n output: { workflows: [], total: 5 },\n },\n ],\n },\n});\n\n/**\n * Get a single workflow definition with steps.\n */\nexport const GetWorkflowContract = defineQuery({\n meta: {\n key: 'workflow.definition.get',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['workflow', 'definition', 'get'],\n description: 'Get a workflow definition with all steps.',\n goal: 'View workflow details.',\n context: 'Workflow designer, detail view.',\n },\n io: {\n input: defineSchemaModel({\n name: 'GetWorkflowInput',\n fields: {\n workflowId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n },\n }),\n output: WorkflowDefinitionModel,\n },\n policy: { auth: 'user' },\n acceptance: {\n scenarios: [\n {\n key: 'get-workflow-happy-path',\n given: ['Workflow definition exists'],\n when: ['User requests workflow details'],\n then: ['Workflow details are returned'],\n },\n ],\n examples: [\n {\n key: 'get-details',\n input: { workflowId: 'def-123' },\n output: { id: 'def-123', name: 'Employee Onboarding' },\n },\n ],\n },\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.schema.js","names":[],"sources":["../../src/workflow/workflow.schema.ts"],"sourcesContent":["import { defineSchemaModel, ScalarTypeEnum } from '@contractspec/lib.schema';\nimport {\n WorkflowStatusEnum,\n TriggerTypeEnum,\n StepTypeEnum,\n ApprovalModeEnum,\n} from './workflow.enum';\n\n/**\n * A step in a workflow definition.\n */\nexport const WorkflowStepModel = defineSchemaModel({\n name: 'WorkflowStepModel',\n description: 'A step in a workflow definition',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n type: { type: StepTypeEnum, isOptional: false },\n position: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },\n transitions: { type: ScalarTypeEnum.JSON(), isOptional: false },\n approvalMode: { type: ApprovalModeEnum, isOptional: true },\n approverRoles: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n },\n});\n\n/**\n * A workflow definition.\n */\nexport const WorkflowDefinitionModel = defineSchemaModel({\n name: 'WorkflowDefinitionModel',\n description: 'A workflow definition',\n fields: {\n id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n key: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n version: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n status: { type: WorkflowStatusEnum, isOptional: false },\n triggerType: { type: TriggerTypeEnum, isOptional: false },\n initialStepId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n featureFlagKey: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n steps: { type: WorkflowStepModel, isArray: true, isOptional: true },\n },\n});\n\n/**\n * Input for creating a workflow definition.\n */\nexport const CreateWorkflowInputModel = defineSchemaModel({\n name: 'CreateWorkflowInput',\n description: 'Input for creating a workflow definition',\n fields: {\n name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n key: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n triggerType: { type: TriggerTypeEnum, isOptional: true },\n triggerConfig: { type: ScalarTypeEnum.JSON(), isOptional: true },\n featureFlagKey: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n settings: { type: ScalarTypeEnum.JSON(), isOptional: true },\n },\n});\n\n/**\n * Input for updating a workflow definition.\n */\nexport const UpdateWorkflowInputModel = defineSchemaModel({\n name: 'UpdateWorkflowInput',\n description: 'Input for updating a workflow definition',\n fields: {\n workflowId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n triggerType: { type: TriggerTypeEnum, isOptional: true },\n triggerConfig: { type: ScalarTypeEnum.JSON(), isOptional: true },\n featureFlagKey: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: true,\n },\n settings: { type: ScalarTypeEnum.JSON(), isOptional: true },\n },\n});\n\n/**\n * Input for adding a step to a workflow.\n */\nexport const AddStepInputModel = defineSchemaModel({\n name: 'AddStepInput',\n description: 'Input for adding a step to a workflow',\n fields: {\n workflowId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n key: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n name: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },\n description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n type: { type: StepTypeEnum, isOptional: false },\n position: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n transitions: { type: ScalarTypeEnum.JSON(), isOptional: false },\n approvalMode: { type: ApprovalModeEnum, isOptional: true },\n approverRoles: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n approverUserIds: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: true,\n },\n timeoutSeconds: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n slaSeconds: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },\n },\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-system.capability.js","names":[],"sources":["../src/workflow-system.capability.ts"],"sourcesContent":["import { defineCapability, StabilityEnum } from '@contractspec/lib.contracts';\n\nexport const WorkflowCapability = defineCapability({\n meta: {\n key: 'workflow',\n version: '1.0.0',\n kind: 'api',\n stability: StabilityEnum.Experimental,\n description: 'Workflow definitions and orchestration',\n owners: ['platform.core'],\n tags: ['workflow', 'automation'],\n },\n});\n\nexport const ApprovalCapability = defineCapability({\n meta: {\n key: 'approval',\n version: '1.0.0',\n kind: 'ui',\n stability: StabilityEnum.Experimental,\n description: 'Approval workflows and user decisions',\n owners: ['platform.core'],\n tags: ['approval', 'workflow'],\n },\n});\n\nexport const StateMachineCapability = defineCapability({\n meta: {\n key: 'state-machine',\n version: '1.0.0',\n kind: 'api',\n stability: StabilityEnum.Experimental,\n description: 'State machine orchestration and transitions',\n owners: ['platform.core'],\n tags: ['state-machine', 'workflow'],\n },\n});\n"],"mappings":";;;AAEA,MAAa,qBAAqB,iBAAiB,EACjD,MAAM;CACJ,KAAK;CACL,SAAS;CACT,MAAM;CACN,WAAW,cAAc;CACzB,aAAa;CACb,QAAQ,CAAC,gBAAgB;CACzB,MAAM,CAAC,YAAY,aAAa;CACjC,EACF,CAAC;AAEF,MAAa,qBAAqB,iBAAiB,EACjD,MAAM;CACJ,KAAK;CACL,SAAS;CACT,MAAM;CACN,WAAW,cAAc;CACzB,aAAa;CACb,QAAQ,CAAC,gBAAgB;CACzB,MAAM,CAAC,YAAY,WAAW;CAC/B,EACF,CAAC;AAEF,MAAa,yBAAyB,iBAAiB,EACrD,MAAM;CACJ,KAAK;CACL,SAAS;CACT,MAAM;CACN,WAAW,cAAc;CACzB,aAAa;CACb,QAAQ,CAAC,gBAAgB;CACzB,MAAM,CAAC,iBAAiB,WAAW;CACpC,EACF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow-system.feature.js","names":[],"sources":["../src/workflow-system.feature.ts"],"sourcesContent":["/**\n * Workflow System Feature Module Specification\n *\n * Defines the feature module for workflow and approval capabilities.\n */\nimport { defineFeature } from '@contractspec/lib.contracts';\n\n/**\n * Workflow System feature module that bundles workflow definition,\n * instance management, and approval handling into an installable feature.\n */\nexport const WorkflowSystemFeature = defineFeature({\n meta: {\n key: 'workflow-system',\n title: 'Workflow & Approval System',\n description:\n 'State machine-based workflow engine with role-based approvals, delegation, and escalation',\n domain: 'workflow',\n owners: ['@workflow-team'],\n tags: ['workflow', 'approval', 'state-machine', 'automation'],\n stability: 'experimental',\n version: '1.0.0',\n },\n\n // All contract operations included in this feature\n operations: [\n // Workflow definition operations\n { key: 'workflow.definition.create', version: '1.0.0' },\n { key: 'workflow.definition.update', version: '1.0.0' },\n { key: 'workflow.step.add', version: '1.0.0' },\n { key: 'workflow.definition.publish', version: '1.0.0' },\n { key: 'workflow.definition.list', version: '1.0.0' },\n { key: 'workflow.definition.get', version: '1.0.0' },\n\n // Workflow instance operations\n { key: 'workflow.instance.start', version: '1.0.0' },\n { key: 'workflow.instance.transition', version: '1.0.0' },\n { key: 'workflow.instance.pause', version: '1.0.0' },\n { key: 'workflow.instance.resume', version: '1.0.0' },\n { key: 'workflow.instance.cancel', version: '1.0.0' },\n { key: 'workflow.instance.list', version: '1.0.0' },\n { key: 'workflow.instance.get', version: '1.0.0' },\n\n // Approval operations\n { key: 'workflow.approval.decide', version: '1.0.0' },\n { key: 'workflow.approval.delegate', version: '1.0.0' },\n { key: 'workflow.approval.comment.add', version: '1.0.0' },\n { key: 'workflow.approval.list.mine', version: '1.0.0' },\n { key: 'workflow.approval.get', version: '1.0.0' },\n ],\n\n // Events emitted by this feature\n events: [\n // Definition events\n { key: 'workflow.definition.created', version: '1.0.0' },\n { key: 'workflow.definition.updated', version: '1.0.0' },\n { key: 'workflow.definition.published', version: '1.0.0' },\n { key: 'workflow.step.added', version: '1.0.0' },\n\n // Instance events\n { key: 'workflow.instance.started', version: '1.0.0' },\n { key: 'workflow.step.entered', version: '1.0.0' },\n { key: 'workflow.step.exited', version: '1.0.0' },\n { key: 'workflow.instance.completed', version: '1.0.0' },\n { key: 'workflow.instance.cancelled', version: '1.0.0' },\n { key: 'workflow.instance.paused', version: '1.0.0' },\n { key: 'workflow.instance.resumed', version: '1.0.0' },\n { key: 'workflow.instance.failed', version: '1.0.0' },\n { key: 'workflow.instance.timedOut', version: '1.0.0' },\n\n // Approval events\n { key: 'workflow.approval.requested', version: '1.0.0' },\n { key: 'workflow.approval.decided', version: '1.0.0' },\n { key: 'workflow.approval.delegated', version: '1.0.0' },\n { key: 'workflow.approval.escalated', version: '1.0.0' },\n ],\n\n // Presentations associated with this feature\n presentations: [\n // Definition\n { key: 'workflow.designer', version: '1.0.0' },\n { key: 'workflow.definition.viewList', version: '1.0.0' },\n { key: 'workflow.definition.detail', version: '1.0.0' },\n\n // Instance\n { key: 'workflow.instance.viewList', version: '1.0.0' },\n { key: 'workflow.instance.detail', version: '1.0.0' },\n { key: 'workflow.instance.progress', version: '1.0.0' },\n\n // Approval\n { key: 'workflow.approval.inbox', version: '1.0.0' },\n { key: 'workflow.approval.detail', version: '1.0.0' },\n { key: 'workflow.approval.form', version: '1.0.0' },\n { key: 'workflow.approval.badge', version: '1.0.0' },\n\n // Dashboard\n { key: 'workflow.metrics', version: '1.0.0' },\n ],\n\n // Link operations to their primary presentations\n opToPresentation: [\n {\n op: { key: 'workflow.definition.list', version: '1.0.0' },\n pres: { key: 'workflow.definition.viewList', version: '1.0.0' },\n },\n {\n op: { key: 'workflow.instance.list', version: '1.0.0' },\n pres: { key: 'workflow.instance.viewList', version: '1.0.0' },\n },\n {\n op: { key: 'workflow.approval.list.mine', version: '1.0.0' },\n pres: { key: 'workflow.approval.inbox', version: '1.0.0' },\n },\n {\n op: { key: 'workflow.approval.decide', version: '1.0.0' },\n pres: { key: 'workflow.approval.form', version: '1.0.0' },\n },\n ],\n\n // Target requirements for multi-surface rendering\n presentationsTargets: [\n { key: 'workflow.designer', version: '1.0.0', targets: ['react'] },\n {\n key: 'workflow.definition.viewList',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.definition.detail',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.instance.viewList',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.instance.detail',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n { key: 'workflow.instance.progress', version: '1.0.0', targets: ['react'] },\n {\n key: 'workflow.approval.inbox',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.approval.detail',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.metrics',\n version: '1.0.0',\n targets: ['react', 'markdown'],\n },\n ],\n\n // Capability requirements\n capabilities: {\n requires: [\n { key: 'identity', version: '1.0.0' },\n { key: 'audit-trail', version: '1.0.0' },\n { key: 'notifications', version: '1.0.0' },\n { key: 'feature-flags', version: '1.0.0' },\n ],\n provides: [\n { key: 'workflow', version: '1.0.0' },\n { key: 'approval', version: '1.0.0' },\n { key: 'state-machine', version: '1.0.0' },\n ],\n },\n});\n"],"mappings":"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"}