maestro-flow 0.3.24 → 0.3.26
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/.claude/agents/cli-explore-agent.md +2 -2
- package/.claude/commands/learn-investigate.md +26 -0
- package/.claude/commands/maestro.md +8 -9
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +32 -7
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
- package/dashboard/dist-server/src/agents/cli-agent-runner.d.ts +2 -0
- package/dashboard/dist-server/src/agents/cli-agent-runner.js +62 -4
- package/dashboard/dist-server/src/agents/cli-agent-runner.js.map +1 -1
- package/dashboard/dist-server/src/commands/delegate.d.ts +2 -0
- package/dashboard/dist-server/src/commands/delegate.js +1 -0
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/dist-server/src/config/paths.d.ts +1 -0
- package/dashboard/dist-server/src/config/paths.js +1 -0
- package/dashboard/dist-server/src/config/paths.js.map +1 -1
- package/dashboard/dist-server/src/tools/spec-entry-parser.d.ts +55 -0
- package/dashboard/dist-server/src/tools/spec-entry-parser.js +222 -0
- package/dashboard/dist-server/src/tools/spec-entry-parser.js.map +1 -0
- package/dashboard/dist-server/src/tools/spec-loader.d.ts +51 -0
- package/dashboard/dist-server/src/tools/spec-loader.js +267 -0
- package/dashboard/dist-server/src/tools/spec-loader.js.map +1 -0
- package/dist/src/agents/cli-agent-runner.d.ts +2 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +62 -4
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/cli.js +2 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/config-ui/ConfigSourcesView.d.ts +6 -0
- package/dist/src/commands/config-ui/ConfigSourcesView.d.ts.map +1 -0
- package/dist/src/commands/config-ui/ConfigSourcesView.js +25 -0
- package/dist/src/commands/config-ui/ConfigSourcesView.js.map +1 -0
- package/dist/src/commands/config-ui/SkillConfigDashboard.d.ts +9 -0
- package/dist/src/commands/config-ui/SkillConfigDashboard.d.ts.map +1 -0
- package/dist/src/commands/config-ui/SkillConfigDashboard.js +64 -0
- package/dist/src/commands/config-ui/SkillConfigDashboard.js.map +1 -0
- package/dist/src/commands/config-ui/SkillParamEditor.d.ts +12 -0
- package/dist/src/commands/config-ui/SkillParamEditor.d.ts.map +1 -0
- package/dist/src/commands/config-ui/SkillParamEditor.js +162 -0
- package/dist/src/commands/config-ui/SkillParamEditor.js.map +1 -0
- package/dist/src/commands/config-ui/SkillsList.d.ts +12 -0
- package/dist/src/commands/config-ui/SkillsList.d.ts.map +1 -0
- package/dist/src/commands/config-ui/SkillsList.js +91 -0
- package/dist/src/commands/config-ui/SkillsList.js.map +1 -0
- package/dist/src/commands/config.d.ts +8 -0
- package/dist/src/commands/config.d.ts.map +1 -0
- package/dist/src/commands/config.js +172 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/delegate.d.ts +2 -0
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +1 -0
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/config/argument-hint-parser.d.ts +49 -0
- package/dist/src/config/argument-hint-parser.d.ts.map +1 -0
- package/dist/src/config/argument-hint-parser.js +283 -0
- package/dist/src/config/argument-hint-parser.js.map +1 -0
- package/dist/src/config/paths.d.ts +1 -0
- package/dist/src/config/paths.d.ts.map +1 -1
- package/dist/src/config/paths.js +1 -0
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/skill-config.d.ts +56 -0
- package/dist/src/config/skill-config.d.ts.map +1 -0
- package/dist/src/config/skill-config.js +188 -0
- package/dist/src/config/skill-config.js.map +1 -0
- package/dist/src/hooks/skill-context.d.ts +12 -2
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +126 -39
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/package.json +1 -1
- package/templates/cli/protocols/analysis-protocol.md +121 -121
- package/templates/cli/protocols/write-protocol.md +138 -138
- package/workflows/debug.md +35 -0
- package/workflows/execute.md +23 -0
- package/workflows/maestro-chain-execute.md +204 -0
- package/workflows/maestro.md +21 -99
- package/workflows/milestone-audit.md +28 -0
- package/workflows/plan.md +17 -0
- package/workflows/review.md +46 -0
- package/workflows/test-gen.md +28 -0
- package/workflows/verify.md +38 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// argument-hint parser — extracts structured SkillParamDef[] from command
|
|
3
|
+
// frontmatter `argument-hint` strings.
|
|
4
|
+
//
|
|
5
|
+
// Drives TUI form generation and skill config validation.
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
import { readdirSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
function extractFrontmatter(content) {
|
|
11
|
+
const fmMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
12
|
+
if (!fmMatch)
|
|
13
|
+
return null;
|
|
14
|
+
const block = fmMatch[1];
|
|
15
|
+
const get = (key) => {
|
|
16
|
+
const m = block.match(new RegExp(`^${key}:\\s*(.*)$`, 'm'));
|
|
17
|
+
if (!m)
|
|
18
|
+
return '';
|
|
19
|
+
// Strip surrounding quotes
|
|
20
|
+
return m[1].replace(/^["']|["']$/g, '').trim();
|
|
21
|
+
};
|
|
22
|
+
const name = get('name');
|
|
23
|
+
if (!name)
|
|
24
|
+
return null;
|
|
25
|
+
return {
|
|
26
|
+
name,
|
|
27
|
+
description: get('description'),
|
|
28
|
+
argumentHint: get('argument-hint'),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// argument-hint tokenizer
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/**
|
|
35
|
+
* Tokenize an argument-hint string into bracket-delimited or bare segments.
|
|
36
|
+
*
|
|
37
|
+
* Examples:
|
|
38
|
+
* "[phase] [--auto-commit] <path>"
|
|
39
|
+
* → ["[phase]", "[--auto-commit]", "<path>"]
|
|
40
|
+
*
|
|
41
|
+
* "[--method agent|codex|auto]"
|
|
42
|
+
* → ["[--method agent|codex|auto]"]
|
|
43
|
+
*
|
|
44
|
+
* "\"intent text\" [-y]"
|
|
45
|
+
* → ["\"intent text\"", "[-y]"]
|
|
46
|
+
*/
|
|
47
|
+
function tokenize(hint) {
|
|
48
|
+
const tokens = [];
|
|
49
|
+
let i = 0;
|
|
50
|
+
while (i < hint.length) {
|
|
51
|
+
// Skip whitespace
|
|
52
|
+
while (i < hint.length && /\s/.test(hint[i]))
|
|
53
|
+
i++;
|
|
54
|
+
if (i >= hint.length)
|
|
55
|
+
break;
|
|
56
|
+
const ch = hint[i];
|
|
57
|
+
if (ch === '[') {
|
|
58
|
+
// Bracket-delimited optional
|
|
59
|
+
const end = findMatchingBracket(hint, i, '[', ']');
|
|
60
|
+
tokens.push(hint.slice(i, end + 1));
|
|
61
|
+
i = end + 1;
|
|
62
|
+
}
|
|
63
|
+
else if (ch === '<') {
|
|
64
|
+
// Angle-bracket required
|
|
65
|
+
const end = findMatchingBracket(hint, i, '<', '>');
|
|
66
|
+
tokens.push(hint.slice(i, end + 1));
|
|
67
|
+
i = end + 1;
|
|
68
|
+
}
|
|
69
|
+
else if (ch === '"') {
|
|
70
|
+
// Quoted positional
|
|
71
|
+
const end = hint.indexOf('"', i + 1);
|
|
72
|
+
if (end === -1) {
|
|
73
|
+
tokens.push(hint.slice(i));
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
tokens.push(hint.slice(i, end + 1));
|
|
77
|
+
i = end + 1;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Bare word (rare)
|
|
81
|
+
const end = hint.indexOf(' ', i);
|
|
82
|
+
if (end === -1) {
|
|
83
|
+
tokens.push(hint.slice(i));
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
tokens.push(hint.slice(i, end));
|
|
87
|
+
i = end;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return tokens;
|
|
91
|
+
}
|
|
92
|
+
function findMatchingBracket(s, start, open, close) {
|
|
93
|
+
let depth = 0;
|
|
94
|
+
for (let i = start; i < s.length; i++) {
|
|
95
|
+
if (s[i] === open)
|
|
96
|
+
depth++;
|
|
97
|
+
if (s[i] === close) {
|
|
98
|
+
depth--;
|
|
99
|
+
if (depth === 0)
|
|
100
|
+
return i;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return s.length - 1;
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Token → SkillParamDef parser
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
/**
|
|
109
|
+
* Parse a single token into one or more SkillParamDef entries.
|
|
110
|
+
*
|
|
111
|
+
* Supported patterns:
|
|
112
|
+
* [--flag] → boolean
|
|
113
|
+
* [-y] → boolean
|
|
114
|
+
* [-y|-c] → multiple booleans
|
|
115
|
+
* [--name val1|val2|val3] → enum
|
|
116
|
+
* [--name <placeholder>] → string
|
|
117
|
+
* [--name N] → number
|
|
118
|
+
* [--name "text"] → string
|
|
119
|
+
* [positional] → positional string
|
|
120
|
+
* <positional> → required positional string
|
|
121
|
+
* "quoted text" → positional string
|
|
122
|
+
* [<subcommand> [options]] → positional string (e.g. manage-issue)
|
|
123
|
+
*/
|
|
124
|
+
function parseToken(token) {
|
|
125
|
+
// Determine wrapping
|
|
126
|
+
const isRequired = token.startsWith('<') && token.endsWith('>');
|
|
127
|
+
const isOptional = token.startsWith('[') && token.endsWith(']');
|
|
128
|
+
const isQuoted = token.startsWith('"') && token.endsWith('"');
|
|
129
|
+
// Unwrap
|
|
130
|
+
let inner;
|
|
131
|
+
if (isOptional || isRequired) {
|
|
132
|
+
inner = token.slice(1, -1).trim();
|
|
133
|
+
}
|
|
134
|
+
else if (isQuoted) {
|
|
135
|
+
inner = token.slice(1, -1).trim();
|
|
136
|
+
return [{ name: inner, type: 'string', positional: true, required: false }];
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
inner = token.trim();
|
|
140
|
+
}
|
|
141
|
+
// Handle grouped short flags: -y|-c
|
|
142
|
+
if (/^-[a-zA-Z](\|-[a-zA-Z])+$/.test(inner)) {
|
|
143
|
+
return inner.split('|').map(flag => ({
|
|
144
|
+
name: flag,
|
|
145
|
+
type: 'boolean',
|
|
146
|
+
required: false,
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
// Handle --flag or -x (standalone boolean)
|
|
150
|
+
if (/^-{1,2}[a-zA-Z][\w-]*$/.test(inner)) {
|
|
151
|
+
return [{ name: inner, type: 'boolean', required: isRequired }];
|
|
152
|
+
}
|
|
153
|
+
// Handle --name with value: split at first space
|
|
154
|
+
const spaceIdx = inner.indexOf(' ');
|
|
155
|
+
if (spaceIdx !== -1 && inner.startsWith('-')) {
|
|
156
|
+
const paramName = inner.slice(0, spaceIdx);
|
|
157
|
+
const valueSpec = inner.slice(spaceIdx + 1).trim();
|
|
158
|
+
// Enum: val1|val2|val3 (no angle brackets, no N)
|
|
159
|
+
if (valueSpec.includes('|') && !valueSpec.startsWith('<')) {
|
|
160
|
+
const choices = valueSpec.split('|').map(c => c.trim());
|
|
161
|
+
return [{ name: paramName, type: 'enum', choices, required: isRequired }];
|
|
162
|
+
}
|
|
163
|
+
// Number: single uppercase N or digits pattern
|
|
164
|
+
if (/^N$/i.test(valueSpec)) {
|
|
165
|
+
return [{ name: paramName, type: 'number', required: isRequired }];
|
|
166
|
+
}
|
|
167
|
+
// String: <placeholder> or "text" or other
|
|
168
|
+
return [{ name: paramName, type: 'string', required: isRequired }];
|
|
169
|
+
}
|
|
170
|
+
// Handle special: nested brackets like <create|list|status|...>
|
|
171
|
+
if (inner.includes('|') && !inner.startsWith('-')) {
|
|
172
|
+
// Positional enum
|
|
173
|
+
const choices = inner.split('|').map(c => c.trim().replace(/[<>\[\]]/g, ''));
|
|
174
|
+
const name = choices.join('|').length > 30
|
|
175
|
+
? choices[0]
|
|
176
|
+
: inner.replace(/[<>\[\]]/g, '');
|
|
177
|
+
return [{ name, type: 'enum', choices, positional: true, required: isRequired }];
|
|
178
|
+
}
|
|
179
|
+
// Plain positional: [phase], <path>, [description], etc.
|
|
180
|
+
// Strip nested angle brackets: [<version>] → version
|
|
181
|
+
const cleaned = inner.replace(/[<>]/g, '').trim();
|
|
182
|
+
if (!cleaned || cleaned.startsWith('[')) {
|
|
183
|
+
// Complex nested optional like [<subcommand> [options]] — treat as string positional
|
|
184
|
+
const first = cleaned.split(/\s/)[0] || 'arg';
|
|
185
|
+
return [{ name: first, type: 'string', positional: true, required: isRequired }];
|
|
186
|
+
}
|
|
187
|
+
return [{ name: cleaned, type: 'string', positional: true, required: isRequired }];
|
|
188
|
+
}
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
// Public API
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
/**
|
|
193
|
+
* Parse an argument-hint string into structured parameter definitions.
|
|
194
|
+
*/
|
|
195
|
+
export function parseArgumentHint(hint) {
|
|
196
|
+
if (!hint || !hint.trim())
|
|
197
|
+
return [];
|
|
198
|
+
const tokens = tokenize(hint);
|
|
199
|
+
const params = [];
|
|
200
|
+
for (const token of tokens) {
|
|
201
|
+
params.push(...parseToken(token));
|
|
202
|
+
}
|
|
203
|
+
return params;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Load all command definitions from a `.claude/commands/` directory.
|
|
207
|
+
* Returns a Map of command name → CommandDef.
|
|
208
|
+
*/
|
|
209
|
+
export function loadCommandDefs(commandsDir) {
|
|
210
|
+
const defs = new Map();
|
|
211
|
+
let files;
|
|
212
|
+
try {
|
|
213
|
+
files = readdirSync(commandsDir).filter(f => f.endsWith('.md'));
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return defs;
|
|
217
|
+
}
|
|
218
|
+
for (const file of files) {
|
|
219
|
+
try {
|
|
220
|
+
const content = readFileSync(join(commandsDir, file), 'utf8');
|
|
221
|
+
const fm = extractFrontmatter(content);
|
|
222
|
+
if (!fm)
|
|
223
|
+
continue;
|
|
224
|
+
defs.set(fm.name, {
|
|
225
|
+
name: fm.name,
|
|
226
|
+
argumentHint: fm.argumentHint,
|
|
227
|
+
description: fm.description,
|
|
228
|
+
params: parseArgumentHint(fm.argumentHint),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Skip unreadable files
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return defs;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Discover command directories — checks both global and project-scoped locations.
|
|
239
|
+
* Returns array of existing directories.
|
|
240
|
+
*/
|
|
241
|
+
export function discoverCommandDirs(projectDir) {
|
|
242
|
+
const dirs = [];
|
|
243
|
+
// Global commands
|
|
244
|
+
const globalDir = join(homedir(), '.claude', 'commands');
|
|
245
|
+
try {
|
|
246
|
+
readdirSync(globalDir);
|
|
247
|
+
dirs.push(globalDir);
|
|
248
|
+
}
|
|
249
|
+
catch { /* */ }
|
|
250
|
+
// Project commands
|
|
251
|
+
if (projectDir) {
|
|
252
|
+
const projectCmdDir = join(projectDir, '.claude', 'commands');
|
|
253
|
+
try {
|
|
254
|
+
readdirSync(projectCmdDir);
|
|
255
|
+
dirs.push(projectCmdDir);
|
|
256
|
+
}
|
|
257
|
+
catch { /* */ }
|
|
258
|
+
}
|
|
259
|
+
return dirs;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Load all command definitions from all discoverable directories.
|
|
263
|
+
* Project-scoped commands override global ones with the same name.
|
|
264
|
+
*/
|
|
265
|
+
export function loadAllCommandDefs(projectDir) {
|
|
266
|
+
const merged = new Map();
|
|
267
|
+
const dirs = discoverCommandDirs(projectDir);
|
|
268
|
+
for (const dir of dirs) {
|
|
269
|
+
const defs = loadCommandDefs(dir);
|
|
270
|
+
for (const [name, def] of defs) {
|
|
271
|
+
merged.set(name, def); // Later dirs (project) override earlier (global)
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return merged;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Get only the configurable (non-positional) parameters for a skill.
|
|
278
|
+
* These are the params users typically want to set defaults for.
|
|
279
|
+
*/
|
|
280
|
+
export function getConfigurableParams(params) {
|
|
281
|
+
return params.filter(p => !p.positional);
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=argument-hint-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argument-hint-parser.js","sourceRoot":"","sources":["../../../src/config/argument-hint-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/config/paths.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/config/paths.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,KAAK;;;;;;;;;6BAUF,MAAM;;;;;+BAQJ,MAAM,EAAE;CAOhB,CAAC"}
|
package/dist/src/config/paths.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;IACzC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IAClC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;IACzC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IAClC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IAChC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IAChC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC;IAC7C,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAEpD,OAAO,CAAC,IAAY;QAClB,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,IAAc;QACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;CACO,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface SkillDefaults {
|
|
2
|
+
/** Parameter name → default value */
|
|
3
|
+
params: Record<string, string | boolean | number>;
|
|
4
|
+
/** Last updated timestamp (ISO 8601) */
|
|
5
|
+
updated?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SkillConfigFile {
|
|
8
|
+
version: string;
|
|
9
|
+
/** key = skill name (e.g. "maestro-execute") */
|
|
10
|
+
skills: Record<string, SkillDefaults>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Load skill config with workspace overrides.
|
|
14
|
+
*
|
|
15
|
+
* Priority: {workDir}/.maestro/skill-config.json > ~/.maestro/skill-config.json
|
|
16
|
+
*
|
|
17
|
+
* Merge: per-skill params are deep-merged (workspace overrides same-name params).
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadSkillConfig(workDir?: string): SkillConfigFile;
|
|
20
|
+
/**
|
|
21
|
+
* Synchronous loader for hook context (hooks must be synchronous).
|
|
22
|
+
* Same merge logic as loadSkillConfig.
|
|
23
|
+
*/
|
|
24
|
+
export declare function loadSkillConfigSync(workDir?: string): SkillConfigFile;
|
|
25
|
+
/**
|
|
26
|
+
* Save skill config to the specified scope.
|
|
27
|
+
* Reads existing config, deep-merges the update, and writes back.
|
|
28
|
+
*/
|
|
29
|
+
export declare function saveSkillConfig(update: Partial<SkillConfigFile>, scope: 'global' | 'workspace', workDir?: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Set a single parameter default for a skill.
|
|
32
|
+
*/
|
|
33
|
+
export declare function setSkillParam(skill: string, param: string, value: string | boolean | number, scope: 'global' | 'workspace', workDir?: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Remove a single parameter default for a skill.
|
|
36
|
+
*/
|
|
37
|
+
export declare function unsetSkillParam(skill: string, param: string, scope: 'global' | 'workspace', workDir?: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* Reset all defaults for a skill (or all skills).
|
|
40
|
+
*/
|
|
41
|
+
export declare function resetSkillConfig(skill: string | undefined, scope: 'global' | 'workspace', workDir?: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get defaults for a specific skill from the merged config.
|
|
44
|
+
* Returns null if no defaults configured.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getSkillDefaults(skill: string, workDir?: string): SkillDefaults | null;
|
|
47
|
+
/**
|
|
48
|
+
* Load global and workspace configs separately (un-merged) for introspection.
|
|
49
|
+
*/
|
|
50
|
+
export declare function loadSkillConfigSources(workDir?: string): {
|
|
51
|
+
globalPath: string;
|
|
52
|
+
global: SkillConfigFile | null;
|
|
53
|
+
workspacePath: string | null;
|
|
54
|
+
workspace: SkillConfigFile | null;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=skill-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-config.d.ts","sourceRoot":"","sources":["../../../src/config/skill-config.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;IAClD,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC;AAwBD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CA4BjE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,CAErE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,EAChC,KAAK,EAAE,QAAQ,GAAG,WAAW,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAmCN;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAChC,KAAK,EAAE,QAAQ,GAAG,WAAW,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CASN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,QAAQ,GAAG,WAAW,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,QAAQ,GAAG,WAAW,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAeN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,aAAa,GAAG,IAAI,CAGtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;CACnC,CAYA"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Skill config — per-skill parameter defaults with dual-scope (global/project)
|
|
3
|
+
//
|
|
4
|
+
// Follows the same pattern as cli-tools-config.ts:
|
|
5
|
+
// Global: ~/.maestro/skill-config.json
|
|
6
|
+
// Workspace: {project}/.maestro/skill-config.json
|
|
7
|
+
// Merge: workspace overrides global (per-skill, params deep-merged)
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
import { paths } from './paths.js';
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Defaults
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
const DEFAULT_CONFIG = {
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
skills: {},
|
|
18
|
+
};
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Loader
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
function readConfigFile(filePath) {
|
|
23
|
+
if (!existsSync(filePath))
|
|
24
|
+
return null;
|
|
25
|
+
try {
|
|
26
|
+
return JSON.parse(readFileSync(filePath, 'utf8'));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Load skill config with workspace overrides.
|
|
34
|
+
*
|
|
35
|
+
* Priority: {workDir}/.maestro/skill-config.json > ~/.maestro/skill-config.json
|
|
36
|
+
*
|
|
37
|
+
* Merge: per-skill params are deep-merged (workspace overrides same-name params).
|
|
38
|
+
*/
|
|
39
|
+
export function loadSkillConfig(workDir) {
|
|
40
|
+
const global = readConfigFile(paths.skillConfig) ?? { ...DEFAULT_CONFIG };
|
|
41
|
+
if (!workDir)
|
|
42
|
+
return global;
|
|
43
|
+
const workspacePath = join(workDir, '.maestro', 'skill-config.json');
|
|
44
|
+
const workspace = readConfigFile(workspacePath);
|
|
45
|
+
if (!workspace)
|
|
46
|
+
return global;
|
|
47
|
+
// Deep merge: per-skill, params-level merge
|
|
48
|
+
const merged = {
|
|
49
|
+
version: workspace.version ?? global.version,
|
|
50
|
+
skills: { ...global.skills },
|
|
51
|
+
};
|
|
52
|
+
for (const [skill, defaults] of Object.entries(workspace.skills)) {
|
|
53
|
+
const existing = merged.skills[skill];
|
|
54
|
+
if (existing) {
|
|
55
|
+
merged.skills[skill] = {
|
|
56
|
+
params: { ...existing.params, ...defaults.params },
|
|
57
|
+
updated: defaults.updated ?? existing.updated,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
merged.skills[skill] = defaults;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return merged;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Synchronous loader for hook context (hooks must be synchronous).
|
|
68
|
+
* Same merge logic as loadSkillConfig.
|
|
69
|
+
*/
|
|
70
|
+
export function loadSkillConfigSync(workDir) {
|
|
71
|
+
return loadSkillConfig(workDir);
|
|
72
|
+
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Persistence
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Save skill config to the specified scope.
|
|
78
|
+
* Reads existing config, deep-merges the update, and writes back.
|
|
79
|
+
*/
|
|
80
|
+
export function saveSkillConfig(update, scope, workDir) {
|
|
81
|
+
const configPath = scope === 'global'
|
|
82
|
+
? paths.skillConfig
|
|
83
|
+
: join(workDir ?? process.cwd(), '.maestro', 'skill-config.json');
|
|
84
|
+
// Read existing
|
|
85
|
+
const existing = readConfigFile(configPath) ?? { ...DEFAULT_CONFIG };
|
|
86
|
+
// Merge skills
|
|
87
|
+
const mergedSkills = { ...existing.skills };
|
|
88
|
+
if (update.skills) {
|
|
89
|
+
for (const [skill, defaults] of Object.entries(update.skills)) {
|
|
90
|
+
const prev = mergedSkills[skill];
|
|
91
|
+
if (prev) {
|
|
92
|
+
mergedSkills[skill] = {
|
|
93
|
+
params: { ...prev.params, ...defaults.params },
|
|
94
|
+
updated: defaults.updated ?? new Date().toISOString(),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
mergedSkills[skill] = {
|
|
99
|
+
...defaults,
|
|
100
|
+
updated: defaults.updated ?? new Date().toISOString(),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const merged = {
|
|
106
|
+
version: update.version ?? existing.version ?? '1.0.0',
|
|
107
|
+
skills: mergedSkills,
|
|
108
|
+
};
|
|
109
|
+
// Ensure directory and write
|
|
110
|
+
mkdirSync(dirname(configPath), { recursive: true });
|
|
111
|
+
writeFileSync(configPath, JSON.stringify(merged, null, 2) + '\n');
|
|
112
|
+
}
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// Mutation helpers
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
/**
|
|
117
|
+
* Set a single parameter default for a skill.
|
|
118
|
+
*/
|
|
119
|
+
export function setSkillParam(skill, param, value, scope, workDir) {
|
|
120
|
+
saveSkillConfig({
|
|
121
|
+
skills: {
|
|
122
|
+
[skill]: {
|
|
123
|
+
params: { [param]: value },
|
|
124
|
+
updated: new Date().toISOString(),
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
}, scope, workDir);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Remove a single parameter default for a skill.
|
|
131
|
+
*/
|
|
132
|
+
export function unsetSkillParam(skill, param, scope, workDir) {
|
|
133
|
+
const configPath = scope === 'global'
|
|
134
|
+
? paths.skillConfig
|
|
135
|
+
: join(workDir ?? process.cwd(), '.maestro', 'skill-config.json');
|
|
136
|
+
const config = readConfigFile(configPath);
|
|
137
|
+
if (!config?.skills[skill])
|
|
138
|
+
return;
|
|
139
|
+
delete config.skills[skill].params[param];
|
|
140
|
+
config.skills[skill].updated = new Date().toISOString();
|
|
141
|
+
// Clean up empty skill entries
|
|
142
|
+
if (Object.keys(config.skills[skill].params).length === 0) {
|
|
143
|
+
delete config.skills[skill];
|
|
144
|
+
}
|
|
145
|
+
mkdirSync(dirname(configPath), { recursive: true });
|
|
146
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Reset all defaults for a skill (or all skills).
|
|
150
|
+
*/
|
|
151
|
+
export function resetSkillConfig(skill, scope, workDir) {
|
|
152
|
+
const configPath = scope === 'global'
|
|
153
|
+
? paths.skillConfig
|
|
154
|
+
: join(workDir ?? process.cwd(), '.maestro', 'skill-config.json');
|
|
155
|
+
const config = readConfigFile(configPath);
|
|
156
|
+
if (!config)
|
|
157
|
+
return;
|
|
158
|
+
if (skill) {
|
|
159
|
+
delete config.skills[skill];
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
config.skills = {};
|
|
163
|
+
}
|
|
164
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get defaults for a specific skill from the merged config.
|
|
168
|
+
* Returns null if no defaults configured.
|
|
169
|
+
*/
|
|
170
|
+
export function getSkillDefaults(skill, workDir) {
|
|
171
|
+
const config = loadSkillConfig(workDir);
|
|
172
|
+
return config.skills[skill] ?? null;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Load global and workspace configs separately (un-merged) for introspection.
|
|
176
|
+
*/
|
|
177
|
+
export function loadSkillConfigSources(workDir) {
|
|
178
|
+
const gp = paths.skillConfig;
|
|
179
|
+
const g = readConfigFile(gp);
|
|
180
|
+
let wp = null;
|
|
181
|
+
let w = null;
|
|
182
|
+
if (workDir) {
|
|
183
|
+
wp = join(workDir, '.maestro', 'skill-config.json');
|
|
184
|
+
w = readConfigFile(wp);
|
|
185
|
+
}
|
|
186
|
+
return { globalPath: gp, global: g, workspacePath: wp, workspace: w };
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=skill-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-config.js","sourceRoot":"","sources":["../../../src/config/skill-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,8 +33,18 @@ export interface SkillContextInput {
|
|
|
33
33
|
*/
|
|
34
34
|
export declare function parseSkillInvocation(prompt: string): SkillMatch | null;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
36
|
+
* Parse any /command-name invocation from user prompt (generalized).
|
|
37
|
+
* Used for skill config parameter injection — works with all commands,
|
|
38
|
+
* not just workflow-specific ones.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseAnySkillInvocation(prompt: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Evaluate skill context and return workflow state + artifact tree + param defaults.
|
|
43
|
+
* Returns null if no skill invocation detected.
|
|
44
|
+
*
|
|
45
|
+
* Two independent concern layers:
|
|
46
|
+
* 1. Workflow context (state, artifacts, outcomes) — requires workflow state.json
|
|
47
|
+
* 2. Skill config param injection — works for ANY /command, no workflow required
|
|
38
48
|
*/
|
|
39
49
|
export declare function evaluateSkillContext(data: SkillContextInput): HookOutput | null;
|
|
40
50
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-context.d.ts","sourceRoot":"","sources":["../../../src/hooks/skill-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"skill-context.d.ts","sourceRoot":"","sources":["../../../src/hooks/skill-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,UAAU;IAClB,kBAAkB,EAAE;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AA6CD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAStE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAqFD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI,CA4D/E"}
|