pm-orchestrator-runner 1.0.5 → 1.0.6

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.
@@ -1,8 +1,22 @@
1
1
  /**
2
2
  * Status Commands Handler
3
3
  * Manages /status and /tasks commands
4
+ *
5
+ * UX Improvements (v2):
6
+ * - Tasks are categorized into Active/Completed/Failed/Pending sections
7
+ * - ERROR tasks no longer shown as "Current Tasks"
8
+ * - Human-readable error messages with guidance
9
+ * - Alert banners for failed tasks
4
10
  */
5
11
  import { RunnerCore } from '../../core/runner-core';
12
+ /**
13
+ * Translate technical error messages to human-readable form
14
+ */
15
+ export declare function getHumanReadableError(errorMessage: string): string;
16
+ /**
17
+ * Get guidance for specific error types
18
+ */
19
+ export declare function getErrorGuidance(status: string): string[];
6
20
  /**
7
21
  * REPL session state (shared with repl-interface)
8
22
  */
@@ -24,9 +38,13 @@ export declare class StatusCommands {
24
38
  */
25
39
  getStatus(): Promise<string>;
26
40
  /**
27
- * Get current tasks
41
+ * Get current tasks - with improved categorization
28
42
  */
29
43
  getTasks(): Promise<string>;
44
+ /**
45
+ * Categorize tasks by status
46
+ */
47
+ private categorizeTasks;
30
48
  /**
31
49
  * Format no session message
32
50
  */
@@ -44,9 +62,9 @@ export declare class StatusCommands {
44
62
  */
45
63
  private formatStatus;
46
64
  /**
47
- * Format tasks list
65
+ * Format tasks list - IMPROVED with categorization and guidance
48
66
  */
49
- private formatTasks;
67
+ private formatTasksImproved;
50
68
  /**
51
69
  * Get status icon
52
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWpD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,WAAW;IAIhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAwBlC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoCnB;;OAEG;IACH,OAAO,CAAC,aAAa;CActB"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWpD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAqBlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAqCzD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvC;AAYD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,EAAE,WAAW;IAIhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAwBlC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBjC;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,YAAY;IA4BpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkF3B;;OAEG;IACH,OAAO,CAAC,aAAa;CActB"}
@@ -2,9 +2,17 @@
2
2
  /**
3
3
  * Status Commands Handler
4
4
  * Manages /status and /tasks commands
5
+ *
6
+ * UX Improvements (v2):
7
+ * - Tasks are categorized into Active/Completed/Failed/Pending sections
8
+ * - ERROR tasks no longer shown as "Current Tasks"
9
+ * - Human-readable error messages with guidance
10
+ * - Alert banners for failed tasks
5
11
  */
6
12
  Object.defineProperty(exports, "__esModule", { value: true });
7
13
  exports.StatusCommands = void 0;
14
+ exports.getHumanReadableError = getHumanReadableError;
15
+ exports.getErrorGuidance = getErrorGuidance;
8
16
  const enums_1 = require("../../models/enums");
9
17
  /**
10
18
  * Helper to normalize status for comparison
@@ -13,6 +21,65 @@ const enums_1 = require("../../models/enums");
13
21
  function normalizeStatus(status) {
14
22
  return (status || '').toUpperCase();
15
23
  }
24
+ /**
25
+ * Translate technical error messages to human-readable form
26
+ */
27
+ function getHumanReadableError(errorMessage) {
28
+ // NO_EVIDENCE / verified files error
29
+ if (errorMessage.includes('verified files') || errorMessage.includes('no evidence')) {
30
+ return 'No files were created or modified by this task';
31
+ }
32
+ // Blocked executor
33
+ if (errorMessage.includes('BLOCKED') || errorMessage.includes('blocked')) {
34
+ return 'Task was interrupted (may require interactive input)';
35
+ }
36
+ // Timeout
37
+ if (errorMessage.includes('timeout') || errorMessage.includes('TIMEOUT')) {
38
+ return 'Task took too long and was stopped';
39
+ }
40
+ // Default: return original but truncate if too long
41
+ if (errorMessage.length > 100) {
42
+ return errorMessage.substring(0, 100) + '...';
43
+ }
44
+ return errorMessage;
45
+ }
46
+ /**
47
+ * Get guidance for specific error types
48
+ */
49
+ function getErrorGuidance(status) {
50
+ const normalizedStatus = normalizeStatus(status);
51
+ switch (normalizedStatus) {
52
+ case 'NO_EVIDENCE':
53
+ return [
54
+ 'The task ran but no files were verified on disk.',
55
+ '',
56
+ 'To resolve:',
57
+ ' 1. Check task description - was a file path specified?',
58
+ ' 2. Run /logs <task-id> to see execution details',
59
+ ' 3. Try rephrasing your request with explicit file paths',
60
+ ' Example: "Create a file at src/utils/helper.ts with..."',
61
+ ];
62
+ case 'ERROR':
63
+ return [
64
+ 'The task encountered an error during execution.',
65
+ '',
66
+ 'To resolve:',
67
+ ' 1. Run /logs <task-id> --full for detailed error logs',
68
+ ' 2. Check if the task description is clear and specific',
69
+ ' 3. Retry the task or break it into smaller steps',
70
+ ];
71
+ case 'INVALID':
72
+ return [
73
+ 'The task or its result was invalid.',
74
+ '',
75
+ 'To resolve:',
76
+ ' 1. Run /logs <task-id> to see what went wrong',
77
+ ' 2. Ensure your request is clear and actionable',
78
+ ];
79
+ default:
80
+ return [];
81
+ }
82
+ }
16
83
  /**
17
84
  * Status commands handler
18
85
  */
@@ -41,11 +108,11 @@ class StatusCommands {
41
108
  return this.formatStatus(sessionState, overallStatus, taskResults);
42
109
  }
43
110
  catch (err) {
44
- return `Error getting status: ${err.message}`;
111
+ return 'Error getting status: ' + err.message;
45
112
  }
46
113
  }
47
114
  /**
48
- * Get current tasks
115
+ * Get current tasks - with improved categorization
49
116
  */
50
117
  async getTasks() {
51
118
  if (!this.session.sessionId) {
@@ -59,53 +126,84 @@ class StatusCommands {
59
126
  if (!taskResults || taskResults.length === 0) {
60
127
  return 'No tasks in current session.';
61
128
  }
62
- return this.formatTasks(taskResults);
129
+ return this.formatTasksImproved(taskResults);
63
130
  }
64
131
  catch (err) {
65
- return `Error getting tasks: ${err.message}`;
132
+ return 'Error getting tasks: ' + err.message;
133
+ }
134
+ }
135
+ /**
136
+ * Categorize tasks by status
137
+ */
138
+ categorizeTasks(tasks) {
139
+ const result = {
140
+ active: [],
141
+ completed: [],
142
+ failed: [],
143
+ pending: [],
144
+ };
145
+ for (const task of tasks) {
146
+ const status = normalizeStatus(task.status);
147
+ if (status === enums_1.TaskStatus.IN_PROGRESS) {
148
+ result.active.push(task);
149
+ }
150
+ else if (status === enums_1.TaskStatus.COMPLETE || status === enums_1.TaskStatus.COMPLETED) {
151
+ result.completed.push(task);
152
+ }
153
+ else if (status === enums_1.TaskStatus.ERROR ||
154
+ status === enums_1.TaskStatus.NO_EVIDENCE ||
155
+ status === enums_1.TaskStatus.INVALID ||
156
+ status === 'FAILED') {
157
+ result.failed.push(task);
158
+ }
159
+ else if (status === enums_1.TaskStatus.PENDING) {
160
+ result.pending.push(task);
161
+ }
162
+ else {
163
+ // Unknown status - treat as pending
164
+ result.pending.push(task);
165
+ }
66
166
  }
167
+ return result;
67
168
  }
68
169
  /**
69
170
  * Format no session message
70
171
  */
71
172
  formatNoSession() {
72
- return `
73
- Session Status
74
- ==============
75
- Status: No active session
76
-
77
- To start a session:
78
- /start [project-path]
79
-
80
- To continue a session:
81
- /continue [session-id]
82
- `;
173
+ return '\n' +
174
+ 'Session Status\n' +
175
+ '==============\n' +
176
+ 'Status: No active session\n' +
177
+ '\n' +
178
+ 'To start a session:\n' +
179
+ ' /start [project-path]\n' +
180
+ '\n' +
181
+ 'To continue a session:\n' +
182
+ ' /continue [session-id]\n';
83
183
  }
84
184
  /**
85
185
  * Format no runner message
86
186
  */
87
187
  formatNoRunner() {
88
- return `
89
- Session Status
90
- ==============
91
- Session ID: ${this.session.sessionId}
92
- Status: Runner not initialized
93
-
94
- Use /start to initialize the runner.
95
- `;
188
+ return '\n' +
189
+ 'Session Status\n' +
190
+ '==============\n' +
191
+ 'Session ID: ' + this.session.sessionId + '\n' +
192
+ 'Status: Runner not initialized\n' +
193
+ '\n' +
194
+ 'Use /start to initialize the runner.\n';
96
195
  }
97
196
  /**
98
197
  * Format no state message
99
198
  */
100
199
  formatNoState() {
101
- return `
102
- Session Status
103
- ==============
104
- Session ID: ${this.session.sessionId}
105
- Status: State not available
106
-
107
- The session may have been corrupted. Try /start to begin a new session.
108
- `;
200
+ return '\n' +
201
+ 'Session Status\n' +
202
+ '==============\n' +
203
+ 'Session ID: ' + this.session.sessionId + '\n' +
204
+ 'Status: State not available\n' +
205
+ '\n' +
206
+ 'The session may have been corrupted. Try /start to begin a new session.\n';
109
207
  }
110
208
  /**
111
209
  * Format status from state
@@ -115,48 +213,95 @@ The session may have been corrupted. Try /start to begin a new session.
115
213
  '',
116
214
  'Session Status',
117
215
  '==============',
118
- `Session ID: ${sessionState.session_id || this.session.sessionId}`,
119
- `Phase: ${sessionState.current_phase || 'unknown'}`,
120
- `Status: ${this.session.status}`,
121
- `Project: ${this.session.projectPath}`,
216
+ 'Session ID: ' + (sessionState.session_id || this.session.sessionId),
217
+ 'Phase: ' + (sessionState.current_phase || 'unknown'),
218
+ 'Status: ' + this.session.status,
219
+ 'Project: ' + this.session.projectPath,
122
220
  ];
123
221
  if (taskResults && taskResults.length > 0) {
124
- // Use case-insensitive comparison since TaskStatus enum uses UPPERCASE
125
- // but some code paths may use lowercase
126
222
  const completed = taskResults.filter((t) => normalizeStatus(t.status) === enums_1.TaskStatus.COMPLETED ||
127
223
  normalizeStatus(t.status) === enums_1.TaskStatus.COMPLETE).length;
128
224
  const total = taskResults.length;
129
- lines.push(`Tasks: ${completed}/${total} completed`);
225
+ lines.push('Tasks: ' + completed + '/' + total + ' completed');
130
226
  }
131
227
  if (overallStatus) {
132
- lines.push(`Overall: ${overallStatus}`);
228
+ lines.push('Overall: ' + overallStatus);
133
229
  }
134
230
  lines.push('');
135
231
  return lines.join('\n');
136
232
  }
137
233
  /**
138
- * Format tasks list
234
+ * Format tasks list - IMPROVED with categorization and guidance
139
235
  */
140
- formatTasks(tasks) {
141
- const lines = [
142
- '',
143
- 'Current Tasks',
144
- '=============',
145
- ];
146
- for (const task of tasks) {
147
- const statusIcon = this.getStatusIcon(task.status);
148
- const taskId = task.task_id || task.id || 'unknown';
149
- lines.push(`${statusIcon} ${taskId}: ${task.status || 'unknown'}`);
150
- }
151
- // Summary - use case-insensitive comparison for consistency
152
- const completed = tasks.filter((t) => normalizeStatus(t.status) === enums_1.TaskStatus.COMPLETED ||
153
- normalizeStatus(t.status) === enums_1.TaskStatus.COMPLETE).length;
154
- const pending = tasks.filter((t) => normalizeStatus(t.status) === enums_1.TaskStatus.PENDING).length;
155
- const running = tasks.filter((t) => normalizeStatus(t.status) === enums_1.TaskStatus.IN_PROGRESS).length;
156
- const failed = tasks.filter((t) => normalizeStatus(t.status) === enums_1.TaskStatus.ERROR ||
157
- normalizeStatus(t.status) === 'FAILED').length;
158
- lines.push('');
159
- lines.push(`Summary: ${completed} completed, ${running} running, ${pending} pending, ${failed} failed`);
236
+ formatTasksImproved(tasks) {
237
+ const categorized = this.categorizeTasks(tasks);
238
+ const lines = [''];
239
+ // Show alert banner if there are failed tasks
240
+ if (categorized.failed.length > 0) {
241
+ lines.push('!!! ALERT: ' + categorized.failed.length + ' task(s) failed !!!');
242
+ lines.push('');
243
+ }
244
+ // Failed Tasks section (show first if any - most important for UX)
245
+ if (categorized.failed.length > 0) {
246
+ lines.push('Failed Tasks');
247
+ lines.push('------------');
248
+ for (const task of categorized.failed) {
249
+ const taskId = task.task_id || task.id || 'unknown';
250
+ const status = task.status || 'ERROR';
251
+ lines.push('[!] ' + taskId + ': ' + status);
252
+ // Show human-readable error
253
+ if (task.error?.message) {
254
+ const humanError = getHumanReadableError(task.error.message);
255
+ lines.push(' Error: ' + humanError);
256
+ }
257
+ }
258
+ // Show guidance for failed tasks
259
+ if (categorized.failed.length > 0) {
260
+ const firstFailedStatus = normalizeStatus(categorized.failed[0].status);
261
+ const guidance = getErrorGuidance(firstFailedStatus);
262
+ if (guidance.length > 0) {
263
+ lines.push('');
264
+ for (const line of guidance) {
265
+ lines.push(' ' + line);
266
+ }
267
+ }
268
+ }
269
+ lines.push('');
270
+ }
271
+ // Active Tasks section
272
+ if (categorized.active.length > 0) {
273
+ lines.push('Active Tasks');
274
+ lines.push('------------');
275
+ for (const task of categorized.active) {
276
+ const taskId = task.task_id || task.id || 'unknown';
277
+ lines.push('[>] ' + taskId + ': IN_PROGRESS');
278
+ }
279
+ lines.push('');
280
+ }
281
+ // Pending Tasks section
282
+ if (categorized.pending.length > 0) {
283
+ lines.push('Pending Tasks');
284
+ lines.push('-------------');
285
+ for (const task of categorized.pending) {
286
+ const taskId = task.task_id || task.id || 'unknown';
287
+ lines.push('[ ] ' + taskId + ': PENDING');
288
+ }
289
+ lines.push('');
290
+ }
291
+ // Completed Tasks section (at the end - less urgent)
292
+ if (categorized.completed.length > 0) {
293
+ lines.push('Completed Tasks');
294
+ lines.push('---------------');
295
+ for (const task of categorized.completed) {
296
+ const taskId = task.task_id || task.id || 'unknown';
297
+ lines.push('[x] ' + taskId + ': COMPLETED');
298
+ }
299
+ lines.push('');
300
+ }
301
+ // Summary
302
+ lines.push('Summary');
303
+ lines.push('-------');
304
+ lines.push(categorized.completed.length + ' completed, ' + categorized.active.length + ' running, ' + categorized.pending.length + ' pending, ' + categorized.failed.length + ' failed');
160
305
  lines.push('');
161
306
  return lines.join('\n');
162
307
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/repl/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/repl/commands/status.ts"],"names":[],"mappings":"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"}
@@ -106,7 +106,13 @@ export interface CommandResult {
106
106
  };
107
107
  }
108
108
  /**
109
- * REPL session state
109
+ * Task log status - per spec 05_DATA_MODELS.md
110
+ * Terminal states: complete | incomplete | error
111
+ */
112
+ export type TaskLogStatus = 'queued' | 'running' | 'complete' | 'incomplete' | 'error';
113
+ /**
114
+ * REPL session state - per spec 05_DATA_MODELS.md
115
+ * Extended with current_task_id / last_task_id tracking
110
116
  */
111
117
  interface REPLSession {
112
118
  sessionId: string | null;
@@ -114,6 +120,10 @@ interface REPLSession {
114
120
  runner: RunnerCore | null;
115
121
  supervisor: ExecutorSupervisor | null;
116
122
  status: 'idle' | 'running' | 'paused';
123
+ /** Currently running task ID (null when no task or terminal state) */
124
+ current_task_id: string | null;
125
+ /** Last completed/failed task ID (preserved across tasks) */
126
+ last_task_id: string | null;
117
127
  }
118
128
  /**
119
129
  * REPL Interface class
@@ -228,6 +238,12 @@ export declare class REPLInterface extends EventEmitter {
228
238
  * Other commands return ERROR with instruction to run /init first.
229
239
  */
230
240
  processCommand(input: string): Promise<CommandResult>;
241
+ /**
242
+ * Check if input is a bare "exit" typo (should use /exit)
243
+ * Per spec 10_REPL_UX.md: Exit Typo Safety
244
+ * Pattern: ^exit\s*$ (case-insensitive, trimmed)
245
+ */
246
+ private isExitTypo;
231
247
  /**
232
248
  * Process natural language input
233
249
  * Per spec 10_REPL_UX.md L117-118: Model selection is REPL-local
@@ -235,6 +251,11 @@ export declare class REPLInterface extends EventEmitter {
235
251
  *
236
252
  * Auto-start: In non-interactive mode, automatically start a session if none exists
237
253
  * This improves CLI usability for piped input and scripting
254
+ *
255
+ * Exit Typo Safety (per spec 10_REPL_UX.md):
256
+ * - Detects bare "exit" input (without slash)
257
+ * - Shows error and suggests /exit
258
+ * - Never passes "exit" to Claude Code
238
259
  */
239
260
  private processNaturalLanguage;
240
261
  /**
@@ -318,9 +339,31 @@ export declare class REPLInterface extends EventEmitter {
318
339
  * - Double-completion is prevented via sessionCompleted flag
319
340
  */
320
341
  private handleExit;
342
+ /**
343
+ * Map OverallStatus to TaskLogStatus
344
+ * Per spec 05_DATA_MODELS.md: Terminal states are complete/incomplete/error
345
+ */
346
+ private mapToTaskLogStatus;
347
+ /**
348
+ * Check if status is terminal
349
+ * Per spec 05_DATA_MODELS.md: Terminal states are complete/incomplete/error
350
+ */
351
+ private isTerminalStatus;
352
+ /**
353
+ * Print immediate summary block
354
+ * Per spec 10_REPL_UX.md: Immediate Summary Output
355
+ *
356
+ * COMPLETE (4 lines fixed):
357
+ * RESULT: COMPLETE / TASK / NEXT: (none) / HINT
358
+ *
359
+ * INCOMPLETE/ERROR (5 lines fixed, WHY required):
360
+ * RESULT / TASK / NEXT: /logs <id> / WHY / HINT
361
+ */
362
+ private printImmediateSummary;
321
363
  /**
322
364
  * Print execution result
323
365
  * Per spec 10_REPL_UX.md: Error details must be visible for fail-closed debugging
366
+ * Also prints Immediate Summary for terminal states (per Property 39)
324
367
  */
325
368
  private printExecutionResult;
326
369
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"repl-interface.d.ts","sourceRoot":"","sources":["../../src/repl/repl-interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repl-interface.d.ts","sourceRoot":"","sources":["../../src/repl/repl-interface.ts"],"names":[],"mappings":"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"}