@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.
- package/dist/approval/approval.enum.d.ts +2 -7
- package/dist/approval/approval.enum.d.ts.map +1 -1
- package/dist/approval/approval.enum.js +20 -26
- package/dist/approval/approval.event.d.ts +108 -114
- package/dist/approval/approval.event.d.ts.map +1 -1
- package/dist/approval/approval.event.js +103 -210
- package/dist/approval/approval.handler.d.ts +17 -18
- package/dist/approval/approval.handler.d.ts.map +1 -1
- package/dist/approval/approval.operations.d.ts +429 -435
- package/dist/approval/approval.operations.d.ts.map +1 -1
- package/dist/approval/approval.operations.js +364 -339
- package/dist/approval/approval.schema.d.ts +86 -91
- package/dist/approval/approval.schema.d.ts.map +1 -1
- package/dist/approval/approval.schema.js +71 -107
- package/dist/approval/index.d.ts +8 -5
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +484 -5
- package/dist/browser/approval/approval.enum.js +22 -0
- package/dist/browser/approval/approval.event.js +112 -0
- package/dist/browser/approval/approval.operations.js +369 -0
- package/dist/browser/approval/approval.schema.js +73 -0
- package/dist/browser/approval/index.js +484 -0
- package/dist/browser/docs/index.js +103 -0
- package/dist/browser/docs/workflow-system.docblock.js +103 -0
- package/dist/browser/entities/approval.js +119 -0
- package/dist/browser/entities/index.js +508 -0
- package/dist/browser/entities/instance.js +161 -0
- package/dist/browser/entities/step.js +124 -0
- package/dist/browser/entities/workflow.js +82 -0
- package/dist/browser/example.js +42 -0
- package/dist/browser/handlers/index.js +253 -0
- package/dist/browser/handlers/workflow.handlers.js +253 -0
- package/dist/browser/index.js +3120 -0
- package/dist/browser/instance/index.js +677 -0
- package/dist/browser/instance/instance.enum.js +15 -0
- package/dist/browser/instance/instance.event.js +164 -0
- package/dist/browser/instance/instance.handler.js +356 -0
- package/dist/browser/instance/instance.operations.js +9 -0
- package/dist/browser/instance/instance.schema.js +101 -0
- package/dist/browser/presentations/index.js +109 -0
- package/dist/browser/seeders/index.js +3 -0
- package/dist/browser/shared/index.js +3 -0
- package/dist/browser/shared/mock-data.js +11 -0
- package/dist/browser/shared/types.js +0 -0
- package/dist/browser/state-machine/index.js +6 -0
- package/dist/browser/tests/operations.test-spec.js +6 -0
- package/dist/browser/ui/WorkflowDashboard.js +3 -0
- package/dist/browser/ui/hooks/index.js +50 -0
- package/dist/browser/ui/hooks/useWorkflowList.js +50 -0
- package/dist/browser/ui/index.js +54 -0
- package/dist/browser/ui/renderers/index.js +227 -0
- package/dist/browser/ui/renderers/workflow.markdown.js +227 -0
- package/dist/browser/workflow/index.js +21 -0
- package/dist/browser/workflow/workflow.enum.js +36 -0
- package/dist/browser/workflow/workflow.event.js +6 -0
- package/dist/browser/workflow/workflow.handler.js +5 -0
- package/dist/browser/workflow/workflow.operations.js +8 -0
- package/dist/browser/workflow/workflow.schema.js +151 -0
- package/dist/browser/workflow-system.capability.js +5 -0
- package/dist/browser/workflow-system.feature.js +3 -0
- package/dist/docs/index.d.ts +2 -1
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +104 -1
- package/dist/docs/workflow-system.docblock.d.ts +2 -1
- package/dist/docs/workflow-system.docblock.d.ts.map +1 -0
- package/dist/docs/workflow-system.docblock.js +45 -56
- package/dist/entities/approval.d.ts +35 -40
- package/dist/entities/approval.d.ts.map +1 -1
- package/dist/entities/approval.js +116 -124
- package/dist/entities/index.d.ts +132 -137
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +506 -29
- package/dist/entities/instance.d.ts +46 -51
- package/dist/entities/instance.d.ts.map +1 -1
- package/dist/entities/instance.js +158 -164
- package/dist/entities/step.d.ts +31 -36
- package/dist/entities/step.d.ts.map +1 -1
- package/dist/entities/step.js +122 -132
- package/dist/entities/workflow.d.ts +22 -27
- package/dist/entities/workflow.d.ts.map +1 -1
- package/dist/entities/workflow.js +80 -99
- package/dist/example.d.ts +2 -6
- package/dist/example.d.ts.map +1 -1
- package/dist/example.js +41 -55
- package/dist/handlers/index.d.ts +2 -2
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +254 -3
- package/dist/handlers/workflow.handlers.d.ts +107 -106
- package/dist/handlers/workflow.handlers.d.ts.map +1 -1
- package/dist/handlers/workflow.handlers.js +237 -246
- package/dist/index.d.ts +15 -26
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3121 -26
- package/dist/instance/index.d.ts +8 -5
- package/dist/instance/index.d.ts.map +1 -0
- package/dist/instance/index.js +677 -5
- package/dist/instance/instance.enum.d.ts +1 -6
- package/dist/instance/instance.enum.d.ts.map +1 -1
- package/dist/instance/instance.enum.js +14 -18
- package/dist/instance/instance.event.d.ts +313 -319
- package/dist/instance/instance.event.d.ts.map +1 -1
- package/dist/instance/instance.event.js +151 -279
- package/dist/instance/instance.handler.d.ts +21 -22
- package/dist/instance/instance.handler.d.ts.map +1 -1
- package/dist/instance/instance.handler.js +352 -89
- package/dist/instance/instance.operations.d.ts +819 -825
- package/dist/instance/instance.operations.d.ts.map +1 -1
- package/dist/instance/instance.operations.js +10 -464
- package/dist/instance/instance.schema.d.ts +196 -201
- package/dist/instance/instance.schema.d.ts.map +1 -1
- package/dist/instance/instance.schema.js +97 -167
- package/dist/presentations/index.d.ts +23 -28
- package/dist/presentations/index.d.ts.map +1 -1
- package/dist/presentations/index.js +104 -334
- package/dist/seeders/index.d.ts +4 -8
- package/dist/seeders/index.d.ts.map +1 -1
- package/dist/seeders/index.js +4 -19
- package/dist/shared/index.d.ts +6 -3
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +4 -3
- package/dist/shared/mock-data.d.ts +16 -16
- package/dist/shared/mock-data.d.ts.map +1 -1
- package/dist/shared/mock-data.js +11 -11
- package/dist/shared/types.d.ts +69 -72
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +1 -0
- package/dist/state-machine/index.d.ts +92 -95
- package/dist/state-machine/index.d.ts.map +1 -1
- package/dist/state-machine/index.js +6 -157
- package/dist/tests/operations.test-spec.d.ts +4 -9
- package/dist/tests/operations.test-spec.d.ts.map +1 -1
- package/dist/tests/operations.test-spec.js +7 -123
- package/dist/ui/WorkflowDashboard.d.ts +1 -6
- package/dist/ui/WorkflowDashboard.d.ts.map +1 -1
- package/dist/ui/WorkflowDashboard.js +3 -222
- package/dist/ui/hooks/index.d.ts +2 -2
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +51 -5
- package/dist/ui/hooks/useWorkflowList.d.ts +15 -19
- package/dist/ui/hooks/useWorkflowList.d.ts.map +1 -1
- package/dist/ui/hooks/useWorkflowList.js +47 -51
- package/dist/ui/index.d.ts +7 -6
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +55 -6
- package/dist/ui/renderers/index.d.ts +2 -2
- package/dist/ui/renderers/index.d.ts.map +1 -0
- package/dist/ui/renderers/index.js +227 -2
- package/dist/ui/renderers/workflow.markdown.d.ts +13 -14
- package/dist/ui/renderers/workflow.markdown.d.ts.map +1 -1
- package/dist/ui/renderers/workflow.markdown.js +223 -229
- package/dist/workflow/index.d.ts +8 -5
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +22 -6
- package/dist/workflow/workflow.enum.d.ts +4 -9
- package/dist/workflow/workflow.enum.d.ts.map +1 -1
- package/dist/workflow/workflow.enum.js +32 -42
- package/dist/workflow/workflow.event.d.ts +112 -118
- package/dist/workflow/workflow.event.d.ts.map +1 -1
- package/dist/workflow/workflow.event.js +7 -150
- package/dist/workflow/workflow.handler.d.ts +23 -24
- package/dist/workflow/workflow.handler.d.ts.map +1 -1
- package/dist/workflow/workflow.handler.js +6 -66
- package/dist/workflow/workflow.operations.d.ts +847 -853
- package/dist/workflow/workflow.operations.d.ts.map +1 -1
- package/dist/workflow/workflow.operations.js +9 -345
- package/dist/workflow/workflow.schema.d.ts +229 -234
- package/dist/workflow/workflow.schema.d.ts.map +1 -1
- package/dist/workflow/workflow.schema.js +146 -243
- package/dist/workflow-system.capability.d.ts +3 -8
- package/dist/workflow-system.capability.d.ts.map +1 -1
- package/dist/workflow-system.capability.js +6 -34
- package/dist/workflow-system.feature.d.ts +1 -6
- package/dist/workflow-system.feature.d.ts.map +1 -1
- package/dist/workflow-system.feature.js +4 -346
- package/package.json +415 -93
- package/dist/approval/approval.enum.js.map +0 -1
- package/dist/approval/approval.event.js.map +0 -1
- package/dist/approval/approval.handler.js +0 -72
- package/dist/approval/approval.handler.js.map +0 -1
- package/dist/approval/approval.operations.js.map +0 -1
- package/dist/approval/approval.schema.js.map +0 -1
- package/dist/docs/workflow-system.docblock.js.map +0 -1
- package/dist/entities/approval.js.map +0 -1
- package/dist/entities/index.js.map +0 -1
- package/dist/entities/instance.js.map +0 -1
- package/dist/entities/step.js.map +0 -1
- package/dist/entities/workflow.js.map +0 -1
- package/dist/example.js.map +0 -1
- package/dist/handlers/workflow.handlers.js.map +0 -1
- package/dist/instance/instance.enum.js.map +0 -1
- package/dist/instance/instance.event.js.map +0 -1
- package/dist/instance/instance.handler.js.map +0 -1
- package/dist/instance/instance.operations.js.map +0 -1
- package/dist/instance/instance.schema.js.map +0 -1
- package/dist/presentations/index.js.map +0 -1
- package/dist/seeders/index.js.map +0 -1
- package/dist/shared/mock-data.js.map +0 -1
- package/dist/state-machine/index.js.map +0 -1
- package/dist/tests/operations.test-spec.js.map +0 -1
- package/dist/ui/WorkflowDashboard.js.map +0 -1
- package/dist/ui/hooks/useWorkflowList.js.map +0 -1
- package/dist/ui/renderers/workflow.markdown.js.map +0 -1
- package/dist/workflow/workflow.enum.js.map +0 -1
- package/dist/workflow/workflow.event.js.map +0 -1
- package/dist/workflow/workflow.handler.js.map +0 -1
- package/dist/workflow/workflow.operations.js.map +0 -1
- package/dist/workflow/workflow.schema.js.map +0 -1
- package/dist/workflow-system.capability.js.map +0 -1
- package/dist/workflow-system.feature.js.map +0 -1
|
@@ -1,21 +1,16 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/docs/workflow-system.docblock.ts
|
|
1
3
|
import { registerDocBlocks } from "@contractspec/lib.contracts/docs";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
tags: [
|
|
13
|
-
"workflow",
|
|
14
|
-
"approval",
|
|
15
|
-
"state-machine",
|
|
16
|
-
"rbac"
|
|
17
|
-
],
|
|
18
|
-
body: `## Entities
|
|
4
|
+
var workflowSystemDocBlocks = [
|
|
5
|
+
{
|
|
6
|
+
id: "docs.examples.workflow-system",
|
|
7
|
+
title: "Workflow / Approval System",
|
|
8
|
+
summary: "Reference app showing state-machine driven approvals with RBAC, audit trail, notifications, and jobs.",
|
|
9
|
+
kind: "reference",
|
|
10
|
+
visibility: "public",
|
|
11
|
+
route: "/docs/examples/workflow-system",
|
|
12
|
+
tags: ["workflow", "approval", "state-machine", "rbac"],
|
|
13
|
+
body: `## Entities
|
|
19
14
|
|
|
20
15
|
- WorkflowDefinition, WorkflowStep, WorkflowInstance, Approval.
|
|
21
16
|
- State machine expressed in \`src/state-machine\` with allowed transitions and role gates.
|
|
@@ -40,16 +35,16 @@ registerDocBlocks([
|
|
|
40
35
|
- Keep transitions declarative to enable safe regeneration; role guards live in spec.
|
|
41
36
|
- Use Notification Center for approval requests and outcomes; attach files via Files module if needed.
|
|
42
37
|
`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: "docs.examples.workflow-system.goal",
|
|
41
|
+
title: "Workflow System \u2014 Goal",
|
|
42
|
+
summary: "Why the workflow/approval template exists and outcomes it targets.",
|
|
43
|
+
kind: "goal",
|
|
44
|
+
visibility: "public",
|
|
45
|
+
route: "/docs/examples/workflow-system/goal",
|
|
46
|
+
tags: ["workflow", "goal"],
|
|
47
|
+
body: `## Why it matters
|
|
53
48
|
- Provides a regenerable, role-gated approval engine using declarative state machines.
|
|
54
49
|
- Keeps workflow rules consistent across UI/API/events with auditability.
|
|
55
50
|
|
|
@@ -60,16 +55,16 @@ registerDocBlocks([
|
|
|
60
55
|
## Success criteria
|
|
61
56
|
- State changes are declarative and regenerate cleanly.
|
|
62
57
|
- Every transition emits auditable events and respects RBAC guards.`
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "docs.examples.workflow-system.usage",
|
|
61
|
+
title: "Workflow System \u2014 Usage",
|
|
62
|
+
summary: "How to configure workflows, transitions, and regenerate safely.",
|
|
63
|
+
kind: "usage",
|
|
64
|
+
visibility: "public",
|
|
65
|
+
route: "/docs/examples/workflow-system/usage",
|
|
66
|
+
tags: ["workflow", "usage"],
|
|
67
|
+
body: `## Setup
|
|
73
68
|
1) Define WorkflowDefinition steps and allowed transitions with role gates in spec.
|
|
74
69
|
2) Seed sample workflows/instances (if provided) or create via UI; enable reminders via Jobs.
|
|
75
70
|
|
|
@@ -82,20 +77,16 @@ registerDocBlocks([
|
|
|
82
77
|
- Emit events for every transition; log to Audit Trail.
|
|
83
78
|
- Use Notifications for approvals/rejections; schedule reminders for pending steps.
|
|
84
79
|
- Keep transitions declarative; avoid imperative branching in handlers.`
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"constraints",
|
|
96
|
-
"internal"
|
|
97
|
-
],
|
|
98
|
-
body: `## Constraints
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "docs.examples.workflow-system.constraints",
|
|
83
|
+
title: "Workflow System \u2014 Constraints & Safety",
|
|
84
|
+
summary: "Internal guardrails for state machines, RBAC, and regeneration semantics.",
|
|
85
|
+
kind: "reference",
|
|
86
|
+
visibility: "internal",
|
|
87
|
+
route: "/docs/examples/workflow-system/constraints",
|
|
88
|
+
tags: ["workflow", "constraints", "internal"],
|
|
89
|
+
body: `## Constraints
|
|
99
90
|
- State machine (steps/transitions) must stay declarative in spec; no hidden code paths.
|
|
100
91
|
- Events to emit: instance.started, step.completed/rejected, instance.finished.
|
|
101
92
|
- Regeneration must not change approval logic without explicit spec diff.
|
|
@@ -108,8 +99,6 @@ registerDocBlocks([
|
|
|
108
99
|
- Add fixtures for transition changes and role gates.
|
|
109
100
|
- Validate reminders (Jobs) stay aligned with pending states after regeneration.
|
|
110
101
|
- Use Feature Flags for new transitions/escalation rules; default safe/off.`
|
|
111
|
-
|
|
112
|
-
]
|
|
113
|
-
|
|
114
|
-
//#endregion
|
|
115
|
-
//# sourceMappingURL=workflow-system.docblock.js.map
|
|
102
|
+
}
|
|
103
|
+
];
|
|
104
|
+
registerDocBlocks(workflowSystemDocBlocks);
|
|
@@ -1,58 +1,53 @@
|
|
|
1
|
-
import * as _contractspec_lib_schema0 from "@contractspec/lib.schema";
|
|
2
|
-
|
|
3
|
-
//#region src/entities/approval.d.ts
|
|
4
1
|
/**
|
|
5
2
|
* Approval status enum.
|
|
6
3
|
*/
|
|
7
|
-
declare const ApprovalStatusEnum:
|
|
4
|
+
export declare const ApprovalStatusEnum: import("@contractspec/lib.schema").EntityEnumDef;
|
|
8
5
|
/**
|
|
9
6
|
* Approval decision enum.
|
|
10
7
|
*/
|
|
11
|
-
declare const ApprovalDecisionEnum:
|
|
8
|
+
export declare const ApprovalDecisionEnum: import("@contractspec/lib.schema").EntityEnumDef;
|
|
12
9
|
/**
|
|
13
10
|
* ApprovalRequest entity - a request for approval from a user.
|
|
14
11
|
*
|
|
15
12
|
* Created when a workflow reaches an APPROVAL step. Multiple requests
|
|
16
13
|
* may be created depending on the approval mode.
|
|
17
14
|
*/
|
|
18
|
-
declare const ApprovalRequestEntity:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
15
|
+
export declare const ApprovalRequestEntity: import("@contractspec/lib.schema").EntitySpec<{
|
|
16
|
+
id: import("@contractspec/lib.schema").EntityScalarField;
|
|
17
|
+
workflowInstanceId: import("@contractspec/lib.schema").EntityScalarField;
|
|
18
|
+
stepExecutionId: import("@contractspec/lib.schema").EntityScalarField;
|
|
19
|
+
approverId: import("@contractspec/lib.schema").EntityScalarField;
|
|
20
|
+
approverRole: import("@contractspec/lib.schema").EntityScalarField;
|
|
21
|
+
title: import("@contractspec/lib.schema").EntityScalarField;
|
|
22
|
+
description: import("@contractspec/lib.schema").EntityScalarField;
|
|
23
|
+
status: import("@contractspec/lib.schema").EntityEnumField;
|
|
24
|
+
decision: import("@contractspec/lib.schema").EntityEnumField;
|
|
25
|
+
decisionComment: import("@contractspec/lib.schema").EntityScalarField;
|
|
26
|
+
decidedAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
27
|
+
delegatedTo: import("@contractspec/lib.schema").EntityScalarField;
|
|
28
|
+
delegationReason: import("@contractspec/lib.schema").EntityScalarField;
|
|
29
|
+
escalationLevel: import("@contractspec/lib.schema").EntityScalarField;
|
|
30
|
+
escalatedAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
31
|
+
dueAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
32
|
+
reminderSentAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
33
|
+
contextSnapshot: import("@contractspec/lib.schema").EntityScalarField;
|
|
34
|
+
sequenceOrder: import("@contractspec/lib.schema").EntityScalarField;
|
|
35
|
+
createdAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
36
|
+
updatedAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
37
|
+
workflowInstance: import("@contractspec/lib.schema").EntityRelationField;
|
|
38
|
+
stepExecution: import("@contractspec/lib.schema").EntityRelationField;
|
|
42
39
|
}>;
|
|
43
40
|
/**
|
|
44
41
|
* ApprovalComment entity - comments on approval requests.
|
|
45
42
|
*/
|
|
46
|
-
declare const ApprovalCommentEntity:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
export declare const ApprovalCommentEntity: import("@contractspec/lib.schema").EntitySpec<{
|
|
44
|
+
id: import("@contractspec/lib.schema").EntityScalarField;
|
|
45
|
+
approvalRequestId: import("@contractspec/lib.schema").EntityScalarField;
|
|
46
|
+
authorId: import("@contractspec/lib.schema").EntityScalarField;
|
|
47
|
+
content: import("@contractspec/lib.schema").EntityScalarField;
|
|
48
|
+
isInternal: import("@contractspec/lib.schema").EntityScalarField;
|
|
49
|
+
createdAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
50
|
+
updatedAt: import("@contractspec/lib.schema").EntityScalarField;
|
|
51
|
+
approvalRequest: import("@contractspec/lib.schema").EntityRelationField;
|
|
55
52
|
}>;
|
|
56
|
-
//#endregion
|
|
57
|
-
export { ApprovalCommentEntity, ApprovalDecisionEnum, ApprovalRequestEntity, ApprovalStatusEnum };
|
|
58
53
|
//# sourceMappingURL=approval.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.d.ts","
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../src/entities/approval.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,kBAAkB,kDAa7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,kDAW/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;EA4FhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;EAmChC,CAAC"}
|
|
@@ -1,128 +1,120 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
// @bun
|
|
2
|
+
// src/entities/approval.ts
|
|
3
|
+
import {
|
|
4
|
+
defineEntity,
|
|
5
|
+
defineEntityEnum,
|
|
6
|
+
field,
|
|
7
|
+
index
|
|
8
|
+
} from "@contractspec/lib.schema";
|
|
9
|
+
var ApprovalStatusEnum = defineEntityEnum({
|
|
10
|
+
name: "ApprovalStatus",
|
|
11
|
+
values: [
|
|
12
|
+
"PENDING",
|
|
13
|
+
"APPROVED",
|
|
14
|
+
"REJECTED",
|
|
15
|
+
"DELEGATED",
|
|
16
|
+
"ESCALATED",
|
|
17
|
+
"WITHDRAWN",
|
|
18
|
+
"EXPIRED"
|
|
19
|
+
],
|
|
20
|
+
schema: "workflow",
|
|
21
|
+
description: "Status of an approval request."
|
|
20
22
|
});
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
],
|
|
33
|
-
schema: "workflow",
|
|
34
|
-
description: "Possible approval decisions."
|
|
23
|
+
var ApprovalDecisionEnum = defineEntityEnum({
|
|
24
|
+
name: "ApprovalDecision",
|
|
25
|
+
values: [
|
|
26
|
+
"APPROVE",
|
|
27
|
+
"REJECT",
|
|
28
|
+
"REQUEST_CHANGES",
|
|
29
|
+
"DELEGATE",
|
|
30
|
+
"ABSTAIN"
|
|
31
|
+
],
|
|
32
|
+
schema: "workflow",
|
|
33
|
+
description: "Possible approval decisions."
|
|
35
34
|
});
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
index.on(["workflowInstanceId", "status"]),
|
|
96
|
-
index.on(["stepExecutionId"]),
|
|
97
|
-
index.on(["status", "dueAt"]),
|
|
98
|
-
index.on(["createdAt"])
|
|
99
|
-
],
|
|
100
|
-
enums: [ApprovalStatusEnum, ApprovalDecisionEnum]
|
|
35
|
+
var ApprovalRequestEntity = defineEntity({
|
|
36
|
+
name: "ApprovalRequest",
|
|
37
|
+
description: "A pending approval request for a workflow step.",
|
|
38
|
+
schema: "workflow",
|
|
39
|
+
map: "approval_request",
|
|
40
|
+
fields: {
|
|
41
|
+
id: field.id({ description: "Unique approval request ID" }),
|
|
42
|
+
workflowInstanceId: field.foreignKey(),
|
|
43
|
+
stepExecutionId: field.foreignKey(),
|
|
44
|
+
approverId: field.foreignKey({ description: "User requested to approve" }),
|
|
45
|
+
approverRole: field.string({
|
|
46
|
+
isOptional: true,
|
|
47
|
+
description: "Role of the approver"
|
|
48
|
+
}),
|
|
49
|
+
title: field.string({ description: "Approval request title" }),
|
|
50
|
+
description: field.string({ isOptional: true }),
|
|
51
|
+
status: field.enum("ApprovalStatus", { default: "PENDING" }),
|
|
52
|
+
decision: field.enum("ApprovalDecision", { isOptional: true }),
|
|
53
|
+
decisionComment: field.string({
|
|
54
|
+
isOptional: true,
|
|
55
|
+
description: "Comment explaining decision"
|
|
56
|
+
}),
|
|
57
|
+
decidedAt: field.dateTime({ isOptional: true }),
|
|
58
|
+
delegatedTo: field.string({
|
|
59
|
+
isOptional: true,
|
|
60
|
+
description: "User delegated to"
|
|
61
|
+
}),
|
|
62
|
+
delegationReason: field.string({ isOptional: true }),
|
|
63
|
+
escalationLevel: field.int({
|
|
64
|
+
default: 0,
|
|
65
|
+
description: "Current escalation level"
|
|
66
|
+
}),
|
|
67
|
+
escalatedAt: field.dateTime({ isOptional: true }),
|
|
68
|
+
dueAt: field.dateTime({
|
|
69
|
+
isOptional: true,
|
|
70
|
+
description: "When approval is due"
|
|
71
|
+
}),
|
|
72
|
+
reminderSentAt: field.dateTime({ isOptional: true }),
|
|
73
|
+
contextSnapshot: field.json({
|
|
74
|
+
isOptional: true,
|
|
75
|
+
description: "Snapshot of relevant data for review"
|
|
76
|
+
}),
|
|
77
|
+
sequenceOrder: field.int({
|
|
78
|
+
default: 0,
|
|
79
|
+
description: "Order in approval chain"
|
|
80
|
+
}),
|
|
81
|
+
createdAt: field.createdAt(),
|
|
82
|
+
updatedAt: field.updatedAt(),
|
|
83
|
+
workflowInstance: field.belongsTo("WorkflowInstance", ["workflowInstanceId"], ["id"], { onDelete: "Cascade" }),
|
|
84
|
+
stepExecution: field.belongsTo("StepExecution", ["stepExecutionId"], ["id"])
|
|
85
|
+
},
|
|
86
|
+
indexes: [
|
|
87
|
+
index.on(["approverId", "status"]),
|
|
88
|
+
index.on(["workflowInstanceId", "status"]),
|
|
89
|
+
index.on(["stepExecutionId"]),
|
|
90
|
+
index.on(["status", "dueAt"]),
|
|
91
|
+
index.on(["createdAt"])
|
|
92
|
+
],
|
|
93
|
+
enums: [ApprovalStatusEnum, ApprovalDecisionEnum]
|
|
101
94
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
approvalRequest: field.belongsTo("ApprovalRequest", ["approvalRequestId"], ["id"], { onDelete: "Cascade" })
|
|
122
|
-
},
|
|
123
|
-
indexes: [index.on(["approvalRequestId", "createdAt"])]
|
|
95
|
+
var ApprovalCommentEntity = defineEntity({
|
|
96
|
+
name: "ApprovalComment",
|
|
97
|
+
description: "A comment on an approval request.",
|
|
98
|
+
schema: "workflow",
|
|
99
|
+
map: "approval_comment",
|
|
100
|
+
fields: {
|
|
101
|
+
id: field.id(),
|
|
102
|
+
approvalRequestId: field.foreignKey(),
|
|
103
|
+
authorId: field.foreignKey(),
|
|
104
|
+
content: field.string({ description: "Comment text" }),
|
|
105
|
+
isInternal: field.boolean({
|
|
106
|
+
default: false,
|
|
107
|
+
description: "Internal note vs public comment"
|
|
108
|
+
}),
|
|
109
|
+
createdAt: field.createdAt(),
|
|
110
|
+
updatedAt: field.updatedAt(),
|
|
111
|
+
approvalRequest: field.belongsTo("ApprovalRequest", ["approvalRequestId"], ["id"], { onDelete: "Cascade" })
|
|
112
|
+
},
|
|
113
|
+
indexes: [index.on(["approvalRequestId", "createdAt"])]
|
|
124
114
|
});
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
115
|
+
export {
|
|
116
|
+
ApprovalStatusEnum,
|
|
117
|
+
ApprovalRequestEntity,
|
|
118
|
+
ApprovalDecisionEnum,
|
|
119
|
+
ApprovalCommentEntity
|
|
120
|
+
};
|