takt 0.2.3 → 0.3.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 (165) hide show
  1. package/README.md +161 -133
  2. package/dist/agents/runner.d.ts +2 -4
  3. package/dist/agents/runner.d.ts.map +1 -1
  4. package/dist/agents/runner.js +6 -35
  5. package/dist/agents/runner.js.map +1 -1
  6. package/dist/claude/client.d.ts +31 -6
  7. package/dist/claude/client.d.ts.map +1 -1
  8. package/dist/claude/client.js +78 -30
  9. package/dist/claude/client.js.map +1 -1
  10. package/dist/claude/index.d.ts +1 -1
  11. package/dist/claude/index.d.ts.map +1 -1
  12. package/dist/claude/index.js +1 -1
  13. package/dist/claude/index.js.map +1 -1
  14. package/dist/cli.d.ts.map +1 -1
  15. package/dist/cli.js +22 -6
  16. package/dist/cli.js.map +1 -1
  17. package/dist/codex/client.d.ts +0 -1
  18. package/dist/codex/client.d.ts.map +1 -1
  19. package/dist/codex/client.js +3 -6
  20. package/dist/codex/client.js.map +1 -1
  21. package/dist/commands/addTask.d.ts.map +1 -1
  22. package/dist/commands/addTask.js +17 -2
  23. package/dist/commands/addTask.js.map +1 -1
  24. package/dist/commands/eject.d.ts +13 -0
  25. package/dist/commands/eject.d.ts.map +1 -0
  26. package/dist/commands/eject.js +105 -0
  27. package/dist/commands/eject.js.map +1 -0
  28. package/dist/commands/help.d.ts.map +1 -1
  29. package/dist/commands/help.js +9 -2
  30. package/dist/commands/help.js.map +1 -1
  31. package/dist/commands/index.d.ts +1 -0
  32. package/dist/commands/index.d.ts.map +1 -1
  33. package/dist/commands/index.js +1 -0
  34. package/dist/commands/index.js.map +1 -1
  35. package/dist/commands/refreshBuiltin.d.ts +4 -4
  36. package/dist/commands/refreshBuiltin.d.ts.map +1 -1
  37. package/dist/commands/refreshBuiltin.js +13 -29
  38. package/dist/commands/refreshBuiltin.js.map +1 -1
  39. package/dist/commands/workflowExecution.d.ts.map +1 -1
  40. package/dist/commands/workflowExecution.js +85 -18
  41. package/dist/commands/workflowExecution.js.map +1 -1
  42. package/dist/config/agentLoader.d.ts +3 -1
  43. package/dist/config/agentLoader.d.ts.map +1 -1
  44. package/dist/config/agentLoader.js +17 -24
  45. package/dist/config/agentLoader.js.map +1 -1
  46. package/dist/config/globalConfig.d.ts +2 -0
  47. package/dist/config/globalConfig.d.ts.map +1 -1
  48. package/dist/config/globalConfig.js +14 -0
  49. package/dist/config/globalConfig.js.map +1 -1
  50. package/dist/config/initialization.d.ts +7 -5
  51. package/dist/config/initialization.d.ts.map +1 -1
  52. package/dist/config/initialization.js +23 -21
  53. package/dist/config/initialization.js.map +1 -1
  54. package/dist/config/paths.d.ts +5 -0
  55. package/dist/config/paths.d.ts.map +1 -1
  56. package/dist/config/paths.js +9 -0
  57. package/dist/config/paths.js.map +1 -1
  58. package/dist/config/workflowLoader.d.ts +6 -4
  59. package/dist/config/workflowLoader.d.ts.map +1 -1
  60. package/dist/config/workflowLoader.js +190 -35
  61. package/dist/config/workflowLoader.js.map +1 -1
  62. package/dist/github/issue.d.ts +72 -0
  63. package/dist/github/issue.d.ts.map +1 -0
  64. package/dist/github/issue.js +143 -0
  65. package/dist/github/issue.js.map +1 -0
  66. package/dist/models/index.d.ts +1 -1
  67. package/dist/models/index.d.ts.map +1 -1
  68. package/dist/models/index.js.map +1 -1
  69. package/dist/models/schemas.d.ts +164 -90
  70. package/dist/models/schemas.d.ts.map +1 -1
  71. package/dist/models/schemas.js +77 -51
  72. package/dist/models/schemas.js.map +1 -1
  73. package/dist/models/types.d.ts +51 -20
  74. package/dist/models/types.d.ts.map +1 -1
  75. package/dist/providers/claude.js +2 -2
  76. package/dist/providers/claude.js.map +1 -1
  77. package/dist/providers/codex.d.ts.map +1 -1
  78. package/dist/providers/codex.js +0 -2
  79. package/dist/providers/codex.js.map +1 -1
  80. package/dist/providers/index.d.ts +2 -1
  81. package/dist/providers/index.d.ts.map +1 -1
  82. package/dist/providers/index.js.map +1 -1
  83. package/dist/resources/index.d.ts +3 -22
  84. package/dist/resources/index.d.ts.map +1 -1
  85. package/dist/resources/index.js +3 -73
  86. package/dist/resources/index.js.map +1 -1
  87. package/dist/utils/session.d.ts +74 -10
  88. package/dist/utils/session.d.ts.map +1 -1
  89. package/dist/utils/session.js +101 -51
  90. package/dist/utils/session.js.map +1 -1
  91. package/dist/workflow/engine.d.ts +34 -1
  92. package/dist/workflow/engine.d.ts.map +1 -1
  93. package/dist/workflow/engine.js +228 -36
  94. package/dist/workflow/engine.js.map +1 -1
  95. package/dist/workflow/index.d.ts +1 -1
  96. package/dist/workflow/index.d.ts.map +1 -1
  97. package/dist/workflow/index.js +1 -1
  98. package/dist/workflow/index.js.map +1 -1
  99. package/dist/workflow/instruction-builder.d.ts +87 -18
  100. package/dist/workflow/instruction-builder.d.ts.map +1 -1
  101. package/dist/workflow/instruction-builder.js +404 -57
  102. package/dist/workflow/instruction-builder.js.map +1 -1
  103. package/dist/workflow/parallel-logger.d.ts +76 -0
  104. package/dist/workflow/parallel-logger.d.ts.map +1 -0
  105. package/dist/workflow/parallel-logger.js +173 -0
  106. package/dist/workflow/parallel-logger.js.map +1 -0
  107. package/dist/workflow/phase-runner.d.ts +40 -0
  108. package/dist/workflow/phase-runner.d.ts.map +1 -0
  109. package/dist/workflow/phase-runner.js +69 -0
  110. package/dist/workflow/phase-runner.js.map +1 -0
  111. package/dist/workflow/rule-evaluator.d.ts +64 -0
  112. package/dist/workflow/rule-evaluator.d.ts.map +1 -0
  113. package/dist/workflow/rule-evaluator.js +178 -0
  114. package/dist/workflow/rule-evaluator.js.map +1 -0
  115. package/dist/workflow/rule-utils.d.ts +13 -0
  116. package/dist/workflow/rule-utils.d.ts.map +1 -0
  117. package/dist/workflow/rule-utils.js +17 -0
  118. package/dist/workflow/rule-utils.js.map +1 -0
  119. package/dist/workflow/transitions.d.ts +5 -13
  120. package/dist/workflow/transitions.d.ts.map +1 -1
  121. package/dist/workflow/transitions.js +8 -78
  122. package/dist/workflow/transitions.js.map +1 -1
  123. package/dist/workflow/types.d.ts +2 -1
  124. package/dist/workflow/types.d.ts.map +1 -1
  125. package/package.json +1 -1
  126. package/resources/global/en/agents/default/ai-antipattern-reviewer.md +71 -15
  127. package/resources/global/en/agents/default/{architect.md → architecture-reviewer.md} +144 -44
  128. package/resources/global/en/agents/default/coder.md +4 -4
  129. package/resources/global/en/agents/default/planner.md +16 -9
  130. package/resources/global/en/agents/default/{security.md → security-reviewer.md} +23 -5
  131. package/resources/global/en/agents/default/supervisor.md +13 -2
  132. package/resources/global/en/agents/expert/frontend-reviewer.md +0 -17
  133. package/resources/global/en/agents/expert/qa-reviewer.md +0 -16
  134. package/resources/global/en/agents/expert/security-reviewer.md +0 -16
  135. package/resources/global/en/agents/expert-cqrs/cqrs-es-reviewer.md +0 -17
  136. package/resources/global/en/agents/templates/coder.md +128 -0
  137. package/resources/global/en/agents/templates/planner.md +44 -0
  138. package/resources/global/en/agents/templates/reviewer.md +57 -0
  139. package/resources/global/en/agents/templates/supervisor.md +64 -0
  140. package/resources/global/en/workflows/default.yaml +232 -772
  141. package/resources/global/en/workflows/expert-cqrs.yaml +319 -698
  142. package/resources/global/en/workflows/expert.yaml +348 -723
  143. package/resources/global/en/workflows/magi.yaml +45 -52
  144. package/resources/global/en/workflows/research.yaml +18 -99
  145. package/resources/global/en/workflows/simple.yaml +152 -421
  146. package/resources/global/ja/agents/default/ai-antipattern-reviewer.md +71 -15
  147. package/resources/global/ja/agents/default/{architect.md → architecture-reviewer.md} +148 -48
  148. package/resources/global/ja/agents/default/coder.md +4 -4
  149. package/resources/global/ja/agents/default/planner.md +16 -9
  150. package/resources/global/ja/agents/default/{security.md → security-reviewer.md} +23 -5
  151. package/resources/global/ja/agents/default/supervisor.md +13 -2
  152. package/resources/global/ja/agents/expert/frontend-reviewer.md +0 -18
  153. package/resources/global/ja/agents/expert/qa-reviewer.md +0 -16
  154. package/resources/global/ja/agents/expert/security-reviewer.md +0 -16
  155. package/resources/global/ja/agents/expert-cqrs/cqrs-es-reviewer.md +0 -18
  156. package/resources/global/ja/agents/templates/coder.md +128 -0
  157. package/resources/global/ja/agents/templates/planner.md +44 -0
  158. package/resources/global/ja/agents/templates/reviewer.md +57 -0
  159. package/resources/global/ja/agents/templates/supervisor.md +64 -0
  160. package/resources/global/ja/workflows/default.yaml +227 -773
  161. package/resources/global/ja/workflows/expert-cqrs.yaml +309 -833
  162. package/resources/global/ja/workflows/expert.yaml +325 -712
  163. package/resources/global/ja/workflows/magi.yaml +45 -52
  164. package/resources/global/ja/workflows/research.yaml +18 -99
  165. package/resources/global/ja/workflows/simple.yaml +145 -415
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Session management utilities
3
3
  */
4
- import type { AgentResponse, WorkflowState } from '../models/types.js';
4
+ import type { StreamEvent } from '../claude/types.js';
5
5
  /** Session log entry */
6
6
  export interface SessionLog {
7
7
  task: string;
@@ -14,12 +14,82 @@ export interface SessionLog {
14
14
  history: Array<{
15
15
  step: string;
16
16
  agent: string;
17
+ instruction: string;
17
18
  status: string;
18
19
  timestamp: string;
19
20
  content: string;
20
21
  error?: string;
22
+ /** Matched rule index (0-based) when rules-based detection was used */
23
+ matchedRuleIndex?: number;
24
+ /** How the rule match was detected */
25
+ matchedRuleMethod?: string;
21
26
  }>;
22
27
  }
28
+ /** NDJSON record: workflow started */
29
+ export interface NdjsonWorkflowStart {
30
+ type: 'workflow_start';
31
+ task: string;
32
+ workflowName: string;
33
+ startTime: string;
34
+ }
35
+ /** NDJSON record: step started */
36
+ export interface NdjsonStepStart {
37
+ type: 'step_start';
38
+ step: string;
39
+ agent: string;
40
+ iteration: number;
41
+ timestamp: string;
42
+ }
43
+ /** NDJSON record: streaming chunk received */
44
+ export interface NdjsonStream {
45
+ type: 'stream';
46
+ step: string;
47
+ event: StreamEvent;
48
+ timestamp: string;
49
+ }
50
+ /** NDJSON record: step completed */
51
+ export interface NdjsonStepComplete {
52
+ type: 'step_complete';
53
+ step: string;
54
+ agent: string;
55
+ status: string;
56
+ content: string;
57
+ instruction: string;
58
+ matchedRuleIndex?: number;
59
+ matchedRuleMethod?: string;
60
+ error?: string;
61
+ timestamp: string;
62
+ }
63
+ /** NDJSON record: workflow completed successfully */
64
+ export interface NdjsonWorkflowComplete {
65
+ type: 'workflow_complete';
66
+ iterations: number;
67
+ endTime: string;
68
+ }
69
+ /** NDJSON record: workflow aborted */
70
+ export interface NdjsonWorkflowAbort {
71
+ type: 'workflow_abort';
72
+ iterations: number;
73
+ reason: string;
74
+ endTime: string;
75
+ }
76
+ /** Union of all NDJSON record types */
77
+ export type NdjsonRecord = NdjsonWorkflowStart | NdjsonStepStart | NdjsonStream | NdjsonStepComplete | NdjsonWorkflowComplete | NdjsonWorkflowAbort;
78
+ /**
79
+ * Append a single NDJSON line to a log file.
80
+ * Uses appendFileSync for atomic open→write→close (no file lock held).
81
+ */
82
+ export declare function appendNdjsonLine(filepath: string, record: NdjsonRecord): void;
83
+ /**
84
+ * Initialize an NDJSON log file with the workflow_start record.
85
+ * Creates the logs directory if needed and returns the file path.
86
+ */
87
+ export declare function initNdjsonLog(sessionId: string, task: string, workflowName: string, projectDir?: string): string;
88
+ /**
89
+ * Load an NDJSON log file and convert it to a SessionLog for backward compatibility.
90
+ * Parses each line as a JSON record and reconstructs the SessionLog structure.
91
+ */
92
+ export declare function loadNdjsonLog(filepath: string): SessionLog | null;
23
93
  /** Generate a session ID */
24
94
  export declare function generateSessionId(): string;
25
95
  /**
@@ -29,13 +99,9 @@ export declare function generateSessionId(): string;
29
99
  export declare function generateReportDir(task: string): string;
30
100
  /** Create a new session log */
31
101
  export declare function createSessionLog(task: string, projectDir: string, workflowName: string): SessionLog;
32
- /** Add agent response to session log */
33
- export declare function addToSessionLog(log: SessionLog, stepName: string, response: AgentResponse): void;
34
- /** Finalize session log */
35
- export declare function finalizeSessionLog(log: SessionLog, status: 'completed' | 'aborted'): void;
36
- /** Save session log to file */
37
- export declare function saveSessionLog(log: SessionLog, sessionId: string, projectDir?: string): string;
38
- /** Load session log from file */
102
+ /** Create a finalized copy of a session log (immutable — does not modify the original) */
103
+ export declare function finalizeSessionLog(log: SessionLog, status: 'completed' | 'aborted'): SessionLog;
104
+ /** Load session log from file (supports both .json and .jsonl formats) */
39
105
  export declare function loadSessionLog(filepath: string): SessionLog | null;
40
106
  /** Load project context (CLAUDE.md files) */
41
107
  export declare function loadProjectContext(projectDir: string): string;
@@ -58,6 +124,4 @@ export interface LatestLogPointer {
58
124
  export declare function updateLatestPointer(log: SessionLog, sessionId: string, projectDir?: string, options?: {
59
125
  copyToPrevious?: boolean;
60
126
  }): void;
61
- /** Convert workflow state to session log */
62
- export declare function workflowStateToSessionLog(state: WorkflowState, task: string, projectDir: string): SessionLog;
63
127
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGvE,wBAAwB;AACxB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,UAAU,CAUZ;AAED,wCAAwC;AACxC,wBAAgB,eAAe,CAC7B,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,GACtB,IAAI,CAUN;AAED,2BAA2B;AAC3B,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,IAAI,CAGN;AAED,+BAA+B;AAC/B,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAWR;AAED,iCAAiC;AACjC,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAMlE;AAED,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB7D;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,IAAI,CA0BN;AAED,4CAA4C;AAC5C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,UAAU,CAsBZ"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,wBAAwB;AACxB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5C,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,uEAAuE;QACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,sCAAsC;QACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC;CACJ;AAID,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,uCAAuC;AACvC,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,CAAC;AAExB;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAE7E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAeR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAiEjE;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,+BAA+B;AAC/B,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,UAAU,CAUZ;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,UAAU,CAMZ;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAWlE;AAED,6CAA6C;AAC7C,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgB7D;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,IAAI,CA0BN"}
@@ -1,9 +1,97 @@
1
1
  /**
2
2
  * Session management utilities
3
3
  */
4
- import { existsSync, readFileSync, copyFileSync } from 'node:fs';
4
+ import { existsSync, readFileSync, copyFileSync, appendFileSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
6
  import { getProjectLogsDir, getGlobalLogsDir, ensureDir, writeFileAtomic } from '../config/paths.js';
7
+ /**
8
+ * Append a single NDJSON line to a log file.
9
+ * Uses appendFileSync for atomic open→write→close (no file lock held).
10
+ */
11
+ export function appendNdjsonLine(filepath, record) {
12
+ appendFileSync(filepath, JSON.stringify(record) + '\n', 'utf-8');
13
+ }
14
+ /**
15
+ * Initialize an NDJSON log file with the workflow_start record.
16
+ * Creates the logs directory if needed and returns the file path.
17
+ */
18
+ export function initNdjsonLog(sessionId, task, workflowName, projectDir) {
19
+ const logsDir = projectDir
20
+ ? getProjectLogsDir(projectDir)
21
+ : getGlobalLogsDir();
22
+ ensureDir(logsDir);
23
+ const filepath = join(logsDir, `${sessionId}.jsonl`);
24
+ const record = {
25
+ type: 'workflow_start',
26
+ task,
27
+ workflowName,
28
+ startTime: new Date().toISOString(),
29
+ };
30
+ appendNdjsonLine(filepath, record);
31
+ return filepath;
32
+ }
33
+ /**
34
+ * Load an NDJSON log file and convert it to a SessionLog for backward compatibility.
35
+ * Parses each line as a JSON record and reconstructs the SessionLog structure.
36
+ */
37
+ export function loadNdjsonLog(filepath) {
38
+ if (!existsSync(filepath)) {
39
+ return null;
40
+ }
41
+ const content = readFileSync(filepath, 'utf-8');
42
+ const lines = content.trim().split('\n').filter((line) => line.length > 0);
43
+ if (lines.length === 0)
44
+ return null;
45
+ let sessionLog = null;
46
+ for (const line of lines) {
47
+ const record = JSON.parse(line);
48
+ switch (record.type) {
49
+ case 'workflow_start':
50
+ sessionLog = {
51
+ task: record.task,
52
+ projectDir: '',
53
+ workflowName: record.workflowName,
54
+ iterations: 0,
55
+ startTime: record.startTime,
56
+ status: 'running',
57
+ history: [],
58
+ };
59
+ break;
60
+ case 'step_complete':
61
+ if (sessionLog) {
62
+ sessionLog.history.push({
63
+ step: record.step,
64
+ agent: record.agent,
65
+ instruction: record.instruction,
66
+ status: record.status,
67
+ timestamp: record.timestamp,
68
+ content: record.content,
69
+ ...(record.error ? { error: record.error } : {}),
70
+ ...(record.matchedRuleIndex != null ? { matchedRuleIndex: record.matchedRuleIndex } : {}),
71
+ ...(record.matchedRuleMethod ? { matchedRuleMethod: record.matchedRuleMethod } : {}),
72
+ });
73
+ sessionLog.iterations++;
74
+ }
75
+ break;
76
+ case 'workflow_complete':
77
+ if (sessionLog) {
78
+ sessionLog.status = 'completed';
79
+ sessionLog.endTime = record.endTime;
80
+ }
81
+ break;
82
+ case 'workflow_abort':
83
+ if (sessionLog) {
84
+ sessionLog.status = 'aborted';
85
+ sessionLog.endTime = record.endTime;
86
+ }
87
+ break;
88
+ // stream and step_start records are not stored in SessionLog
89
+ default:
90
+ break;
91
+ }
92
+ }
93
+ return sessionLog;
94
+ }
7
95
  /** Generate a session ID */
8
96
  export function generateSessionId() {
9
97
  const timestamp = Date.now().toString(36);
@@ -41,36 +129,20 @@ export function createSessionLog(task, projectDir, workflowName) {
41
129
  history: [],
42
130
  };
43
131
  }
44
- /** Add agent response to session log */
45
- export function addToSessionLog(log, stepName, response) {
46
- log.history.push({
47
- step: stepName,
48
- agent: response.agent,
49
- status: response.status,
50
- timestamp: response.timestamp.toISOString(),
51
- content: response.content,
52
- ...(response.error ? { error: response.error } : {}),
53
- });
54
- log.iterations++;
55
- }
56
- /** Finalize session log */
132
+ /** Create a finalized copy of a session log (immutable — does not modify the original) */
57
133
  export function finalizeSessionLog(log, status) {
58
- log.status = status;
59
- log.endTime = new Date().toISOString();
60
- }
61
- /** Save session log to file */
62
- export function saveSessionLog(log, sessionId, projectDir) {
63
- const logsDir = projectDir
64
- ? getProjectLogsDir(projectDir)
65
- : getGlobalLogsDir();
66
- ensureDir(logsDir);
67
- const filename = `${sessionId}.json`;
68
- const filepath = join(logsDir, filename);
69
- writeFileAtomic(filepath, JSON.stringify(log, null, 2));
70
- return filepath;
134
+ return {
135
+ ...log,
136
+ status,
137
+ endTime: new Date().toISOString(),
138
+ };
71
139
  }
72
- /** Load session log from file */
140
+ /** Load session log from file (supports both .json and .jsonl formats) */
73
141
  export function loadSessionLog(filepath) {
142
+ // Try NDJSON format for .jsonl files
143
+ if (filepath.endsWith('.jsonl')) {
144
+ return loadNdjsonLog(filepath);
145
+ }
74
146
  if (!existsSync(filepath)) {
75
147
  return null;
76
148
  }
@@ -110,7 +182,7 @@ export function updateLatestPointer(log, sessionId, projectDir, options) {
110
182
  }
111
183
  const pointer = {
112
184
  sessionId,
113
- logFile: `${sessionId}.json`,
185
+ logFile: `${sessionId}.jsonl`,
114
186
  task: log.task,
115
187
  workflowName: log.workflowName,
116
188
  status: log.status,
@@ -120,26 +192,4 @@ export function updateLatestPointer(log, sessionId, projectDir, options) {
120
192
  };
121
193
  writeFileAtomic(latestPath, JSON.stringify(pointer, null, 2));
122
194
  }
123
- /** Convert workflow state to session log */
124
- export function workflowStateToSessionLog(state, task, projectDir) {
125
- const log = {
126
- task,
127
- projectDir,
128
- workflowName: state.workflowName,
129
- iterations: state.iteration,
130
- startTime: new Date().toISOString(),
131
- status: state.status === 'running' ? 'running' : state.status === 'completed' ? 'completed' : 'aborted',
132
- history: [],
133
- };
134
- for (const [stepName, response] of state.stepOutputs) {
135
- log.history.push({
136
- step: stepName,
137
- agent: response.agent,
138
- status: response.status,
139
- timestamp: response.timestamp.toISOString(),
140
- content: response.content,
141
- });
142
- }
143
- return log;
144
- }
145
195
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"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"}
@@ -36,8 +36,41 @@ export declare class WorkflowEngine extends EventEmitter {
36
36
  private buildInstruction;
37
37
  /** Get step by name */
38
38
  private getStep;
39
- /** Run a single step */
39
+ /**
40
+ * Emit step:report events for each report file that exists after step completion.
41
+ * The UI layer (workflowExecution.ts) listens and displays the content.
42
+ */
43
+ private emitStepReports;
44
+ /** Emit step:report if the report file exists */
45
+ private emitIfReportExists;
46
+ /** Run a single step (delegates to runParallelStep if step has parallel sub-steps) */
40
47
  private runStep;
48
+ /** Build common RunAgentOptions shared by all phases */
49
+ private buildBaseOptions;
50
+ /** Build RunAgentOptions from a step's configuration (Phase 1) */
51
+ private buildAgentOptions;
52
+ /**
53
+ * Build RunAgentOptions for session-resume phases (Phase 2, Phase 3).
54
+ */
55
+ private buildResumeOptions;
56
+ /** Update agent session and notify via callback if session changed */
57
+ private updateAgentSession;
58
+ /** Build phase runner context for Phase 2/3 execution */
59
+ private buildPhaseRunnerContext;
60
+ /** Run a normal (non-parallel) step */
61
+ private runNormalStep;
62
+ /**
63
+ * Run a parallel step: execute all sub-steps concurrently, then aggregate results.
64
+ * The aggregated output becomes the parent step's response for rules evaluation.
65
+ *
66
+ * When onStream is provided, uses ParallelLogger to prefix each sub-step's
67
+ * output with `[name]` for readable interleaved display.
68
+ */
69
+ private runParallelStep;
70
+ /**
71
+ * Determine next step for a completed step using rules-based routing.
72
+ */
73
+ private resolveNextStep;
41
74
  /** Run the workflow to completion */
42
75
  run(): Promise<WorkflowState>;
43
76
  /** Run a single iteration (for interactive mode) */
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/workflow/engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAiBxD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3D,wDAAwD;AACxD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;IAqBlG,yEAAyE;IACzE,OAAO,CAAC,qBAAqB;IAmB7B,2DAA2D;IAC3D,OAAO,CAAC,cAAc;IAqBtB,iCAAiC;IACjC,QAAQ,IAAI,aAAa;IAIzB,qBAAqB;IACrB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,+BAA+B;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,oCAAoC;IACpC,MAAM,IAAI,MAAM;IAIhB,sDAAsD;IACtD,aAAa,IAAI,MAAM;IAIvB,sCAAsC;IACtC,OAAO,CAAC,gBAAgB;IAexB,uBAAuB;IACvB,OAAO,CAAC,OAAO;IAQf,wBAAwB;YACV,OAAO;IA2CrB,qCAAqC;IAC/B,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IA4FnC,oDAAoD;IAC9C,kBAAkB,IAAI,OAAO,CAAC;QAClC,QAAQ,EAAE,aAAa,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CAgCH"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/workflow/engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAEb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAoBxD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3D,wDAAwD;AACxD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;IAqBlG,yEAAyE;IACzE,OAAO,CAAC,qBAAqB;IAmB7B,2DAA2D;IAC3D,OAAO,CAAC,cAAc;IAuBtB,iCAAiC;IACjC,QAAQ,IAAI,aAAa;IAIzB,qBAAqB;IACrB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,+BAA+B;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,oCAAoC;IACpC,MAAM,IAAI,MAAM;IAIhB,sDAAsD;IACtD,aAAa,IAAI,MAAM;IAIvB,sCAAsC;IACtC,OAAO,CAAC,gBAAgB;IAexB,uBAAuB;IACvB,OAAO,CAAC,OAAO;IAQf;;;OAGG;IACH,OAAO,CAAC,eAAe;IAgBvB,iDAAiD;IACjD,OAAO,CAAC,kBAAkB;IAO1B,sFAAsF;YACxE,OAAO;IAOrB,wDAAwD;IACxD,OAAO,CAAC,gBAAgB;IAcxB,kEAAkE;IAClE,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B,sEAAsE;IACtE,OAAO,CAAC,kBAAkB;IAW1B,yDAAyD;IACzD,OAAO,CAAC,uBAAuB;IAW/B,uCAAuC;YACzB,aAAa;IA2C3B;;;;;;OAMG;YACW,eAAe;IAkG7B;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB,qCAAqC;IAC/B,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;IA6FnC,oDAAoD;IAC9C,kBAAkB,IAAI,OAAO,CAAC;QAClC,QAAQ,EAAE,aAAa,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CAgCH"}