@nahisaho/musubix-workflow-engine 2.4.2
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/application/PhaseController.d.ts +110 -0
- package/dist/application/PhaseController.d.ts.map +1 -0
- package/dist/application/PhaseController.js +272 -0
- package/dist/application/PhaseController.js.map +1 -0
- package/dist/application/QualityGateRunner.d.ts +97 -0
- package/dist/application/QualityGateRunner.d.ts.map +1 -0
- package/dist/application/QualityGateRunner.js +234 -0
- package/dist/application/QualityGateRunner.js.map +1 -0
- package/dist/application/StateTracker.d.ts +119 -0
- package/dist/application/StateTracker.d.ts.map +1 -0
- package/dist/application/StateTracker.js +192 -0
- package/dist/application/StateTracker.js.map +1 -0
- package/dist/application/index.d.ts +11 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +11 -0
- package/dist/application/index.js.map +1 -0
- package/dist/domain/entities/Phase.d.ts +125 -0
- package/dist/domain/entities/Phase.d.ts.map +1 -0
- package/dist/domain/entities/Phase.js +146 -0
- package/dist/domain/entities/Phase.js.map +1 -0
- package/dist/domain/entities/QualityGate.d.ts +85 -0
- package/dist/domain/entities/QualityGate.d.ts.map +1 -0
- package/dist/domain/entities/QualityGate.js +117 -0
- package/dist/domain/entities/QualityGate.js.map +1 -0
- package/dist/domain/entities/Workflow.d.ts +90 -0
- package/dist/domain/entities/Workflow.d.ts.map +1 -0
- package/dist/domain/entities/Workflow.js +174 -0
- package/dist/domain/entities/Workflow.js.map +1 -0
- package/dist/domain/entities/index.d.ts +11 -0
- package/dist/domain/entities/index.d.ts.map +1 -0
- package/dist/domain/entities/index.js +11 -0
- package/dist/domain/entities/index.js.map +1 -0
- package/dist/domain/events/PhaseTransitioned.d.ts +37 -0
- package/dist/domain/events/PhaseTransitioned.d.ts.map +1 -0
- package/dist/domain/events/PhaseTransitioned.js +38 -0
- package/dist/domain/events/PhaseTransitioned.js.map +1 -0
- package/dist/domain/events/QualityGatePassed.d.ts +63 -0
- package/dist/domain/events/QualityGatePassed.d.ts.map +1 -0
- package/dist/domain/events/QualityGatePassed.js +68 -0
- package/dist/domain/events/QualityGatePassed.js.map +1 -0
- package/dist/domain/events/index.d.ts +13 -0
- package/dist/domain/events/index.d.ts.map +1 -0
- package/dist/domain/events/index.js +9 -0
- package/dist/domain/events/index.js.map +1 -0
- package/dist/domain/index.d.ts +11 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +14 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/value-objects/ApprovalStatus.d.ts +69 -0
- package/dist/domain/value-objects/ApprovalStatus.d.ts.map +1 -0
- package/dist/domain/value-objects/ApprovalStatus.js +105 -0
- package/dist/domain/value-objects/ApprovalStatus.js.map +1 -0
- package/dist/domain/value-objects/PhaseType.d.ts +66 -0
- package/dist/domain/value-objects/PhaseType.d.ts.map +1 -0
- package/dist/domain/value-objects/PhaseType.js +105 -0
- package/dist/domain/value-objects/PhaseType.js.map +1 -0
- package/dist/domain/value-objects/TaskStatus.d.ts +59 -0
- package/dist/domain/value-objects/TaskStatus.d.ts.map +1 -0
- package/dist/domain/value-objects/TaskStatus.js +90 -0
- package/dist/domain/value-objects/TaskStatus.js.map +1 -0
- package/dist/domain/value-objects/index.d.ts +11 -0
- package/dist/domain/value-objects/index.d.ts.map +1 -0
- package/dist/domain/value-objects/index.js +11 -0
- package/dist/domain/value-objects/index.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents a workflow phase with its state and artifacts
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-ORCH-001 - Phase Transition
|
|
7
|
+
* @see DES-ORCH-001 - PhaseController
|
|
8
|
+
*/
|
|
9
|
+
import { type PhaseType, type Approval } from '../value-objects/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Phase artifact types
|
|
12
|
+
*/
|
|
13
|
+
export type ArtifactType = 'requirements' | 'design' | 'task-breakdown' | 'implementation' | 'test' | 'documentation';
|
|
14
|
+
/**
|
|
15
|
+
* Phase artifact
|
|
16
|
+
*/
|
|
17
|
+
export interface PhaseArtifact {
|
|
18
|
+
readonly type: ArtifactType;
|
|
19
|
+
readonly path: string;
|
|
20
|
+
readonly content?: string;
|
|
21
|
+
readonly createdAt: Date;
|
|
22
|
+
readonly updatedAt: Date;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Review result
|
|
26
|
+
*/
|
|
27
|
+
export interface ReviewResult {
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly phase: PhaseType;
|
|
30
|
+
readonly checkpoints: ReviewCheckpoint[];
|
|
31
|
+
readonly overall: 'pass' | 'warning' | 'fail';
|
|
32
|
+
readonly timestamp: Date;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Review checkpoint
|
|
36
|
+
*/
|
|
37
|
+
export interface ReviewCheckpoint {
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly status: '✅' | '⚠️' | '❌';
|
|
40
|
+
readonly details: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Phase entity
|
|
44
|
+
*/
|
|
45
|
+
export interface Phase {
|
|
46
|
+
readonly type: PhaseType;
|
|
47
|
+
readonly status: 'pending' | 'in-progress' | 'completed' | 'approved';
|
|
48
|
+
readonly artifacts: PhaseArtifact[];
|
|
49
|
+
readonly review?: ReviewResult;
|
|
50
|
+
readonly approval?: Approval;
|
|
51
|
+
readonly startedAt?: Date;
|
|
52
|
+
readonly completedAt?: Date;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a new phase
|
|
56
|
+
*
|
|
57
|
+
* @param type - Phase type
|
|
58
|
+
* @returns New phase entity
|
|
59
|
+
*/
|
|
60
|
+
export declare function createPhase(type: PhaseType): Phase;
|
|
61
|
+
/**
|
|
62
|
+
* Start a phase
|
|
63
|
+
*
|
|
64
|
+
* @param phase - Phase to start
|
|
65
|
+
* @returns Updated phase
|
|
66
|
+
*/
|
|
67
|
+
export declare function startPhase(phase: Phase): Phase;
|
|
68
|
+
/**
|
|
69
|
+
* Add artifact to phase
|
|
70
|
+
*
|
|
71
|
+
* @param phase - Phase to update
|
|
72
|
+
* @param artifact - Artifact to add
|
|
73
|
+
* @returns Updated phase
|
|
74
|
+
*/
|
|
75
|
+
export declare function addArtifact(phase: Phase, artifact: PhaseArtifact): Phase;
|
|
76
|
+
/**
|
|
77
|
+
* Set review result
|
|
78
|
+
*
|
|
79
|
+
* @param phase - Phase to update
|
|
80
|
+
* @param review - Review result
|
|
81
|
+
* @returns Updated phase
|
|
82
|
+
*/
|
|
83
|
+
export declare function setReview(phase: Phase, review: ReviewResult): Phase;
|
|
84
|
+
/**
|
|
85
|
+
* Approve phase
|
|
86
|
+
*
|
|
87
|
+
* @param phase - Phase to approve
|
|
88
|
+
* @param approver - Approver identifier
|
|
89
|
+
* @param comment - Optional comment
|
|
90
|
+
* @returns Updated phase
|
|
91
|
+
*/
|
|
92
|
+
export declare function approvePhase(phase: Phase, approver: string, comment?: string): Phase;
|
|
93
|
+
/**
|
|
94
|
+
* Check if phase can transition to target
|
|
95
|
+
*
|
|
96
|
+
* @param phase - Current phase
|
|
97
|
+
* @param targetType - Target phase type
|
|
98
|
+
* @returns true if transition is allowed
|
|
99
|
+
*/
|
|
100
|
+
export declare function canTransitionTo(phase: Phase, targetType: PhaseType): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get phase display name
|
|
103
|
+
*
|
|
104
|
+
* @param phase - Phase entity
|
|
105
|
+
* @returns Display name
|
|
106
|
+
*/
|
|
107
|
+
export declare function getPhaseDisplayName(phase: Phase): string;
|
|
108
|
+
/**
|
|
109
|
+
* Create artifact
|
|
110
|
+
*
|
|
111
|
+
* @param type - Artifact type
|
|
112
|
+
* @param path - File path
|
|
113
|
+
* @param content - Optional content
|
|
114
|
+
* @returns PhaseArtifact
|
|
115
|
+
*/
|
|
116
|
+
export declare function createArtifact(type: ArtifactType, path: string, content?: string): PhaseArtifact;
|
|
117
|
+
/**
|
|
118
|
+
* Create review result
|
|
119
|
+
*
|
|
120
|
+
* @param phase - Phase type
|
|
121
|
+
* @param checkpoints - Review checkpoints
|
|
122
|
+
* @returns ReviewResult
|
|
123
|
+
*/
|
|
124
|
+
export declare function createReviewResult(phase: PhaseType, checkpoints: ReviewCheckpoint[]): ReviewResult;
|
|
125
|
+
//# sourceMappingURL=Phase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Phase.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Phase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,QAAQ,EAKd,MAAM,2BAA2B,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,MAAM,GACN,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;IACtE,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAMlD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAS9C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAKxE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,CAOnE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAiBpF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAQ5E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,CASf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,gBAAgB,EAAE,GAC9B,YAAY,CAWd"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents a workflow phase with its state and artifacts
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-ORCH-001 - Phase Transition
|
|
7
|
+
* @see DES-ORCH-001 - PhaseController
|
|
8
|
+
*/
|
|
9
|
+
import { getPhaseMetadata, isValidTransition, createApproval, generateApprovalId, } from '../value-objects/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a new phase
|
|
12
|
+
*
|
|
13
|
+
* @param type - Phase type
|
|
14
|
+
* @returns New phase entity
|
|
15
|
+
*/
|
|
16
|
+
export function createPhase(type) {
|
|
17
|
+
return Object.freeze({
|
|
18
|
+
type,
|
|
19
|
+
status: 'pending',
|
|
20
|
+
artifacts: [],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Start a phase
|
|
25
|
+
*
|
|
26
|
+
* @param phase - Phase to start
|
|
27
|
+
* @returns Updated phase
|
|
28
|
+
*/
|
|
29
|
+
export function startPhase(phase) {
|
|
30
|
+
if (phase.status !== 'pending') {
|
|
31
|
+
throw new Error(`Cannot start phase in status: ${phase.status}`);
|
|
32
|
+
}
|
|
33
|
+
return Object.freeze({
|
|
34
|
+
...phase,
|
|
35
|
+
status: 'in-progress',
|
|
36
|
+
startedAt: new Date(),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Add artifact to phase
|
|
41
|
+
*
|
|
42
|
+
* @param phase - Phase to update
|
|
43
|
+
* @param artifact - Artifact to add
|
|
44
|
+
* @returns Updated phase
|
|
45
|
+
*/
|
|
46
|
+
export function addArtifact(phase, artifact) {
|
|
47
|
+
return Object.freeze({
|
|
48
|
+
...phase,
|
|
49
|
+
artifacts: [...phase.artifacts, artifact],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Set review result
|
|
54
|
+
*
|
|
55
|
+
* @param phase - Phase to update
|
|
56
|
+
* @param review - Review result
|
|
57
|
+
* @returns Updated phase
|
|
58
|
+
*/
|
|
59
|
+
export function setReview(phase, review) {
|
|
60
|
+
return Object.freeze({
|
|
61
|
+
...phase,
|
|
62
|
+
review,
|
|
63
|
+
status: review.overall === 'pass' ? 'completed' : 'in-progress',
|
|
64
|
+
completedAt: review.overall === 'pass' ? new Date() : undefined,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Approve phase
|
|
69
|
+
*
|
|
70
|
+
* @param phase - Phase to approve
|
|
71
|
+
* @param approver - Approver identifier
|
|
72
|
+
* @param comment - Optional comment
|
|
73
|
+
* @returns Updated phase
|
|
74
|
+
*/
|
|
75
|
+
export function approvePhase(phase, approver, comment) {
|
|
76
|
+
if (phase.status !== 'completed') {
|
|
77
|
+
throw new Error(`Cannot approve phase in status: ${phase.status}`);
|
|
78
|
+
}
|
|
79
|
+
const approval = createApproval(generateApprovalId(phase.type), 'approved', approver, comment);
|
|
80
|
+
return Object.freeze({
|
|
81
|
+
...phase,
|
|
82
|
+
status: 'approved',
|
|
83
|
+
approval,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if phase can transition to target
|
|
88
|
+
*
|
|
89
|
+
* @param phase - Current phase
|
|
90
|
+
* @param targetType - Target phase type
|
|
91
|
+
* @returns true if transition is allowed
|
|
92
|
+
*/
|
|
93
|
+
export function canTransitionTo(phase, targetType) {
|
|
94
|
+
// Must be approved to transition
|
|
95
|
+
if (phase.status !== 'approved') {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
// Check valid transition
|
|
99
|
+
return isValidTransition(phase.type, targetType);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get phase display name
|
|
103
|
+
*
|
|
104
|
+
* @param phase - Phase entity
|
|
105
|
+
* @returns Display name
|
|
106
|
+
*/
|
|
107
|
+
export function getPhaseDisplayName(phase) {
|
|
108
|
+
return getPhaseMetadata(phase.type).label;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Create artifact
|
|
112
|
+
*
|
|
113
|
+
* @param type - Artifact type
|
|
114
|
+
* @param path - File path
|
|
115
|
+
* @param content - Optional content
|
|
116
|
+
* @returns PhaseArtifact
|
|
117
|
+
*/
|
|
118
|
+
export function createArtifact(type, path, content) {
|
|
119
|
+
const now = new Date();
|
|
120
|
+
return Object.freeze({
|
|
121
|
+
type,
|
|
122
|
+
path,
|
|
123
|
+
content,
|
|
124
|
+
createdAt: now,
|
|
125
|
+
updatedAt: now,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Create review result
|
|
130
|
+
*
|
|
131
|
+
* @param phase - Phase type
|
|
132
|
+
* @param checkpoints - Review checkpoints
|
|
133
|
+
* @returns ReviewResult
|
|
134
|
+
*/
|
|
135
|
+
export function createReviewResult(phase, checkpoints) {
|
|
136
|
+
const hasFailure = checkpoints.some(c => c.status === '❌');
|
|
137
|
+
const hasWarning = checkpoints.some(c => c.status === '⚠️');
|
|
138
|
+
return Object.freeze({
|
|
139
|
+
id: `REV-${phase.toUpperCase()}-${Date.now().toString(36)}`,
|
|
140
|
+
phase,
|
|
141
|
+
checkpoints,
|
|
142
|
+
overall: hasFailure ? 'fail' : (hasWarning ? 'warning' : 'pass'),
|
|
143
|
+
timestamp: new Date(),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=Phase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Phase.js","sourceRoot":"","sources":["../../../src/domain/entities/Phase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QualityGate Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents a quality gate that must pass before phase transition
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-ORCH-003 - Quality Gate Integration
|
|
7
|
+
* @see DES-ORCH-003 - QualityGateRunner
|
|
8
|
+
*/
|
|
9
|
+
import type { PhaseType } from '../value-objects/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Quality gate check function type
|
|
12
|
+
*/
|
|
13
|
+
export type QualityCheckFn = () => Promise<QualityCheckResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Quality check result
|
|
16
|
+
*/
|
|
17
|
+
export interface QualityCheckResult {
|
|
18
|
+
readonly passed: boolean;
|
|
19
|
+
readonly message: string;
|
|
20
|
+
readonly details?: string;
|
|
21
|
+
readonly severity: 'error' | 'warning' | 'info';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Quality gate definition
|
|
25
|
+
*/
|
|
26
|
+
export interface QualityGate {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly phase: PhaseType;
|
|
30
|
+
readonly description: string;
|
|
31
|
+
readonly mandatory: boolean;
|
|
32
|
+
readonly check: QualityCheckFn;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Quality gate execution result
|
|
36
|
+
*/
|
|
37
|
+
export interface QualityGateResult {
|
|
38
|
+
readonly gateId: string;
|
|
39
|
+
readonly gateName: string;
|
|
40
|
+
readonly results: QualityCheckResult[];
|
|
41
|
+
readonly passed: boolean;
|
|
42
|
+
readonly executedAt: Date;
|
|
43
|
+
readonly duration: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a quality gate
|
|
47
|
+
*
|
|
48
|
+
* @param params - Gate parameters
|
|
49
|
+
* @returns QualityGate
|
|
50
|
+
*/
|
|
51
|
+
export declare function createQualityGate(params: {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
phase: PhaseType;
|
|
55
|
+
description: string;
|
|
56
|
+
mandatory?: boolean;
|
|
57
|
+
check: QualityCheckFn;
|
|
58
|
+
}): QualityGate;
|
|
59
|
+
/**
|
|
60
|
+
* Execute a quality gate
|
|
61
|
+
*
|
|
62
|
+
* @param gate - Quality gate to execute
|
|
63
|
+
* @returns Execution result
|
|
64
|
+
*/
|
|
65
|
+
export declare function executeQualityGate(gate: QualityGate): Promise<QualityGateResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Aggregate quality gate results
|
|
68
|
+
*
|
|
69
|
+
* @param results - Array of gate results
|
|
70
|
+
* @returns Aggregated status
|
|
71
|
+
*/
|
|
72
|
+
export declare function aggregateGateResults(results: QualityGateResult[]): {
|
|
73
|
+
allPassed: boolean;
|
|
74
|
+
mandatoryPassed: boolean;
|
|
75
|
+
summary: string;
|
|
76
|
+
};
|
|
77
|
+
export declare const PHASE_QUALITY_GATES: ReadonlyMap<PhaseType, readonly string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Get quality gate checks for a phase
|
|
80
|
+
*
|
|
81
|
+
* @param phase - Phase type
|
|
82
|
+
* @returns Gate check names
|
|
83
|
+
*/
|
|
84
|
+
export declare function getPhaseGateChecks(phase: PhaseType): readonly string[];
|
|
85
|
+
//# sourceMappingURL=QualityGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QualityGate.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/QualityGate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;CACvB,GAAG,WAAW,CASd;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgCtF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAaA;AAGD,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CA0BxE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAEtE"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QualityGate Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents a quality gate that must pass before phase transition
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-ORCH-003 - Quality Gate Integration
|
|
7
|
+
* @see DES-ORCH-003 - QualityGateRunner
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Create a quality gate
|
|
11
|
+
*
|
|
12
|
+
* @param params - Gate parameters
|
|
13
|
+
* @returns QualityGate
|
|
14
|
+
*/
|
|
15
|
+
export function createQualityGate(params) {
|
|
16
|
+
return Object.freeze({
|
|
17
|
+
id: params.id,
|
|
18
|
+
name: params.name,
|
|
19
|
+
phase: params.phase,
|
|
20
|
+
description: params.description,
|
|
21
|
+
mandatory: params.mandatory ?? true,
|
|
22
|
+
check: params.check,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Execute a quality gate
|
|
27
|
+
*
|
|
28
|
+
* @param gate - Quality gate to execute
|
|
29
|
+
* @returns Execution result
|
|
30
|
+
*/
|
|
31
|
+
export async function executeQualityGate(gate) {
|
|
32
|
+
const startTime = Date.now();
|
|
33
|
+
try {
|
|
34
|
+
const result = await gate.check();
|
|
35
|
+
const duration = Date.now() - startTime;
|
|
36
|
+
return Object.freeze({
|
|
37
|
+
gateId: gate.id,
|
|
38
|
+
gateName: gate.name,
|
|
39
|
+
results: [result],
|
|
40
|
+
passed: result.passed,
|
|
41
|
+
executedAt: new Date(),
|
|
42
|
+
duration,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const duration = Date.now() - startTime;
|
|
47
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
48
|
+
return Object.freeze({
|
|
49
|
+
gateId: gate.id,
|
|
50
|
+
gateName: gate.name,
|
|
51
|
+
results: [{
|
|
52
|
+
passed: false,
|
|
53
|
+
message: `Gate execution failed: ${errorMessage}`,
|
|
54
|
+
severity: 'error',
|
|
55
|
+
}],
|
|
56
|
+
passed: false,
|
|
57
|
+
executedAt: new Date(),
|
|
58
|
+
duration,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Aggregate quality gate results
|
|
64
|
+
*
|
|
65
|
+
* @param results - Array of gate results
|
|
66
|
+
* @returns Aggregated status
|
|
67
|
+
*/
|
|
68
|
+
export function aggregateGateResults(results) {
|
|
69
|
+
const mandatoryResults = results; // All results are from mandatory gates
|
|
70
|
+
const allPassed = results.every(r => r.passed);
|
|
71
|
+
const mandatoryPassed = mandatoryResults.every(r => r.passed);
|
|
72
|
+
const passedCount = results.filter(r => r.passed).length;
|
|
73
|
+
const summary = `${passedCount}/${results.length} gates passed`;
|
|
74
|
+
return {
|
|
75
|
+
allPassed,
|
|
76
|
+
mandatoryPassed,
|
|
77
|
+
summary,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Pre-defined quality gates for each phase
|
|
81
|
+
export const PHASE_QUALITY_GATES = new Map([
|
|
82
|
+
['requirements', [
|
|
83
|
+
'EARS形式の検証',
|
|
84
|
+
'優先度設定の確認',
|
|
85
|
+
'既存要件との整合性',
|
|
86
|
+
]],
|
|
87
|
+
['design', [
|
|
88
|
+
'トレーサビリティ (REQ → DES)',
|
|
89
|
+
'型整合性',
|
|
90
|
+
'設計パターン適用',
|
|
91
|
+
]],
|
|
92
|
+
['task-breakdown', [
|
|
93
|
+
'トレーサビリティ (DES → TSK)',
|
|
94
|
+
'タスクサイズの適切性',
|
|
95
|
+
'依存関係の妥当性',
|
|
96
|
+
]],
|
|
97
|
+
['implementation', [
|
|
98
|
+
'ユニットテスト合格',
|
|
99
|
+
'型チェック合格',
|
|
100
|
+
'リントエラーなし',
|
|
101
|
+
]],
|
|
102
|
+
['completion', [
|
|
103
|
+
'CHANGELOG更新',
|
|
104
|
+
'ドキュメント更新',
|
|
105
|
+
'コミット準備完了',
|
|
106
|
+
]],
|
|
107
|
+
]);
|
|
108
|
+
/**
|
|
109
|
+
* Get quality gate checks for a phase
|
|
110
|
+
*
|
|
111
|
+
* @param phase - Phase type
|
|
112
|
+
* @returns Gate check names
|
|
113
|
+
*/
|
|
114
|
+
export function getPhaseGateChecks(phase) {
|
|
115
|
+
return PHASE_QUALITY_GATES.get(phase) ?? [];
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=QualityGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QualityGate.js","sourceRoot":"","sources":["../../../src/domain/entities/QualityGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Entity
|
|
3
|
+
*
|
|
4
|
+
* Represents the complete workflow state
|
|
5
|
+
*
|
|
6
|
+
* @see REQ-ORCH-001 - Phase Transition
|
|
7
|
+
* @see REQ-ORCH-002 - State Tracking
|
|
8
|
+
*/
|
|
9
|
+
import type { PhaseType } from '../value-objects/index.js';
|
|
10
|
+
import { type Phase } from './Phase.js';
|
|
11
|
+
/**
|
|
12
|
+
* Workflow status
|
|
13
|
+
*/
|
|
14
|
+
export type WorkflowStatus = 'not-started' | 'in-progress' | 'completed' | 'failed';
|
|
15
|
+
/**
|
|
16
|
+
* Workflow entity
|
|
17
|
+
*/
|
|
18
|
+
export interface Workflow {
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly name: string;
|
|
21
|
+
readonly description?: string;
|
|
22
|
+
readonly status: WorkflowStatus;
|
|
23
|
+
readonly currentPhase: PhaseType | null;
|
|
24
|
+
readonly phases: ReadonlyMap<PhaseType, Phase>;
|
|
25
|
+
readonly createdAt: Date;
|
|
26
|
+
readonly updatedAt: Date;
|
|
27
|
+
readonly completedAt?: Date;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a new workflow
|
|
31
|
+
*
|
|
32
|
+
* @param id - Workflow ID
|
|
33
|
+
* @param name - Workflow name
|
|
34
|
+
* @param description - Optional description
|
|
35
|
+
* @returns New workflow
|
|
36
|
+
*/
|
|
37
|
+
export declare function createWorkflow(id: string, name: string, description?: string): Workflow;
|
|
38
|
+
/**
|
|
39
|
+
* Start workflow (begins with requirements phase)
|
|
40
|
+
*
|
|
41
|
+
* @param workflow - Workflow to start
|
|
42
|
+
* @returns Updated workflow
|
|
43
|
+
*/
|
|
44
|
+
export declare function startWorkflow(workflow: Workflow): Workflow;
|
|
45
|
+
/**
|
|
46
|
+
* Update phase in workflow
|
|
47
|
+
*
|
|
48
|
+
* @param workflow - Workflow to update
|
|
49
|
+
* @param phase - Updated phase
|
|
50
|
+
* @returns Updated workflow
|
|
51
|
+
*/
|
|
52
|
+
export declare function updatePhase(workflow: Workflow, phase: Phase): Workflow;
|
|
53
|
+
/**
|
|
54
|
+
* Transition to next phase
|
|
55
|
+
*
|
|
56
|
+
* @param workflow - Current workflow
|
|
57
|
+
* @param targetPhase - Target phase
|
|
58
|
+
* @returns Updated workflow
|
|
59
|
+
* @throws Error if transition is invalid
|
|
60
|
+
*/
|
|
61
|
+
export declare function transitionToPhase(workflow: Workflow, targetPhase: PhaseType): Workflow;
|
|
62
|
+
/**
|
|
63
|
+
* Get current phase entity
|
|
64
|
+
*
|
|
65
|
+
* @param workflow - Workflow
|
|
66
|
+
* @returns Current phase or null
|
|
67
|
+
*/
|
|
68
|
+
export declare function getCurrentPhase(workflow: Workflow): Phase | null;
|
|
69
|
+
/**
|
|
70
|
+
* Get workflow progress percentage
|
|
71
|
+
*
|
|
72
|
+
* @param workflow - Workflow
|
|
73
|
+
* @returns Progress 0-100
|
|
74
|
+
*/
|
|
75
|
+
export declare function getWorkflowProgress(workflow: Workflow): number;
|
|
76
|
+
/**
|
|
77
|
+
* Generate workflow ID
|
|
78
|
+
*
|
|
79
|
+
* @param name - Workflow name (optional)
|
|
80
|
+
* @returns Workflow ID
|
|
81
|
+
*/
|
|
82
|
+
export declare function generateWorkflowId(name?: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Check if workflow can proceed to implementation
|
|
85
|
+
*
|
|
86
|
+
* @param workflow - Workflow to check
|
|
87
|
+
* @returns true if can proceed
|
|
88
|
+
*/
|
|
89
|
+
export declare function canProceedToImplementation(workflow: Workflow): boolean;
|
|
90
|
+
//# sourceMappingURL=Workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Workflow.d.ts","sourceRoot":"","sources":["../../../src/domain/entities/Workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,KAAK,KAAK,EAIX,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,QAAQ,CAmBV;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAsB1D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAStE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,GAAG,QAAQ,CA+CtF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAKhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAW9D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAItE"}
|