@contractspec/example.workflow-system 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.
Files changed (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +124 -0
  3. package/dist/approval/approval.enum.d.ts +14 -0
  4. package/dist/approval/approval.enum.d.ts.map +1 -0
  5. package/dist/approval/approval.enum.js +29 -0
  6. package/dist/approval/approval.enum.js.map +1 -0
  7. package/dist/approval/approval.event.d.ts +131 -0
  8. package/dist/approval/approval.event.d.ts.map +1 -0
  9. package/dist/approval/approval.event.js +220 -0
  10. package/dist/approval/approval.event.js.map +1 -0
  11. package/dist/approval/approval.handler.d.ts +23 -0
  12. package/dist/approval/approval.handler.d.ts.map +1 -0
  13. package/dist/approval/approval.handler.js +72 -0
  14. package/dist/approval/approval.handler.js.map +1 -0
  15. package/dist/approval/approval.operations.d.ts +535 -0
  16. package/dist/approval/approval.operations.d.ts.map +1 -0
  17. package/dist/approval/approval.operations.js +345 -0
  18. package/dist/approval/approval.operations.js.map +1 -0
  19. package/dist/approval/approval.schema.d.ts +100 -0
  20. package/dist/approval/approval.schema.d.ts.map +1 -0
  21. package/dist/approval/approval.schema.js +110 -0
  22. package/dist/approval/approval.schema.js.map +1 -0
  23. package/dist/approval/index.d.ts +5 -0
  24. package/dist/approval/index.js +6 -0
  25. package/dist/docs/index.d.ts +1 -0
  26. package/dist/docs/index.js +1 -0
  27. package/dist/docs/workflow-system.docblock.d.ts +1 -0
  28. package/dist/docs/workflow-system.docblock.js +115 -0
  29. package/dist/docs/workflow-system.docblock.js.map +1 -0
  30. package/dist/entities/approval.d.ts +58 -0
  31. package/dist/entities/approval.d.ts.map +1 -0
  32. package/dist/entities/approval.js +128 -0
  33. package/dist/entities/approval.js.map +1 -0
  34. package/dist/entities/index.d.ts +139 -0
  35. package/dist/entities/index.d.ts.map +1 -0
  36. package/dist/entities/index.js +32 -0
  37. package/dist/entities/index.js.map +1 -0
  38. package/dist/entities/instance.d.ts +69 -0
  39. package/dist/entities/instance.d.ts.map +1 -0
  40. package/dist/entities/instance.js +168 -0
  41. package/dist/entities/instance.js.map +1 -0
  42. package/dist/entities/step.d.ts +50 -0
  43. package/dist/entities/step.d.ts.map +1 -0
  44. package/dist/entities/step.js +135 -0
  45. package/dist/entities/step.js.map +1 -0
  46. package/dist/entities/workflow.d.ts +41 -0
  47. package/dist/entities/workflow.d.ts.map +1 -0
  48. package/dist/entities/workflow.js +102 -0
  49. package/dist/entities/workflow.js.map +1 -0
  50. package/dist/example.d.ts +40 -0
  51. package/dist/example.d.ts.map +1 -0
  52. package/dist/example.js +51 -0
  53. package/dist/example.js.map +1 -0
  54. package/dist/index.d.ts +21 -0
  55. package/dist/index.js +21 -0
  56. package/dist/instance/index.d.ts +5 -0
  57. package/dist/instance/index.js +6 -0
  58. package/dist/instance/instance.enum.d.ts +10 -0
  59. package/dist/instance/instance.enum.d.ts.map +1 -0
  60. package/dist/instance/instance.enum.js +20 -0
  61. package/dist/instance/instance.enum.js.map +1 -0
  62. package/dist/instance/instance.event.d.ts +356 -0
  63. package/dist/instance/instance.event.d.ts.map +1 -0
  64. package/dist/instance/instance.event.js +293 -0
  65. package/dist/instance/instance.event.js.map +1 -0
  66. package/dist/instance/instance.handler.d.ts +27 -0
  67. package/dist/instance/instance.handler.d.ts.map +1 -0
  68. package/dist/instance/instance.handler.js +94 -0
  69. package/dist/instance/instance.handler.js.map +1 -0
  70. package/dist/instance/instance.operations.d.ts +1024 -0
  71. package/dist/instance/instance.operations.d.ts.map +1 -0
  72. package/dist/instance/instance.operations.js +464 -0
  73. package/dist/instance/instance.operations.js.map +1 -0
  74. package/dist/instance/instance.schema.d.ts +223 -0
  75. package/dist/instance/instance.schema.d.ts.map +1 -0
  76. package/dist/instance/instance.schema.js +172 -0
  77. package/dist/instance/instance.schema.js.map +1 -0
  78. package/dist/presentations/index.d.ts +64 -0
  79. package/dist/presentations/index.d.ts.map +1 -0
  80. package/dist/presentations/index.js +337 -0
  81. package/dist/presentations/index.js.map +1 -0
  82. package/dist/shared/index.d.ts +3 -0
  83. package/dist/shared/index.js +3 -0
  84. package/dist/shared/mock-data.d.ts +19 -0
  85. package/dist/shared/mock-data.d.ts.map +1 -0
  86. package/dist/shared/mock-data.js +12 -0
  87. package/dist/shared/mock-data.js.map +1 -0
  88. package/dist/shared/types.d.ts +81 -0
  89. package/dist/shared/types.d.ts.map +1 -0
  90. package/dist/shared/types.js +0 -0
  91. package/dist/state-machine/index.d.ts +148 -0
  92. package/dist/state-machine/index.d.ts.map +1 -0
  93. package/dist/state-machine/index.js +158 -0
  94. package/dist/state-machine/index.js.map +1 -0
  95. package/dist/workflow/index.d.ts +5 -0
  96. package/dist/workflow/index.js +6 -0
  97. package/dist/workflow/workflow.enum.d.ts +22 -0
  98. package/dist/workflow/workflow.enum.d.ts.map +1 -0
  99. package/dist/workflow/workflow.enum.js +47 -0
  100. package/dist/workflow/workflow.enum.js.map +1 -0
  101. package/dist/workflow/workflow.event.d.ts +135 -0
  102. package/dist/workflow/workflow.event.d.ts.map +1 -0
  103. package/dist/workflow/workflow.event.js +150 -0
  104. package/dist/workflow/workflow.event.js.map +1 -0
  105. package/dist/workflow/workflow.handler.d.ts +29 -0
  106. package/dist/workflow/workflow.handler.d.ts.map +1 -0
  107. package/dist/workflow/workflow.handler.js +66 -0
  108. package/dist/workflow/workflow.handler.js.map +1 -0
  109. package/dist/workflow/workflow.operations.d.ts +1011 -0
  110. package/dist/workflow/workflow.operations.d.ts.map +1 -0
  111. package/dist/workflow/workflow.operations.js +345 -0
  112. package/dist/workflow/workflow.operations.js.map +1 -0
  113. package/dist/workflow/workflow.schema.d.ts +265 -0
  114. package/dist/workflow/workflow.schema.d.ts.map +1 -0
  115. package/dist/workflow/workflow.schema.js +249 -0
  116. package/dist/workflow/workflow.schema.js.map +1 -0
  117. package/dist/workflow-system.feature.d.ts +12 -0
  118. package/dist/workflow-system.feature.d.ts.map +1 -0
  119. package/dist/workflow-system.feature.js +339 -0
  120. package/dist/workflow-system.feature.js.map +1 -0
  121. package/package.json +124 -0
@@ -0,0 +1,249 @@
1
+ import { ApprovalModeEnum, StepTypeEnum, TriggerTypeEnum, WorkflowStatusEnum } from "./workflow.enum.js";
2
+ import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
3
+
4
+ //#region src/workflow/workflow.schema.ts
5
+ /**
6
+ * A step in a workflow definition.
7
+ */
8
+ const WorkflowStepModel = defineSchemaModel({
9
+ name: "WorkflowStepModel",
10
+ description: "A step in a workflow definition",
11
+ fields: {
12
+ id: {
13
+ type: ScalarTypeEnum.String_unsecure(),
14
+ isOptional: false
15
+ },
16
+ key: {
17
+ type: ScalarTypeEnum.String_unsecure(),
18
+ isOptional: false
19
+ },
20
+ name: {
21
+ type: ScalarTypeEnum.String_unsecure(),
22
+ isOptional: false
23
+ },
24
+ description: {
25
+ type: ScalarTypeEnum.String_unsecure(),
26
+ isOptional: true
27
+ },
28
+ type: {
29
+ type: StepTypeEnum,
30
+ isOptional: false
31
+ },
32
+ position: {
33
+ type: ScalarTypeEnum.Int_unsecure(),
34
+ isOptional: false
35
+ },
36
+ transitions: {
37
+ type: ScalarTypeEnum.JSON(),
38
+ isOptional: false
39
+ },
40
+ approvalMode: {
41
+ type: ApprovalModeEnum,
42
+ isOptional: true
43
+ },
44
+ approverRoles: {
45
+ type: ScalarTypeEnum.String_unsecure(),
46
+ isArray: true,
47
+ isOptional: true
48
+ }
49
+ }
50
+ });
51
+ /**
52
+ * A workflow definition.
53
+ */
54
+ const WorkflowDefinitionModel = defineSchemaModel({
55
+ name: "WorkflowDefinitionModel",
56
+ description: "A workflow definition",
57
+ fields: {
58
+ id: {
59
+ type: ScalarTypeEnum.String_unsecure(),
60
+ isOptional: false
61
+ },
62
+ name: {
63
+ type: ScalarTypeEnum.String_unsecure(),
64
+ isOptional: false
65
+ },
66
+ key: {
67
+ type: ScalarTypeEnum.String_unsecure(),
68
+ isOptional: false
69
+ },
70
+ description: {
71
+ type: ScalarTypeEnum.String_unsecure(),
72
+ isOptional: true
73
+ },
74
+ version: {
75
+ type: ScalarTypeEnum.Int_unsecure(),
76
+ isOptional: false
77
+ },
78
+ status: {
79
+ type: WorkflowStatusEnum,
80
+ isOptional: false
81
+ },
82
+ triggerType: {
83
+ type: TriggerTypeEnum,
84
+ isOptional: false
85
+ },
86
+ initialStepId: {
87
+ type: ScalarTypeEnum.String_unsecure(),
88
+ isOptional: true
89
+ },
90
+ featureFlagKey: {
91
+ type: ScalarTypeEnum.String_unsecure(),
92
+ isOptional: true
93
+ },
94
+ organizationId: {
95
+ type: ScalarTypeEnum.String_unsecure(),
96
+ isOptional: false
97
+ },
98
+ createdAt: {
99
+ type: ScalarTypeEnum.DateTime(),
100
+ isOptional: false
101
+ },
102
+ updatedAt: {
103
+ type: ScalarTypeEnum.DateTime(),
104
+ isOptional: false
105
+ },
106
+ steps: {
107
+ type: WorkflowStepModel,
108
+ isArray: true,
109
+ isOptional: true
110
+ }
111
+ }
112
+ });
113
+ /**
114
+ * Input for creating a workflow definition.
115
+ */
116
+ const CreateWorkflowInputModel = defineSchemaModel({
117
+ name: "CreateWorkflowInput",
118
+ description: "Input for creating a workflow definition",
119
+ fields: {
120
+ name: {
121
+ type: ScalarTypeEnum.NonEmptyString(),
122
+ isOptional: false
123
+ },
124
+ key: {
125
+ type: ScalarTypeEnum.NonEmptyString(),
126
+ isOptional: false
127
+ },
128
+ description: {
129
+ type: ScalarTypeEnum.String_unsecure(),
130
+ isOptional: true
131
+ },
132
+ triggerType: {
133
+ type: TriggerTypeEnum,
134
+ isOptional: true
135
+ },
136
+ triggerConfig: {
137
+ type: ScalarTypeEnum.JSON(),
138
+ isOptional: true
139
+ },
140
+ featureFlagKey: {
141
+ type: ScalarTypeEnum.String_unsecure(),
142
+ isOptional: true
143
+ },
144
+ settings: {
145
+ type: ScalarTypeEnum.JSON(),
146
+ isOptional: true
147
+ }
148
+ }
149
+ });
150
+ /**
151
+ * Input for updating a workflow definition.
152
+ */
153
+ const UpdateWorkflowInputModel = defineSchemaModel({
154
+ name: "UpdateWorkflowInput",
155
+ description: "Input for updating a workflow definition",
156
+ fields: {
157
+ workflowId: {
158
+ type: ScalarTypeEnum.String_unsecure(),
159
+ isOptional: false
160
+ },
161
+ name: {
162
+ type: ScalarTypeEnum.String_unsecure(),
163
+ isOptional: true
164
+ },
165
+ description: {
166
+ type: ScalarTypeEnum.String_unsecure(),
167
+ isOptional: true
168
+ },
169
+ triggerType: {
170
+ type: TriggerTypeEnum,
171
+ isOptional: true
172
+ },
173
+ triggerConfig: {
174
+ type: ScalarTypeEnum.JSON(),
175
+ isOptional: true
176
+ },
177
+ featureFlagKey: {
178
+ type: ScalarTypeEnum.String_unsecure(),
179
+ isOptional: true
180
+ },
181
+ settings: {
182
+ type: ScalarTypeEnum.JSON(),
183
+ isOptional: true
184
+ }
185
+ }
186
+ });
187
+ /**
188
+ * Input for adding a step to a workflow.
189
+ */
190
+ const AddStepInputModel = defineSchemaModel({
191
+ name: "AddStepInput",
192
+ description: "Input for adding a step to a workflow",
193
+ fields: {
194
+ workflowId: {
195
+ type: ScalarTypeEnum.String_unsecure(),
196
+ isOptional: false
197
+ },
198
+ key: {
199
+ type: ScalarTypeEnum.NonEmptyString(),
200
+ isOptional: false
201
+ },
202
+ name: {
203
+ type: ScalarTypeEnum.NonEmptyString(),
204
+ isOptional: false
205
+ },
206
+ description: {
207
+ type: ScalarTypeEnum.String_unsecure(),
208
+ isOptional: true
209
+ },
210
+ type: {
211
+ type: StepTypeEnum,
212
+ isOptional: false
213
+ },
214
+ position: {
215
+ type: ScalarTypeEnum.Int_unsecure(),
216
+ isOptional: true
217
+ },
218
+ transitions: {
219
+ type: ScalarTypeEnum.JSON(),
220
+ isOptional: false
221
+ },
222
+ approvalMode: {
223
+ type: ApprovalModeEnum,
224
+ isOptional: true
225
+ },
226
+ approverRoles: {
227
+ type: ScalarTypeEnum.String_unsecure(),
228
+ isArray: true,
229
+ isOptional: true
230
+ },
231
+ approverUserIds: {
232
+ type: ScalarTypeEnum.String_unsecure(),
233
+ isArray: true,
234
+ isOptional: true
235
+ },
236
+ timeoutSeconds: {
237
+ type: ScalarTypeEnum.Int_unsecure(),
238
+ isOptional: true
239
+ },
240
+ slaSeconds: {
241
+ type: ScalarTypeEnum.Int_unsecure(),
242
+ isOptional: true
243
+ }
244
+ }
245
+ });
246
+
247
+ //#endregion
248
+ export { AddStepInputModel, CreateWorkflowInputModel, UpdateWorkflowInputModel, WorkflowDefinitionModel, WorkflowStepModel };
249
+ //# sourceMappingURL=workflow.schema.js.map
@@ -0,0 +1 @@
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.Int_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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"}
@@ -0,0 +1,12 @@
1
+ import { FeatureModuleSpec } from "@contractspec/lib.contracts";
2
+
3
+ //#region src/workflow-system.feature.d.ts
4
+
5
+ /**
6
+ * Workflow System feature module that bundles workflow definition,
7
+ * instance management, and approval handling into an installable feature.
8
+ */
9
+ declare const WorkflowSystemFeature: FeatureModuleSpec;
10
+ //#endregion
11
+ export { WorkflowSystemFeature };
12
+ //# sourceMappingURL=workflow-system.feature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-system.feature.d.ts","names":[],"sources":["../src/workflow-system.feature.ts"],"sourcesContent":[],"mappings":";;;;;;;;cAWa,uBAAuB"}
@@ -0,0 +1,339 @@
1
+ //#region src/workflow-system.feature.ts
2
+ /**
3
+ * Workflow System feature module that bundles workflow definition,
4
+ * instance management, and approval handling into an installable feature.
5
+ */
6
+ const WorkflowSystemFeature = {
7
+ meta: {
8
+ key: "workflow-system",
9
+ title: "Workflow & Approval System",
10
+ description: "State machine-based workflow engine with role-based approvals, delegation, and escalation",
11
+ domain: "workflow",
12
+ owners: ["@workflow-team"],
13
+ tags: [
14
+ "workflow",
15
+ "approval",
16
+ "state-machine",
17
+ "automation"
18
+ ],
19
+ stability: "experimental",
20
+ version: 1
21
+ },
22
+ operations: [
23
+ {
24
+ key: "workflow.definition.create",
25
+ version: 1
26
+ },
27
+ {
28
+ key: "workflow.definition.update",
29
+ version: 1
30
+ },
31
+ {
32
+ key: "workflow.step.add",
33
+ version: 1
34
+ },
35
+ {
36
+ key: "workflow.definition.publish",
37
+ version: 1
38
+ },
39
+ {
40
+ key: "workflow.definition.list",
41
+ version: 1
42
+ },
43
+ {
44
+ key: "workflow.definition.get",
45
+ version: 1
46
+ },
47
+ {
48
+ key: "workflow.instance.start",
49
+ version: 1
50
+ },
51
+ {
52
+ key: "workflow.instance.transition",
53
+ version: 1
54
+ },
55
+ {
56
+ key: "workflow.instance.pause",
57
+ version: 1
58
+ },
59
+ {
60
+ key: "workflow.instance.resume",
61
+ version: 1
62
+ },
63
+ {
64
+ key: "workflow.instance.cancel",
65
+ version: 1
66
+ },
67
+ {
68
+ key: "workflow.instance.list",
69
+ version: 1
70
+ },
71
+ {
72
+ key: "workflow.instance.get",
73
+ version: 1
74
+ },
75
+ {
76
+ key: "workflow.approval.decide",
77
+ version: 1
78
+ },
79
+ {
80
+ key: "workflow.approval.delegate",
81
+ version: 1
82
+ },
83
+ {
84
+ key: "workflow.approval.comment.add",
85
+ version: 1
86
+ },
87
+ {
88
+ key: "workflow.approval.list.mine",
89
+ version: 1
90
+ },
91
+ {
92
+ key: "workflow.approval.get",
93
+ version: 1
94
+ }
95
+ ],
96
+ events: [
97
+ {
98
+ key: "workflow.definition.created",
99
+ version: 1
100
+ },
101
+ {
102
+ key: "workflow.definition.updated",
103
+ version: 1
104
+ },
105
+ {
106
+ key: "workflow.definition.published",
107
+ version: 1
108
+ },
109
+ {
110
+ key: "workflow.step.added",
111
+ version: 1
112
+ },
113
+ {
114
+ key: "workflow.instance.started",
115
+ version: 1
116
+ },
117
+ {
118
+ key: "workflow.step.entered",
119
+ version: 1
120
+ },
121
+ {
122
+ key: "workflow.step.exited",
123
+ version: 1
124
+ },
125
+ {
126
+ key: "workflow.instance.completed",
127
+ version: 1
128
+ },
129
+ {
130
+ key: "workflow.instance.cancelled",
131
+ version: 1
132
+ },
133
+ {
134
+ key: "workflow.instance.paused",
135
+ version: 1
136
+ },
137
+ {
138
+ key: "workflow.instance.resumed",
139
+ version: 1
140
+ },
141
+ {
142
+ key: "workflow.instance.failed",
143
+ version: 1
144
+ },
145
+ {
146
+ key: "workflow.instance.timedOut",
147
+ version: 1
148
+ },
149
+ {
150
+ key: "workflow.approval.requested",
151
+ version: 1
152
+ },
153
+ {
154
+ key: "workflow.approval.decided",
155
+ version: 1
156
+ },
157
+ {
158
+ key: "workflow.approval.delegated",
159
+ version: 1
160
+ },
161
+ {
162
+ key: "workflow.approval.escalated",
163
+ version: 1
164
+ }
165
+ ],
166
+ presentations: [
167
+ {
168
+ key: "workflow.designer",
169
+ version: 1
170
+ },
171
+ {
172
+ key: "workflow.definition.list",
173
+ version: 1
174
+ },
175
+ {
176
+ key: "workflow.definition.detail",
177
+ version: 1
178
+ },
179
+ {
180
+ key: "workflow.instance.list",
181
+ version: 1
182
+ },
183
+ {
184
+ key: "workflow.instance.detail",
185
+ version: 1
186
+ },
187
+ {
188
+ key: "workflow.instance.progress",
189
+ version: 1
190
+ },
191
+ {
192
+ key: "workflow.approval.inbox",
193
+ version: 1
194
+ },
195
+ {
196
+ key: "workflow.approval.detail",
197
+ version: 1
198
+ },
199
+ {
200
+ key: "workflow.approval.form",
201
+ version: 1
202
+ },
203
+ {
204
+ key: "workflow.approval.badge",
205
+ version: 1
206
+ },
207
+ {
208
+ key: "workflow.metrics",
209
+ version: 1
210
+ }
211
+ ],
212
+ opToPresentation: [
213
+ {
214
+ op: {
215
+ key: "workflow.definition.list",
216
+ version: 1
217
+ },
218
+ pres: {
219
+ key: "workflow.definition.list",
220
+ version: 1
221
+ }
222
+ },
223
+ {
224
+ op: {
225
+ key: "workflow.instance.list",
226
+ version: 1
227
+ },
228
+ pres: {
229
+ key: "workflow.instance.list",
230
+ version: 1
231
+ }
232
+ },
233
+ {
234
+ op: {
235
+ key: "workflow.approval.list.mine",
236
+ version: 1
237
+ },
238
+ pres: {
239
+ key: "workflow.approval.inbox",
240
+ version: 1
241
+ }
242
+ },
243
+ {
244
+ op: {
245
+ key: "workflow.approval.decide",
246
+ version: 1
247
+ },
248
+ pres: {
249
+ key: "workflow.approval.form",
250
+ version: 1
251
+ }
252
+ }
253
+ ],
254
+ presentationsTargets: [
255
+ {
256
+ key: "workflow.designer",
257
+ version: 1,
258
+ targets: ["react"]
259
+ },
260
+ {
261
+ key: "workflow.definition.list",
262
+ version: 1,
263
+ targets: ["react", "markdown"]
264
+ },
265
+ {
266
+ key: "workflow.definition.detail",
267
+ version: 1,
268
+ targets: ["react", "markdown"]
269
+ },
270
+ {
271
+ key: "workflow.instance.list",
272
+ version: 1,
273
+ targets: ["react", "markdown"]
274
+ },
275
+ {
276
+ key: "workflow.instance.detail",
277
+ version: 1,
278
+ targets: ["react", "markdown"]
279
+ },
280
+ {
281
+ key: "workflow.instance.progress",
282
+ version: 1,
283
+ targets: ["react"]
284
+ },
285
+ {
286
+ key: "workflow.approval.inbox",
287
+ version: 1,
288
+ targets: ["react", "markdown"]
289
+ },
290
+ {
291
+ key: "workflow.approval.detail",
292
+ version: 1,
293
+ targets: ["react", "markdown"]
294
+ },
295
+ {
296
+ key: "workflow.metrics",
297
+ version: 1,
298
+ targets: ["react", "markdown"]
299
+ }
300
+ ],
301
+ capabilities: {
302
+ requires: [
303
+ {
304
+ key: "identity",
305
+ version: 1
306
+ },
307
+ {
308
+ key: "audit-trail",
309
+ version: 1
310
+ },
311
+ {
312
+ key: "notifications",
313
+ version: 1
314
+ },
315
+ {
316
+ key: "feature-flags",
317
+ version: 1
318
+ }
319
+ ],
320
+ provides: [
321
+ {
322
+ key: "workflow",
323
+ version: 1
324
+ },
325
+ {
326
+ key: "approval",
327
+ version: 1
328
+ },
329
+ {
330
+ key: "state-machine",
331
+ version: 1
332
+ }
333
+ ]
334
+ }
335
+ };
336
+
337
+ //#endregion
338
+ export { WorkflowSystemFeature };
339
+ //# sourceMappingURL=workflow-system.feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-system.feature.js","names":["WorkflowSystemFeature: FeatureModuleSpec"],"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 type { FeatureModuleSpec } 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: FeatureModuleSpec = {\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,\n },\n\n // All contract operations included in this feature\n operations: [\n // Workflow definition operations\n { key: 'workflow.definition.create', version: 1 },\n { key: 'workflow.definition.update', version: 1 },\n { key: 'workflow.step.add', version: 1 },\n { key: 'workflow.definition.publish', version: 1 },\n { key: 'workflow.definition.list', version: 1 },\n { key: 'workflow.definition.get', version: 1 },\n\n // Workflow instance operations\n { key: 'workflow.instance.start', version: 1 },\n { key: 'workflow.instance.transition', version: 1 },\n { key: 'workflow.instance.pause', version: 1 },\n { key: 'workflow.instance.resume', version: 1 },\n { key: 'workflow.instance.cancel', version: 1 },\n { key: 'workflow.instance.list', version: 1 },\n { key: 'workflow.instance.get', version: 1 },\n\n // Approval operations\n { key: 'workflow.approval.decide', version: 1 },\n { key: 'workflow.approval.delegate', version: 1 },\n { key: 'workflow.approval.comment.add', version: 1 },\n { key: 'workflow.approval.list.mine', version: 1 },\n { key: 'workflow.approval.get', version: 1 },\n ],\n\n // Events emitted by this feature\n events: [\n // Definition events\n { key: 'workflow.definition.created', version: 1 },\n { key: 'workflow.definition.updated', version: 1 },\n { key: 'workflow.definition.published', version: 1 },\n { key: 'workflow.step.added', version: 1 },\n\n // Instance events\n { key: 'workflow.instance.started', version: 1 },\n { key: 'workflow.step.entered', version: 1 },\n { key: 'workflow.step.exited', version: 1 },\n { key: 'workflow.instance.completed', version: 1 },\n { key: 'workflow.instance.cancelled', version: 1 },\n { key: 'workflow.instance.paused', version: 1 },\n { key: 'workflow.instance.resumed', version: 1 },\n { key: 'workflow.instance.failed', version: 1 },\n { key: 'workflow.instance.timedOut', version: 1 },\n\n // Approval events\n { key: 'workflow.approval.requested', version: 1 },\n { key: 'workflow.approval.decided', version: 1 },\n { key: 'workflow.approval.delegated', version: 1 },\n { key: 'workflow.approval.escalated', version: 1 },\n ],\n\n // Presentations associated with this feature\n presentations: [\n // Definition\n { key: 'workflow.designer', version: 1 },\n { key: 'workflow.definition.list', version: 1 },\n { key: 'workflow.definition.detail', version: 1 },\n\n // Instance\n { key: 'workflow.instance.list', version: 1 },\n { key: 'workflow.instance.detail', version: 1 },\n { key: 'workflow.instance.progress', version: 1 },\n\n // Approval\n { key: 'workflow.approval.inbox', version: 1 },\n { key: 'workflow.approval.detail', version: 1 },\n { key: 'workflow.approval.form', version: 1 },\n { key: 'workflow.approval.badge', version: 1 },\n\n // Dashboard\n { key: 'workflow.metrics', version: 1 },\n ],\n\n // Link operations to their primary presentations\n opToPresentation: [\n {\n op: { key: 'workflow.definition.list', version: 1 },\n pres: { key: 'workflow.definition.list', version: 1 },\n },\n {\n op: { key: 'workflow.instance.list', version: 1 },\n pres: { key: 'workflow.instance.list', version: 1 },\n },\n {\n op: { key: 'workflow.approval.list.mine', version: 1 },\n pres: { key: 'workflow.approval.inbox', version: 1 },\n },\n {\n op: { key: 'workflow.approval.decide', version: 1 },\n pres: { key: 'workflow.approval.form', version: 1 },\n },\n ],\n\n // Target requirements for multi-surface rendering\n presentationsTargets: [\n { key: 'workflow.designer', version: 1, targets: ['react'] },\n {\n key: 'workflow.definition.list',\n version: 1,\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.definition.detail',\n version: 1,\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.instance.list',\n version: 1,\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.instance.detail',\n version: 1,\n targets: ['react', 'markdown'],\n },\n { key: 'workflow.instance.progress', version: 1, targets: ['react'] },\n {\n key: 'workflow.approval.inbox',\n version: 1,\n targets: ['react', 'markdown'],\n },\n {\n key: 'workflow.approval.detail',\n version: 1,\n targets: ['react', 'markdown'],\n },\n { key: 'workflow.metrics', version: 1, targets: ['react', 'markdown'] },\n ],\n\n // Capability requirements\n capabilities: {\n requires: [\n { key: 'identity', version: 1 },\n { key: 'audit-trail', version: 1 },\n { key: 'notifications', version: 1 },\n { key: 'feature-flags', version: 1 },\n ],\n provides: [\n { key: 'workflow', version: 1 },\n { key: 'approval', version: 1 },\n { key: 'state-machine', version: 1 },\n ],\n },\n};\n"],"mappings":"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"}