pm-orchestrator-runner 1.0.8 → 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.
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ /**
3
+ * StepwiseMockExecutor
4
+ *
5
+ * A mock executor that returns different results based on call count.
6
+ * Used for testing the self-heal mediation loop.
7
+ *
8
+ * Per spec:
9
+ * - Step 1: Returns buggy implementation -> INCOMPLETE
10
+ * - Step 2: Returns fixed implementation -> COMPLETE
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.StepwiseMockExecutor = void 0;
47
+ exports.createTinyCliMockExecutor = createTinyCliMockExecutor;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ /**
51
+ * StepwiseMockExecutor
52
+ *
53
+ * Varies results based on call count to simulate:
54
+ * 1. Initial buggy implementation (INCOMPLETE)
55
+ * 2. Correction/fix (COMPLETE)
56
+ */
57
+ class StepwiseMockExecutor {
58
+ callCount = 0;
59
+ config;
60
+ executionLog = [];
61
+ constructor(config) {
62
+ this.config = config;
63
+ }
64
+ /**
65
+ * Get current call count
66
+ */
67
+ getCallCount() {
68
+ return this.callCount;
69
+ }
70
+ /**
71
+ * Get execution log for verification
72
+ */
73
+ getExecutionLog() {
74
+ return [...this.executionLog];
75
+ }
76
+ /**
77
+ * Reset executor state
78
+ */
79
+ reset() {
80
+ this.callCount = 0;
81
+ this.executionLog = [];
82
+ }
83
+ async isClaudeCodeAvailable() {
84
+ return true;
85
+ }
86
+ async checkAuthStatus() {
87
+ return { available: true, loggedIn: true };
88
+ }
89
+ async execute(task) {
90
+ const startTime = Date.now();
91
+ this.callCount++;
92
+ const currentStep = this.callCount - 1;
93
+ // Get step config or use default
94
+ const stepConfig = this.config.steps[currentStep] || {
95
+ status: this.config.defaultStatus || 'COMPLETE',
96
+ output: 'No more steps configured',
97
+ };
98
+ const filesCreated = [];
99
+ const verifiedFiles = [];
100
+ // Create files if specified
101
+ if (stepConfig.filesToCreate) {
102
+ for (const file of stepConfig.filesToCreate) {
103
+ const fullPath = path.join(this.config.projectPath, file.path);
104
+ const dir = path.dirname(fullPath);
105
+ // Ensure directory exists
106
+ if (!fs.existsSync(dir)) {
107
+ fs.mkdirSync(dir, { recursive: true });
108
+ }
109
+ // Write file
110
+ fs.writeFileSync(fullPath, file.content, 'utf-8');
111
+ filesCreated.push(file.path);
112
+ // Verify file
113
+ const stat = fs.statSync(fullPath);
114
+ verifiedFiles.push({
115
+ path: file.path,
116
+ exists: true,
117
+ size: stat.size,
118
+ content_preview: file.content.substring(0, 100),
119
+ });
120
+ }
121
+ }
122
+ // Execute custom handler if provided
123
+ let customResult = {};
124
+ if (stepConfig.customHandler) {
125
+ customResult = await stepConfig.customHandler(task, this.config.projectPath);
126
+ }
127
+ // Determine final status
128
+ let finalStatus = stepConfig.status;
129
+ // If testShouldPass is specified, run npm test to verify
130
+ if (stepConfig.testShouldPass !== undefined && filesCreated.length > 0) {
131
+ // Rebuild if TypeScript files were modified
132
+ const tsFilesModified = filesCreated.some(f => f.endsWith('.ts'));
133
+ if (tsFilesModified) {
134
+ try {
135
+ const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
136
+ execSync('npm run build', {
137
+ cwd: this.config.projectPath,
138
+ stdio: 'pipe',
139
+ });
140
+ }
141
+ catch {
142
+ // Build failed
143
+ finalStatus = 'ERROR';
144
+ }
145
+ }
146
+ }
147
+ // Log execution
148
+ this.executionLog.push({
149
+ callNumber: this.callCount,
150
+ timestamp: new Date().toISOString(),
151
+ taskId: task.id,
152
+ prompt: task.prompt.substring(0, 200),
153
+ status: finalStatus,
154
+ filesCreated,
155
+ });
156
+ const duration_ms = Date.now() - startTime;
157
+ return {
158
+ executed: true,
159
+ output: stepConfig.output,
160
+ files_modified: filesCreated,
161
+ duration_ms,
162
+ status: finalStatus,
163
+ cwd: this.config.projectPath,
164
+ verified_files: verifiedFiles,
165
+ unverified_files: [],
166
+ ...customResult,
167
+ };
168
+ }
169
+ }
170
+ exports.StepwiseMockExecutor = StepwiseMockExecutor;
171
+ /**
172
+ * Create a StepwiseMockExecutor configured for the tiny-cli self-heal test
173
+ *
174
+ * Step 1: Creates buggy implementation (tests fail) -> INCOMPLETE
175
+ * Step 2: Creates fixed implementation (tests pass) -> COMPLETE
176
+ */
177
+ function createTinyCliMockExecutor(projectPath) {
178
+ return new StepwiseMockExecutor({
179
+ projectPath,
180
+ steps: [
181
+ // Step 1: Initial implementation (buggy)
182
+ {
183
+ status: 'INCOMPLETE',
184
+ output: 'Implemented sum and fib functions. Running tests... Tests failed: 6 failing. Need to fix bugs.',
185
+ filesToCreate: [
186
+ {
187
+ path: 'src/tiny-cli.ts',
188
+ content: `#!/usr/bin/env node
189
+ /**
190
+ * Tiny CLI - A minimal CLI for testing
191
+ *
192
+ * BUGGY IMPLEMENTATION (Step 1)
193
+ */
194
+
195
+ function sum(a: number, b: number): number {
196
+ // BUG: String concatenation instead of numeric addition
197
+ return Number(String(a) + String(b));
198
+ }
199
+
200
+ function fib(n: number): number {
201
+ if (n <= 0) return 0;
202
+ if (n === 1) return 1;
203
+
204
+ let prev = 0;
205
+ let curr = 1;
206
+
207
+ // BUG: Off-by-one error
208
+ for (let i = 0; i <= n; i++) {
209
+ const next = prev + curr;
210
+ prev = curr;
211
+ curr = next;
212
+ }
213
+
214
+ return curr;
215
+ }
216
+
217
+ function main(): void {
218
+ const args = process.argv.slice(2);
219
+
220
+ if (args.length === 0) {
221
+ console.error('Usage: tiny-cli <command> [args]');
222
+ console.error('Commands:');
223
+ console.error(' sum <a> <b> - Returns the sum of two numbers');
224
+ console.error(' fib <n> - Returns the nth Fibonacci number');
225
+ process.exit(2);
226
+ }
227
+
228
+ const command = args[0];
229
+
230
+ switch (command) {
231
+ case 'sum': {
232
+ if (args.length !== 3) {
233
+ console.error('Usage: tiny-cli sum <a> <b>');
234
+ process.exit(2);
235
+ }
236
+ const a = parseInt(args[1], 10);
237
+ const b = parseInt(args[2], 10);
238
+ if (isNaN(a) || isNaN(b)) {
239
+ console.error('Error: Arguments must be numbers');
240
+ process.exit(2);
241
+ }
242
+ console.log(sum(a, b));
243
+ break;
244
+ }
245
+
246
+ case 'fib': {
247
+ if (args.length !== 2) {
248
+ console.error('Usage: tiny-cli fib <n>');
249
+ process.exit(2);
250
+ }
251
+ const n = parseInt(args[1], 10);
252
+ if (isNaN(n) || n < 0) {
253
+ console.error('Error: Argument must be a non-negative integer');
254
+ process.exit(2);
255
+ }
256
+ console.log(fib(n));
257
+ break;
258
+ }
259
+
260
+ default:
261
+ console.error(\`Unknown command: \${command}\`);
262
+ console.error('Available commands: sum, fib');
263
+ process.exit(2);
264
+ }
265
+ }
266
+
267
+ main();
268
+ `,
269
+ },
270
+ ],
271
+ testShouldPass: false,
272
+ },
273
+ // Step 2: Fixed implementation
274
+ {
275
+ status: 'COMPLETE',
276
+ output: 'Fixed both sum and fib functions. Running tests... All 15 tests passing.',
277
+ filesToCreate: [
278
+ {
279
+ path: 'src/tiny-cli.ts',
280
+ content: `#!/usr/bin/env node
281
+ /**
282
+ * Tiny CLI - A minimal CLI for testing
283
+ *
284
+ * FIXED IMPLEMENTATION (Step 2)
285
+ */
286
+
287
+ function sum(a: number, b: number): number {
288
+ // FIXED: Proper numeric addition
289
+ return a + b;
290
+ }
291
+
292
+ function fib(n: number): number {
293
+ if (n <= 0) return 0;
294
+ if (n === 1) return 1;
295
+
296
+ let prev = 0;
297
+ let curr = 1;
298
+
299
+ // FIXED: Correct loop bounds (n-1 iterations)
300
+ for (let i = 2; i <= n; i++) {
301
+ const next = prev + curr;
302
+ prev = curr;
303
+ curr = next;
304
+ }
305
+
306
+ return curr;
307
+ }
308
+
309
+ function main(): void {
310
+ const args = process.argv.slice(2);
311
+
312
+ if (args.length === 0) {
313
+ console.error('Usage: tiny-cli <command> [args]');
314
+ console.error('Commands:');
315
+ console.error(' sum <a> <b> - Returns the sum of two numbers');
316
+ console.error(' fib <n> - Returns the nth Fibonacci number');
317
+ process.exit(2);
318
+ }
319
+
320
+ const command = args[0];
321
+
322
+ switch (command) {
323
+ case 'sum': {
324
+ if (args.length !== 3) {
325
+ console.error('Usage: tiny-cli sum <a> <b>');
326
+ process.exit(2);
327
+ }
328
+ const a = parseInt(args[1], 10);
329
+ const b = parseInt(args[2], 10);
330
+ if (isNaN(a) || isNaN(b)) {
331
+ console.error('Error: Arguments must be numbers');
332
+ process.exit(2);
333
+ }
334
+ console.log(sum(a, b));
335
+ break;
336
+ }
337
+
338
+ case 'fib': {
339
+ if (args.length !== 2) {
340
+ console.error('Usage: tiny-cli fib <n>');
341
+ process.exit(2);
342
+ }
343
+ const n = parseInt(args[1], 10);
344
+ if (isNaN(n) || n < 0) {
345
+ console.error('Error: Argument must be a non-negative integer');
346
+ process.exit(2);
347
+ }
348
+ console.log(fib(n));
349
+ break;
350
+ }
351
+
352
+ default:
353
+ console.error(\`Unknown command: \${command}\`);
354
+ console.error('Available commands: sum, fib');
355
+ process.exit(2);
356
+ }
357
+ }
358
+
359
+ main();
360
+ `,
361
+ },
362
+ ],
363
+ testShouldPass: true,
364
+ },
365
+ ],
366
+ defaultStatus: 'COMPLETE',
367
+ });
368
+ }
369
+ //# sourceMappingURL=stepwise-mock-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepwise-mock-executor.js","sourceRoot":"","sources":["../../src/executor/stepwise-mock-executor.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,16 @@ export declare class TwoPaneRenderer {
68
68
  * @param message - Log message to write
69
69
  */
70
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;
71
81
  /**
72
82
  * Flush pending logs to output
73
83
  * Preserves input line state
@@ -76,6 +86,7 @@ export declare class TwoPaneRenderer {
76
86
  /**
77
87
  * Render the input line (prompt + buffer)
78
88
  * Called after log output to restore input state
89
+ * Includes visual separator for 2-pane distinction
79
90
  */
80
91
  private renderInputLine;
81
92
  /**
@@ -101,6 +112,7 @@ export declare class TwoPaneRenderer {
101
112
  /**
102
113
  * Format RUNNING display
103
114
  * Per spec/18: RUNNING task-1234 | 12.3s | processing
115
+ * Yellow color for visibility
104
116
  *
105
117
  * @param info - Running task info
106
118
  * @returns Formatted string
@@ -116,7 +128,7 @@ export declare class TwoPaneRenderer {
116
128
  /**
117
129
  * Format COMPLETE display
118
130
  * Per spec/18:
119
- * - Result summary
131
+ * - Result summary (green for success)
120
132
  * - Files modified list
121
133
  * - Next operations
122
134
  *
@@ -1 +1 @@
1
- {"version":3,"file":"two-pane-renderer.d.ts","sourceRoot":"","sources":["../../src/repl/two-pane-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsBH;;;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,SAAS;IA8BjB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAKvB;;;;;;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;;;;;;OAMG;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"}
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"}
@@ -30,7 +30,21 @@ const ANSI = {
30
30
  CLEAR_TO_END: '\x1b[K',
31
31
  // Screen control
32
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',
33
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;
34
48
  /**
35
49
  * Two-Pane Renderer
36
50
  *
@@ -88,6 +102,23 @@ class TwoPaneRenderer {
88
102
  }, this.FLUSH_DELAY_MS);
89
103
  }
90
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
+ }
91
122
  /**
92
123
  * Flush pending logs to output
93
124
  * Preserves input line state
@@ -105,11 +136,11 @@ class TwoPaneRenderer {
105
136
  this.output.write(ANSI.CLEAR_LINE);
106
137
  // 2. Move cursor up to log area (if input is on screen)
107
138
  // We write logs, then move back down and redraw input
108
- // 3. Output all logs
139
+ // 3. Output all logs with visual prefix
109
140
  for (const log of logs) {
110
- this.output.write(log + '\n');
141
+ this.output.write(this.formatLogLine(log) + '\n');
111
142
  }
112
- // 4. Redraw input line at current position
143
+ // 4. Redraw input line at current position (with separator)
113
144
  this.renderInputLine();
114
145
  // 5. Restore cursor to correct position in input
115
146
  this.output.write(ANSI.MOVE_TO_COL(this.prompt.length + this.inputCursorPos + 1));
@@ -117,9 +148,14 @@ class TwoPaneRenderer {
117
148
  /**
118
149
  * Render the input line (prompt + buffer)
119
150
  * Called after log output to restore input state
151
+ * Includes visual separator for 2-pane distinction
120
152
  */
121
153
  renderInputLine() {
122
- this.output.write(this.prompt + this.inputBuffer);
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);
123
159
  this.output.write(ANSI.CLEAR_TO_END);
124
160
  }
125
161
  /**
@@ -155,13 +191,14 @@ class TwoPaneRenderer {
155
191
  /**
156
192
  * Format RUNNING display
157
193
  * Per spec/18: RUNNING task-1234 | 12.3s | processing
194
+ * Yellow color for visibility
158
195
  *
159
196
  * @param info - Running task info
160
197
  * @returns Formatted string
161
198
  */
162
199
  formatRunning(info) {
163
200
  const elapsed = (info.elapsedMs / 1000).toFixed(1);
164
- return `RUNNING ${info.taskId} | ${elapsed}s | ${info.status}`;
201
+ return `${ANSI.YELLOW}RUNNING${ANSI.RESET} ${info.taskId} | ${elapsed}s | ${info.status}`;
165
202
  }
166
203
  /**
167
204
  * Show RUNNING status
@@ -175,7 +212,7 @@ class TwoPaneRenderer {
175
212
  /**
176
213
  * Format COMPLETE display
177
214
  * Per spec/18:
178
- * - Result summary
215
+ * - Result summary (green for success)
179
216
  * - Files modified list
180
217
  * - Next operations
181
218
  *
@@ -185,16 +222,16 @@ class TwoPaneRenderer {
185
222
  formatComplete(info) {
186
223
  const elapsed = (info.elapsedMs / 1000).toFixed(1);
187
224
  const lines = [];
188
- lines.push(`COMPLETE ${info.taskId} | ${elapsed}s`);
225
+ lines.push(`${ANSI.GREEN}COMPLETE${ANSI.RESET} ${info.taskId} | ${elapsed}s`);
189
226
  lines.push('');
190
227
  if (info.filesModified.length > 0) {
191
- lines.push('Files modified:');
228
+ lines.push(`${ANSI.BOLD}Files modified:${ANSI.RESET}`);
192
229
  for (const file of info.filesModified) {
193
- lines.push(` - ${file}`);
230
+ lines.push(` ${ANSI.DIM}-${ANSI.RESET} ${file}`);
194
231
  }
195
232
  lines.push('');
196
233
  }
197
- lines.push(`Next: ${info.nextOperations}`);
234
+ lines.push(`${ANSI.BLUE}Next:${ANSI.RESET} ${info.nextOperations}`);
198
235
  return lines;
199
236
  }
200
237
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"two-pane-renderer.js","sourceRoot":"","sources":["../../src/repl/two-pane-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"two-pane-renderer.js","sourceRoot":"","sources":["../../src/repl/two-pane-renderer.ts"],"names":[],"mappings":"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"}