maistro 1.0.390
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/LICENSE +15 -0
- package/README.md +107 -0
- package/dist/app.d.ts +247 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +4971 -0
- package/dist/app.js.map +1 -0
- package/dist/buildInfo.d.ts +5 -0
- package/dist/buildInfo.d.ts.map +1 -0
- package/dist/buildInfo.js +2 -0
- package/dist/buildInfo.js.map +1 -0
- package/dist/caffeinate.d.ts +72 -0
- package/dist/caffeinate.d.ts.map +1 -0
- package/dist/caffeinate.js +258 -0
- package/dist/caffeinate.js.map +1 -0
- package/dist/claudePath.d.ts +10 -0
- package/dist/claudePath.d.ts.map +1 -0
- package/dist/claudePath.js +34 -0
- package/dist/claudePath.js.map +1 -0
- package/dist/clipboard.d.ts +44 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +442 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/config.d.ts +211 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +933 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +50 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +81 -0
- package/dist/constants.js.map +1 -0
- package/dist/contextBuilder.d.ts +38 -0
- package/dist/contextBuilder.d.ts.map +1 -0
- package/dist/contextBuilder.js +113 -0
- package/dist/contextBuilder.js.map +1 -0
- package/dist/dependencyDetector.d.ts +57 -0
- package/dist/dependencyDetector.d.ts.map +1 -0
- package/dist/dependencyDetector.js +505 -0
- package/dist/dependencyDetector.js.map +1 -0
- package/dist/executor.d.ts +83 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +583 -0
- package/dist/executor.js.map +1 -0
- package/dist/git.d.ts +85 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +283 -0
- package/dist/git.js.map +1 -0
- package/dist/imageManager.d.ts +161 -0
- package/dist/imageManager.d.ts.map +1 -0
- package/dist/imageManager.js +674 -0
- package/dist/imageManager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +437 -0
- package/dist/index.js.map +1 -0
- package/dist/input-visual-test.d.ts +9 -0
- package/dist/input-visual-test.d.ts.map +1 -0
- package/dist/input-visual-test.js +108 -0
- package/dist/input-visual-test.js.map +1 -0
- package/dist/inputBox.d.ts +228 -0
- package/dist/inputBox.d.ts.map +1 -0
- package/dist/inputBox.js +966 -0
- package/dist/inputBox.js.map +1 -0
- package/dist/logger.d.ts +136 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +347 -0
- package/dist/logger.js.map +1 -0
- package/dist/orchestrator.d.ts +149 -0
- package/dist/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator.js +821 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/planner.d.ts +86 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +830 -0
- package/dist/planner.js.map +1 -0
- package/dist/pty-test-runner.d.ts +87 -0
- package/dist/pty-test-runner.d.ts.map +1 -0
- package/dist/pty-test-runner.js +721 -0
- package/dist/pty-test-runner.js.map +1 -0
- package/dist/screen.d.ts +44 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +152 -0
- package/dist/screen.js.map +1 -0
- package/dist/taskQueue.d.ts +70 -0
- package/dist/taskQueue.d.ts.map +1 -0
- package/dist/taskQueue.js +282 -0
- package/dist/taskQueue.js.map +1 -0
- package/dist/tui-test-harness.d.ts +216 -0
- package/dist/tui-test-harness.d.ts.map +1 -0
- package/dist/tui-test-harness.js +527 -0
- package/dist/tui-test-harness.js.map +1 -0
- package/dist/types.d.ts +257 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +46 -0
- package/dist/types.js.map +1 -0
- package/dist/ui-visual-test.d.ts +15 -0
- package/dist/ui-visual-test.d.ts.map +1 -0
- package/dist/ui-visual-test.js +141 -0
- package/dist/ui-visual-test.js.map +1 -0
- package/dist/ui.d.ts +272 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +1531 -0
- package/dist/ui.js.map +1 -0
- package/dist/validator.d.ts +53 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +491 -0
- package/dist/validator.js.map +1 -0
- package/dist/versionCheck.d.ts +63 -0
- package/dist/versionCheck.d.ts.map +1 -0
- package/dist/versionCheck.js +261 -0
- package/dist/versionCheck.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pty-test-runner.js","sourceRoot":"","sources":["../src/pty-test-runner.ts"],"names":[],"mappings":"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"}
|
package/dist/screen.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen renderer with virtual state and full-redraw approach.
|
|
3
|
+
*
|
|
4
|
+
* Instead of tracking cursor positions and using escape sequences to update
|
|
5
|
+
* in place, this approach:
|
|
6
|
+
* 1. Keeps all UI state in memory
|
|
7
|
+
* 2. On any change (keystroke, resize), clears screen and redraws everything
|
|
8
|
+
*
|
|
9
|
+
* This is simpler and more reliable across different terminals.
|
|
10
|
+
*/
|
|
11
|
+
export interface ScreenState {
|
|
12
|
+
headerLines: string[];
|
|
13
|
+
title?: string;
|
|
14
|
+
subtitle?: string;
|
|
15
|
+
contentLines?: string[];
|
|
16
|
+
inputValue: string;
|
|
17
|
+
cursorIndex: number;
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
hint?: string;
|
|
20
|
+
inputPrefix?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Render the screen state to the terminal.
|
|
24
|
+
* Clears the screen and draws everything from scratch.
|
|
25
|
+
*/
|
|
26
|
+
export declare function renderScreen(state: ScreenState): void;
|
|
27
|
+
/**
|
|
28
|
+
* Simple text input with full-screen redraw approach.
|
|
29
|
+
* Returns the entered text, or null if cancelled.
|
|
30
|
+
* Uses the unified InputBox component for consistent rendering.
|
|
31
|
+
*/
|
|
32
|
+
export declare function simpleTextInput(options: {
|
|
33
|
+
headerLines: string[];
|
|
34
|
+
title?: string;
|
|
35
|
+
subtitle?: string;
|
|
36
|
+
placeholder?: string;
|
|
37
|
+
hint?: string;
|
|
38
|
+
initialValue?: string;
|
|
39
|
+
}): Promise<string | null>;
|
|
40
|
+
/**
|
|
41
|
+
* Build header lines for maistro
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildMaistroHeader(version: string, projectPath?: string): string[];
|
|
44
|
+
//# sourceMappingURL=screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,WAAW;IAE1B,WAAW,EAAE,MAAM,EAAE,CAAC;IAGtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAGxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CA0DrD;AAqCD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+CzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BlF"}
|
package/dist/screen.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screen renderer with virtual state and full-redraw approach.
|
|
3
|
+
*
|
|
4
|
+
* Instead of tracking cursor positions and using escape sequences to update
|
|
5
|
+
* in place, this approach:
|
|
6
|
+
* 1. Keeps all UI state in memory
|
|
7
|
+
* 2. On any change (keystroke, resize), clears screen and redraws everything
|
|
8
|
+
*
|
|
9
|
+
* This is simpler and more reliable across different terminals.
|
|
10
|
+
*/
|
|
11
|
+
import { InputBox } from './inputBox.js';
|
|
12
|
+
/**
|
|
13
|
+
* Render the screen state to the terminal.
|
|
14
|
+
* Clears the screen and draws everything from scratch.
|
|
15
|
+
*/
|
|
16
|
+
export function renderScreen(state) {
|
|
17
|
+
const termWidth = process.stdout.columns || 80;
|
|
18
|
+
const lines = [];
|
|
19
|
+
// Header
|
|
20
|
+
for (const line of state.headerLines) {
|
|
21
|
+
lines.push(line);
|
|
22
|
+
}
|
|
23
|
+
// Title
|
|
24
|
+
if (state.title) {
|
|
25
|
+
lines.push('');
|
|
26
|
+
lines.push(`\x1b[1m── ${state.title} ──\x1b[0m`);
|
|
27
|
+
lines.push('');
|
|
28
|
+
}
|
|
29
|
+
// Subtitle
|
|
30
|
+
if (state.subtitle) {
|
|
31
|
+
lines.push(`\x1b[90m${state.subtitle}\x1b[0m`);
|
|
32
|
+
lines.push('');
|
|
33
|
+
}
|
|
34
|
+
// Content lines
|
|
35
|
+
if (state.contentLines) {
|
|
36
|
+
for (const line of state.contentLines) {
|
|
37
|
+
lines.push(line);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Input bar - single line
|
|
41
|
+
const separator = '─'.repeat(termWidth);
|
|
42
|
+
lines.push(`\x1b[90m${separator}\x1b[0m`);
|
|
43
|
+
// Build the input line with visual cursor
|
|
44
|
+
const prefix = state.inputPrefix || '> ';
|
|
45
|
+
// Render input with cursor
|
|
46
|
+
const inputLine = renderInputWithCursor(state.inputValue, state.cursorIndex, state.placeholder, prefix, termWidth);
|
|
47
|
+
lines.push(inputLine);
|
|
48
|
+
lines.push(`\x1b[90m${separator}\x1b[0m`);
|
|
49
|
+
// Hint below the input bar
|
|
50
|
+
const hint = state.hint || 'Enter to continue, Esc to cancel';
|
|
51
|
+
lines.push(`\x1b[90m${hint}\x1b[0m`);
|
|
52
|
+
// Clear screen and output
|
|
53
|
+
// \x1b[2J = clear entire screen
|
|
54
|
+
// \x1b[3J = clear scrollback buffer
|
|
55
|
+
// \x1b[H = move cursor to top-left (row 1, col 1)
|
|
56
|
+
process.stdout.write('\x1b[2J\x1b[3J\x1b[H');
|
|
57
|
+
process.stdout.write(lines.join('\n'));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Render input text with a visual cursor (inverted character).
|
|
61
|
+
* Handles multi-line wrapping.
|
|
62
|
+
*/
|
|
63
|
+
function renderInputWithCursor(value, cursorIndex, placeholder, prefix, termWidth) {
|
|
64
|
+
// If empty, show placeholder with cursor at start
|
|
65
|
+
if (value.length === 0) {
|
|
66
|
+
const placeholderText = placeholder || '';
|
|
67
|
+
// Show cursor block at start, then placeholder in gray
|
|
68
|
+
return `${prefix}\x1b[7m \x1b[0m\x1b[90m${placeholderText}\x1b[0m`;
|
|
69
|
+
}
|
|
70
|
+
// Build the display with cursor
|
|
71
|
+
// Cursor is shown as inverted character (or space if at end)
|
|
72
|
+
const beforeCursor = value.slice(0, cursorIndex);
|
|
73
|
+
const atCursor = cursorIndex < value.length ? value[cursorIndex] : ' ';
|
|
74
|
+
const afterCursor = cursorIndex < value.length ? value.slice(cursorIndex + 1) : '';
|
|
75
|
+
// Handle newlines - replace with visible marker and actual line breaks
|
|
76
|
+
const formatText = (text) => text.replace(/\n/g, '↵\n '); // Indent continuation lines
|
|
77
|
+
const formattedBefore = formatText(beforeCursor);
|
|
78
|
+
const formattedAtCursor = atCursor === '\n' ? '↵' : atCursor;
|
|
79
|
+
const formattedAfter = formatText(afterCursor);
|
|
80
|
+
// Cursor shown with inverted colors
|
|
81
|
+
return `${prefix}${formattedBefore}\x1b[7m${formattedAtCursor}\x1b[0m${formattedAfter}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Simple text input with full-screen redraw approach.
|
|
85
|
+
* Returns the entered text, or null if cancelled.
|
|
86
|
+
* Uses the unified InputBox component for consistent rendering.
|
|
87
|
+
*/
|
|
88
|
+
export async function simpleTextInput(options) {
|
|
89
|
+
const { headerLines, title, subtitle, placeholder, hint, initialValue } = options;
|
|
90
|
+
// Function to render content above the input box
|
|
91
|
+
const renderContentAbove = () => {
|
|
92
|
+
const lines = [];
|
|
93
|
+
// Header
|
|
94
|
+
for (const line of headerLines) {
|
|
95
|
+
lines.push(line);
|
|
96
|
+
}
|
|
97
|
+
// Title
|
|
98
|
+
if (title) {
|
|
99
|
+
lines.push('');
|
|
100
|
+
lines.push(`\x1b[1m── ${title} ──\x1b[0m`);
|
|
101
|
+
lines.push('');
|
|
102
|
+
}
|
|
103
|
+
// Subtitle
|
|
104
|
+
if (subtitle) {
|
|
105
|
+
lines.push(`\x1b[90m${subtitle}\x1b[0m`);
|
|
106
|
+
lines.push('');
|
|
107
|
+
}
|
|
108
|
+
// Clear screen and output content
|
|
109
|
+
process.stdout.write('\x1b[2J\x1b[3J\x1b[H');
|
|
110
|
+
process.stdout.write(lines.join('\n'));
|
|
111
|
+
};
|
|
112
|
+
// Draw content first before InputBox renders
|
|
113
|
+
renderContentAbove();
|
|
114
|
+
// Use the unified InputBox component
|
|
115
|
+
const inputBox = new InputBox({
|
|
116
|
+
placeholder: placeholder || '',
|
|
117
|
+
hint: hint || 'Enter continue · Esc cancel',
|
|
118
|
+
initialValue: initialValue || '',
|
|
119
|
+
onRedraw: renderContentAbove,
|
|
120
|
+
});
|
|
121
|
+
const result = await inputBox.prompt();
|
|
122
|
+
// Clear screen after input is done
|
|
123
|
+
process.stdout.write('\x1b[2J\x1b[3J\x1b[H');
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Build header lines for maistro
|
|
128
|
+
*/
|
|
129
|
+
export function buildMaistroHeader(version, projectPath) {
|
|
130
|
+
const lines = [];
|
|
131
|
+
// Calculate box width based on content
|
|
132
|
+
// Content items: "M A I S T R O", "Claude Code Orchestration Maestro", version
|
|
133
|
+
const title = 'M A I S T R O';
|
|
134
|
+
const subtitle = 'Claude Code Orchestration Maestro';
|
|
135
|
+
const contentWidth = Math.max(title.length, subtitle.length, version.length);
|
|
136
|
+
// Add padding: 2 spaces on left, 1 space on right = 3 total padding inside box
|
|
137
|
+
const boxInnerWidth = contentWidth + 3;
|
|
138
|
+
// Logo - dynamically sized header
|
|
139
|
+
const border = '─'.repeat(boxInnerWidth);
|
|
140
|
+
lines.push('');
|
|
141
|
+
lines.push(`\x1b[36m┌${border}┐\x1b[0m`);
|
|
142
|
+
lines.push(`\x1b[36m│\x1b[0m \x1b[1m${title.padEnd(boxInnerWidth - 2)}\x1b[0m\x1b[36m│\x1b[0m`);
|
|
143
|
+
lines.push(`\x1b[36m│\x1b[0m \x1b[90m${subtitle.padEnd(boxInnerWidth - 2)}\x1b[0m\x1b[36m│\x1b[0m`);
|
|
144
|
+
lines.push(`\x1b[36m│\x1b[0m \x1b[90m${version.padEnd(boxInnerWidth - 2)}\x1b[0m\x1b[36m│\x1b[0m`);
|
|
145
|
+
lines.push(`\x1b[36m└${border}┘\x1b[0m`);
|
|
146
|
+
if (projectPath) {
|
|
147
|
+
lines.push('');
|
|
148
|
+
lines.push(`\x1b[90mProject:\x1b[0m ${projectPath}`);
|
|
149
|
+
}
|
|
150
|
+
return lines;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Task, ProjectState, TaskStatus } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load project state from a JSON file
|
|
4
|
+
*/
|
|
5
|
+
export declare function loadState(path: string): Promise<ProjectState | null>;
|
|
6
|
+
/**
|
|
7
|
+
* Save project state to a JSON file
|
|
8
|
+
*/
|
|
9
|
+
export declare function saveState(path: string, state: ProjectState): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Get the next pending task that has all dependencies satisfied.
|
|
12
|
+
* Dependencies are satisfied if the task is completed OR skipped with acceptance failure.
|
|
13
|
+
* Tasks skipped with execution failure do NOT satisfy dependencies (code was never written).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getNextTask(tasks: Task[]): Task | null;
|
|
16
|
+
/**
|
|
17
|
+
* Reset any in_progress tasks back to pending (for interrupted sessions)
|
|
18
|
+
*/
|
|
19
|
+
export declare function resetInProgressTasks(tasks: Task[]): Task[];
|
|
20
|
+
/**
|
|
21
|
+
* Update the status of a task by ID
|
|
22
|
+
*/
|
|
23
|
+
export declare function updateTaskStatus(tasks: Task[], taskId: string, status: TaskStatus, error?: string): Task[];
|
|
24
|
+
/**
|
|
25
|
+
* Get a task by its ID
|
|
26
|
+
*/
|
|
27
|
+
export declare function getTaskById(tasks: Task[], taskId: string): Task | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Check if all tasks are completed
|
|
30
|
+
*/
|
|
31
|
+
export declare function allTasksCompleted(tasks: Task[]): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Check if any task has failed beyond max retries
|
|
34
|
+
*/
|
|
35
|
+
export declare function hasBlockedTask(tasks: Task[]): Task | null;
|
|
36
|
+
/**
|
|
37
|
+
* Get tasks that are ready to execute (pending with deps satisfied).
|
|
38
|
+
* Dependencies are satisfied if the task is completed OR skipped with acceptance failure.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getReadyTasks(tasks: Task[]): Task[];
|
|
41
|
+
/**
|
|
42
|
+
* Get a summary of task statuses
|
|
43
|
+
*/
|
|
44
|
+
export declare function getTaskSummary(tasks: Task[]): Record<TaskStatus, number>;
|
|
45
|
+
/**
|
|
46
|
+
* Reset a failed task to pending for retry
|
|
47
|
+
*/
|
|
48
|
+
export declare function resetTaskForRetry(tasks: Task[], taskId: string): Task[];
|
|
49
|
+
/**
|
|
50
|
+
* Check if a task is blocked due to a dependency failure.
|
|
51
|
+
* A task is blocked if any of its dependencies:
|
|
52
|
+
* - Failed with explicit execution failure (code was never written)
|
|
53
|
+
* - Skipped with explicit execution failure (code was never written)
|
|
54
|
+
*
|
|
55
|
+
* Tasks are NOT blocked if dependencies:
|
|
56
|
+
* - Completed
|
|
57
|
+
* - Skipped without failureType (legacy, defaults to acceptance)
|
|
58
|
+
* - Skipped with acceptance failure (code was written, just failed validation)
|
|
59
|
+
*/
|
|
60
|
+
export declare function isTaskBlocked(task: Task, allTasks: Task[]): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Get the blocking dependency for a task (the first one that causes the block)
|
|
63
|
+
*/
|
|
64
|
+
export declare function getBlockingDependency(task: Task, allTasks: Task[]): Task | null;
|
|
65
|
+
/**
|
|
66
|
+
* Delete a task from the task list and remove it from all dependency lists.
|
|
67
|
+
* Returns the updated task list.
|
|
68
|
+
*/
|
|
69
|
+
export declare function deleteTask(tasks: Task[], taskId: string): Task[];
|
|
70
|
+
//# sourceMappingURL=taskQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskQueue.d.ts","sourceRoot":"","sources":["../src/taskQueue.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAwCjE;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmB1E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAgBtD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAW1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,EAAE,CAyBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAE3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CASnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAcxE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,CAavE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAcnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAiB/E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,CAehE"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir, rename, unlink } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { ensureMaistroInGitignore } from './git.js';
|
|
5
|
+
/**
|
|
6
|
+
* Check if a task's dependency is satisfied.
|
|
7
|
+
* A dependency is satisfied if it's:
|
|
8
|
+
* - completed
|
|
9
|
+
* - skipped (unless explicitly marked as execution failure)
|
|
10
|
+
*
|
|
11
|
+
* A dependency is NOT satisfied if it's:
|
|
12
|
+
* - skipped with explicit execution failure (code was never written - hard failure)
|
|
13
|
+
* - failed
|
|
14
|
+
* - pending
|
|
15
|
+
*
|
|
16
|
+
* Note: We treat skipped tasks without failureType as satisfied (defaulting to acceptance)
|
|
17
|
+
* because legacy tasks may not have failureType set, and blocking them would prevent progress.
|
|
18
|
+
*/
|
|
19
|
+
function isDependencySatisfied(task) {
|
|
20
|
+
if (task.status === 'completed') {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
// Skipped task: satisfied unless explicitly an execution failure
|
|
24
|
+
// Missing failureType defaults to satisfied (backward compatibility with legacy state)
|
|
25
|
+
if (task.status === 'skipped') {
|
|
26
|
+
return task.failureType !== 'execution';
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the set of task IDs that have satisfied dependencies
|
|
32
|
+
* (completed or skipped with acceptance failure)
|
|
33
|
+
*/
|
|
34
|
+
function getSatisfiedTaskIds(tasks) {
|
|
35
|
+
return new Set(tasks.filter(isDependencySatisfied).map(t => t.id));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Load project state from a JSON file
|
|
39
|
+
*/
|
|
40
|
+
export async function loadState(path) {
|
|
41
|
+
try {
|
|
42
|
+
const content = await readFile(path, 'utf-8');
|
|
43
|
+
// Handle empty files
|
|
44
|
+
if (!content.trim()) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return JSON.parse(content);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// File not found - no project
|
|
51
|
+
if (error.code === 'ENOENT') {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
// JSON parse error - treat as corrupted/no project
|
|
55
|
+
if (error instanceof SyntaxError) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Save project state to a JSON file
|
|
63
|
+
*/
|
|
64
|
+
export async function saveState(path, state) {
|
|
65
|
+
const dir = dirname(path);
|
|
66
|
+
const dirExisted = existsSync(dir);
|
|
67
|
+
if (!dirExisted) {
|
|
68
|
+
await mkdir(dir, { recursive: true });
|
|
69
|
+
// When creating .maistro directory for the first time, ensure .gitignore is set up
|
|
70
|
+
// Get project path (parent of .maistro)
|
|
71
|
+
const projectPath = dirname(dir);
|
|
72
|
+
await ensureMaistroInGitignore(projectPath);
|
|
73
|
+
}
|
|
74
|
+
const updated = {
|
|
75
|
+
...state,
|
|
76
|
+
updatedAt: new Date().toISOString(),
|
|
77
|
+
};
|
|
78
|
+
const content = JSON.stringify(updated, null, 2);
|
|
79
|
+
// Use atomic write: write to temp file, then rename
|
|
80
|
+
// This prevents race conditions where a concurrent read sees a truncated/empty file
|
|
81
|
+
const tempPath = join(dir, `.state.${Date.now()}.${Math.random().toString(36).slice(2, 8)}.tmp`);
|
|
82
|
+
try {
|
|
83
|
+
await writeFile(tempPath, content, 'utf-8');
|
|
84
|
+
await rename(tempPath, path);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
// Clean up temp file if rename failed
|
|
88
|
+
try {
|
|
89
|
+
await unlink(tempPath);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Ignore cleanup errors
|
|
93
|
+
}
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the next pending task that has all dependencies satisfied.
|
|
99
|
+
* Dependencies are satisfied if the task is completed OR skipped with acceptance failure.
|
|
100
|
+
* Tasks skipped with execution failure do NOT satisfy dependencies (code was never written).
|
|
101
|
+
*/
|
|
102
|
+
export function getNextTask(tasks) {
|
|
103
|
+
const satisfiedIds = getSatisfiedTaskIds(tasks);
|
|
104
|
+
// Check for pending or in_progress tasks (in_progress may be from interrupted session)
|
|
105
|
+
for (const task of tasks) {
|
|
106
|
+
if (task.status !== 'pending' && task.status !== 'in_progress') {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const depsComplete = task.dependencies.every(depId => satisfiedIds.has(depId));
|
|
110
|
+
if (depsComplete) {
|
|
111
|
+
return task;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Reset any in_progress tasks back to pending (for interrupted sessions)
|
|
118
|
+
*/
|
|
119
|
+
export function resetInProgressTasks(tasks) {
|
|
120
|
+
return tasks.map(task => {
|
|
121
|
+
if (task.status === 'in_progress') {
|
|
122
|
+
return {
|
|
123
|
+
...task,
|
|
124
|
+
status: 'pending',
|
|
125
|
+
updatedAt: new Date().toISOString(),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
return task;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Update the status of a task by ID
|
|
133
|
+
*/
|
|
134
|
+
export function updateTaskStatus(tasks, taskId, status, error) {
|
|
135
|
+
return tasks.map(task => {
|
|
136
|
+
if (task.id !== taskId) {
|
|
137
|
+
return task;
|
|
138
|
+
}
|
|
139
|
+
const updated = {
|
|
140
|
+
...task,
|
|
141
|
+
status,
|
|
142
|
+
updatedAt: new Date().toISOString(),
|
|
143
|
+
};
|
|
144
|
+
if (error !== undefined) {
|
|
145
|
+
updated.error = error;
|
|
146
|
+
}
|
|
147
|
+
if (status === 'failed' || status === 'in_progress') {
|
|
148
|
+
// Increment retry count when failing or retrying
|
|
149
|
+
if (task.status === 'in_progress' && status === 'failed') {
|
|
150
|
+
updated.retryCount = task.retryCount + 1;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return updated;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get a task by its ID
|
|
158
|
+
*/
|
|
159
|
+
export function getTaskById(tasks, taskId) {
|
|
160
|
+
return tasks.find(t => t.id === taskId);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Check if all tasks are completed
|
|
164
|
+
*/
|
|
165
|
+
export function allTasksCompleted(tasks) {
|
|
166
|
+
return tasks.every(t => t.status === 'completed' || t.status === 'skipped');
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Check if any task has failed beyond max retries
|
|
170
|
+
*/
|
|
171
|
+
export function hasBlockedTask(tasks) {
|
|
172
|
+
return tasks.find(t => t.status === 'failed' && t.retryCount >= t.maxRetries) ?? null;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get tasks that are ready to execute (pending with deps satisfied).
|
|
176
|
+
* Dependencies are satisfied if the task is completed OR skipped with acceptance failure.
|
|
177
|
+
*/
|
|
178
|
+
export function getReadyTasks(tasks) {
|
|
179
|
+
const satisfiedIds = getSatisfiedTaskIds(tasks);
|
|
180
|
+
return tasks.filter(task => {
|
|
181
|
+
if (task.status !== 'pending') {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
return task.dependencies.every(depId => satisfiedIds.has(depId));
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get a summary of task statuses
|
|
189
|
+
*/
|
|
190
|
+
export function getTaskSummary(tasks) {
|
|
191
|
+
const summary = {
|
|
192
|
+
pending: 0,
|
|
193
|
+
in_progress: 0,
|
|
194
|
+
completed: 0,
|
|
195
|
+
failed: 0,
|
|
196
|
+
skipped: 0,
|
|
197
|
+
};
|
|
198
|
+
for (const task of tasks) {
|
|
199
|
+
summary[task.status]++;
|
|
200
|
+
}
|
|
201
|
+
return summary;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Reset a failed task to pending for retry
|
|
205
|
+
*/
|
|
206
|
+
export function resetTaskForRetry(tasks, taskId) {
|
|
207
|
+
return tasks.map(task => {
|
|
208
|
+
if (task.id !== taskId) {
|
|
209
|
+
return task;
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
...task,
|
|
213
|
+
status: 'pending',
|
|
214
|
+
error: undefined,
|
|
215
|
+
updatedAt: new Date().toISOString(),
|
|
216
|
+
};
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Check if a task is blocked due to a dependency failure.
|
|
221
|
+
* A task is blocked if any of its dependencies:
|
|
222
|
+
* - Failed with explicit execution failure (code was never written)
|
|
223
|
+
* - Skipped with explicit execution failure (code was never written)
|
|
224
|
+
*
|
|
225
|
+
* Tasks are NOT blocked if dependencies:
|
|
226
|
+
* - Completed
|
|
227
|
+
* - Skipped without failureType (legacy, defaults to acceptance)
|
|
228
|
+
* - Skipped with acceptance failure (code was written, just failed validation)
|
|
229
|
+
*/
|
|
230
|
+
export function isTaskBlocked(task, allTasks) {
|
|
231
|
+
if (task.status !== 'pending') {
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
234
|
+
return task.dependencies.some(depId => {
|
|
235
|
+
const dep = allTasks.find(t => t.id === depId);
|
|
236
|
+
if (!dep)
|
|
237
|
+
return false;
|
|
238
|
+
// Blocked if dependency failed/skipped with execution failure
|
|
239
|
+
const isHardFailure = (dep.status === 'failed' || dep.status === 'skipped') &&
|
|
240
|
+
dep.failureType === 'execution';
|
|
241
|
+
return isHardFailure;
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get the blocking dependency for a task (the first one that causes the block)
|
|
246
|
+
*/
|
|
247
|
+
export function getBlockingDependency(task, allTasks) {
|
|
248
|
+
if (task.status !== 'pending') {
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
for (const depId of task.dependencies) {
|
|
252
|
+
const dep = allTasks.find(t => t.id === depId);
|
|
253
|
+
if (!dep)
|
|
254
|
+
continue;
|
|
255
|
+
const isHardFailure = (dep.status === 'failed' || dep.status === 'skipped') &&
|
|
256
|
+
dep.failureType === 'execution';
|
|
257
|
+
if (isHardFailure) {
|
|
258
|
+
return dep;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Delete a task from the task list and remove it from all dependency lists.
|
|
265
|
+
* Returns the updated task list.
|
|
266
|
+
*/
|
|
267
|
+
export function deleteTask(tasks, taskId) {
|
|
268
|
+
// Remove the task from the list
|
|
269
|
+
const filteredTasks = tasks.filter(t => t.id !== taskId);
|
|
270
|
+
// Remove the deleted task ID from all dependency arrays
|
|
271
|
+
return filteredTasks.map(task => {
|
|
272
|
+
if (task.dependencies.includes(taskId)) {
|
|
273
|
+
return {
|
|
274
|
+
...task,
|
|
275
|
+
dependencies: task.dependencies.filter(depId => depId !== taskId),
|
|
276
|
+
updatedAt: new Date().toISOString(),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
return task;
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=taskQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskQueue.js","sourceRoot":"","sources":["../src/taskQueue.ts"],"names":[],"mappings":"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"}
|