pm-orchestrator-runner 1.0.7 → 1.0.9

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 (104) hide show
  1. package/README.md +59 -6
  2. package/dist/cli/index.d.ts +7 -5
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +191 -49
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/config/index.d.ts +9 -0
  7. package/dist/config/index.d.ts.map +1 -0
  8. package/dist/config/index.js +19 -0
  9. package/dist/config/index.js.map +1 -0
  10. package/dist/config/namespace.d.ts +86 -0
  11. package/dist/config/namespace.d.ts.map +1 -0
  12. package/dist/config/namespace.js +150 -0
  13. package/dist/config/namespace.js.map +1 -0
  14. package/dist/core/runner-core.d.ts +2 -0
  15. package/dist/core/runner-core.d.ts.map +1 -1
  16. package/dist/core/runner-core.js +27 -1
  17. package/dist/core/runner-core.js.map +1 -1
  18. package/dist/executor/claude-code-executor.d.ts +28 -0
  19. package/dist/executor/claude-code-executor.d.ts.map +1 -1
  20. package/dist/executor/claude-code-executor.js +184 -1
  21. package/dist/executor/claude-code-executor.js.map +1 -1
  22. package/dist/executor/deterministic-executor.d.ts +2 -1
  23. package/dist/executor/deterministic-executor.d.ts.map +1 -1
  24. package/dist/executor/deterministic-executor.js +7 -0
  25. package/dist/executor/deterministic-executor.js.map +1 -1
  26. package/dist/executor/recovery-executor.d.ts +2 -1
  27. package/dist/executor/recovery-executor.d.ts.map +1 -1
  28. package/dist/executor/recovery-executor.js +7 -0
  29. package/dist/executor/recovery-executor.js.map +1 -1
  30. package/dist/executor/stepwise-mock-executor.d.ts +76 -0
  31. package/dist/executor/stepwise-mock-executor.d.ts.map +1 -0
  32. package/dist/executor/stepwise-mock-executor.js +369 -0
  33. package/dist/executor/stepwise-mock-executor.js.map +1 -0
  34. package/dist/models/enums.d.ts +54 -0
  35. package/dist/models/enums.d.ts.map +1 -1
  36. package/dist/models/enums.js +59 -1
  37. package/dist/models/enums.js.map +1 -1
  38. package/dist/models/index.d.ts +4 -1
  39. package/dist/models/index.d.ts.map +1 -1
  40. package/dist/models/index.js +50 -2
  41. package/dist/models/index.js.map +1 -1
  42. package/dist/models/run.d.ts +82 -0
  43. package/dist/models/run.d.ts.map +1 -0
  44. package/dist/models/run.js +161 -0
  45. package/dist/models/run.js.map +1 -0
  46. package/dist/models/task-group.d.ts +164 -0
  47. package/dist/models/task-group.d.ts.map +1 -0
  48. package/dist/models/task-group.js +246 -0
  49. package/dist/models/task-group.js.map +1 -0
  50. package/dist/models/task.d.ts +7 -0
  51. package/dist/models/task.d.ts.map +1 -1
  52. package/dist/models/task.js.map +1 -1
  53. package/dist/models/thread.d.ts +53 -0
  54. package/dist/models/thread.d.ts.map +1 -0
  55. package/dist/models/thread.js +92 -0
  56. package/dist/models/thread.js.map +1 -0
  57. package/dist/pool/agent-pool.d.ts.map +1 -1
  58. package/dist/pool/agent-pool.js +2 -3
  59. package/dist/pool/agent-pool.js.map +1 -1
  60. package/dist/prompt/index.d.ts +8 -0
  61. package/dist/prompt/index.d.ts.map +1 -0
  62. package/dist/prompt/index.js +13 -0
  63. package/dist/prompt/index.js.map +1 -0
  64. package/dist/prompt/prompt-assembler.d.ts +145 -0
  65. package/dist/prompt/prompt-assembler.d.ts.map +1 -0
  66. package/dist/prompt/prompt-assembler.js +242 -0
  67. package/dist/prompt/prompt-assembler.js.map +1 -0
  68. package/dist/queue/index.d.ts +41 -0
  69. package/dist/queue/index.d.ts.map +1 -0
  70. package/dist/queue/index.js +42 -0
  71. package/dist/queue/index.js.map +1 -0
  72. package/dist/queue/queue-poller.d.ts +107 -0
  73. package/dist/queue/queue-poller.d.ts.map +1 -0
  74. package/dist/queue/queue-poller.js +181 -0
  75. package/dist/queue/queue-poller.js.map +1 -0
  76. package/dist/queue/queue-store.d.ts +163 -0
  77. package/dist/queue/queue-store.d.ts.map +1 -0
  78. package/dist/queue/queue-store.js +421 -0
  79. package/dist/queue/queue-store.js.map +1 -0
  80. package/dist/repl/index.d.ts +1 -0
  81. package/dist/repl/index.d.ts.map +1 -1
  82. package/dist/repl/index.js +3 -1
  83. package/dist/repl/index.js.map +1 -1
  84. package/dist/repl/repl-interface.d.ts +40 -5
  85. package/dist/repl/repl-interface.d.ts.map +1 -1
  86. package/dist/repl/repl-interface.js +95 -17
  87. package/dist/repl/repl-interface.js.map +1 -1
  88. package/dist/repl/two-pane-renderer.d.ts +160 -0
  89. package/dist/repl/two-pane-renderer.d.ts.map +1 -0
  90. package/dist/repl/two-pane-renderer.js +276 -0
  91. package/dist/repl/two-pane-renderer.js.map +1 -0
  92. package/dist/trace/trace-pack.d.ts +182 -0
  93. package/dist/trace/trace-pack.d.ts.map +1 -0
  94. package/dist/trace/trace-pack.js +407 -0
  95. package/dist/trace/trace-pack.js.map +1 -0
  96. package/dist/web/index.d.ts +45 -0
  97. package/dist/web/index.d.ts.map +1 -0
  98. package/dist/web/index.js +47 -0
  99. package/dist/web/index.js.map +1 -0
  100. package/dist/web/server.d.ts +71 -0
  101. package/dist/web/server.d.ts.map +1 -0
  102. package/dist/web/server.js +329 -0
  103. package/dist/web/server.js.map +1 -0
  104. package/package.json +10 -2
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Two-Pane Renderer for CLI
3
+ * Per spec/18_CLI_TWO_PANE.md
4
+ *
5
+ * Provides 2-pane layout:
6
+ * - Upper pane: Log display (scrollable)
7
+ * - Lower pane: Input line (always 1 line, never interrupted by logs)
8
+ *
9
+ * Critical requirement: Input line must NEVER be disrupted by log output
10
+ * - Cursor position maintained
11
+ * - Input string maintained
12
+ * - Prompt display maintained
13
+ */
14
+ /**
15
+ * Running task display info
16
+ * Per spec/18: RUNNING task-1234 | 12.3s | processing
17
+ */
18
+ export interface RunningInfo {
19
+ taskId: string;
20
+ elapsedMs: number;
21
+ status: string;
22
+ }
23
+ /**
24
+ * Complete task display info
25
+ * Per spec/18: Result summary, files modified, next operations
26
+ */
27
+ export interface CompleteInfo {
28
+ taskId: string;
29
+ elapsedMs: number;
30
+ filesModified: string[];
31
+ nextOperations: string;
32
+ }
33
+ /**
34
+ * Two-Pane Renderer Configuration
35
+ */
36
+ export interface TwoPaneRendererConfig {
37
+ /** Prompt string (default: 'pm> ') */
38
+ prompt?: string;
39
+ /** Output stream (default: process.stdout) */
40
+ output?: NodeJS.WriteStream;
41
+ /** Enable 2-pane mode (default: true if TTY) */
42
+ enabled?: boolean;
43
+ }
44
+ /**
45
+ * Two-Pane Renderer
46
+ *
47
+ * Maintains separation between log output (upper pane) and input (lower pane).
48
+ * Ensures input line is never disrupted by log output.
49
+ */
50
+ export declare class TwoPaneRenderer {
51
+ private readonly output;
52
+ private prompt;
53
+ private readonly enabled;
54
+ private inputBuffer;
55
+ private inputCursorPos;
56
+ private pendingLogs;
57
+ private flushTimeout;
58
+ private readonly FLUSH_DELAY_MS;
59
+ constructor(config?: TwoPaneRendererConfig);
60
+ /**
61
+ * Check if 2-pane mode is enabled
62
+ */
63
+ isEnabled(): boolean;
64
+ /**
65
+ * Write log message to upper pane
66
+ * Per spec/18: Logs flow in upper pane, never disrupting input line
67
+ *
68
+ * @param message - Log message to write
69
+ */
70
+ writeLog(message: string): void;
71
+ /**
72
+ * Generate visual separator line
73
+ * Per spec: Visual separation between log pane and input pane
74
+ */
75
+ private getSeparator;
76
+ /**
77
+ * Format a log line with visual prefix
78
+ * Adds dim pipe character to distinguish log output from input
79
+ */
80
+ private formatLogLine;
81
+ /**
82
+ * Flush pending logs to output
83
+ * Preserves input line state
84
+ */
85
+ private flushLogs;
86
+ /**
87
+ * Render the input line (prompt + buffer)
88
+ * Called after log output to restore input state
89
+ * Includes visual separator for 2-pane distinction
90
+ */
91
+ private renderInputLine;
92
+ /**
93
+ * Update input state
94
+ * Called by readline integration to sync input buffer
95
+ *
96
+ * @param buffer - Current input buffer content
97
+ * @param cursorPos - Cursor position within buffer
98
+ */
99
+ updateInput(buffer: string, cursorPos: number): void;
100
+ /**
101
+ * Clear input state (e.g., after command execution)
102
+ */
103
+ clearInput(): void;
104
+ /**
105
+ * Set prompt string
106
+ */
107
+ setPrompt(prompt: string): void;
108
+ /**
109
+ * Get current prompt
110
+ */
111
+ getPrompt(): string;
112
+ /**
113
+ * Format RUNNING display
114
+ * Per spec/18: RUNNING task-1234 | 12.3s | processing
115
+ * Yellow color for visibility
116
+ *
117
+ * @param info - Running task info
118
+ * @returns Formatted string
119
+ */
120
+ formatRunning(info: RunningInfo): string;
121
+ /**
122
+ * Show RUNNING status
123
+ * Per spec/18: 1 line only display
124
+ *
125
+ * @param info - Running task info
126
+ */
127
+ showRunning(info: RunningInfo): void;
128
+ /**
129
+ * Format COMPLETE display
130
+ * Per spec/18:
131
+ * - Result summary (green for success)
132
+ * - Files modified list
133
+ * - Next operations
134
+ *
135
+ * @param info - Complete task info
136
+ * @returns Formatted lines
137
+ */
138
+ formatComplete(info: CompleteInfo): string[];
139
+ /**
140
+ * Show COMPLETE status
141
+ * Per spec/18: Result summary, files modified, next operations
142
+ *
143
+ * @param info - Complete task info
144
+ */
145
+ showComplete(info: CompleteInfo): void;
146
+ /**
147
+ * Force flush any pending logs immediately
148
+ * Used before exit or when immediate output is needed
149
+ */
150
+ flush(): void;
151
+ /**
152
+ * Get current input buffer (for testing)
153
+ */
154
+ getInputBuffer(): string;
155
+ /**
156
+ * Get current cursor position (for testing)
157
+ */
158
+ getInputCursorPos(): number;
159
+ }
160
+ //# sourceMappingURL=two-pane-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-pane-renderer.d.ts","sourceRoot":"","sources":["../../src/repl/two-pane-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsCH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;IAC5B,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAGlC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAa;IAGnC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;gBAEzB,MAAM,GAAE,qBAA0B;IAY9C;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAoB/B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMpB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA8BjB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IASvB;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpD;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;;;;;;OAOG;IACH,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAKxC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAIpC;;;;;;;;;OASG;IACH,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE;IAoB5C;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAOtC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAUb;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B"}
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ /**
3
+ * Two-Pane Renderer for CLI
4
+ * Per spec/18_CLI_TWO_PANE.md
5
+ *
6
+ * Provides 2-pane layout:
7
+ * - Upper pane: Log display (scrollable)
8
+ * - Lower pane: Input line (always 1 line, never interrupted by logs)
9
+ *
10
+ * Critical requirement: Input line must NEVER be disrupted by log output
11
+ * - Cursor position maintained
12
+ * - Input string maintained
13
+ * - Prompt display maintained
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.TwoPaneRenderer = void 0;
17
+ /**
18
+ * ANSI escape sequences for terminal control
19
+ */
20
+ const ANSI = {
21
+ // Cursor control
22
+ SAVE_CURSOR: '\x1b[s',
23
+ RESTORE_CURSOR: '\x1b[u',
24
+ MOVE_TO_COL: (col) => `\x1b[${col}G`,
25
+ MOVE_UP: (n) => `\x1b[${n}A`,
26
+ MOVE_DOWN: (n) => `\x1b[${n}B`,
27
+ MOVE_TO: (row, col) => `\x1b[${row};${col}H`,
28
+ // Line control
29
+ CLEAR_LINE: '\x1b[2K',
30
+ CLEAR_TO_END: '\x1b[K',
31
+ // Screen control
32
+ SCROLL_UP: '\x1b[S',
33
+ // Colors and styles
34
+ RESET: '\x1b[0m',
35
+ DIM: '\x1b[2m',
36
+ BOLD: '\x1b[1m',
37
+ CYAN: '\x1b[36m',
38
+ GREEN: '\x1b[32m',
39
+ YELLOW: '\x1b[33m',
40
+ BLUE: '\x1b[34m',
41
+ };
42
+ /**
43
+ * Visual separator between log pane and input pane
44
+ * Default width: 60 characters
45
+ */
46
+ const SEPARATOR_CHAR = '\u2500'; // Box drawing character: ─
47
+ const SEPARATOR_WIDTH = 60;
48
+ /**
49
+ * Two-Pane Renderer
50
+ *
51
+ * Maintains separation between log output (upper pane) and input (lower pane).
52
+ * Ensures input line is never disrupted by log output.
53
+ */
54
+ class TwoPaneRenderer {
55
+ output;
56
+ prompt;
57
+ enabled;
58
+ // Input state (preserved across log writes)
59
+ inputBuffer = '';
60
+ inputCursorPos = 0;
61
+ // Debounce for high-frequency log output
62
+ pendingLogs = [];
63
+ flushTimeout = null;
64
+ FLUSH_DELAY_MS = 16; // ~60fps
65
+ constructor(config = {}) {
66
+ this.output = config.output || process.stdout;
67
+ this.prompt = config.prompt || 'pm> ';
68
+ // Enable 2-pane mode only if TTY
69
+ if (config.enabled !== undefined) {
70
+ this.enabled = config.enabled;
71
+ }
72
+ else {
73
+ this.enabled = this.output.isTTY === true;
74
+ }
75
+ }
76
+ /**
77
+ * Check if 2-pane mode is enabled
78
+ */
79
+ isEnabled() {
80
+ return this.enabled;
81
+ }
82
+ /**
83
+ * Write log message to upper pane
84
+ * Per spec/18: Logs flow in upper pane, never disrupting input line
85
+ *
86
+ * @param message - Log message to write
87
+ */
88
+ writeLog(message) {
89
+ if (!this.enabled) {
90
+ // Fallback: use console.log for non-TTY
91
+ // This maintains compatibility with test mocks that capture console.log
92
+ // eslint-disable-next-line no-console
93
+ console.log(message);
94
+ return;
95
+ }
96
+ // Add to pending logs for batched output
97
+ this.pendingLogs.push(message);
98
+ // Schedule flush
99
+ if (!this.flushTimeout) {
100
+ this.flushTimeout = setTimeout(() => {
101
+ this.flushLogs();
102
+ }, this.FLUSH_DELAY_MS);
103
+ }
104
+ }
105
+ /**
106
+ * Generate visual separator line
107
+ * Per spec: Visual separation between log pane and input pane
108
+ */
109
+ getSeparator() {
110
+ // Use terminal width if available, otherwise default
111
+ const width = this.output.columns || SEPARATOR_WIDTH;
112
+ return ANSI.DIM + SEPARATOR_CHAR.repeat(Math.min(width, 120)) + ANSI.RESET;
113
+ }
114
+ /**
115
+ * Format a log line with visual prefix
116
+ * Adds dim pipe character to distinguish log output from input
117
+ */
118
+ formatLogLine(message) {
119
+ // Add dim gray prefix to log lines for visual distinction
120
+ return `${ANSI.DIM}|${ANSI.RESET} ${message}`;
121
+ }
122
+ /**
123
+ * Flush pending logs to output
124
+ * Preserves input line state
125
+ */
126
+ flushLogs() {
127
+ this.flushTimeout = null;
128
+ if (this.pendingLogs.length === 0) {
129
+ return;
130
+ }
131
+ const logs = this.pendingLogs;
132
+ this.pendingLogs = [];
133
+ // 1. Save cursor position and clear input line
134
+ this.output.write(ANSI.SAVE_CURSOR);
135
+ this.output.write(ANSI.MOVE_TO_COL(1));
136
+ this.output.write(ANSI.CLEAR_LINE);
137
+ // 2. Move cursor up to log area (if input is on screen)
138
+ // We write logs, then move back down and redraw input
139
+ // 3. Output all logs with visual prefix
140
+ for (const log of logs) {
141
+ this.output.write(this.formatLogLine(log) + '\n');
142
+ }
143
+ // 4. Redraw input line at current position (with separator)
144
+ this.renderInputLine();
145
+ // 5. Restore cursor to correct position in input
146
+ this.output.write(ANSI.MOVE_TO_COL(this.prompt.length + this.inputCursorPos + 1));
147
+ }
148
+ /**
149
+ * Render the input line (prompt + buffer)
150
+ * Called after log output to restore input state
151
+ * Includes visual separator for 2-pane distinction
152
+ */
153
+ renderInputLine() {
154
+ // Show separator line above input
155
+ this.output.write(this.getSeparator() + '\n');
156
+ // Colorized prompt for visual distinction
157
+ const coloredPrompt = `${ANSI.BOLD}${ANSI.CYAN}${this.prompt}${ANSI.RESET}`;
158
+ this.output.write(coloredPrompt + this.inputBuffer);
159
+ this.output.write(ANSI.CLEAR_TO_END);
160
+ }
161
+ /**
162
+ * Update input state
163
+ * Called by readline integration to sync input buffer
164
+ *
165
+ * @param buffer - Current input buffer content
166
+ * @param cursorPos - Cursor position within buffer
167
+ */
168
+ updateInput(buffer, cursorPos) {
169
+ this.inputBuffer = buffer;
170
+ this.inputCursorPos = cursorPos;
171
+ }
172
+ /**
173
+ * Clear input state (e.g., after command execution)
174
+ */
175
+ clearInput() {
176
+ this.inputBuffer = '';
177
+ this.inputCursorPos = 0;
178
+ }
179
+ /**
180
+ * Set prompt string
181
+ */
182
+ setPrompt(prompt) {
183
+ this.prompt = prompt;
184
+ }
185
+ /**
186
+ * Get current prompt
187
+ */
188
+ getPrompt() {
189
+ return this.prompt;
190
+ }
191
+ /**
192
+ * Format RUNNING display
193
+ * Per spec/18: RUNNING task-1234 | 12.3s | processing
194
+ * Yellow color for visibility
195
+ *
196
+ * @param info - Running task info
197
+ * @returns Formatted string
198
+ */
199
+ formatRunning(info) {
200
+ const elapsed = (info.elapsedMs / 1000).toFixed(1);
201
+ return `${ANSI.YELLOW}RUNNING${ANSI.RESET} ${info.taskId} | ${elapsed}s | ${info.status}`;
202
+ }
203
+ /**
204
+ * Show RUNNING status
205
+ * Per spec/18: 1 line only display
206
+ *
207
+ * @param info - Running task info
208
+ */
209
+ showRunning(info) {
210
+ this.writeLog(this.formatRunning(info));
211
+ }
212
+ /**
213
+ * Format COMPLETE display
214
+ * Per spec/18:
215
+ * - Result summary (green for success)
216
+ * - Files modified list
217
+ * - Next operations
218
+ *
219
+ * @param info - Complete task info
220
+ * @returns Formatted lines
221
+ */
222
+ formatComplete(info) {
223
+ const elapsed = (info.elapsedMs / 1000).toFixed(1);
224
+ const lines = [];
225
+ lines.push(`${ANSI.GREEN}COMPLETE${ANSI.RESET} ${info.taskId} | ${elapsed}s`);
226
+ lines.push('');
227
+ if (info.filesModified.length > 0) {
228
+ lines.push(`${ANSI.BOLD}Files modified:${ANSI.RESET}`);
229
+ for (const file of info.filesModified) {
230
+ lines.push(` ${ANSI.DIM}-${ANSI.RESET} ${file}`);
231
+ }
232
+ lines.push('');
233
+ }
234
+ lines.push(`${ANSI.BLUE}Next:${ANSI.RESET} ${info.nextOperations}`);
235
+ return lines;
236
+ }
237
+ /**
238
+ * Show COMPLETE status
239
+ * Per spec/18: Result summary, files modified, next operations
240
+ *
241
+ * @param info - Complete task info
242
+ */
243
+ showComplete(info) {
244
+ const lines = this.formatComplete(info);
245
+ for (const line of lines) {
246
+ this.writeLog(line);
247
+ }
248
+ }
249
+ /**
250
+ * Force flush any pending logs immediately
251
+ * Used before exit or when immediate output is needed
252
+ */
253
+ flush() {
254
+ if (this.flushTimeout) {
255
+ clearTimeout(this.flushTimeout);
256
+ this.flushTimeout = null;
257
+ }
258
+ if (this.pendingLogs.length > 0) {
259
+ this.flushLogs();
260
+ }
261
+ }
262
+ /**
263
+ * Get current input buffer (for testing)
264
+ */
265
+ getInputBuffer() {
266
+ return this.inputBuffer;
267
+ }
268
+ /**
269
+ * Get current cursor position (for testing)
270
+ */
271
+ getInputCursorPos() {
272
+ return this.inputCursorPos;
273
+ }
274
+ }
275
+ exports.TwoPaneRenderer = TwoPaneRenderer;
276
+ //# sourceMappingURL=two-pane-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"two-pane-renderer.js","sourceRoot":"","sources":["../../src/repl/two-pane-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Trace Pack - Minimal JSONL logging for session/task state transitions
3
+ *
4
+ * Per spec:
5
+ * - JSONL format (one JSON object per line)
6
+ * - Records: session_id, task_group_id, task_id, state transitions, verification results
7
+ * - Verify function for output format compliance
8
+ */
9
+ /**
10
+ * Trace entry types
11
+ */
12
+ export type TraceEventType = 'SESSION_START' | 'SESSION_END' | 'TASK_GROUP_START' | 'TASK_GROUP_END' | 'TASK_START' | 'TASK_STATE_CHANGE' | 'TASK_END' | 'EXECUTOR_CALL' | 'EXECUTOR_RESULT' | 'VERIFICATION_START' | 'VERIFICATION_RESULT' | 'ERROR' | 'WARNING';
13
+ /**
14
+ * Base trace entry structure
15
+ */
16
+ export interface TraceEntry {
17
+ /** ISO timestamp */
18
+ timestamp: string;
19
+ /** Event type */
20
+ event: TraceEventType;
21
+ /** Session identifier */
22
+ session_id: string;
23
+ /** Task group identifier (optional) */
24
+ task_group_id?: string;
25
+ /** Task identifier (optional) */
26
+ task_id?: string;
27
+ /** Previous state (for state transitions) */
28
+ from_state?: string;
29
+ /** New state (for state transitions) */
30
+ to_state?: string;
31
+ /** Additional data */
32
+ data?: Record<string, unknown>;
33
+ /** Verification result (for verification events) */
34
+ verification_result?: {
35
+ passed: boolean;
36
+ checks: Array<{
37
+ name: string;
38
+ passed: boolean;
39
+ message?: string;
40
+ }>;
41
+ };
42
+ /** Error information */
43
+ error?: {
44
+ message: string;
45
+ code?: string;
46
+ stack?: string;
47
+ };
48
+ }
49
+ /**
50
+ * Trace Pack configuration
51
+ */
52
+ export interface TracePackConfig {
53
+ /** Output directory for trace files */
54
+ outputDir: string;
55
+ /** Session ID */
56
+ sessionId: string;
57
+ /** Whether to buffer writes */
58
+ buffered?: boolean;
59
+ /** Max buffer size before flush */
60
+ maxBufferSize?: number;
61
+ }
62
+ /**
63
+ * Trace Pack - JSONL logger for session/task state transitions
64
+ */
65
+ export declare class TracePack {
66
+ private config;
67
+ private outputPath;
68
+ private buffer;
69
+ private writeStream;
70
+ constructor(config: TracePackConfig);
71
+ /**
72
+ * Get the output file path
73
+ */
74
+ getOutputPath(): string;
75
+ /**
76
+ * Log a trace entry
77
+ */
78
+ log(entry: Omit<TraceEntry, 'timestamp' | 'session_id'>): void;
79
+ /**
80
+ * Log session start
81
+ */
82
+ sessionStart(data?: Record<string, unknown>): void;
83
+ /**
84
+ * Log session end
85
+ */
86
+ sessionEnd(data?: Record<string, unknown>): void;
87
+ /**
88
+ * Log task group start
89
+ */
90
+ taskGroupStart(taskGroupId: string, data?: Record<string, unknown>): void;
91
+ /**
92
+ * Log task group end
93
+ */
94
+ taskGroupEnd(taskGroupId: string, data?: Record<string, unknown>): void;
95
+ /**
96
+ * Log task start
97
+ */
98
+ taskStart(taskGroupId: string, taskId: string, data?: Record<string, unknown>): void;
99
+ /**
100
+ * Log task state change
101
+ */
102
+ taskStateChange(taskGroupId: string, taskId: string, fromState: string, toState: string, data?: Record<string, unknown>): void;
103
+ /**
104
+ * Log task end
105
+ */
106
+ taskEnd(taskGroupId: string, taskId: string, finalState: string, data?: Record<string, unknown>): void;
107
+ /**
108
+ * Log executor call
109
+ */
110
+ executorCall(taskGroupId: string, taskId: string, data?: Record<string, unknown>): void;
111
+ /**
112
+ * Log executor result
113
+ */
114
+ executorResult(taskGroupId: string, taskId: string, status: string, data?: Record<string, unknown>): void;
115
+ /**
116
+ * Log verification start
117
+ */
118
+ verificationStart(taskGroupId: string, taskId: string, data?: Record<string, unknown>): void;
119
+ /**
120
+ * Log verification result
121
+ */
122
+ verificationResult(taskGroupId: string, taskId: string, passed: boolean, checks: Array<{
123
+ name: string;
124
+ passed: boolean;
125
+ message?: string;
126
+ }>, data?: Record<string, unknown>): void;
127
+ /**
128
+ * Log error
129
+ */
130
+ error(message: string, code?: string, taskGroupId?: string, taskId?: string): void;
131
+ /**
132
+ * Log warning
133
+ */
134
+ warning(message: string, taskGroupId?: string, taskId?: string): void;
135
+ /**
136
+ * Flush buffer to file
137
+ */
138
+ flush(): void;
139
+ /**
140
+ * Write single entry to file
141
+ */
142
+ private writeEntry;
143
+ /**
144
+ * Close the trace pack
145
+ */
146
+ close(): void;
147
+ }
148
+ /**
149
+ * Verify trace file format compliance
150
+ */
151
+ export interface VerifyResult {
152
+ valid: boolean;
153
+ entryCount: number;
154
+ errors: Array<{
155
+ line: number;
156
+ error: string;
157
+ }>;
158
+ warnings: Array<{
159
+ line: number;
160
+ warning: string;
161
+ }>;
162
+ summary: {
163
+ sessionStarts: number;
164
+ sessionEnds: number;
165
+ taskGroupStarts: number;
166
+ taskGroupEnds: number;
167
+ taskStarts: number;
168
+ taskEnds: number;
169
+ stateChanges: number;
170
+ verificationResults: number;
171
+ errors: number;
172
+ };
173
+ }
174
+ /**
175
+ * Verify a trace file for format compliance
176
+ */
177
+ export declare function verifyTraceFile(filePath: string): VerifyResult;
178
+ /**
179
+ * Read and parse a trace file
180
+ */
181
+ export declare function readTraceFile(filePath: string): TraceEntry[];
182
+ //# sourceMappingURL=trace-pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-pack.d.ts","sourceRoot":"","sources":["../../src/trace/trace-pack.ts"],"names":[],"mappings":"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"}