mstro-app 0.4.2 → 0.4.3
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/bin/mstro.js +119 -40
- package/dist/server/cli/headless/claude-invoker.d.ts.map +1 -1
- package/dist/server/cli/headless/claude-invoker.js +3 -0
- package/dist/server/cli/headless/claude-invoker.js.map +1 -1
- package/dist/server/cli/headless/types.d.ts +4 -1
- package/dist/server/cli/headless/types.d.ts.map +1 -1
- package/dist/server/services/plan/composer.d.ts +1 -1
- package/dist/server/services/plan/composer.d.ts.map +1 -1
- package/dist/server/services/plan/composer.js +116 -31
- package/dist/server/services/plan/composer.js.map +1 -1
- package/dist/server/services/plan/config-installer.d.ts +25 -0
- package/dist/server/services/plan/config-installer.d.ts.map +1 -0
- package/dist/server/services/plan/config-installer.js +182 -0
- package/dist/server/services/plan/config-installer.js.map +1 -0
- package/dist/server/services/plan/dependency-resolver.d.ts +1 -1
- package/dist/server/services/plan/dependency-resolver.d.ts.map +1 -1
- package/dist/server/services/plan/dependency-resolver.js +4 -1
- package/dist/server/services/plan/dependency-resolver.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts +38 -74
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +271 -459
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/front-matter.d.ts +18 -0
- package/dist/server/services/plan/front-matter.d.ts.map +1 -0
- package/dist/server/services/plan/front-matter.js +44 -0
- package/dist/server/services/plan/front-matter.js.map +1 -0
- package/dist/server/services/plan/output-manager.d.ts +22 -0
- package/dist/server/services/plan/output-manager.d.ts.map +1 -0
- package/dist/server/services/plan/output-manager.js +97 -0
- package/dist/server/services/plan/output-manager.js.map +1 -0
- package/dist/server/services/plan/parser.d.ts +18 -2
- package/dist/server/services/plan/parser.d.ts.map +1 -1
- package/dist/server/services/plan/parser.js +359 -25
- package/dist/server/services/plan/parser.js.map +1 -1
- package/dist/server/services/plan/prompt-builder.d.ts +17 -0
- package/dist/server/services/plan/prompt-builder.d.ts.map +1 -0
- package/dist/server/services/plan/prompt-builder.js +137 -0
- package/dist/server/services/plan/prompt-builder.js.map +1 -0
- package/dist/server/services/plan/review-gate.d.ts +26 -0
- package/dist/server/services/plan/review-gate.d.ts.map +1 -0
- package/dist/server/services/plan/review-gate.js +191 -0
- package/dist/server/services/plan/review-gate.js.map +1 -0
- package/dist/server/services/plan/state-reconciler.d.ts +1 -1
- package/dist/server/services/plan/state-reconciler.d.ts.map +1 -1
- package/dist/server/services/plan/state-reconciler.js +59 -7
- package/dist/server/services/plan/state-reconciler.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +66 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +11 -0
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +14 -0
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/plan-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/plan-handlers.js +518 -40
- package/dist/server/services/websocket/plan-handlers.js.map +1 -1
- package/dist/server/services/websocket/types.d.ts +2 -2
- package/dist/server/services/websocket/types.d.ts.map +1 -1
- package/package.json +1 -2
- package/server/cli/headless/claude-invoker.ts +4 -0
- package/server/cli/headless/types.ts +4 -1
- package/server/services/plan/composer.ts +138 -34
- package/server/services/plan/config-installer.ts +187 -0
- package/server/services/plan/dependency-resolver.ts +4 -1
- package/server/services/plan/executor.ts +278 -487
- package/server/services/plan/front-matter.ts +48 -0
- package/server/services/plan/output-manager.ts +113 -0
- package/server/services/plan/parser.ts +389 -27
- package/server/services/plan/prompt-builder.ts +161 -0
- package/server/services/plan/review-gate.ts +210 -0
- package/server/services/plan/state-reconciler.ts +68 -7
- package/server/services/plan/types.ts +99 -1
- package/server/services/platform.ts +11 -0
- package/server/services/websocket/handler.ts +14 -0
- package/server/services/websocket/plan-handlers.ts +629 -44
- package/server/services/websocket/types.ts +29 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../../server/services/plan/composer.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAqB,MAAM,6BAA6B,CAAC;AAGhF,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../../../server/services/plan/composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare class ConfigInstaller {
|
|
2
|
+
private workingDir;
|
|
3
|
+
private savedClaudeSettings;
|
|
4
|
+
private claudeSettingsInstalled;
|
|
5
|
+
private savedMcpJson;
|
|
6
|
+
private mcpJsonInstalled;
|
|
7
|
+
constructor(workingDir: string);
|
|
8
|
+
/** Restore .claude/settings.json and .mcp.json from backups left by a previous crash. */
|
|
9
|
+
private recoverFromCrash;
|
|
10
|
+
/**
|
|
11
|
+
* Pre-approve tools in .claude/settings.json so Agent Teams
|
|
12
|
+
* teammates can work without interactive permission prompts.
|
|
13
|
+
*/
|
|
14
|
+
installTeammatePermissions(): void;
|
|
15
|
+
/** Restore original .claude/settings.json after wave execution. */
|
|
16
|
+
uninstallTeammatePermissions(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Write .mcp.json so Agent Teams teammates auto-discover the bouncer MCP server.
|
|
19
|
+
* Also generates ~/.mstro/mcp-config.json for the team lead (--mcp-config).
|
|
20
|
+
*/
|
|
21
|
+
installBouncerForSubagents(): void;
|
|
22
|
+
/** Restore or remove .mcp.json after execution. */
|
|
23
|
+
uninstallBouncerForSubagents(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=config-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-installer.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/config-installer.ts"],"names":[],"mappings":"AAyCA,qBAAa,eAAe;IAMd,OAAO,CAAC,UAAU;IAL9B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,gBAAgB,CAAS;gBAEb,UAAU,EAAE,MAAM;IAKtC,yFAAyF;IACzF,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,0BAA0B,IAAI,IAAI;IAsClC,mEAAmE;IACnE,4BAA4B,IAAI,IAAI;IAsBpC;;;OAGG;IACH,0BAA0B,IAAI,IAAI;IAgClC,mDAAmD;IACnD,4BAA4B,IAAI,IAAI;CAoBrC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
|
+
/**
|
|
4
|
+
* Config Installer — Manages temporary config file modifications for Agent Teams.
|
|
5
|
+
*
|
|
6
|
+
* Installs teammate permissions in .claude/settings.json and bouncer MCP config
|
|
7
|
+
* in .mcp.json before wave execution, then restores originals afterward.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { generateMcpConfig } from '../../cli/headless/mcp-config.js';
|
|
12
|
+
/** Tools that teammates may need during execution */
|
|
13
|
+
const REQUIRED_PERMISSIONS = [
|
|
14
|
+
'Bash',
|
|
15
|
+
'Read',
|
|
16
|
+
'Edit',
|
|
17
|
+
'Write',
|
|
18
|
+
'Glob',
|
|
19
|
+
'Grep',
|
|
20
|
+
'WebFetch',
|
|
21
|
+
'WebSearch',
|
|
22
|
+
'Agent',
|
|
23
|
+
];
|
|
24
|
+
/** Restore a file from a .pm-backup, handling the __NONE__ sentinel for files that didn't exist. */
|
|
25
|
+
function restoreFromBackup(backupPath, targetPath) {
|
|
26
|
+
try {
|
|
27
|
+
if (!existsSync(backupPath))
|
|
28
|
+
return;
|
|
29
|
+
const backup = readFileSync(backupPath, 'utf-8');
|
|
30
|
+
if (backup === '__NONE__') {
|
|
31
|
+
if (existsSync(targetPath))
|
|
32
|
+
unlinkSync(targetPath);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
writeFileSync(targetPath, backup);
|
|
36
|
+
}
|
|
37
|
+
unlinkSync(backupPath);
|
|
38
|
+
}
|
|
39
|
+
catch { /* best effort */ }
|
|
40
|
+
}
|
|
41
|
+
export class ConfigInstaller {
|
|
42
|
+
workingDir;
|
|
43
|
+
savedClaudeSettings = null;
|
|
44
|
+
claudeSettingsInstalled = false;
|
|
45
|
+
savedMcpJson = null;
|
|
46
|
+
mcpJsonInstalled = false;
|
|
47
|
+
constructor(workingDir) {
|
|
48
|
+
this.workingDir = workingDir;
|
|
49
|
+
// Recover from prior crash: if backup files exist, restore them
|
|
50
|
+
this.recoverFromCrash();
|
|
51
|
+
}
|
|
52
|
+
/** Restore .claude/settings.json and .mcp.json from backups left by a previous crash. */
|
|
53
|
+
recoverFromCrash() {
|
|
54
|
+
restoreFromBackup(join(this.workingDir, '.claude', 'settings.json.pm-backup'), join(this.workingDir, '.claude', 'settings.json'));
|
|
55
|
+
restoreFromBackup(join(this.workingDir, '.mcp.json.pm-backup'), join(this.workingDir, '.mcp.json'));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Pre-approve tools in .claude/settings.json so Agent Teams
|
|
59
|
+
* teammates can work without interactive permission prompts.
|
|
60
|
+
*/
|
|
61
|
+
installTeammatePermissions() {
|
|
62
|
+
const claudeDir = join(this.workingDir, '.claude');
|
|
63
|
+
const settingsPath = join(claudeDir, 'settings.json');
|
|
64
|
+
if (!existsSync(claudeDir)) {
|
|
65
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
66
|
+
}
|
|
67
|
+
const backupPath = join(claudeDir, 'settings.json.pm-backup');
|
|
68
|
+
try {
|
|
69
|
+
if (existsSync(settingsPath)) {
|
|
70
|
+
this.savedClaudeSettings = readFileSync(settingsPath, 'utf-8');
|
|
71
|
+
writeFileSync(backupPath, this.savedClaudeSettings);
|
|
72
|
+
const existing = JSON.parse(this.savedClaudeSettings);
|
|
73
|
+
if (!existing.permissions)
|
|
74
|
+
existing.permissions = {};
|
|
75
|
+
if (!existing.permissions.allow)
|
|
76
|
+
existing.permissions.allow = [];
|
|
77
|
+
for (const tool of REQUIRED_PERMISSIONS) {
|
|
78
|
+
if (!existing.permissions.allow.includes(tool)) {
|
|
79
|
+
existing.permissions.allow.push(tool);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
writeFileSync(settingsPath, JSON.stringify(existing, null, 2));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.savedClaudeSettings = null;
|
|
86
|
+
writeFileSync(backupPath, '__NONE__');
|
|
87
|
+
writeFileSync(settingsPath, JSON.stringify({
|
|
88
|
+
permissions: { allow: REQUIRED_PERMISSIONS },
|
|
89
|
+
}, null, 2));
|
|
90
|
+
}
|
|
91
|
+
this.claudeSettingsInstalled = true;
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Non-fatal — teammates may hit permission prompts
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/** Restore original .claude/settings.json after wave execution. */
|
|
98
|
+
uninstallTeammatePermissions() {
|
|
99
|
+
if (!this.claudeSettingsInstalled)
|
|
100
|
+
return;
|
|
101
|
+
const settingsPath = join(this.workingDir, '.claude', 'settings.json');
|
|
102
|
+
const backupPath = join(this.workingDir, '.claude', 'settings.json.pm-backup');
|
|
103
|
+
try {
|
|
104
|
+
if (this.savedClaudeSettings !== null) {
|
|
105
|
+
writeFileSync(settingsPath, this.savedClaudeSettings);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
unlinkSync(settingsPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Best effort
|
|
113
|
+
}
|
|
114
|
+
// Remove backup — successful restore means crash recovery is no longer needed
|
|
115
|
+
try {
|
|
116
|
+
if (existsSync(backupPath))
|
|
117
|
+
unlinkSync(backupPath);
|
|
118
|
+
}
|
|
119
|
+
catch { /* ok */ }
|
|
120
|
+
this.savedClaudeSettings = null;
|
|
121
|
+
this.claudeSettingsInstalled = false;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Write .mcp.json so Agent Teams teammates auto-discover the bouncer MCP server.
|
|
125
|
+
* Also generates ~/.mstro/mcp-config.json for the team lead (--mcp-config).
|
|
126
|
+
*/
|
|
127
|
+
installBouncerForSubagents() {
|
|
128
|
+
const mcpJsonPath = join(this.workingDir, '.mcp.json');
|
|
129
|
+
const backupPath = join(this.workingDir, '.mcp.json.pm-backup');
|
|
130
|
+
try {
|
|
131
|
+
const generatedPath = generateMcpConfig(this.workingDir);
|
|
132
|
+
if (!generatedPath)
|
|
133
|
+
return;
|
|
134
|
+
const mcpConfig = readFileSync(generatedPath, 'utf-8');
|
|
135
|
+
if (existsSync(mcpJsonPath)) {
|
|
136
|
+
this.savedMcpJson = readFileSync(mcpJsonPath, 'utf-8');
|
|
137
|
+
writeFileSync(backupPath, this.savedMcpJson);
|
|
138
|
+
const existing = JSON.parse(this.savedMcpJson);
|
|
139
|
+
const generated = JSON.parse(mcpConfig);
|
|
140
|
+
existing.mcpServers = {
|
|
141
|
+
...existing.mcpServers,
|
|
142
|
+
'mstro-bouncer': generated.mcpServers['mstro-bouncer'],
|
|
143
|
+
};
|
|
144
|
+
writeFileSync(mcpJsonPath, JSON.stringify(existing, null, 2));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
writeFileSync(backupPath, '__NONE__');
|
|
148
|
+
writeFileSync(mcpJsonPath, mcpConfig);
|
|
149
|
+
}
|
|
150
|
+
this.mcpJsonInstalled = true;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Non-fatal: parent has MCP via --mcp-config, teammates fall back to PreToolUse hooks
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Restore or remove .mcp.json after execution. */
|
|
157
|
+
uninstallBouncerForSubagents() {
|
|
158
|
+
if (!this.mcpJsonInstalled)
|
|
159
|
+
return;
|
|
160
|
+
const mcpJsonPath = join(this.workingDir, '.mcp.json');
|
|
161
|
+
const backupPath = join(this.workingDir, '.mcp.json.pm-backup');
|
|
162
|
+
try {
|
|
163
|
+
if (this.savedMcpJson !== null) {
|
|
164
|
+
writeFileSync(mcpJsonPath, this.savedMcpJson);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
unlinkSync(mcpJsonPath);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Best effort cleanup
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
if (existsSync(backupPath))
|
|
175
|
+
unlinkSync(backupPath);
|
|
176
|
+
}
|
|
177
|
+
catch { /* ok */ }
|
|
178
|
+
this.savedMcpJson = null;
|
|
179
|
+
this.mcpJsonInstalled = false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=config-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-installer.js","sourceRoot":"","sources":["../../../../server/services/plan/config-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export declare function detectCycles(issues: Issue[]): string[] | null;
|
|
|
19
19
|
*
|
|
20
20
|
* If epicScope is provided, only returns issues belonging to that epic.
|
|
21
21
|
*/
|
|
22
|
-
export declare function resolveReadyToWork(issues: Issue[], epicScope?: string): Issue[];
|
|
22
|
+
export declare function resolveReadyToWork(issues: Issue[], epicScope?: string, sprintScope?: string): Issue[];
|
|
23
23
|
/**
|
|
24
24
|
* Compute the critical path through incomplete issues.
|
|
25
25
|
* Returns the longest chain of dependent issues.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/dependency-resolver.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAsB7D;AAuCD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/dependency-resolver.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAsB7D;AAuCD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAkDrG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CA0C5D"}
|
|
@@ -64,7 +64,7 @@ function dfs(path, issueByPath, color, parent) {
|
|
|
64
64
|
*
|
|
65
65
|
* If epicScope is provided, only returns issues belonging to that epic.
|
|
66
66
|
*/
|
|
67
|
-
export function resolveReadyToWork(issues, epicScope) {
|
|
67
|
+
export function resolveReadyToWork(issues, epicScope, sprintScope) {
|
|
68
68
|
const issueByPath = new Map();
|
|
69
69
|
for (const issue of issues) {
|
|
70
70
|
issueByPath.set(issue.path, issue);
|
|
@@ -94,6 +94,9 @@ export function resolveReadyToWork(issues, epicScope) {
|
|
|
94
94
|
// If scoped to an epic, only include that epic's children
|
|
95
95
|
if (epicChildPaths && !epicChildPaths.has(issue.path))
|
|
96
96
|
return false;
|
|
97
|
+
// If scoped to a sprint, only include issues assigned to that sprint
|
|
98
|
+
if (sprintScope && issue.sprint !== sprintScope)
|
|
99
|
+
return false;
|
|
97
100
|
// Check all blockers are resolved
|
|
98
101
|
if (issue.blockedBy.length > 0) {
|
|
99
102
|
const allResolved = issue.blockedBy.every(bp => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../../server/services/plan/dependency-resolver.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAWhE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,8CAA8C;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,GAAG,CACV,IAAY,EACZ,WAA+B,EAC/B,KAA0B,EAC1B,MAA2B;IAE3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;IAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,4BAA4B;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,SAAkB;
|
|
1
|
+
{"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../../server/services/plan/dependency-resolver.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAWhE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,8CAA8C;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,GAAG,CACV,IAAY,EACZ,WAA+B,EAC/B,KAA0B,EAC1B,MAA2B;IAE3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;IAC3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,4BAA4B;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG,GAAG,IAAI,CAAC;YACf,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe,EAAE,SAAkB,EAAE,WAAoB;IAC1F,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAA2B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAE7E,4CAA4C;IAC5C,IAAI,cAAc,GAAuB,IAAI,CAAC;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,IAAI,EAAE,CAAC;YACT,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,oEAAoE;YACpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;oBAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM;SACV,MAAM,CAAC,KAAK,CAAC,EAAE;QACd,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnD,0DAA0D;QAC1D,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpE,qEAAqE;QACrE,IAAI,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAE9D,kCAAkC;QAClC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;gBAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,OAAO,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW;gBAAE,OAAO,KAAK,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,8BAA8B;QAC9B,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAE9F,kDAAkD;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE/C,SAAS,UAAU,CAAC,IAAY;QAC9B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAEzD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gDAAgD;QAChD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAE/B,IAAI,IAAI,GAAY,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;gBAAE,IAAI,GAAG,GAAG,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,YAAY,GAAY,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM;YAAE,YAAY,GAAG,IAAI,CAAC;IAC7D,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plan Executor — Wave-based execution with Claude Code Agent Teams.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Orchestrates the execution loop: picks ready issues, executes waves,
|
|
5
|
+
* runs AI review gate, reconciles state, and repeats.
|
|
6
|
+
*
|
|
7
|
+
* Implementation is split across focused modules:
|
|
8
|
+
* - config-installer.ts — teammate permissions + bouncer MCP install/uninstall
|
|
9
|
+
* - prompt-builder.ts — Agent Teams coordinator prompt construction
|
|
10
|
+
* - output-manager.ts — output path resolution, listing, publishing
|
|
11
|
+
* - review-gate.ts — AI-powered quality gate (review, parse, persist)
|
|
12
|
+
* - front-matter.ts — YAML front matter field editing utility
|
|
7
13
|
*/
|
|
8
14
|
import { EventEmitter } from 'node:events';
|
|
9
15
|
export type ExecutionStatus = 'idle' | 'starting' | 'executing' | 'paused' | 'stopping' | 'complete' | 'error';
|
|
@@ -21,98 +27,56 @@ export declare class PlanExecutor extends EventEmitter {
|
|
|
21
27
|
private shouldStop;
|
|
22
28
|
private shouldPause;
|
|
23
29
|
private epicScope;
|
|
30
|
+
/** Board directory path (e.g. /path/.pm/boards/BOARD-001). Used for outputs, reviews, progress. */
|
|
31
|
+
private boardDir;
|
|
32
|
+
/** Board ID being executed (e.g. "BOARD-001") */
|
|
33
|
+
private boardId;
|
|
34
|
+
private configInstaller;
|
|
35
|
+
/** Flag to prevent start() from clearing scope set by startBoard/startEpic */
|
|
36
|
+
private _scopeSetByCall;
|
|
24
37
|
private metrics;
|
|
25
38
|
constructor(workingDir: string);
|
|
26
39
|
getStatus(): ExecutionStatus;
|
|
27
40
|
getMetrics(): ExecutionMetrics;
|
|
28
41
|
startEpic(epicPath: string): Promise<void>;
|
|
42
|
+
/** Start execution, optionally scoped to a specific board. */
|
|
43
|
+
startBoard(boardId: string): Promise<void>;
|
|
29
44
|
start(): Promise<void>;
|
|
45
|
+
/** Run waves until done, paused, stopped, or stalled. Returns 'stalled' if zero-completion cap hit. */
|
|
46
|
+
private runWaveLoop;
|
|
30
47
|
pause(): void;
|
|
31
48
|
stop(): void;
|
|
32
49
|
resume(): Promise<void>;
|
|
33
50
|
private executeWave;
|
|
34
51
|
/**
|
|
35
52
|
* Post-wave operations wrapped individually so a failure in one
|
|
36
|
-
* (e.g. reconcileState hitting a concurrent write from PlanWatcher)
|
|
37
53
|
* doesn't prevent the others or kill the while loop in start().
|
|
38
54
|
*/
|
|
39
55
|
private finalizeWave;
|
|
40
56
|
/**
|
|
41
|
-
* After a wave, check each issue's status on disk.
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* (bug fixes, refactors) don't produce docs but are still valid completions.
|
|
57
|
+
* After a wave, check each issue's status on disk and run the AI review gate.
|
|
58
|
+
* Issues that agents marked as `done` are moved to `in_review`, reviewed,
|
|
59
|
+
* and either confirmed `done` (passed) or reverted to `todo` (failed).
|
|
45
60
|
*/
|
|
46
61
|
private reconcileWaveResults;
|
|
62
|
+
/** Run the review gate for a single issue that agents marked as done. Returns 1 if passed, 0 otherwise. */
|
|
63
|
+
private runReviewGate;
|
|
47
64
|
private pickReadyIssues;
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
*/
|
|
65
|
+
/** Load issues from a specific board, auto-activating draft boards. Returns null on error. */
|
|
66
|
+
private loadBoardIssues;
|
|
67
|
+
/** Load project-level issues (legacy or no boards). Returns null on error. */
|
|
68
|
+
private loadProjectIssues;
|
|
69
|
+
/** Activate a draft board by updating its status in board.md. */
|
|
70
|
+
private activateBoard;
|
|
71
|
+
/** Check if all issues in a board are done and mark board as completed. */
|
|
72
|
+
private tryCompleteBoardIfDone;
|
|
73
|
+
private resolveActiveBoardId;
|
|
58
74
|
private revertIncompleteIssues;
|
|
59
|
-
/** Saved content of any pre-existing .claude/settings.json so we can restore it */
|
|
60
|
-
private savedClaudeSettings;
|
|
61
|
-
private claudeSettingsInstalled;
|
|
62
|
-
/**
|
|
63
|
-
* Pre-approve tools in project .claude/settings.json so Agent Teams
|
|
64
|
-
* teammates can work without interactive permission prompts.
|
|
65
|
-
* Teammates are separate processes that inherit the lead's permission
|
|
66
|
-
* settings. Without pre-approved tools, they hit interactive prompts
|
|
67
|
-
* that can't be answered in headless/background mode (known bug #25254).
|
|
68
|
-
*/
|
|
69
|
-
private installTeammatePermissions;
|
|
70
|
-
/**
|
|
71
|
-
* Restore original .claude/settings.json after wave execution.
|
|
72
|
-
*/
|
|
73
|
-
private uninstallTeammatePermissions;
|
|
74
|
-
/** Saved content of any pre-existing .mcp.json so we can restore it */
|
|
75
|
-
private savedMcpJson;
|
|
76
|
-
private mcpJsonInstalled;
|
|
77
|
-
/**
|
|
78
|
-
* Write .mcp.json in the working directory so Agent Teams teammates
|
|
79
|
-
* (separate processes) auto-discover the bouncer MCP server.
|
|
80
|
-
* This is essential — teammates don't inherit --mcp-config or
|
|
81
|
-
* --permission-prompt-tool from the team lead. .mcp.json project-level
|
|
82
|
-
* discovery + global PreToolUse hooks are the two bouncer paths for teammates.
|
|
83
|
-
*
|
|
84
|
-
* Also generates ~/.mstro/mcp-config.json for the team lead (--mcp-config).
|
|
85
|
-
*/
|
|
86
|
-
private installBouncerForSubagents;
|
|
87
|
-
/**
|
|
88
|
-
* Restore or remove .mcp.json after execution.
|
|
89
|
-
*/
|
|
90
|
-
private uninstallBouncerForSubagents;
|
|
91
|
-
/**
|
|
92
|
-
* Resolve the canonical output path for an issue in .pm/out/.
|
|
93
|
-
* This is the PM system's internal execution artifact — always under
|
|
94
|
-
* PM control. User-facing delivery to output_file happens via publishOutputs().
|
|
95
|
-
*/
|
|
96
|
-
private resolveOutputPath;
|
|
97
|
-
/**
|
|
98
|
-
* List existing execution output docs in .pm/out/.
|
|
99
|
-
* Single canonical location — no split-brain lookup.
|
|
100
|
-
*/
|
|
101
|
-
private listExistingDocs;
|
|
102
|
-
/**
|
|
103
|
-
* Copy confirmed-done outputs from .pm/out/ to user-specified output_file paths.
|
|
104
|
-
* Only copies for issues that completed successfully and have output_file set.
|
|
105
|
-
* Failures are non-fatal — the canonical artifact in .pm/out/ is always safe.
|
|
106
|
-
*/
|
|
107
|
-
private publishOutputs;
|
|
108
|
-
/** Copy a single confirmed-done output to the user-specified output_file path. */
|
|
109
|
-
private publishSingleOutput;
|
|
110
|
-
private slugify;
|
|
111
75
|
private updateIssueFrontMatter;
|
|
112
|
-
|
|
113
|
-
* Append a progress log entry after a wave completes.
|
|
114
|
-
* Re-reads issue files from disk to determine which actually completed.
|
|
115
|
-
*/
|
|
76
|
+
private ensureOutputDirs;
|
|
116
77
|
private appendProgressEntry;
|
|
78
|
+
private writeProgressLines;
|
|
79
|
+
/** Resolve the active board's directory path for outputs, reviews, and progress. */
|
|
80
|
+
private resolveBoardDir;
|
|
117
81
|
}
|
|
118
82
|
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/executor.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/executor.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAe3C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAc/G,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uDAAuD;IACvD,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAuB;IACxC,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAuB;IACvC,iDAAiD;IACjD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,eAAe,CAAkB;IACzC,8EAA8E;IAC9E,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAMb;gBAEU,UAAU,EAAE,MAAM;IAM9B,SAAS,IAAI,eAAe;IAC5B,UAAU,IAAI,gBAAgB;IAExB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,8DAA8D;IACxD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC5B,uGAAuG;YACzF,WAAW;IAmBzB,KAAK,IAAI,IAAI;IACb,IAAI,IAAI,IAAI;IAEZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAUT,WAAW;IAuEzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkCpB;;;;OAIG;YACW,oBAAoB;IAqClC,2GAA2G;YAC7F,aAAa;IA2C3B,OAAO,CAAC,eAAe;IAwBvB,8FAA8F;IAC9F,OAAO,CAAC,eAAe;IAmBvB,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB;IAazB,iEAAiE;IACjE,OAAO,CAAC,aAAa;IASrB,2EAA2E;IAC3E,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,mBAAmB;IA2C3B,OAAO,CAAC,kBAAkB;IAW1B,oFAAoF;IACpF,OAAO,CAAC,eAAe;CAUxB"}
|