mstro-app 0.4.4 → 0.4.11
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/server/server-setup.js +1 -1
- package/dist/server/server-setup.js.map +1 -1
- package/dist/server/services/auth.d.ts.map +1 -1
- package/dist/server/services/auth.js +4 -2
- package/dist/server/services/auth.js.map +1 -1
- package/dist/server/services/instances.js +1 -1
- package/dist/server/services/instances.js.map +1 -1
- package/dist/server/services/plan/config-installer.d.ts +5 -14
- package/dist/server/services/plan/config-installer.d.ts.map +1 -1
- package/dist/server/services/plan/config-installer.js +14 -72
- package/dist/server/services/plan/config-installer.js.map +1 -1
- package/dist/server/services/plan/executor.d.ts +15 -8
- package/dist/server/services/plan/executor.d.ts.map +1 -1
- package/dist/server/services/plan/executor.js +95 -59
- package/dist/server/services/plan/executor.js.map +1 -1
- package/dist/server/services/plan/issue-prompt-builder.d.ts +17 -0
- package/dist/server/services/plan/issue-prompt-builder.d.ts.map +1 -0
- package/dist/server/services/plan/issue-prompt-builder.js +73 -0
- package/dist/server/services/plan/issue-prompt-builder.js.map +1 -0
- package/dist/server/services/plan/parser-core.d.ts.map +1 -1
- package/dist/server/services/plan/parser-core.js +9 -0
- package/dist/server/services/plan/parser-core.js.map +1 -1
- package/dist/server/services/plan/types.d.ts +2 -0
- package/dist/server/services/plan/types.d.ts.map +1 -1
- package/dist/server/services/platform.d.ts +1 -0
- package/dist/server/services/platform.d.ts.map +1 -1
- package/dist/server/services/platform.js +3 -7
- package/dist/server/services/platform.js.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/file-explorer-handlers.js +5 -4
- package/dist/server/services/websocket/file-explorer-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-handlers.js +2 -2
- package/dist/server/services/websocket/git-handlers.js.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.d.ts +1 -1
- package/dist/server/services/websocket/git-pr-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/git-pr-handlers.js +2 -2
- package/dist/server/services/websocket/git-pr-handlers.js.map +1 -1
- package/dist/server/services/websocket/handler.d.ts.map +1 -1
- package/dist/server/services/websocket/handler.js +12 -0
- package/dist/server/services/websocket/handler.js.map +1 -1
- package/dist/server/services/websocket/quality-complexity.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-complexity.js +5 -7
- package/dist/server/services/websocket/quality-complexity.js.map +1 -1
- package/dist/server/services/websocket/quality-linting.d.ts +1 -1
- package/dist/server/services/websocket/quality-linting.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-linting.js +16 -11
- package/dist/server/services/websocket/quality-linting.js.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.d.ts +14 -3
- package/dist/server/services/websocket/quality-review-agent.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-review-agent.js +87 -23
- package/dist/server/services/websocket/quality-review-agent.js.map +1 -1
- package/dist/server/services/websocket/quality-service.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-service.js +62 -39
- package/dist/server/services/websocket/quality-service.js.map +1 -1
- package/dist/server/services/websocket/quality-types.d.ts +2 -0
- package/dist/server/services/websocket/quality-types.d.ts.map +1 -1
- package/dist/server/services/websocket/quality-types.js.map +1 -1
- package/dist/server/services/websocket/session-handlers.d.ts.map +1 -1
- package/dist/server/services/websocket/session-handlers.js +3 -0
- package/dist/server/services/websocket/session-handlers.js.map +1 -1
- package/package.json +1 -1
- package/server/server-setup.ts +1 -1
- package/server/services/auth.ts +3 -2
- package/server/services/instances.ts +1 -1
- package/server/services/plan/config-installer.ts +13 -72
- package/server/services/plan/executor.ts +105 -61
- package/server/services/plan/issue-prompt-builder.ts +92 -0
- package/server/services/plan/parser-core.ts +8 -0
- package/server/services/plan/types.ts +2 -0
- package/server/services/platform.ts +3 -8
- package/server/services/websocket/file-explorer-handlers.ts +7 -3
- package/server/services/websocket/git-handlers.ts +3 -3
- package/server/services/websocket/git-pr-handlers.ts +3 -3
- package/server/services/websocket/handler.ts +12 -0
- package/server/services/websocket/quality-complexity.ts +5 -7
- package/server/services/websocket/quality-linting.ts +17 -10
- package/server/services/websocket/quality-review-agent.ts +95 -23
- package/server/services/websocket/quality-service.ts +70 -39
- package/server/services/websocket/quality-types.ts +2 -0
- package/server/services/websocket/session-handlers.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-setup.js","sourceRoot":"","sources":["../../server/server-setup.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAI1C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA;IAChD,MAAM,KAAK,GAAG,UAAU,OAAO,EAAE,CAAA;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,CAAA;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IAErD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,mBAAmB,GAAG;QAC1B,GAAG,EAAE;YACH,6BAA6B,EAAE,OAAO;YACtC,4BAA4B,EAAE,GAAG;SAClC;KACF,CAAA;IAED,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACzE,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;IAC3E,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;YACxE,IAAI,OAAO,GAAG,KAAK,CAAA;YAEnB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;gBAC1B,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAA;gBACzB,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC;gBACxD,gBAAgB,CAAC,GAAG,CAAC,6BAA6B,GAAG,OAAO,CAAA;gBAC5D,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;gBACvD,gBAAgB,CAAC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAA;gBACvD,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBACtE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAA;YAC/E,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;QACpF,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAiB,EAAE,UAAkB;IACjE,OAAO;QACL,IAAI,EAAE,CAAC,IAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9C,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,UAAU,
|
|
1
|
+
{"version":3,"file":"server-setup.js","sourceRoot":"","sources":["../../server/server-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../server/services/auth.ts"],"names":[],"mappings":"AAkBA,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAQ;;IAM1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../server/services/auth.ts"],"names":[],"mappings":"AAkBA,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAQ;;IAM1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,GAAG,IAAI;CAWvC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* All mstro instances on a machine share a single token from ~/.mstro/session-token.
|
|
8
8
|
* The token is created once (by `mstro login` or first server start) and reused.
|
|
9
9
|
*/
|
|
10
|
-
import { randomBytes } from 'node:crypto';
|
|
10
|
+
import { randomBytes, timingSafeEqual } from 'node:crypto';
|
|
11
11
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
12
12
|
import { homedir } from 'node:os';
|
|
13
13
|
import { join } from 'node:path';
|
|
@@ -44,7 +44,9 @@ export class AuthService {
|
|
|
44
44
|
* Validate the local session token (used for localhost API/WS auth)
|
|
45
45
|
*/
|
|
46
46
|
validateLocalToken(token) {
|
|
47
|
-
|
|
47
|
+
if (token.length !== this.localToken.length)
|
|
48
|
+
return false;
|
|
49
|
+
return timingSafeEqual(Buffer.from(token), Buffer.from(this.localToken));
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
50
52
|
* Get the local session token (for passing to child processes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../server/services/auth.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../server/services/auth.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;AAErE,MAAM,OAAO,WAAW;IACd,UAAU,CAAQ;IAE1B;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC5C,CAAC;IAED;;;OAGG;IACK,iBAAiB;QACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,EAAE,CAAA;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,KAAa;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAClD,CAAC;QACD,aAAa,CAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAa;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACzD,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc;QACnB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;gBAC9D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
|
|
@@ -69,7 +69,7 @@ export class InstanceRegistry {
|
|
|
69
69
|
*/
|
|
70
70
|
register(port, workingDirectory) {
|
|
71
71
|
const instance = {
|
|
72
|
-
id: `mstro-${Date.now()}-${Math.random().toString(36).
|
|
72
|
+
id: `mstro-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`,
|
|
73
73
|
port,
|
|
74
74
|
url: `http://localhost:${port}`,
|
|
75
75
|
workingDirectory,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances.js","sourceRoot":"","sources":["../../../server/services/instances.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACpG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAM;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9D,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC;gBAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACvC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IACpD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAO,GAAG,IAAI;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;QACpC,cAAc,CAAC,QAAQ,CAAC,CAAA;QACxB,IAAI,aAAa,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAA;QACxC,QAAQ,EAAE,CAAA;IACZ,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC;AAYD,MAAM,OAAO,gBAAgB;IACnB,YAAY,CAAQ;IACpB,eAAe,GAAyB,IAAI,CAAA;IAC5C,iBAAiB,GAA0C,IAAI,CAAA;IAEvE;QACE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC1C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY,EAAE,gBAAwB;QAC7C,MAAM,QAAQ,GAAkB;YAC9B,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"instances.js","sourceRoot":"","sources":["../../../server/services/instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,24 +2,15 @@ export declare class ConfigInstaller {
|
|
|
2
2
|
private workingDir;
|
|
3
3
|
private savedClaudeSettings;
|
|
4
4
|
private claudeSettingsInstalled;
|
|
5
|
-
private savedMcpJson;
|
|
6
|
-
private mcpJsonInstalled;
|
|
7
5
|
constructor(workingDir: string);
|
|
8
|
-
/** Restore .claude/settings.json
|
|
6
|
+
/** Restore .claude/settings.json from backups left by a previous crash. */
|
|
9
7
|
private recoverFromCrash;
|
|
10
8
|
/**
|
|
11
|
-
* Pre-approve tools in .claude/settings.json so
|
|
12
|
-
*
|
|
9
|
+
* Pre-approve tools in .claude/settings.json so headless instances
|
|
10
|
+
* can work without interactive permission prompts.
|
|
13
11
|
*/
|
|
14
|
-
|
|
12
|
+
installPermissions(): void;
|
|
15
13
|
/** Restore original .claude/settings.json after wave execution. */
|
|
16
|
-
|
|
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;
|
|
14
|
+
uninstallPermissions(): void;
|
|
24
15
|
}
|
|
25
16
|
//# sourceMappingURL=config-installer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-installer.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/config-installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-installer.d.ts","sourceRoot":"","sources":["../../../../server/services/plan/config-installer.ts"],"names":[],"mappings":"AAwCA,qBAAa,eAAe;IAId,OAAO,CAAC,UAAU;IAH9B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,uBAAuB,CAAS;gBAEpB,UAAU,EAAE,MAAM;IAKtC,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB;IAYxB;;;OAGG;IACH,kBAAkB,IAAI,IAAI;IAuC1B,mEAAmE;IACnE,oBAAoB,IAAI,IAAI;CAqB7B"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// Copyright (c) 2025-present Mstro, Inc. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License. See LICENSE file for details.
|
|
3
3
|
/**
|
|
4
|
-
* Config Installer — Manages temporary
|
|
4
|
+
* Config Installer — Manages temporary .claude/settings.json modifications
|
|
5
|
+
* for headless execution.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Pre-approves tools so headless Claude Code instances can work without
|
|
8
|
+
* interactive permission prompts, then restores the original settings afterward.
|
|
8
9
|
*/
|
|
9
10
|
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
10
11
|
import { join } from 'node:path';
|
|
11
|
-
|
|
12
|
-
/** Tools that teammates may need during execution */
|
|
12
|
+
/** Tools that headless instances may need during execution */
|
|
13
13
|
const REQUIRED_PERMISSIONS = [
|
|
14
14
|
'Bash',
|
|
15
15
|
'Read',
|
|
@@ -19,7 +19,6 @@ const REQUIRED_PERMISSIONS = [
|
|
|
19
19
|
'Grep',
|
|
20
20
|
'WebFetch',
|
|
21
21
|
'WebSearch',
|
|
22
|
-
'Agent',
|
|
23
22
|
];
|
|
24
23
|
/** Restore a file from a .pm-backup, handling the __NONE__ sentinel for files that didn't exist. */
|
|
25
24
|
function restoreFromBackup(backupPath, targetPath) {
|
|
@@ -42,23 +41,24 @@ export class ConfigInstaller {
|
|
|
42
41
|
workingDir;
|
|
43
42
|
savedClaudeSettings = null;
|
|
44
43
|
claudeSettingsInstalled = false;
|
|
45
|
-
savedMcpJson = null;
|
|
46
|
-
mcpJsonInstalled = false;
|
|
47
44
|
constructor(workingDir) {
|
|
48
45
|
this.workingDir = workingDir;
|
|
49
46
|
// Recover from prior crash: if backup files exist, restore them
|
|
50
47
|
this.recoverFromCrash();
|
|
51
48
|
}
|
|
52
|
-
/** Restore .claude/settings.json
|
|
49
|
+
/** Restore .claude/settings.json from backups left by a previous crash. */
|
|
53
50
|
recoverFromCrash() {
|
|
54
51
|
restoreFromBackup(join(this.workingDir, '.claude', 'settings.json.pm-backup'), join(this.workingDir, '.claude', 'settings.json'));
|
|
52
|
+
// Legacy: clean up .mcp.json backup from previous Agent Teams implementation
|
|
55
53
|
restoreFromBackup(join(this.workingDir, '.mcp.json.pm-backup'), join(this.workingDir, '.mcp.json'));
|
|
56
54
|
}
|
|
57
55
|
/**
|
|
58
|
-
* Pre-approve tools in .claude/settings.json so
|
|
59
|
-
*
|
|
56
|
+
* Pre-approve tools in .claude/settings.json so headless instances
|
|
57
|
+
* can work without interactive permission prompts.
|
|
60
58
|
*/
|
|
61
|
-
|
|
59
|
+
installPermissions() {
|
|
60
|
+
if (this.claudeSettingsInstalled)
|
|
61
|
+
return;
|
|
62
62
|
const claudeDir = join(this.workingDir, '.claude');
|
|
63
63
|
const settingsPath = join(claudeDir, 'settings.json');
|
|
64
64
|
if (!existsSync(claudeDir)) {
|
|
@@ -91,11 +91,11 @@ export class ConfigInstaller {
|
|
|
91
91
|
this.claudeSettingsInstalled = true;
|
|
92
92
|
}
|
|
93
93
|
catch {
|
|
94
|
-
// Non-fatal —
|
|
94
|
+
// Non-fatal — headless instances may hit permission prompts
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
/** Restore original .claude/settings.json after wave execution. */
|
|
98
|
-
|
|
98
|
+
uninstallPermissions() {
|
|
99
99
|
if (!this.claudeSettingsInstalled)
|
|
100
100
|
return;
|
|
101
101
|
const settingsPath = join(this.workingDir, '.claude', 'settings.json');
|
|
@@ -120,63 +120,5 @@ export class ConfigInstaller {
|
|
|
120
120
|
this.savedClaudeSettings = null;
|
|
121
121
|
this.claudeSettingsInstalled = false;
|
|
122
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
123
|
}
|
|
182
124
|
//# sourceMappingURL=config-installer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-installer.js","sourceRoot":"","sources":["../../../../server/services/plan/config-installer.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gEAAgE;AAEhE
|
|
1
|
+
{"version":3,"file":"config-installer.js","sourceRoot":"","sources":["../../../../server/services/plan/config-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plan Executor — Wave-based execution with Claude Code
|
|
2
|
+
* Plan Executor — Wave-based execution with parallel headless Claude Code instances.
|
|
3
3
|
*
|
|
4
|
-
* Orchestrates the execution loop: picks ready issues, executes waves
|
|
5
|
-
* runs AI review gate,
|
|
4
|
+
* Orchestrates the execution loop: picks ready issues, executes waves of
|
|
5
|
+
* parallel headless runners (one per issue), runs AI review gate,
|
|
6
|
+
* reconciles state, and repeats.
|
|
6
7
|
*
|
|
7
8
|
* Implementation is split across focused modules:
|
|
8
|
-
* - config-installer.ts
|
|
9
|
-
* - prompt-builder.ts
|
|
10
|
-
* - output-manager.ts
|
|
11
|
-
* - review-gate.ts
|
|
12
|
-
* - front-matter.ts
|
|
9
|
+
* - config-installer.ts — tool permissions install/uninstall
|
|
10
|
+
* - issue-prompt-builder.ts — per-issue prompt construction
|
|
11
|
+
* - output-manager.ts — output path resolution, listing, publishing
|
|
12
|
+
* - review-gate.ts — AI-powered quality gate (review, parse, persist)
|
|
13
|
+
* - front-matter.ts — YAML front matter field editing utility
|
|
13
14
|
*/
|
|
14
15
|
import { EventEmitter } from 'node:events';
|
|
15
16
|
export type ExecutionStatus = 'idle' | 'starting' | 'executing' | 'paused' | 'stopping' | 'complete' | 'error';
|
|
@@ -27,6 +28,8 @@ export declare class PlanExecutor extends EventEmitter {
|
|
|
27
28
|
private shouldStop;
|
|
28
29
|
private shouldPause;
|
|
29
30
|
private epicScope;
|
|
31
|
+
/** Cached PM directory path — resolved once per start(). */
|
|
32
|
+
private pmDir;
|
|
30
33
|
/** Board directory path (e.g. /path/.pm/boards/BOARD-001). Used for outputs, reviews, progress. */
|
|
31
34
|
private boardDir;
|
|
32
35
|
/** Board ID being executed (e.g. "BOARD-001") */
|
|
@@ -48,6 +51,8 @@ export declare class PlanExecutor extends EventEmitter {
|
|
|
48
51
|
stop(): void;
|
|
49
52
|
resume(): Promise<void>;
|
|
50
53
|
private executeWave;
|
|
54
|
+
/** Run a single issue via its own headless Claude Code instance. */
|
|
55
|
+
private runSingleIssue;
|
|
51
56
|
/**
|
|
52
57
|
* Post-wave operations wrapped individually so a failure in one
|
|
53
58
|
* doesn't prevent the others or kill the while loop in start().
|
|
@@ -61,6 +66,8 @@ export declare class PlanExecutor extends EventEmitter {
|
|
|
61
66
|
private reconcileWaveResults;
|
|
62
67
|
/** Run the review gate for a single issue that agents marked as done. Returns 1 if passed, 0 otherwise. */
|
|
63
68
|
private runReviewGate;
|
|
69
|
+
/** Read the board's maxParallelAgents setting, falling back to default. */
|
|
70
|
+
private getBoardMaxParallelAgents;
|
|
64
71
|
private pickReadyIssues;
|
|
65
72
|
/** Load issues from a specific board, auto-activating draft boards. Returns null on error. */
|
|
66
73
|
private loadBoardIssues;
|
|
@@ -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;;;;;;;;;;;;;GAaG;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,4DAA4D;IAC5D,OAAO,CAAC,KAAK,CAAuB;IACpC,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;IAsC5B,uGAAuG;YACzF,WAAW;IAoBzB,KAAK,IAAI,IAAI;IACb,IAAI,IAAI,IAAI;IAEZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAUT,WAAW;IAoDzB,oEAAoE;YACtD,cAAc;IAqC5B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkCpB;;;;OAIG;YACW,oBAAoB;IAqClC,2GAA2G;YAC7F,aAAa;IA4C3B,2EAA2E;IAC3E,OAAO,CAAC,yBAAyB;IAoBjC,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"}
|