pm-orchestrator-runner 1.0.4 → 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.
- package/dist/config/global-config.d.ts +69 -0
- package/dist/config/global-config.d.ts.map +1 -0
- package/dist/config/global-config.js +168 -0
- package/dist/config/global-config.js.map +1 -0
- package/dist/core/runner-core.d.ts.map +1 -1
- package/dist/core/runner-core.js +6 -0
- package/dist/core/runner-core.js.map +1 -1
- package/dist/executor/recovery-executor.d.ts +101 -0
- package/dist/executor/recovery-executor.d.ts.map +1 -0
- package/dist/executor/recovery-executor.js +228 -0
- package/dist/executor/recovery-executor.js.map +1 -0
- package/dist/repl/commands/keys.d.ts +17 -0
- package/dist/repl/commands/keys.d.ts.map +1 -1
- package/dist/repl/commands/keys.js +76 -5
- package/dist/repl/commands/keys.js.map +1 -1
- package/dist/repl/commands/status.d.ts +21 -3
- package/dist/repl/commands/status.d.ts.map +1 -1
- package/dist/repl/commands/status.js +205 -60
- package/dist/repl/commands/status.js.map +1 -1
- package/dist/repl/repl-interface.d.ts +63 -1
- package/dist/repl/repl-interface.d.ts.map +1 -1
- package/dist/repl/repl-interface.js +252 -11
- package/dist/repl/repl-interface.js.map +1 -1
- package/package.json +4 -2
|
@@ -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
|
|
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.
|
|
129
|
+
return this.formatTasksImproved(taskResults);
|
|
63
130
|
}
|
|
64
131
|
catch (err) {
|
|
65
|
-
return
|
|
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:
|
|
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:
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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(
|
|
225
|
+
lines.push('Tasks: ' + completed + '/' + total + ' completed');
|
|
130
226
|
}
|
|
131
227
|
if (overallStatus) {
|
|
132
|
-
lines.push(
|
|
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
|
-
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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":";AAAA;;;
|
|
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
|
-
*
|
|
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
|
|
@@ -126,6 +136,7 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
126
136
|
private initOnlyMode;
|
|
127
137
|
private inputQueue;
|
|
128
138
|
private isProcessingInput;
|
|
139
|
+
private multiLineBuffer;
|
|
129
140
|
private executionMode;
|
|
130
141
|
private exitCode;
|
|
131
142
|
private hasError;
|
|
@@ -182,12 +193,21 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
182
193
|
* Per spec Property 32: temp mode directories may be cleaned up
|
|
183
194
|
*/
|
|
184
195
|
cleanup(): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* Check API key status and show warning if not configured
|
|
198
|
+
* API keys are stored in global config file (~/.pm-orchestrator-runner/config.json)
|
|
199
|
+
*/
|
|
200
|
+
private checkApiKeyStatus;
|
|
185
201
|
/**
|
|
186
202
|
* Start the REPL
|
|
187
203
|
* Per spec 10_REPL_UX.md L45: validate project structure on startup
|
|
188
204
|
*
|
|
189
205
|
* If .claude is missing, enter init-only mode instead of throwing.
|
|
190
206
|
* In init-only mode, only /help, /init, /exit are available.
|
|
207
|
+
*
|
|
208
|
+
* API Key Check:
|
|
209
|
+
* - In api-key mode, check for API keys in global config
|
|
210
|
+
* - Show warning if not configured, with instructions to set up
|
|
191
211
|
*/
|
|
192
212
|
start(): Promise<void>;
|
|
193
213
|
/**
|
|
@@ -197,6 +217,11 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
197
217
|
/**
|
|
198
218
|
* Enqueue input for sequential processing
|
|
199
219
|
* This prevents race conditions when piped input arrives faster than processing
|
|
220
|
+
*
|
|
221
|
+
* Multi-line input support (for voice input like SuperWhisper):
|
|
222
|
+
* - Non-empty lines are accumulated in multiLineBuffer
|
|
223
|
+
* - Empty line triggers submission of accumulated content
|
|
224
|
+
* - This allows long messages with newlines to be sent together
|
|
200
225
|
*/
|
|
201
226
|
private enqueueInput;
|
|
202
227
|
/**
|
|
@@ -213,6 +238,12 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
213
238
|
* Other commands return ERROR with instruction to run /init first.
|
|
214
239
|
*/
|
|
215
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;
|
|
216
247
|
/**
|
|
217
248
|
* Process natural language input
|
|
218
249
|
* Per spec 10_REPL_UX.md L117-118: Model selection is REPL-local
|
|
@@ -220,6 +251,11 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
220
251
|
*
|
|
221
252
|
* Auto-start: In non-interactive mode, automatically start a session if none exists
|
|
222
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
|
|
223
259
|
*/
|
|
224
260
|
private processNaturalLanguage;
|
|
225
261
|
/**
|
|
@@ -261,6 +297,10 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
261
297
|
/**
|
|
262
298
|
* Handle /keys command
|
|
263
299
|
* Per spec 10_REPL_UX.md Section 2.3
|
|
300
|
+
*
|
|
301
|
+
* /keys - Show status of all API keys
|
|
302
|
+
* /keys set <p> <k> - Set API key for provider
|
|
303
|
+
* /keys <provider> - Check specific provider
|
|
264
304
|
*/
|
|
265
305
|
private handleKeys;
|
|
266
306
|
/**
|
|
@@ -299,9 +339,31 @@ export declare class REPLInterface extends EventEmitter {
|
|
|
299
339
|
* - Double-completion is prevented via sessionCompleted flag
|
|
300
340
|
*/
|
|
301
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;
|
|
302
363
|
/**
|
|
303
364
|
* Print execution result
|
|
304
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)
|
|
305
367
|
*/
|
|
306
368
|
private printExecutionResult;
|
|
307
369
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl-interface.d.ts","sourceRoot":"","sources":["../../src/repl/repl-interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"repl-interface.d.ts","sourceRoot":"","sources":["../../src/repl/repl-interface.ts"],"names":[],"mappings":"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"}
|