@ddtcorex/dsh-maestro-review 0.1.0 → 0.1.1
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/lib/config-store.d.ts +2 -0
- package/lib/config-store.d.ts.map +1 -1
- package/lib/config-store.js.map +1 -1
- package/lib/git-worktree-tool.d.ts +11 -0
- package/lib/git-worktree-tool.d.ts.map +1 -0
- package/lib/git-worktree-tool.js +162 -0
- package/lib/git-worktree-tool.js.map +1 -0
- package/lib/govard-audit-lint-tool.d.ts +14 -0
- package/lib/govard-audit-lint-tool.d.ts.map +1 -0
- package/lib/govard-audit-lint-tool.js +171 -0
- package/lib/govard-audit-lint-tool.js.map +1 -0
- package/lib/hyva-csp-scan-tool.d.ts +11 -0
- package/lib/hyva-csp-scan-tool.d.ts.map +1 -0
- package/lib/hyva-csp-scan-tool.js +193 -0
- package/lib/hyva-csp-scan-tool.js.map +1 -0
- package/lib/hyva-theme-inspect-tool.d.ts +10 -0
- package/lib/hyva-theme-inspect-tool.d.ts.map +1 -0
- package/lib/hyva-theme-inspect-tool.js +299 -0
- package/lib/hyva-theme-inspect-tool.js.map +1 -0
- package/lib/incremental.d.ts +28 -0
- package/lib/incremental.d.ts.map +1 -0
- package/lib/incremental.js +60 -0
- package/lib/incremental.js.map +1 -0
- package/lib/layout-xml-tool.d.ts +11 -0
- package/lib/layout-xml-tool.d.ts.map +1 -0
- package/lib/layout-xml-tool.js +240 -0
- package/lib/layout-xml-tool.js.map +1 -0
- package/lib/module-check-tool.d.ts +11 -0
- package/lib/module-check-tool.d.ts.map +1 -0
- package/lib/module-check-tool.js +304 -0
- package/lib/module-check-tool.js.map +1 -0
- package/lib/orchestrator.d.ts +2 -0
- package/lib/orchestrator.d.ts.map +1 -1
- package/lib/orchestrator.js +203 -78
- package/lib/orchestrator.js.map +1 -1
- package/lib/perf-log-stats-tool.d.ts +13 -0
- package/lib/perf-log-stats-tool.d.ts.map +1 -0
- package/lib/perf-log-stats-tool.js +245 -0
- package/lib/perf-log-stats-tool.js.map +1 -0
- package/lib/phtml-escape-scan-tool.d.ts +11 -0
- package/lib/phtml-escape-scan-tool.d.ts.map +1 -0
- package/lib/phtml-escape-scan-tool.js +170 -0
- package/lib/phtml-escape-scan-tool.js.map +1 -0
- package/lib/plan-track-tool.d.ts +11 -0
- package/lib/plan-track-tool.d.ts.map +1 -0
- package/lib/plan-track-tool.js +143 -0
- package/lib/plan-track-tool.js.map +1 -0
- package/lib/review-history.d.ts +4 -0
- package/lib/review-history.d.ts.map +1 -1
- package/lib/review-history.js +4 -0
- package/lib/review-history.js.map +1 -1
- package/lib/scope-split-tool.d.ts +42 -0
- package/lib/scope-split-tool.d.ts.map +1 -0
- package/lib/scope-split-tool.js +109 -0
- package/lib/scope-split-tool.js.map +1 -0
- package/lib/search-tool.d.ts +15 -0
- package/lib/search-tool.d.ts.map +1 -0
- package/lib/search-tool.js +144 -0
- package/lib/search-tool.js.map +1 -0
- package/lib/settings-rpc.d.ts.map +1 -1
- package/lib/settings-rpc.js +47 -8
- package/lib/settings-rpc.js.map +1 -1
- package/lib/skills-tool.d.ts +1 -1
- package/lib/skills-tool.d.ts.map +1 -1
- package/lib/skills-tool.js +5 -1
- package/lib/skills-tool.js.map +1 -1
- package/lib/tdd-evidence-tool.d.ts +11 -0
- package/lib/tdd-evidence-tool.d.ts.map +1 -0
- package/lib/tdd-evidence-tool.js +114 -0
- package/lib/tdd-evidence-tool.js.map +1 -0
- package/lib/tool-policy.d.ts +20 -0
- package/lib/tool-policy.d.ts.map +1 -0
- package/lib/tool-policy.js +42 -0
- package/lib/tool-policy.js.map +1 -0
- package/lib/workspace-tool.d.ts.map +1 -1
- package/lib/workspace-tool.js +15 -9
- package/lib/workspace-tool.js.map +1 -1
- package/package.json +3 -2
- package/src/augment.d.ts +4 -0
- package/src/config-store.ts +2 -0
- package/src/git-worktree-tool.ts +130 -0
- package/src/govard-audit-lint-tool.ts +147 -0
- package/src/hyva-csp-scan-tool.ts +165 -0
- package/src/hyva-theme-inspect-tool.ts +258 -0
- package/src/incremental.ts +84 -0
- package/src/layout-xml-tool.ts +191 -0
- package/src/module-check-tool.ts +188 -0
- package/src/orchestrator.ts +189 -75
- package/src/perf-log-stats-tool.ts +224 -0
- package/src/phtml-escape-scan-tool.ts +117 -0
- package/src/plan-track-tool.ts +118 -0
- package/src/review-history.ts +8 -0
- package/src/scope-split-tool.ts +110 -0
- package/src/search-tool.ts +153 -0
- package/src/settings-rpc.ts +53 -10
- package/src/skills-tool.ts +5 -1
- package/src/tdd-evidence-tool.ts +85 -0
- package/src/tool-policy.ts +49 -0
- package/src/workspace-tool.ts +27 -9
- package/lib/pin-store.d.ts +0 -5
- package/lib/pin-store.d.ts.map +0 -1
- package/lib/pin-store.js +0 -5
- package/lib/pin-store.js.map +0 -1
- package/src/pin-store.ts +0 -4
package/lib/config-store.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface MaestroUserConfig {
|
|
|
18
18
|
}>;
|
|
19
19
|
/** Override the DSH default model for automated reviews. When absent the global DSH default is used. */
|
|
20
20
|
reviewModel?: ReviewModelSelection;
|
|
21
|
+
/** Override the DSH default model for the supervisor debug-agent. When absent the review model (or DSH default) is used. */
|
|
22
|
+
supervisorModel?: ReviewModelSelection;
|
|
21
23
|
/** Re-run a quick review whenever new commits land on a previously reviewed MR. */
|
|
22
24
|
autoRereviewOnPush?: boolean;
|
|
23
25
|
/** Bound one automated review agent's turn. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../src/config-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAO1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;QAAC,WAAW,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAA;IAC/I,wGAAwG;IACxG,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,mFAAmF;IACnF,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uFAAuF;IACvF,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC9B,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAyBD,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAMjF;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAc3G"}
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../src/config-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAO1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;QAAC,WAAW,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAC,CAAA;IAC/I,wGAAwG;IACxG,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,4HAA4H;IAC5H,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,mFAAmF;IACnF,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uFAAuF;IACvF,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAC9B,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAyBD,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAMjF;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAc3G"}
|
package/lib/config-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../src/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../src/config-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import z from '@deepseek-ai/schemastery';
|
|
3
|
+
export declare const name = "maestro-git-worktree-tool";
|
|
4
|
+
export declare const inject: string[];
|
|
5
|
+
export declare const Config: z<{
|
|
6
|
+
rootPath?: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function apply(ctx: Context, config?: {
|
|
9
|
+
rootPath?: string;
|
|
10
|
+
}): void;
|
|
11
|
+
//# sourceMappingURL=git-worktree-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-worktree-tool.d.ts","sourceRoot":"","sources":["../src/git-worktree-tool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,eAAO,MAAM,IAAI,8BAA4B,CAAA;AAC7C,eAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,eAAO,MAAM,MAAM,EAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAA;CAAC,CAAmC,CAAA;AAuB3E,wBAAgB,KAAK,CAAC,GAAG,EAAC,OAAO,EAAE,MAAM,GAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAA;CAAI,GAAE,IAAI,CAgGpE"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { resolve, sep } from 'node:path';
|
|
2
|
+
import { stat, realpath } from 'node:fs/promises';
|
|
3
|
+
import { execFile } from 'node:child_process';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
import { defineTool } from '@deepseek-ai/dsh-tools';
|
|
6
|
+
import z from '@deepseek-ai/schemastery';
|
|
7
|
+
export const name = 'maestro-git-worktree-tool';
|
|
8
|
+
export const inject = ['tools'];
|
|
9
|
+
export const Config = z.object({ rootPath: z.string() });
|
|
10
|
+
function workspaceRootFor(c, e) { if (c !== undefined)
|
|
11
|
+
return c; const cwd = e?.agent?.session?.header?.cwd; return typeof cwd === 'string' && cwd !== '' ? cwd : process.cwd(); }
|
|
12
|
+
async function isInsideRoot(r, t) {
|
|
13
|
+
const ar = resolve(r);
|
|
14
|
+
const rs = resolve(ar, t);
|
|
15
|
+
if (rs !== ar && !rs.startsWith(ar + sep))
|
|
16
|
+
return false;
|
|
17
|
+
// For non-existent targets (create), realpath fails — allow if string prefix passes and parent is inside
|
|
18
|
+
try {
|
|
19
|
+
const rr = await realpath(ar);
|
|
20
|
+
const rt = await realpath(rs);
|
|
21
|
+
return rt === rr || rt.startsWith(rr + sep);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
try {
|
|
25
|
+
const rr = await realpath(ar);
|
|
26
|
+
const parent = resolve(rs, '..');
|
|
27
|
+
const rp = await realpath(parent);
|
|
28
|
+
return rp === rr || rp.startsWith(rr + sep);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return rs === ar || rs.startsWith(ar + sep);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const SAFE_BRANCH = /^[A-Za-z0-9._\/-]+$/;
|
|
36
|
+
const execFileAsync = promisify(execFile);
|
|
37
|
+
async function runGit(cwd, args) {
|
|
38
|
+
try {
|
|
39
|
+
const { stdout, stderr } = await execFileAsync('git', args, { cwd, timeout: 10000 });
|
|
40
|
+
return { code: 0, stdout: String(stdout), stderr: String(stderr) };
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
return { code: e.code ?? 1, stdout: e.stdout ?? '', stderr: e.stderr ?? String(e.message) };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function exists(p) { try {
|
|
47
|
+
await stat(p);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
} }
|
|
53
|
+
export function apply(ctx, config = {}) {
|
|
54
|
+
const configuredRoot = config.rootPath;
|
|
55
|
+
ctx.effect(() => ctx.tools.register(defineTool({
|
|
56
|
+
name: 'git_worktree',
|
|
57
|
+
description: 'Inspect/create/remove git worktrees deterministically (isolated workspace, branch, submodule guard).',
|
|
58
|
+
parameters: {
|
|
59
|
+
op: { type: 'string', enum: ['inspect', 'create', 'remove'], required: true },
|
|
60
|
+
worktreePath: { type: 'string', required: true },
|
|
61
|
+
branch: { type: 'string' },
|
|
62
|
+
base: { type: 'string' },
|
|
63
|
+
},
|
|
64
|
+
output: {
|
|
65
|
+
schema: {
|
|
66
|
+
type: 'object', additionalProperties: true,
|
|
67
|
+
properties: {
|
|
68
|
+
op: { type: 'string', required: true },
|
|
69
|
+
exists: { type: 'boolean' },
|
|
70
|
+
isWorktree: { type: 'boolean' },
|
|
71
|
+
created: { type: 'boolean' },
|
|
72
|
+
reason: { type: 'string' },
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
render: (_a, v) => [{ type: 'text', text: JSON.stringify(v, null, 2) }],
|
|
76
|
+
},
|
|
77
|
+
async execute(args, exec) {
|
|
78
|
+
const op = args.op;
|
|
79
|
+
const rawPath = args.worktreePath;
|
|
80
|
+
const root = workspaceRootFor(configuredRoot, exec);
|
|
81
|
+
if (!(await isInsideRoot(root, rawPath)))
|
|
82
|
+
return { text: `Path "${rawPath}" escapes the workspace root.`, truncated: false };
|
|
83
|
+
const worktreePath = resolve(root, rawPath);
|
|
84
|
+
if (op === 'inspect') {
|
|
85
|
+
const ex = await exists(worktreePath);
|
|
86
|
+
let isWorktree = false, branch = null, headSha = null, isClean = true, gitDir = null, gitCommonDir = null;
|
|
87
|
+
if (ex) {
|
|
88
|
+
// try git rev-parse
|
|
89
|
+
const r1 = await runGit(worktreePath, ['rev-parse', '--git-dir']);
|
|
90
|
+
const r2 = await runGit(worktreePath, ['rev-parse', '--git-common-dir']);
|
|
91
|
+
const r3 = await runGit(worktreePath, ['branch', '--show-current']);
|
|
92
|
+
const r4 = await runGit(worktreePath, ['rev-parse', 'HEAD']);
|
|
93
|
+
const r5 = await runGit(worktreePath, ['status', '--porcelain']);
|
|
94
|
+
if (r1.code === 0)
|
|
95
|
+
gitDir = r1.stdout.trim();
|
|
96
|
+
if (r2.code === 0)
|
|
97
|
+
gitCommonDir = r2.stdout.trim();
|
|
98
|
+
if (r3.code === 0)
|
|
99
|
+
branch = r3.stdout.trim() || null;
|
|
100
|
+
if (r4.code === 0)
|
|
101
|
+
headSha = r4.stdout.trim() || null;
|
|
102
|
+
isClean = r5.stdout.trim() === '';
|
|
103
|
+
// isWorktree if gitDir is file and gitCommonDir differs
|
|
104
|
+
if (gitDir && gitCommonDir && gitDir !== gitCommonDir)
|
|
105
|
+
isWorktree = true;
|
|
106
|
+
// fallback: if worktreePath contains .worktrees
|
|
107
|
+
if (worktreePath.includes('/.worktrees/'))
|
|
108
|
+
isWorktree = true;
|
|
109
|
+
}
|
|
110
|
+
return { op: 'inspect', exists: ex, branch, headSha, isClean, isWorktree, gitDir, gitCommonDir, untrackedFiles: [], truncated: false, ignored: null };
|
|
111
|
+
}
|
|
112
|
+
if (op === 'create') {
|
|
113
|
+
const branch = args.branch;
|
|
114
|
+
const base = args.base ?? 'HEAD';
|
|
115
|
+
if (!branch)
|
|
116
|
+
return { text: 'branch required for create', truncated: false };
|
|
117
|
+
if (!SAFE_BRANCH.test(branch) || branch.startsWith('-') || branch.includes('..'))
|
|
118
|
+
return { text: `invalid branch name "${branch}" — must match ${SAFE_BRANCH.source}`, truncated: false };
|
|
119
|
+
if (branch.includes('--'))
|
|
120
|
+
return { text: `invalid branch name "${branch}"`, truncated: false };
|
|
121
|
+
// base validate
|
|
122
|
+
if (base && !SAFE_BRANCH.test(base) && !/^[0-9a-f]{7,40}$/.test(base))
|
|
123
|
+
return { text: `invalid base "${base}"`, truncated: false };
|
|
124
|
+
// .gitignore guard: check if worktreePath is ignored
|
|
125
|
+
const check = await runGit(root, ['check-ignore', '-q', worktreePath]);
|
|
126
|
+
const isIgnored = check.code === 0;
|
|
127
|
+
if (!isIgnored) {
|
|
128
|
+
return { op: 'create', created: false, worktreePath, branch, headSha: '', alreadyExisted: false, reason: 'not ignored — add .worktrees to .gitignore' };
|
|
129
|
+
}
|
|
130
|
+
if (await exists(worktreePath)) {
|
|
131
|
+
return { op: 'create', created: false, worktreePath, branch, headSha: '', alreadyExisted: true, reason: 'already exists' };
|
|
132
|
+
}
|
|
133
|
+
const res = await runGit(root, ['worktree', 'add', '--', worktreePath, '-b', branch, base]);
|
|
134
|
+
if (res.code !== 0) {
|
|
135
|
+
if (res.stderr.includes('permission denied') || res.stderr.includes('EACCES')) {
|
|
136
|
+
return { op: 'create', created: false, worktreePath, branch, headSha: '', alreadyExisted: false, reason: 'blocked by sandbox — working in place' };
|
|
137
|
+
}
|
|
138
|
+
return { op: 'create', created: false, worktreePath, branch, headSha: '', alreadyExisted: false, reason: res.stderr.slice(0, 500) };
|
|
139
|
+
}
|
|
140
|
+
const head = await runGit(worktreePath, ['rev-parse', 'HEAD']);
|
|
141
|
+
return { op: 'create', created: true, worktreePath, branch, headSha: head.stdout.trim(), alreadyExisted: false, reason: null };
|
|
142
|
+
}
|
|
143
|
+
if (op === 'remove') {
|
|
144
|
+
const ex = await exists(worktreePath);
|
|
145
|
+
if (!ex)
|
|
146
|
+
return { op: 'remove', removed: false, pruned: false, reason: 'not exists', dirtyFiles: [] };
|
|
147
|
+
const status = await runGit(worktreePath, ['status', '--porcelain']);
|
|
148
|
+
const dirtyFiles = status.stdout.trim() ? status.stdout.trim().split('\n').slice(0, 20) : [];
|
|
149
|
+
if (dirtyFiles.length > 0) {
|
|
150
|
+
return { op: 'remove', removed: false, pruned: false, reason: 'contains modified or untracked files', dirtyFiles };
|
|
151
|
+
}
|
|
152
|
+
const res = await runGit(root, ['worktree', 'remove', '--', worktreePath]);
|
|
153
|
+
if (res.code !== 0)
|
|
154
|
+
return { op: 'remove', removed: false, pruned: false, reason: res.stderr.slice(0, 500), dirtyFiles };
|
|
155
|
+
const prune = await runGit(root, ['worktree', 'prune']);
|
|
156
|
+
return { op: 'remove', removed: true, pruned: prune.code === 0, reason: null, dirtyFiles: [] };
|
|
157
|
+
}
|
|
158
|
+
return { text: `unknown op ${op}`, truncated: false };
|
|
159
|
+
}
|
|
160
|
+
}), 'git worktree'));
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=git-worktree-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-worktree-tool.js","sourceRoot":"","sources":["../src/git-worktree-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import z from '@deepseek-ai/schemastery';
|
|
3
|
+
export declare const name = "maestro-govard-audit-lint-tool";
|
|
4
|
+
export declare const inject: string[];
|
|
5
|
+
export declare const Config: z<{
|
|
6
|
+
rootPath?: string;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function cleanJson(raw: string): string;
|
|
10
|
+
export declare function apply(ctx: Context, config?: {
|
|
11
|
+
rootPath?: string;
|
|
12
|
+
timeoutMs?: number;
|
|
13
|
+
}): void;
|
|
14
|
+
//# sourceMappingURL=govard-audit-lint-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"govard-audit-lint-tool.d.ts","sourceRoot":"","sources":["../src/govard-audit-lint-tool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAGxC,eAAO,MAAM,IAAI,mCAAiC,CAAA;AAClD,eAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,eAAO,MAAM,MAAM,EAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,CAAyD,CAAA;AA8BpH,wBAAgB,SAAS,CAAC,GAAG,EAAC,MAAM,GAAE,MAAM,CAE3C;AAgBD,wBAAgB,KAAK,CAAC,GAAG,EAAC,OAAO,EAAE,MAAM,GAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAC,SAAS,CAAC,EAAC,MAAM,CAAA;CAAI,GAAE,IAAI,CAyFvF"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { basename, dirname, resolve, sep } from 'node:path';
|
|
3
|
+
import { realpath } from 'node:fs/promises';
|
|
4
|
+
import z from '@deepseek-ai/schemastery';
|
|
5
|
+
import { defineTool } from '@deepseek-ai/dsh-tools';
|
|
6
|
+
export const name = 'maestro-govard-audit-lint-tool';
|
|
7
|
+
export const inject = ['tools'];
|
|
8
|
+
export const Config = z.object({ rootPath: z.string(), timeoutMs: z.number() });
|
|
9
|
+
function workspaceRootFor(c, e) {
|
|
10
|
+
if (c !== undefined)
|
|
11
|
+
return c;
|
|
12
|
+
const cwd = e?.agent?.session?.header?.cwd;
|
|
13
|
+
return typeof cwd === 'string' && cwd !== '' ? cwd : process.cwd();
|
|
14
|
+
}
|
|
15
|
+
async function isInsideRoot(r, t) {
|
|
16
|
+
const ar = resolve(r);
|
|
17
|
+
const rs = resolve(ar, t);
|
|
18
|
+
if (rs !== ar && !rs.startsWith(ar + sep))
|
|
19
|
+
return false;
|
|
20
|
+
let realRoot;
|
|
21
|
+
try {
|
|
22
|
+
realRoot = await realpath(ar);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
let existing = rs;
|
|
28
|
+
const pending = [];
|
|
29
|
+
while (true) {
|
|
30
|
+
let real;
|
|
31
|
+
try {
|
|
32
|
+
real = await realpath(existing);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
if (err.code !== 'ENOENT')
|
|
36
|
+
return false;
|
|
37
|
+
const parent = dirname(existing);
|
|
38
|
+
if (parent === existing)
|
|
39
|
+
return false;
|
|
40
|
+
pending.unshift(basename(existing));
|
|
41
|
+
existing = parent;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const realTarget = pending.length > 0 ? resolve(real, ...pending) : real;
|
|
45
|
+
if (realTarget !== realRoot && !realTarget.startsWith(realRoot + sep))
|
|
46
|
+
return false;
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function cleanJson(raw) {
|
|
51
|
+
return raw.replace(/\n\s*ERROR audit run.*$/s, '').replace(/\s{2,}ERROR audit run.*$/s, '').trimEnd();
|
|
52
|
+
}
|
|
53
|
+
const DEFAULT_TIMEOUT = 120000;
|
|
54
|
+
function run(cmd, args, cwd, timeoutMs) {
|
|
55
|
+
return new Promise((resolvePromise) => {
|
|
56
|
+
const child = spawn(cmd, args, { cwd });
|
|
57
|
+
let stdout = '', stderr = '';
|
|
58
|
+
let timedOut = false;
|
|
59
|
+
const timer = setTimeout(() => { timedOut = true; child.kill('SIGKILL'); }, timeoutMs);
|
|
60
|
+
child.stdout?.on('data', (c) => stdout += c.toString());
|
|
61
|
+
child.stderr?.on('data', (c) => stderr += c.toString());
|
|
62
|
+
child.on('error', (err) => { clearTimeout(timer); resolvePromise({ code: null, stdout, stderr: err.message, timedOut: false }); });
|
|
63
|
+
child.on('close', (code) => { clearTimeout(timer); resolvePromise({ code, stdout, stderr, timedOut }); });
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
export function apply(ctx, config = {}) {
|
|
67
|
+
const configuredRoot = config.rootPath;
|
|
68
|
+
const defaultTimeout = config.timeoutMs ?? DEFAULT_TIMEOUT;
|
|
69
|
+
ctx.effect(() => ctx.tools.register(defineTool({
|
|
70
|
+
name: 'govard_audit_lint',
|
|
71
|
+
description: 'Run govard audit --checks lint --format json and return structured phpcs/phpstan results. Use before hand-parsing text.',
|
|
72
|
+
parameters: {
|
|
73
|
+
worktreePath: { type: 'string' },
|
|
74
|
+
checks: { type: 'array', items: { type: 'string' } },
|
|
75
|
+
mode: { type: 'string', enum: ['auto', 'project', 'module_in_project', 'standalone'] },
|
|
76
|
+
phpVersions: { type: 'array', items: { type: 'string' } },
|
|
77
|
+
noLintResultCache: { type: 'boolean' },
|
|
78
|
+
timeoutMs: { type: 'number' },
|
|
79
|
+
},
|
|
80
|
+
output: {
|
|
81
|
+
schema: {
|
|
82
|
+
type: 'object', additionalProperties: false,
|
|
83
|
+
properties: {
|
|
84
|
+
ok: { type: 'boolean', required: true },
|
|
85
|
+
exitCode: { type: 'number', required: true },
|
|
86
|
+
timedOut: { type: 'boolean', required: true },
|
|
87
|
+
worktreePath: { type: 'string', required: true },
|
|
88
|
+
lint: { type: 'object', required: true, additionalProperties: true },
|
|
89
|
+
summary: { type: 'object', required: true, additionalProperties: true },
|
|
90
|
+
rawJson: { type: 'object', required: true, additionalProperties: true },
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
render: (_a, v) => [{ type: 'text', text: v.ok ? 'audit lint passed' : 'audit lint failed' }],
|
|
94
|
+
},
|
|
95
|
+
async execute(args, exec) {
|
|
96
|
+
const rawPath = args.worktreePath;
|
|
97
|
+
const root = workspaceRootFor(configuredRoot, exec);
|
|
98
|
+
const worktreePath = rawPath ? resolve(root, rawPath) : root;
|
|
99
|
+
const checkPath = rawPath ?? '';
|
|
100
|
+
if (checkPath !== '' && !(await isInsideRoot(root, checkPath)))
|
|
101
|
+
return { text: `Path "${checkPath}" escapes the workspace root.`, truncated: false };
|
|
102
|
+
const timeoutMs = args.timeoutMs ?? defaultTimeout;
|
|
103
|
+
if (timeoutMs < 5000 || timeoutMs > 300000)
|
|
104
|
+
return { text: 'timeoutMs out of range 5000-300000', truncated: false };
|
|
105
|
+
const cliArgs = ['audit', 'run', '--checks', 'lint', '--format', 'json'];
|
|
106
|
+
const result = await run('govard', cliArgs, worktreePath, timeoutMs);
|
|
107
|
+
if (result.timedOut) {
|
|
108
|
+
return { ok: false, exitCode: result.code, timedOut: true, worktreePath, lint: { phpcs: { violations: [] }, phpstan: { errors: [] }, pubMediaGuard: { violations: [] } }, summary: { status: null, phpVersions: [], matrixComplete: false, findingCount: 0, truncated: false }, rawJson: null, errors: [{ code: 'timeout', message: `timed out after ${timeoutMs}ms` }], diagnostics: result.stderr.slice(0, 4000) };
|
|
109
|
+
}
|
|
110
|
+
if (result.code === null && result.stderr.includes('ENOENT')) {
|
|
111
|
+
return { ok: false, exitCode: null, timedOut: false, worktreePath, lint: { phpcs: { violations: [] }, phpstan: { errors: [] }, pubMediaGuard: { violations: [] } }, summary: { status: null, phpVersions: [], matrixComplete: false, findingCount: 0, truncated: false }, rawJson: null, errors: [{ code: 'govard_not_found', message: 'govard binary not found' }], diagnostics: result.stderr.slice(0, 4000) };
|
|
112
|
+
}
|
|
113
|
+
const cleaned = cleanJson(result.stdout);
|
|
114
|
+
let parsed = null;
|
|
115
|
+
try {
|
|
116
|
+
parsed = JSON.parse(cleaned);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
parsed = null;
|
|
120
|
+
}
|
|
121
|
+
if (!parsed) {
|
|
122
|
+
const fallback = cleaned.split('\n').slice(0, -1).join('\n').trimEnd();
|
|
123
|
+
try {
|
|
124
|
+
parsed = JSON.parse(fallback);
|
|
125
|
+
}
|
|
126
|
+
catch { }
|
|
127
|
+
if (!parsed) {
|
|
128
|
+
const tryStderr = cleanJson(result.stdout + result.stderr);
|
|
129
|
+
try {
|
|
130
|
+
parsed = JSON.parse(tryStderr);
|
|
131
|
+
}
|
|
132
|
+
catch { }
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (!parsed) {
|
|
136
|
+
return { ok: false, exitCode: result.code, timedOut: false, worktreePath, lint: { phpcs: { violations: [] }, phpstan: { errors: [] }, pubMediaGuard: { violations: [] } }, summary: { status: null, phpVersions: [], matrixComplete: false, findingCount: 0, truncated: false }, rawJson: null, errors: [{ code: 'parse_error', message: 'stdout not JSON' }], diagnostics: (cleaned + result.stderr).slice(0, 4000) };
|
|
137
|
+
}
|
|
138
|
+
const findings = parsed.findings ?? parsed.evidence?.php_results?.flatMap((r) => r.findings) ?? [];
|
|
139
|
+
const phpcsViolations = [];
|
|
140
|
+
const phpstanErrors = [];
|
|
141
|
+
const pubMediaViolations = [];
|
|
142
|
+
for (const f of findings) {
|
|
143
|
+
if (f.tool === 'phpstan')
|
|
144
|
+
phpstanErrors.push({ path: f.path, line: f.line, message: f.message });
|
|
145
|
+
else if (f.tool === 'phpcs') {
|
|
146
|
+
if (f.path?.includes('pub/media') || f.rule?.includes('PubMedia'))
|
|
147
|
+
pubMediaViolations.push(f);
|
|
148
|
+
else
|
|
149
|
+
phpcsViolations.push({ path: f.path, line: f.line, column: f.column, rule: f.rule, message: f.message, severity: f.severity });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const status = parsed.status ?? (result.code === 0 ? 'passed' : 'failed');
|
|
153
|
+
const phpVersions = parsed.php_versions ?? parsed.phpVersions ?? [];
|
|
154
|
+
const findingCount = findings.length;
|
|
155
|
+
return {
|
|
156
|
+
ok: result.code === 0,
|
|
157
|
+
exitCode: result.code,
|
|
158
|
+
timedOut: false,
|
|
159
|
+
worktreePath,
|
|
160
|
+
sessionId: parsed.session_id ?? parsed.sessionId ?? null,
|
|
161
|
+
runId: parsed.run_id ?? parsed.runId ?? null,
|
|
162
|
+
rawJson: parsed,
|
|
163
|
+
summary: { status, phpVersions, matrixComplete: true, findingCount, truncated: findingCount > 100 },
|
|
164
|
+
lint: { phpcs: { violations: phpcsViolations }, phpstan: { errors: phpstanErrors }, pubMediaGuard: { violations: pubMediaViolations } },
|
|
165
|
+
errors: [],
|
|
166
|
+
diagnostics: result.stderr.slice(0, 4000) || null,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
})));
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=govard-audit-lint-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"govard-audit-lint-tool.js","sourceRoot":"","sources":["../src/govard-audit-lint-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import z from '@deepseek-ai/schemastery';
|
|
3
|
+
export declare const name = "maestro-hyva-csp-scan-tool";
|
|
4
|
+
export declare const inject: string[];
|
|
5
|
+
export declare const Config: z<{
|
|
6
|
+
rootPath?: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function apply(ctx: Context, config?: {
|
|
9
|
+
rootPath?: string;
|
|
10
|
+
}): void;
|
|
11
|
+
//# sourceMappingURL=hyva-csp-scan-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyva-csp-scan-tool.d.ts","sourceRoot":"","sources":["../src/hyva-csp-scan-tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAGxC,eAAO,MAAM,IAAI,+BAA+B,CAAA;AAChD,eAAO,MAAM,MAAM,UAAY,CAAA;AAC/B,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAsC,CAAA;AA+ClF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CA6G5E"}
|