@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.
Files changed (69) hide show
  1. package/dist/application/PhaseController.d.ts +110 -0
  2. package/dist/application/PhaseController.d.ts.map +1 -0
  3. package/dist/application/PhaseController.js +272 -0
  4. package/dist/application/PhaseController.js.map +1 -0
  5. package/dist/application/QualityGateRunner.d.ts +97 -0
  6. package/dist/application/QualityGateRunner.d.ts.map +1 -0
  7. package/dist/application/QualityGateRunner.js +234 -0
  8. package/dist/application/QualityGateRunner.js.map +1 -0
  9. package/dist/application/StateTracker.d.ts +119 -0
  10. package/dist/application/StateTracker.d.ts.map +1 -0
  11. package/dist/application/StateTracker.js +192 -0
  12. package/dist/application/StateTracker.js.map +1 -0
  13. package/dist/application/index.d.ts +11 -0
  14. package/dist/application/index.d.ts.map +1 -0
  15. package/dist/application/index.js +11 -0
  16. package/dist/application/index.js.map +1 -0
  17. package/dist/domain/entities/Phase.d.ts +125 -0
  18. package/dist/domain/entities/Phase.d.ts.map +1 -0
  19. package/dist/domain/entities/Phase.js +146 -0
  20. package/dist/domain/entities/Phase.js.map +1 -0
  21. package/dist/domain/entities/QualityGate.d.ts +85 -0
  22. package/dist/domain/entities/QualityGate.d.ts.map +1 -0
  23. package/dist/domain/entities/QualityGate.js +117 -0
  24. package/dist/domain/entities/QualityGate.js.map +1 -0
  25. package/dist/domain/entities/Workflow.d.ts +90 -0
  26. package/dist/domain/entities/Workflow.d.ts.map +1 -0
  27. package/dist/domain/entities/Workflow.js +174 -0
  28. package/dist/domain/entities/Workflow.js.map +1 -0
  29. package/dist/domain/entities/index.d.ts +11 -0
  30. package/dist/domain/entities/index.d.ts.map +1 -0
  31. package/dist/domain/entities/index.js +11 -0
  32. package/dist/domain/entities/index.js.map +1 -0
  33. package/dist/domain/events/PhaseTransitioned.d.ts +37 -0
  34. package/dist/domain/events/PhaseTransitioned.d.ts.map +1 -0
  35. package/dist/domain/events/PhaseTransitioned.js +38 -0
  36. package/dist/domain/events/PhaseTransitioned.js.map +1 -0
  37. package/dist/domain/events/QualityGatePassed.d.ts +63 -0
  38. package/dist/domain/events/QualityGatePassed.d.ts.map +1 -0
  39. package/dist/domain/events/QualityGatePassed.js +68 -0
  40. package/dist/domain/events/QualityGatePassed.js.map +1 -0
  41. package/dist/domain/events/index.d.ts +13 -0
  42. package/dist/domain/events/index.d.ts.map +1 -0
  43. package/dist/domain/events/index.js +9 -0
  44. package/dist/domain/events/index.js.map +1 -0
  45. package/dist/domain/index.d.ts +11 -0
  46. package/dist/domain/index.d.ts.map +1 -0
  47. package/dist/domain/index.js +14 -0
  48. package/dist/domain/index.js.map +1 -0
  49. package/dist/domain/value-objects/ApprovalStatus.d.ts +69 -0
  50. package/dist/domain/value-objects/ApprovalStatus.d.ts.map +1 -0
  51. package/dist/domain/value-objects/ApprovalStatus.js +105 -0
  52. package/dist/domain/value-objects/ApprovalStatus.js.map +1 -0
  53. package/dist/domain/value-objects/PhaseType.d.ts +66 -0
  54. package/dist/domain/value-objects/PhaseType.d.ts.map +1 -0
  55. package/dist/domain/value-objects/PhaseType.js +105 -0
  56. package/dist/domain/value-objects/PhaseType.js.map +1 -0
  57. package/dist/domain/value-objects/TaskStatus.d.ts +59 -0
  58. package/dist/domain/value-objects/TaskStatus.d.ts.map +1 -0
  59. package/dist/domain/value-objects/TaskStatus.js +90 -0
  60. package/dist/domain/value-objects/TaskStatus.js.map +1 -0
  61. package/dist/domain/value-objects/index.d.ts +11 -0
  62. package/dist/domain/value-objects/index.d.ts.map +1 -0
  63. package/dist/domain/value-objects/index.js +11 -0
  64. package/dist/domain/value-objects/index.js.map +1 -0
  65. package/dist/index.d.ts +20 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +20 -0
  68. package/dist/index.js.map +1 -0
  69. package/package.json +57 -0
@@ -0,0 +1,105 @@
1
+ /**
2
+ * ApprovalStatus Value Object
3
+ *
4
+ * Represents the approval status for phase transitions
5
+ *
6
+ * @see REQ-ORCH-003 - Quality Gate Integration
7
+ * @see DES-ORCH-003 - QualityGateRunner
8
+ */
9
+ /**
10
+ * Approval keywords that indicate user approval
11
+ */
12
+ export const APPROVAL_KEYWORDS = [
13
+ '承認',
14
+ 'approve',
15
+ 'approved',
16
+ 'LGTM',
17
+ '進める',
18
+ 'OK',
19
+ 'ok',
20
+ 'Yes',
21
+ 'yes',
22
+ '実装',
23
+ 'proceed',
24
+ ];
25
+ /**
26
+ * Rejection keywords
27
+ */
28
+ export const REJECTION_KEYWORDS = [
29
+ '修正',
30
+ 'reject',
31
+ 'rejected',
32
+ 'no',
33
+ 'No',
34
+ 'やり直し',
35
+ 'fix',
36
+ ];
37
+ /**
38
+ * Create an approval
39
+ *
40
+ * @param id - Approval ID
41
+ * @param status - Approval status
42
+ * @param approver - Approver identifier
43
+ * @param comment - Optional comment
44
+ * @returns Approval entity
45
+ */
46
+ export function createApproval(id, status, approver, comment) {
47
+ return Object.freeze({
48
+ id,
49
+ status,
50
+ approver,
51
+ comment,
52
+ timestamp: new Date(),
53
+ });
54
+ }
55
+ /**
56
+ * Parse user input for approval status
57
+ *
58
+ * @param input - User input text
59
+ * @returns Detected approval status
60
+ */
61
+ export function parseApprovalFromInput(input) {
62
+ const normalized = input.trim().toLowerCase();
63
+ // Check for rejection first (修正 could be in a longer sentence)
64
+ for (const keyword of REJECTION_KEYWORDS) {
65
+ if (normalized.includes(keyword.toLowerCase())) {
66
+ return 'rejected';
67
+ }
68
+ }
69
+ // Check for approval
70
+ for (const keyword of APPROVAL_KEYWORDS) {
71
+ if (normalized.includes(keyword.toLowerCase())) {
72
+ return 'approved';
73
+ }
74
+ }
75
+ return 'pending';
76
+ }
77
+ /**
78
+ * Check if approval is granted
79
+ *
80
+ * @param approval - Approval to check
81
+ * @returns true if approved
82
+ */
83
+ export function isApproved(approval) {
84
+ return approval.status === 'approved';
85
+ }
86
+ /**
87
+ * Check if approval is rejected
88
+ *
89
+ * @param approval - Approval to check
90
+ * @returns true if rejected
91
+ */
92
+ export function isRejected(approval) {
93
+ return approval.status === 'rejected';
94
+ }
95
+ /**
96
+ * Generate approval ID
97
+ *
98
+ * @param phaseType - Phase type
99
+ * @returns Approval ID
100
+ */
101
+ export function generateApprovalId(phaseType) {
102
+ const timestamp = Date.now().toString(36);
103
+ return `APR-${phaseType.toUpperCase()}-${timestamp}`;
104
+ }
105
+ //# sourceMappingURL=ApprovalStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApprovalStatus.js","sourceRoot":"","sources":["../../../src/domain/value-objects/ApprovalStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,IAAI;IACJ,SAAS;IACT,UAAU;IACV,MAAM;IACN,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,SAAS;CACV,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,KAAK;CACN,CAAC;AAaF;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAU,EACV,MAAsB,EACtB,QAAgB,EAChB,OAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,MAAM;QACN,QAAQ;QACR,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE9C,+DAA+D;IAC/D,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/C,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,QAAkB;IAC3C,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,QAAkB;IAC3C,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,OAAO,OAAO,SAAS,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * PhaseType Value Object
3
+ *
4
+ * Represents the workflow phase type
5
+ *
6
+ * @see REQ-ORCH-001 - Phase Transition
7
+ * @see DES-ORCH-001 - PhaseController
8
+ */
9
+ /**
10
+ * Phase type enum
11
+ */
12
+ export type PhaseType = 'requirements' | 'design' | 'task-breakdown' | 'implementation' | 'completion';
13
+ /**
14
+ * Phase metadata
15
+ */
16
+ export interface PhaseMetadata {
17
+ readonly type: PhaseType;
18
+ readonly number: number;
19
+ readonly label: string;
20
+ readonly description: string;
21
+ }
22
+ /**
23
+ * Phase definitions
24
+ */
25
+ export declare const PHASES: ReadonlyMap<PhaseType, PhaseMetadata>;
26
+ /**
27
+ * Valid phase transitions
28
+ * NOTE: Phase 2 → Phase 4 direct transition is PROHIBITED
29
+ */
30
+ export declare const VALID_TRANSITIONS: ReadonlyMap<PhaseType, readonly PhaseType[]>;
31
+ /**
32
+ * Get phase metadata
33
+ *
34
+ * @param type - Phase type
35
+ * @returns Phase metadata
36
+ */
37
+ export declare function getPhaseMetadata(type: PhaseType): PhaseMetadata;
38
+ /**
39
+ * Get valid transitions from a phase
40
+ *
41
+ * @param from - Source phase
42
+ * @returns Valid target phases
43
+ */
44
+ export declare function getValidTransitions(from: PhaseType): readonly PhaseType[];
45
+ /**
46
+ * Check if transition is valid
47
+ *
48
+ * @param from - Source phase
49
+ * @param to - Target phase
50
+ * @returns true if valid
51
+ */
52
+ export declare function isValidTransition(from: PhaseType, to: PhaseType): boolean;
53
+ /**
54
+ * Get phase number
55
+ *
56
+ * @param type - Phase type
57
+ * @returns Phase number (1-5)
58
+ */
59
+ export declare function getPhaseNumber(type: PhaseType): number;
60
+ /**
61
+ * Get all phase types in order
62
+ *
63
+ * @returns Ordered phase types
64
+ */
65
+ export declare function getAllPhases(): PhaseType[];
66
+ //# sourceMappingURL=PhaseType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhaseType.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/PhaseType.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,QAAQ,GACR,gBAAgB,GAChB,gBAAgB,GAChB,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,aAAa,CA+BvD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAMzE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAEzE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAGzE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,SAAS,EAAE,CAE1C"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * PhaseType Value Object
3
+ *
4
+ * Represents the workflow phase type
5
+ *
6
+ * @see REQ-ORCH-001 - Phase Transition
7
+ * @see DES-ORCH-001 - PhaseController
8
+ */
9
+ /**
10
+ * Phase definitions
11
+ */
12
+ export const PHASES = new Map([
13
+ ['requirements', {
14
+ type: 'requirements',
15
+ number: 1,
16
+ label: 'Phase 1: 要件定義',
17
+ description: 'EARS形式で要件を定義',
18
+ }],
19
+ ['design', {
20
+ type: 'design',
21
+ number: 2,
22
+ label: 'Phase 2: 設計',
23
+ description: 'C4モデルで設計を作成',
24
+ }],
25
+ ['task-breakdown', {
26
+ type: 'task-breakdown',
27
+ number: 3,
28
+ label: 'Phase 3: タスク分解',
29
+ description: '設計からタスクを分解',
30
+ }],
31
+ ['implementation', {
32
+ type: 'implementation',
33
+ number: 4,
34
+ label: 'Phase 4: 実装',
35
+ description: 'タスクに基づいて実装',
36
+ }],
37
+ ['completion', {
38
+ type: 'completion',
39
+ number: 5,
40
+ label: 'Phase 5: 完了',
41
+ description: 'ドキュメント更新・コミット',
42
+ }],
43
+ ]);
44
+ /**
45
+ * Valid phase transitions
46
+ * NOTE: Phase 2 → Phase 4 direct transition is PROHIBITED
47
+ */
48
+ export const VALID_TRANSITIONS = new Map([
49
+ ['requirements', ['design']],
50
+ ['design', ['task-breakdown']], // Phase 2 can ONLY go to Phase 3
51
+ ['task-breakdown', ['implementation']], // Phase 3 → Phase 4
52
+ ['implementation', ['completion']],
53
+ ['completion', []],
54
+ ]);
55
+ /**
56
+ * Get phase metadata
57
+ *
58
+ * @param type - Phase type
59
+ * @returns Phase metadata
60
+ */
61
+ export function getPhaseMetadata(type) {
62
+ const metadata = PHASES.get(type);
63
+ if (!metadata) {
64
+ throw new Error(`Invalid phase type: ${type}`);
65
+ }
66
+ return metadata;
67
+ }
68
+ /**
69
+ * Get valid transitions from a phase
70
+ *
71
+ * @param from - Source phase
72
+ * @returns Valid target phases
73
+ */
74
+ export function getValidTransitions(from) {
75
+ return VALID_TRANSITIONS.get(from) ?? [];
76
+ }
77
+ /**
78
+ * Check if transition is valid
79
+ *
80
+ * @param from - Source phase
81
+ * @param to - Target phase
82
+ * @returns true if valid
83
+ */
84
+ export function isValidTransition(from, to) {
85
+ const validTargets = VALID_TRANSITIONS.get(from);
86
+ return validTargets?.includes(to) ?? false;
87
+ }
88
+ /**
89
+ * Get phase number
90
+ *
91
+ * @param type - Phase type
92
+ * @returns Phase number (1-5)
93
+ */
94
+ export function getPhaseNumber(type) {
95
+ return getPhaseMetadata(type).number;
96
+ }
97
+ /**
98
+ * Get all phase types in order
99
+ *
100
+ * @returns Ordered phase types
101
+ */
102
+ export function getAllPhases() {
103
+ return ['requirements', 'design', 'task-breakdown', 'implementation', 'completion'];
104
+ }
105
+ //# sourceMappingURL=PhaseType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhaseType.js","sourceRoot":"","sources":["../../../src/domain/value-objects/PhaseType.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAA0C,IAAI,GAAG,CAAC;IACnE,CAAC,cAAc,EAAE;YACf,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,cAAc;SAC5B,CAAC;IACF,CAAC,QAAQ,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,aAAa;SAC3B,CAAC;IACF,CAAC,gBAAgB,EAAE;YACjB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,gBAAgB;YACvB,WAAW,EAAE,YAAY;SAC1B,CAAC;IACF,CAAC,gBAAgB,EAAE;YACjB,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,YAAY;SAC1B,CAAC;IACF,CAAC,YAAY,EAAE;YACb,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,eAAe;SAC7B,CAAC;CACH,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiD,IAAI,GAAG,CAAC;IACrF,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAS,iCAAiC;IACxE,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,oBAAoB;IAC5D,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,YAAY,EAAE,EAAE,CAAC;CACnB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAe;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAe,EAAE,EAAa;IAC9D,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * TaskStatus Value Object
3
+ *
4
+ * Represents the status of a task in workflow
5
+ *
6
+ * @see REQ-ORCH-002 - State Tracking
7
+ * @see DES-ORCH-002 - StateTracker
8
+ */
9
+ /**
10
+ * Task status type
11
+ */
12
+ export type TaskStatus = 'not-started' | 'in-progress' | 'completed' | 'failed';
13
+ /**
14
+ * Status metadata
15
+ */
16
+ export interface StatusMetadata {
17
+ readonly status: TaskStatus;
18
+ readonly label: string;
19
+ readonly emoji: string;
20
+ readonly isTerminal: boolean;
21
+ }
22
+ /**
23
+ * Status definitions
24
+ */
25
+ export declare const STATUSES: ReadonlyMap<TaskStatus, StatusMetadata>;
26
+ /**
27
+ * Valid status transitions
28
+ */
29
+ export declare const VALID_STATUS_TRANSITIONS: ReadonlyMap<TaskStatus, readonly TaskStatus[]>;
30
+ /**
31
+ * Get status metadata
32
+ *
33
+ * @param status - Task status
34
+ * @returns Status metadata
35
+ */
36
+ export declare function getStatusMetadata(status: TaskStatus): StatusMetadata;
37
+ /**
38
+ * Check if status transition is valid
39
+ *
40
+ * @param from - Current status
41
+ * @param to - Target status
42
+ * @returns true if valid
43
+ */
44
+ export declare function isValidStatusTransition(from: TaskStatus, to: TaskStatus): boolean;
45
+ /**
46
+ * Check if status is terminal
47
+ *
48
+ * @param status - Task status
49
+ * @returns true if terminal
50
+ */
51
+ export declare function isTerminalStatus(status: TaskStatus): boolean;
52
+ /**
53
+ * Get status display string
54
+ *
55
+ * @param status - Task status
56
+ * @returns Display string with emoji
57
+ */
58
+ export declare function getStatusDisplay(status: TaskStatus): string;
59
+ //# sourceMappingURL=TaskStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStatus.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/TaskStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,WAAW,CAAC,UAAU,EAAE,cAAc,CAyB3D,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAKlF,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAMpE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,OAAO,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAG3D"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * TaskStatus Value Object
3
+ *
4
+ * Represents the status of a task in workflow
5
+ *
6
+ * @see REQ-ORCH-002 - State Tracking
7
+ * @see DES-ORCH-002 - StateTracker
8
+ */
9
+ /**
10
+ * Status definitions
11
+ */
12
+ export const STATUSES = new Map([
13
+ ['not-started', {
14
+ status: 'not-started',
15
+ label: '未開始',
16
+ emoji: '⬜',
17
+ isTerminal: false,
18
+ }],
19
+ ['in-progress', {
20
+ status: 'in-progress',
21
+ label: '進行中',
22
+ emoji: '🔄',
23
+ isTerminal: false,
24
+ }],
25
+ ['completed', {
26
+ status: 'completed',
27
+ label: '完了',
28
+ emoji: '✅',
29
+ isTerminal: true,
30
+ }],
31
+ ['failed', {
32
+ status: 'failed',
33
+ label: '失敗',
34
+ emoji: '❌',
35
+ isTerminal: true,
36
+ }],
37
+ ]);
38
+ /**
39
+ * Valid status transitions
40
+ */
41
+ export const VALID_STATUS_TRANSITIONS = new Map([
42
+ ['not-started', ['in-progress']],
43
+ ['in-progress', ['completed', 'failed']],
44
+ ['completed', []], // Terminal
45
+ ['failed', ['in-progress']], // Can retry
46
+ ]);
47
+ /**
48
+ * Get status metadata
49
+ *
50
+ * @param status - Task status
51
+ * @returns Status metadata
52
+ */
53
+ export function getStatusMetadata(status) {
54
+ const metadata = STATUSES.get(status);
55
+ if (!metadata) {
56
+ throw new Error(`Invalid task status: ${status}`);
57
+ }
58
+ return metadata;
59
+ }
60
+ /**
61
+ * Check if status transition is valid
62
+ *
63
+ * @param from - Current status
64
+ * @param to - Target status
65
+ * @returns true if valid
66
+ */
67
+ export function isValidStatusTransition(from, to) {
68
+ const validTargets = VALID_STATUS_TRANSITIONS.get(from);
69
+ return validTargets?.includes(to) ?? false;
70
+ }
71
+ /**
72
+ * Check if status is terminal
73
+ *
74
+ * @param status - Task status
75
+ * @returns true if terminal
76
+ */
77
+ export function isTerminalStatus(status) {
78
+ return getStatusMetadata(status).isTerminal;
79
+ }
80
+ /**
81
+ * Get status display string
82
+ *
83
+ * @param status - Task status
84
+ * @returns Display string with emoji
85
+ */
86
+ export function getStatusDisplay(status) {
87
+ const metadata = getStatusMetadata(status);
88
+ return `${metadata.emoji} ${metadata.label}`;
89
+ }
90
+ //# sourceMappingURL=TaskStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskStatus.js","sourceRoot":"","sources":["../../../src/domain/value-objects/TaskStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAA4C,IAAI,GAAG,CAAC;IACvE,CAAC,aAAa,EAAE;YACd,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,KAAK;SAClB,CAAC;IACF,CAAC,aAAa,EAAE;YACd,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;SAClB,CAAC;IACF,CAAC,WAAW,EAAE;YACZ,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,IAAI;SACjB,CAAC;IACF,CAAC,QAAQ,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,IAAI;SACjB,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAmD,IAAI,GAAG,CAAC;IAC9F,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAG,WAAW;IAC/B,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC,EAAG,YAAY;CAC3C,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAgB,EAAE,EAAc;IACtE,MAAM,YAAY,GAAG,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Value Objects barrel export
3
+ *
4
+ * @see REQ-ORCH-001 - Phase Transition
5
+ * @see REQ-ORCH-002 - State Tracking
6
+ * @see REQ-ORCH-003 - Quality Gate Integration
7
+ */
8
+ export { type PhaseType, type PhaseMetadata, PHASES, VALID_TRANSITIONS, getPhaseMetadata, getValidTransitions, isValidTransition, getPhaseNumber, getAllPhases, } from './PhaseType.js';
9
+ export { type TaskStatus, type StatusMetadata, STATUSES, VALID_STATUS_TRANSITIONS, getStatusMetadata, isValidStatusTransition, isTerminalStatus, getStatusDisplay, } from './TaskStatus.js';
10
+ export { type ApprovalStatus, type Approval, APPROVAL_KEYWORDS, REJECTION_KEYWORDS, createApproval, parseApprovalFromInput, isApproved, isRejected, generateApprovalId, } from './ApprovalStatus.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/value-objects/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,QAAQ,EACR,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Value Objects barrel export
3
+ *
4
+ * @see REQ-ORCH-001 - Phase Transition
5
+ * @see REQ-ORCH-002 - State Tracking
6
+ * @see REQ-ORCH-003 - Quality Gate Integration
7
+ */
8
+ export { PHASES, VALID_TRANSITIONS, getPhaseMetadata, getValidTransitions, isValidTransition, getPhaseNumber, getAllPhases, } from './PhaseType.js';
9
+ export { STATUSES, VALID_STATUS_TRANSITIONS, getStatusMetadata, isValidStatusTransition, isTerminalStatus, getStatusDisplay, } from './TaskStatus.js';
10
+ export { APPROVAL_KEYWORDS, REJECTION_KEYWORDS, createApproval, parseApprovalFromInput, isApproved, isRejected, generateApprovalId, } from './ApprovalStatus.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/value-objects/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAGL,QAAQ,EACR,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAGL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @nahisaho/musubix-workflow-engine
3
+ *
4
+ * Workflow Engine for MUSUBIX - Phase Transition and Quality Gate Management
5
+ *
6
+ * @packageDocumentation
7
+ * @module workflow-engine
8
+ *
9
+ * @see REQ-ORCH-001 - Phase Transition
10
+ * @see REQ-ORCH-002 - State Tracking
11
+ * @see REQ-ORCH-003 - Quality Gate Integration
12
+ */
13
+ export * from './domain/index.js';
14
+ export * from './application/index.js';
15
+ export type { PhaseType, TaskStatus, ApprovalStatus, Phase, Workflow, QualityGate, QualityGateResult, } from './domain/index.js';
16
+ export type { PhaseControllerConfig, PhaseControllerResult, StateSnapshot, StateChangeEvent, GateRunResult, } from './application/index.js';
17
+ export * from './application/PhaseController.js';
18
+ export * from './application/StateTracker.js';
19
+ export * from './application/QualityGateRunner.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AAGvC,YAAY,EACV,SAAS,EACT,UAAU,EACV,cAAc,EACd,KAAK,EACL,QAAQ,EACR,WAAW,EACX,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @nahisaho/musubix-workflow-engine
3
+ *
4
+ * Workflow Engine for MUSUBIX - Phase Transition and Quality Gate Management
5
+ *
6
+ * @packageDocumentation
7
+ * @module workflow-engine
8
+ *
9
+ * @see REQ-ORCH-001 - Phase Transition
10
+ * @see REQ-ORCH-002 - State Tracking
11
+ * @see REQ-ORCH-003 - Quality Gate Integration
12
+ */
13
+ // Domain Layer
14
+ export * from './domain/index.js';
15
+ // Application Layer
16
+ export * from './application/index.js';
17
+ export * from './application/PhaseController.js';
18
+ export * from './application/StateTracker.js';
19
+ export * from './application/QualityGateRunner.js';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,eAAe;AACf,cAAc,mBAAmB,CAAC;AAElC,oBAAoB;AACpB,cAAc,wBAAwB,CAAC;AAoBvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@nahisaho/musubix-workflow-engine",
3
+ "version": "2.4.2",
4
+ "description": "MUSUBIX Workflow Engine - Phase Transition and Quality Gate Management",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./domain": {
14
+ "import": "./dist/domain/index.js",
15
+ "types": "./dist/domain/index.d.ts"
16
+ },
17
+ "./application": {
18
+ "import": "./dist/application/index.js",
19
+ "types": "./dist/application/index.d.ts"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist/",
24
+ "README.md"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc -b",
28
+ "clean": "rimraf dist tsconfig.tsbuildinfo",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest",
31
+ "typecheck": "tsc --noEmit"
32
+ },
33
+ "keywords": [
34
+ "musubix",
35
+ "workflow",
36
+ "phase",
37
+ "quality-gate",
38
+ "state-machine"
39
+ ],
40
+ "author": "nahisaho",
41
+ "license": "MIT",
42
+ "dependencies": {
43
+ "@nahisaho/musubix-core": "*",
44
+ "@nahisaho/musubix-yata-client": "*"
45
+ },
46
+ "devDependencies": {
47
+ "rimraf": "^5.0.5",
48
+ "typescript": "^5.4.5",
49
+ "vitest": "^4.0.16"
50
+ },
51
+ "engines": {
52
+ "node": ">=20.0.0"
53
+ },
54
+ "publishConfig": {
55
+ "access": "public"
56
+ }
57
+ }