maestro-flow 0.3.22 → 0.3.24
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/commands/maestro-analyze.md +1 -1
- package/.claude/commands/maestro-brainstorm.md +1 -1
- package/.claude/commands/maestro-composer.md +3 -3
- package/.claude/commands/maestro-init.md +4 -4
- package/.claude/commands/maestro-roadmap.md +164 -108
- package/.claude/commands/maestro.md +19 -10
- package/.claude/commands/quality-business-test.md +2 -2
- package/.claude/skills/team-quality-assurance/roles/scout/role.md +1 -1
- package/.claude/skills/team-review/roles/reviewer/role.md +1 -1
- package/.claude/skills/team-review/roles/scanner/role.md +1 -1
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +3 -3
- package/.codex/skills/maestro/SKILL.md +12 -9
- package/.codex/skills/maestro-brainstorm/SKILL.md +1 -1
- package/.codex/skills/maestro-composer/SKILL.md +3 -3
- package/.codex/skills/maestro-init/SKILL.md +1 -1
- package/.codex/skills/maestro-link-coordinate/SKILL.md +1 -1
- package/.codex/skills/maestro-player/SKILL.md +2 -2
- package/.codex/skills/maestro-roadmap/SKILL.md +443 -332
- package/.codex/skills/quality-business-test/SKILL.md +2 -2
- package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -1
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +1 -1
- package/.codex/skills/team-quality-assurance/roles/scout/role.md +1 -1
- package/.codex/skills/team-review/roles/reviewer/role.md +1 -1
- package/.codex/skills/team-review/roles/scanner/role.md +1 -1
- package/.codex/skills/team-tech-debt/roles/scanner/role.md +3 -3
- package/chains/singles/spec-generate.json +3 -3
- package/chains/spec-driven.json +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +4 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install-utils.d.ts +5 -12
- package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js +10 -65
- package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +17 -11
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/src/agents/cli-agent-runner.d.ts +4 -0
- package/dashboard/dist-server/src/agents/cli-agent-runner.js +4 -2
- 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 +20 -4
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/dist-server/src/config/cli-tools-config.d.ts +68 -3
- package/dashboard/dist-server/src/config/cli-tools-config.js +248 -9
- package/dashboard/dist-server/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts +4 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +4 -2
- 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/cli.d.ts.map +1 -1
- package/dist/src/commands/cli.js +21 -4
- package/dist/src/commands/cli.js.map +1 -1
- 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 +20 -4
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +5 -16
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +8 -104
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/install-ui/ExecutionView.js +1 -1
- package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts +1 -0
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +19 -4
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallResult.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallResult.js +1 -1
- package/dist/src/commands/install-ui/InstallResult.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +28 -3
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/tools-ui/CommandReference.d.ts +7 -0
- package/dist/src/commands/tools-ui/CommandReference.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/CommandReference.js +33 -0
- package/dist/src/commands/tools-ui/CommandReference.js.map +1 -0
- package/dist/src/commands/tools-ui/ConfigSources.d.ts +6 -0
- package/dist/src/commands/tools-ui/ConfigSources.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/ConfigSources.js +27 -0
- package/dist/src/commands/tools-ui/ConfigSources.js.map +1 -0
- package/dist/src/commands/tools-ui/RegisterSettings.d.ts +8 -0
- package/dist/src/commands/tools-ui/RegisterSettings.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/RegisterSettings.js +125 -0
- package/dist/src/commands/tools-ui/RegisterSettings.js.map +1 -0
- package/dist/src/commands/tools-ui/RoleMappings.d.ts +9 -0
- package/dist/src/commands/tools-ui/RoleMappings.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/RoleMappings.js +104 -0
- package/dist/src/commands/tools-ui/RoleMappings.js.map +1 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.d.ts +8 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.js +60 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.js.map +1 -0
- package/dist/src/commands/tools-ui/ToolsOverview.d.ts +9 -0
- package/dist/src/commands/tools-ui/ToolsOverview.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/ToolsOverview.js +84 -0
- package/dist/src/commands/tools-ui/ToolsOverview.js.map +1 -0
- package/dist/src/commands/tools.d.ts +3 -0
- package/dist/src/commands/tools.d.ts.map +1 -0
- package/dist/src/commands/tools.js +78 -0
- package/dist/src/commands/tools.js.map +1 -0
- package/dist/src/config/cli-tools-config.d.ts +68 -3
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +248 -9
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/core/component-defs.d.ts +16 -0
- package/dist/src/core/component-defs.d.ts.map +1 -0
- package/dist/src/core/component-defs.js +142 -0
- package/dist/src/core/component-defs.js.map +1 -0
- package/dist/src/core/manifest.d.ts +8 -1
- package/dist/src/core/manifest.d.ts.map +1 -1
- package/dist/src/core/manifest.js +29 -40
- package/dist/src/core/manifest.js.map +1 -1
- package/dist/src/core/tag-injector.d.ts +72 -0
- package/dist/src/core/tag-injector.d.ts.map +1 -0
- package/dist/src/core/tag-injector.js +228 -0
- package/dist/src/core/tag-injector.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +1 -1
- package/templates/cli/prompts/workflow-skill-lessons-learned.txt +1 -1
- package/templates/search-tools.md +1 -1
- package/templates/workflows/specs/node-catalog.md +1 -1
- package/workflows/brainstorm.md +1 -1
- package/{.claude/CLAUDE.md → workflows/claude-instructions.md} +25 -26
- package/workflows/cli-tools-usage.md +16 -2
- package/workflows/codex-instructions.md +150 -0
- package/workflows/delegate-usage.md +16 -2
- package/workflows/execute.md +28 -14
- package/workflows/init.md +2 -2
- package/workflows/issue-discover.md +2 -2
- package/workflows/maestro-super.md +120 -0
- package/workflows/maestro.codex.md +4 -4
- package/workflows/maestro.md +5 -5
- package/workflows/roadmap-common.md +197 -0
- package/workflows/roadmap.md +190 -355
- package/workflows/spec-generate.md +457 -544
- package/.claude/commands/maestro-spec-generate.md +0 -78
- package/.codex/skills/maestro-spec-generate/SKILL.md +0 -355
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CliToolsConfig } from '../../config/cli-tools-config.js';
|
|
2
|
+
export interface ToolsOverviewProps {
|
|
3
|
+
config: CliToolsConfig;
|
|
4
|
+
workDir: string;
|
|
5
|
+
onBack: () => void;
|
|
6
|
+
onReload: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function ToolsOverview({ config, workDir, onBack, onReload }: ToolsOverviewProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=ToolsOverview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolsOverview.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools-ui/ToolsOverview.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAyHtF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import { saveCliToolsConfig, DOMAIN_TAGS, } from '../../config/cli-tools-config.js';
|
|
5
|
+
export function ToolsOverview({ config, workDir, onBack, onReload }) {
|
|
6
|
+
const entries = Object.entries(config.tools);
|
|
7
|
+
const [cursor, setCursor] = useState(0);
|
|
8
|
+
const [mode, setMode] = useState('list');
|
|
9
|
+
const [tagCursor, setTagCursor] = useState(0);
|
|
10
|
+
const [editTags, setEditTags] = useState([]);
|
|
11
|
+
const [saving, setSaving] = useState(false);
|
|
12
|
+
useInput((input, key) => {
|
|
13
|
+
if (saving)
|
|
14
|
+
return;
|
|
15
|
+
if (mode === 'list') {
|
|
16
|
+
if (key.escape) {
|
|
17
|
+
onBack();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (key.upArrow)
|
|
21
|
+
setCursor(c => c > 0 ? c - 1 : entries.length - 1);
|
|
22
|
+
if (key.downArrow)
|
|
23
|
+
setCursor(c => c < entries.length - 1 ? c + 1 : 0);
|
|
24
|
+
if (input === 't' && entries.length > 0) {
|
|
25
|
+
// Enter tag editing for current tool
|
|
26
|
+
setEditTags([...(entries[cursor][1].tags ?? [])]);
|
|
27
|
+
setTagCursor(0);
|
|
28
|
+
setMode('edit-tags');
|
|
29
|
+
}
|
|
30
|
+
if (input === ' ' && entries.length > 0) {
|
|
31
|
+
// Toggle enabled
|
|
32
|
+
const [name, entry] = entries[cursor];
|
|
33
|
+
setSaving(true);
|
|
34
|
+
saveCliToolsConfig({ tools: { [name]: { ...entry, enabled: !entry.enabled } } }, 'global', workDir)
|
|
35
|
+
.then(() => { onReload(); setSaving(false); });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (mode === 'edit-tags') {
|
|
39
|
+
if (key.escape) {
|
|
40
|
+
setMode('list');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (key.upArrow)
|
|
44
|
+
setTagCursor(c => c > 0 ? c - 1 : DOMAIN_TAGS.length - 1);
|
|
45
|
+
if (key.downArrow)
|
|
46
|
+
setTagCursor(c => c < DOMAIN_TAGS.length - 1 ? c + 1 : 0);
|
|
47
|
+
if (input === ' ' || key.return) {
|
|
48
|
+
const tag = DOMAIN_TAGS[tagCursor];
|
|
49
|
+
setEditTags(prev => prev.includes(tag) ? prev.filter(t => t !== tag) : [...prev, tag]);
|
|
50
|
+
}
|
|
51
|
+
if (input === 's') {
|
|
52
|
+
// Save tags
|
|
53
|
+
const [name, entry] = entries[cursor];
|
|
54
|
+
setSaving(true);
|
|
55
|
+
saveCliToolsConfig({ tools: { [name]: { ...entry, tags: editTags } } }, 'global', workDir)
|
|
56
|
+
.then(() => { onReload(); setSaving(false); setMode('list'); });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
if (entries.length === 0) {
|
|
61
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Tools Overview" }), _jsx(Text, { dimColor: true, children: "No tools configured." }), _jsx(Text, { dimColor: true, children: "[Esc] Back" })] }));
|
|
62
|
+
}
|
|
63
|
+
if (mode === 'edit-tags') {
|
|
64
|
+
const [name] = entries[cursor];
|
|
65
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Edit Tags: ", _jsx(Text, { color: "green", children: name })] }), _jsx(Text, { children: " " }), DOMAIN_TAGS.map((tag, i) => {
|
|
66
|
+
const selected = editTags.includes(tag);
|
|
67
|
+
const active = i === tagCursor;
|
|
68
|
+
return (_jsxs(Box, { gap: 1, children: [_jsxs(Text, { color: active ? 'cyan' : undefined, children: [active ? '▸' : ' ', " ", selected ? '[✓]' : '[ ]'] }), _jsx(Text, { bold: active, color: active ? 'cyan' : selected ? 'green' : undefined, children: tag })] }, tag));
|
|
69
|
+
}), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "[\u2191\u2193] Navigate [Space] Toggle [s] Save [Esc] Cancel" })] }));
|
|
70
|
+
}
|
|
71
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Tools Overview" }), _jsx(Text, { children: " " }), _jsxs(Box, { gap: 1, children: [_jsxs(Text, { dimColor: true, children: [' ', pad('Tool', 12)] }), _jsx(Text, { dimColor: true, children: pad('Model', 24) }), _jsx(Text, { dimColor: true, children: pad('Tags', 28) }), _jsx(Text, { dimColor: true, children: "Settings" })] }), _jsx(Text, { dimColor: true, children: ' ' + '─'.repeat(80) }), entries.map(([name, entry], i) => {
|
|
72
|
+
const active = i === cursor;
|
|
73
|
+
const color = active ? 'cyan' : undefined;
|
|
74
|
+
const statusIcon = entry.enabled ? '✓' : '✗';
|
|
75
|
+
const statusColor = entry.enabled ? 'green' : 'red';
|
|
76
|
+
const tags = entry.tags?.length ? entry.tags.join(', ') : '—';
|
|
77
|
+
const settings = entry.settingsFile || '—';
|
|
78
|
+
return (_jsxs(Box, { gap: 1, children: [_jsxs(Text, { color: statusColor, children: [active ? '▸' : ' ', statusIcon] }), _jsx(Text, { bold: active, color: color, children: pad(name, 12) }), _jsx(Text, { color: color, children: pad(entry.primaryModel || '—', 24) }), _jsx(Text, { color: "yellow", children: pad(tags, 28) }), _jsx(Text, { dimColor: !entry.settingsFile, children: settings })] }, name));
|
|
79
|
+
}), _jsx(Text, { children: " " }), _jsx(Text, { dimColor: true, children: "[\u2191\u2193] Navigate [Space] Toggle enabled [t] Edit tags [Esc] Back" }), saving && _jsx(Text, { dimColor: true, children: "Saving..." })] }));
|
|
80
|
+
}
|
|
81
|
+
function pad(s, width) {
|
|
82
|
+
return s.length >= width ? s.slice(0, width) : s + ' '.repeat(width - s.length);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ToolsOverview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolsOverview.js","sourceRoot":"","sources":["../../../../src/commands/tools-ui/ToolsOverview.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/commands/tools.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6DzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe3D"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// `maestro delegate-config` — interactive TUI + CLI for delegate tool config
|
|
3
|
+
//
|
|
4
|
+
// Subcommands:
|
|
5
|
+
// maestro delegate-config → dashboard (TUI)
|
|
6
|
+
// maestro delegate-config show → print tools & roles summary (non-interactive)
|
|
7
|
+
// maestro delegate-config list → tools overview (TUI)
|
|
8
|
+
// maestro delegate-config roles → role mappings (TUI)
|
|
9
|
+
// maestro delegate-config register → register settings file (TUI)
|
|
10
|
+
// maestro delegate-config ref → command reference (TUI)
|
|
11
|
+
// maestro delegate-config config → global/workspace config sources (TUI)
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
async function launchTui(initialView = 'dashboard') {
|
|
14
|
+
const { render } = await import('ink');
|
|
15
|
+
const React = await import('react');
|
|
16
|
+
const { ToolsDashboard } = await import('./tools-ui/ToolsDashboard.js');
|
|
17
|
+
const { waitUntilExit } = render(React.createElement(ToolsDashboard, { workDir: process.cwd(), initialView }));
|
|
18
|
+
await waitUntilExit();
|
|
19
|
+
}
|
|
20
|
+
async function printShow(json) {
|
|
21
|
+
const { loadCliToolsConfig, selectToolByRole, getDefaultRoleMappings, DELEGATE_ROLES } = await import('../config/cli-tools-config.js');
|
|
22
|
+
const config = await loadCliToolsConfig(process.cwd());
|
|
23
|
+
const tools = Object.entries(config.tools);
|
|
24
|
+
const roles = getDefaultRoleMappings();
|
|
25
|
+
const userRoles = config.roles ?? {};
|
|
26
|
+
if (json) {
|
|
27
|
+
const out = {
|
|
28
|
+
tools: Object.fromEntries(tools.map(([name, e]) => [name, {
|
|
29
|
+
enabled: e.enabled, model: e.primaryModel, tags: e.tags,
|
|
30
|
+
...(e.settingsFile ? { settings: e.settingsFile } : {}),
|
|
31
|
+
...(e.baseTool ? { baseTool: e.baseTool } : {}),
|
|
32
|
+
}])),
|
|
33
|
+
roles: Object.fromEntries(DELEGATE_ROLES.map(r => {
|
|
34
|
+
const resolved = selectToolByRole(r, config);
|
|
35
|
+
const src = userRoles[r] ? 'user' : 'default';
|
|
36
|
+
return [r, { tool: resolved?.name ?? '(none)', source: src }];
|
|
37
|
+
})),
|
|
38
|
+
};
|
|
39
|
+
console.log(JSON.stringify(out, null, 2));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Text output
|
|
43
|
+
console.log('Tools:');
|
|
44
|
+
if (tools.length === 0) {
|
|
45
|
+
console.log(' (none configured)');
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
for (const [name, entry] of tools) {
|
|
49
|
+
const icon = entry.enabled ? '✓' : '✗';
|
|
50
|
+
const tags = entry.tags?.length ? `[${entry.tags.join(', ')}]` : '';
|
|
51
|
+
const settings = entry.settingsFile ? ` settings=${entry.settingsFile}` : '';
|
|
52
|
+
const base = entry.baseTool ? ` (→${entry.baseTool})` : '';
|
|
53
|
+
console.log(` ${icon} ${name.padEnd(14)} ${(entry.primaryModel || '—').padEnd(26)} ${tags}${settings}${base}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
console.log('\nRoles:');
|
|
57
|
+
for (const role of DELEGATE_ROLES) {
|
|
58
|
+
const resolved = selectToolByRole(role, config);
|
|
59
|
+
const src = userRoles[role] ? '*' : ' ';
|
|
60
|
+
console.log(` ${src}${role.padEnd(14)} → ${resolved?.name ?? '(none)'}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function registerToolsCommand(program) {
|
|
64
|
+
const cmd = program
|
|
65
|
+
.command('delegate-config')
|
|
66
|
+
.alias('dc')
|
|
67
|
+
.description('Interactive TUI for delegate tool configuration and role mappings')
|
|
68
|
+
.action(async () => launchTui('dashboard'));
|
|
69
|
+
cmd.command('show').description('Print tools & roles summary (non-interactive)')
|
|
70
|
+
.option('--json', 'Output as JSON')
|
|
71
|
+
.action(async (opts) => printShow(!!opts.json));
|
|
72
|
+
cmd.command('list').description('Tools overview').action(() => launchTui('tools'));
|
|
73
|
+
cmd.command('roles').description('Role mappings').action(() => launchTui('roles'));
|
|
74
|
+
cmd.command('register').description('Register settings file').action(() => launchTui('register'));
|
|
75
|
+
cmd.command('ref').description('Command reference').action(() => launchTui('reference'));
|
|
76
|
+
cmd.command('config').description('Config sources (global/workspace)').action(() => launchTui('sources'));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/commands/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,43 @@
|
|
|
1
|
+
/** Domain tags for tool expertise matching. */
|
|
2
|
+
export declare const DOMAIN_TAGS: readonly ["frontend", "backend", "fullstack", "devops", "data", "mobile", "infra"];
|
|
3
|
+
export type DomainTag = (typeof DOMAIN_TAGS)[number];
|
|
1
4
|
export interface ToolEntry {
|
|
2
5
|
enabled: boolean;
|
|
3
6
|
primaryModel: string;
|
|
4
7
|
secondaryModel?: string;
|
|
8
|
+
/** Domain expertise tags (frontend, backend, fullstack, etc.) — used by execute for tool selection */
|
|
5
9
|
tags: string[];
|
|
6
10
|
type: string;
|
|
11
|
+
/** Settings file path for the CLI tool (e.g. Claude --settings, Codex --profile) */
|
|
12
|
+
settingsFile?: string;
|
|
13
|
+
/** Base tool name for aliases (e.g. "claude" for "claude-analysis") */
|
|
14
|
+
baseTool?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RoleMapping {
|
|
17
|
+
/** Direct tool name (simplest config) */
|
|
18
|
+
tool?: string;
|
|
19
|
+
/** Ordered fallback tool names */
|
|
20
|
+
fallbackChain?: string[];
|
|
7
21
|
}
|
|
8
22
|
export interface CliToolsConfig {
|
|
9
23
|
version: string;
|
|
10
24
|
tools: Record<string, ToolEntry>;
|
|
25
|
+
/** User-configurable role → tool mappings */
|
|
26
|
+
roles?: Record<string, RoleMapping>;
|
|
11
27
|
}
|
|
28
|
+
/** Fixed set of supported roles. */
|
|
29
|
+
export declare const DELEGATE_ROLES: readonly ["analyze", "explore", "review", "implement", "plan", "brainstorm", "research"];
|
|
30
|
+
export type DelegateRole = (typeof DELEGATE_ROLES)[number];
|
|
12
31
|
/**
|
|
13
|
-
* Load CLI tools configuration
|
|
14
|
-
*
|
|
32
|
+
* Load CLI tools configuration with workspace-level overrides.
|
|
33
|
+
*
|
|
34
|
+
* Priority: {workDir}/.maestro/cli-tools.json > ~/.maestro/cli-tools.json > DEFAULT_CONFIG
|
|
35
|
+
*
|
|
36
|
+
* Merge strategy:
|
|
37
|
+
* - tools: deep merge (workspace overrides same-name tools)
|
|
38
|
+
* - roles: deep merge (workspace overrides same-name roles)
|
|
15
39
|
*/
|
|
16
|
-
export declare function loadCliToolsConfig(): Promise<CliToolsConfig>;
|
|
40
|
+
export declare function loadCliToolsConfig(workDir?: string): Promise<CliToolsConfig>;
|
|
17
41
|
export interface SelectedTool {
|
|
18
42
|
name: string;
|
|
19
43
|
entry: ToolEntry;
|
|
@@ -23,4 +47,45 @@ export interface SelectedTool {
|
|
|
23
47
|
* Returns undefined when no tool can be resolved.
|
|
24
48
|
*/
|
|
25
49
|
export declare function selectTool(name: string | undefined, config: CliToolsConfig): SelectedTool | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Select a tool by capability role.
|
|
52
|
+
*
|
|
53
|
+
* Resolution order:
|
|
54
|
+
* 1. User-configured role mapping (config.roles[role])
|
|
55
|
+
* 2. Built-in default role mapping (DEFAULT_ROLE_MAPPINGS[role])
|
|
56
|
+
* 3. If mapping has `tool` → direct selectTool()
|
|
57
|
+
* 4. Walk `fallbackChain` → first enabled tool in chain
|
|
58
|
+
* 5. Last resort → selectTool(undefined) (first enabled)
|
|
59
|
+
*/
|
|
60
|
+
export declare function selectToolByRole(role: string, config: CliToolsConfig): SelectedTool | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Save CLI tools configuration to a specific scope.
|
|
63
|
+
* Reads existing config, deep-merges the update, and writes back.
|
|
64
|
+
*/
|
|
65
|
+
export declare function saveCliToolsConfig(update: Partial<CliToolsConfig>, scope: 'global' | 'workspace', workDir?: string): Promise<void>;
|
|
66
|
+
/** Expose default role mappings for TUI display. */
|
|
67
|
+
export declare function getDefaultRoleMappings(): Record<string, RoleMapping>;
|
|
68
|
+
/**
|
|
69
|
+
* Rank enabled tools by domain tag relevance.
|
|
70
|
+
* Returns tools sorted: exact tag match first, then fullstack, then rest.
|
|
71
|
+
* Used by `maestro execute` to suggest the best tool for a task domain.
|
|
72
|
+
*/
|
|
73
|
+
export declare function rankToolsByDomain(domain: string, config: CliToolsConfig): SelectedTool[];
|
|
74
|
+
/** Load global and workspace configs separately (un-merged) for introspection. */
|
|
75
|
+
export declare function loadConfigSources(workDir?: string): Promise<{
|
|
76
|
+
globalPath: string;
|
|
77
|
+
global: Partial<CliToolsConfig> | null;
|
|
78
|
+
workspacePath: string | null;
|
|
79
|
+
workspace: Partial<CliToolsConfig> | null;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Initialize ~/.maestro/cli-tools.json with auto-detected tool availability.
|
|
83
|
+
* No-op if the file already exists.
|
|
84
|
+
* Returns true if created, false if skipped.
|
|
85
|
+
*/
|
|
86
|
+
export declare function initCliToolsConfig(): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Synchronous version of initCliToolsConfig for non-async contexts (e.g. forceInstall).
|
|
89
|
+
*/
|
|
90
|
+
export declare function initCliToolsConfigSync(): boolean;
|
|
26
91
|
//# sourceMappingURL=cli-tools-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-tools-config.d.ts","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-tools-config.d.ts","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"AAgBA,+CAA+C;AAC/C,eAAO,MAAM,WAAW,oFAEd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sGAAsG;IACtG,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAMD,oCAAoC;AACpC,eAAO,MAAM,cAAc,0FAEjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AA6B3D;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA6BlF;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,cAAc,GACrB,YAAY,GAAG,SAAS,CAc1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,GACrB,YAAY,GAAG,SAAS,CAqB1B;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,KAAK,EAAE,QAAQ,GAAG,WAAW,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAMD,oDAAoD;AACpD,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,YAAY,EAAE,CAkBhB;AAED,kFAAkF;AAClF,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CAC3C,CAAC,CAaD;AAuBD;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAuB3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAkBhD"}
|
|
@@ -1,10 +1,40 @@
|
|
|
1
1
|
// ---------------------------------------------------------------------------
|
|
2
2
|
// CLI Tools configuration loader
|
|
3
3
|
// Reads ~/.maestro/cli-tools.json for tool selection and model routing.
|
|
4
|
+
// Supports role-based tool selection and workspace-level config overrides.
|
|
4
5
|
// ---------------------------------------------------------------------------
|
|
5
|
-
import { readFile } from 'node:fs/promises';
|
|
6
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
7
|
+
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
8
|
+
import { execSync } from 'node:child_process';
|
|
6
9
|
import { homedir } from 'node:os';
|
|
7
|
-
import { join } from 'node:path';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Types
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/** Domain tags for tool expertise matching. */
|
|
15
|
+
export const DOMAIN_TAGS = [
|
|
16
|
+
'frontend', 'backend', 'fullstack', 'devops', 'data', 'mobile', 'infra',
|
|
17
|
+
];
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Default role mappings
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/** Fixed set of supported roles. */
|
|
22
|
+
export const DELEGATE_ROLES = [
|
|
23
|
+
'analyze', 'explore', 'review', 'implement', 'plan', 'brainstorm', 'research',
|
|
24
|
+
];
|
|
25
|
+
// Default strengths (codex high priority):
|
|
26
|
+
// codex — analyze, plan, implement, review, debug (preferred)
|
|
27
|
+
// gemini — analyze, plan, frontend, brainstorm, research
|
|
28
|
+
// claude — analyze, plan, implement
|
|
29
|
+
const DEFAULT_ROLE_MAPPINGS = {
|
|
30
|
+
analyze: { fallbackChain: ['codex', 'gemini', 'claude'] },
|
|
31
|
+
explore: { fallbackChain: ['codex', 'gemini', 'claude'] },
|
|
32
|
+
review: { fallbackChain: ['codex', 'gemini', 'claude'] },
|
|
33
|
+
implement: { fallbackChain: ['codex', 'claude', 'gemini'] },
|
|
34
|
+
plan: { fallbackChain: ['codex', 'gemini', 'claude'] },
|
|
35
|
+
brainstorm: { fallbackChain: ['gemini', 'codex', 'claude'] },
|
|
36
|
+
research: { fallbackChain: ['gemini', 'codex', 'claude'] },
|
|
37
|
+
};
|
|
8
38
|
// ---------------------------------------------------------------------------
|
|
9
39
|
// Defaults
|
|
10
40
|
// ---------------------------------------------------------------------------
|
|
@@ -16,18 +46,43 @@ const DEFAULT_CONFIG = {
|
|
|
16
46
|
// Loader
|
|
17
47
|
// ---------------------------------------------------------------------------
|
|
18
48
|
/**
|
|
19
|
-
* Load CLI tools configuration
|
|
20
|
-
*
|
|
49
|
+
* Load CLI tools configuration with workspace-level overrides.
|
|
50
|
+
*
|
|
51
|
+
* Priority: {workDir}/.maestro/cli-tools.json > ~/.maestro/cli-tools.json > DEFAULT_CONFIG
|
|
52
|
+
*
|
|
53
|
+
* Merge strategy:
|
|
54
|
+
* - tools: deep merge (workspace overrides same-name tools)
|
|
55
|
+
* - roles: deep merge (workspace overrides same-name roles)
|
|
21
56
|
*/
|
|
22
|
-
export async function loadCliToolsConfig() {
|
|
23
|
-
|
|
57
|
+
export async function loadCliToolsConfig(workDir) {
|
|
58
|
+
// 1. Load global config
|
|
59
|
+
const globalPath = join(homedir(), '.maestro', 'cli-tools.json');
|
|
60
|
+
let global = DEFAULT_CONFIG;
|
|
24
61
|
try {
|
|
25
|
-
const raw = await readFile(
|
|
26
|
-
|
|
62
|
+
const raw = await readFile(globalPath, 'utf-8');
|
|
63
|
+
global = JSON.parse(raw);
|
|
27
64
|
}
|
|
28
65
|
catch {
|
|
29
|
-
|
|
66
|
+
// No global config — use defaults
|
|
30
67
|
}
|
|
68
|
+
// 2. Load workspace config (if workDir provided)
|
|
69
|
+
if (workDir) {
|
|
70
|
+
const workspacePath = join(workDir, '.maestro', 'cli-tools.json');
|
|
71
|
+
try {
|
|
72
|
+
const raw = await readFile(workspacePath, 'utf-8');
|
|
73
|
+
const workspace = JSON.parse(raw);
|
|
74
|
+
// Merge: workspace overrides global
|
|
75
|
+
global = {
|
|
76
|
+
version: workspace.version ?? global.version,
|
|
77
|
+
tools: { ...global.tools, ...workspace.tools },
|
|
78
|
+
roles: { ...global.roles, ...workspace.roles },
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// No workspace config — use global as-is
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return global;
|
|
31
86
|
}
|
|
32
87
|
/**
|
|
33
88
|
* Select a tool by explicit name or fall back to the first enabled tool.
|
|
@@ -46,4 +101,188 @@ export function selectTool(name, config) {
|
|
|
46
101
|
}
|
|
47
102
|
return undefined;
|
|
48
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Select a tool by capability role.
|
|
106
|
+
*
|
|
107
|
+
* Resolution order:
|
|
108
|
+
* 1. User-configured role mapping (config.roles[role])
|
|
109
|
+
* 2. Built-in default role mapping (DEFAULT_ROLE_MAPPINGS[role])
|
|
110
|
+
* 3. If mapping has `tool` → direct selectTool()
|
|
111
|
+
* 4. Walk `fallbackChain` → first enabled tool in chain
|
|
112
|
+
* 5. Last resort → selectTool(undefined) (first enabled)
|
|
113
|
+
*/
|
|
114
|
+
export function selectToolByRole(role, config) {
|
|
115
|
+
const mapping = config.roles?.[role] ?? DEFAULT_ROLE_MAPPINGS[role];
|
|
116
|
+
if (!mapping) {
|
|
117
|
+
return selectTool(undefined, config);
|
|
118
|
+
}
|
|
119
|
+
// Direct tool name
|
|
120
|
+
if (mapping.tool) {
|
|
121
|
+
return selectTool(mapping.tool, config);
|
|
122
|
+
}
|
|
123
|
+
// Fallback chain: try each named tool in order
|
|
124
|
+
if (mapping.fallbackChain) {
|
|
125
|
+
for (const toolName of mapping.fallbackChain) {
|
|
126
|
+
if (config.tools[toolName]?.enabled) {
|
|
127
|
+
return { name: toolName, entry: config.tools[toolName] };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return selectTool(undefined, config);
|
|
132
|
+
}
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
// Config persistence
|
|
135
|
+
// ---------------------------------------------------------------------------
|
|
136
|
+
/**
|
|
137
|
+
* Save CLI tools configuration to a specific scope.
|
|
138
|
+
* Reads existing config, deep-merges the update, and writes back.
|
|
139
|
+
*/
|
|
140
|
+
export async function saveCliToolsConfig(update, scope, workDir) {
|
|
141
|
+
const configPath = scope === 'global'
|
|
142
|
+
? join(homedir(), '.maestro', 'cli-tools.json')
|
|
143
|
+
: join(workDir ?? process.cwd(), '.maestro', 'cli-tools.json');
|
|
144
|
+
// Read existing
|
|
145
|
+
let existing = {};
|
|
146
|
+
try {
|
|
147
|
+
const raw = await readFile(configPath, 'utf-8');
|
|
148
|
+
existing = JSON.parse(raw);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// No existing config
|
|
152
|
+
}
|
|
153
|
+
// Deep merge — tool entries are field-level merged, not replaced wholesale
|
|
154
|
+
const mergedTools = { ...existing.tools };
|
|
155
|
+
if (update.tools) {
|
|
156
|
+
for (const [name, entry] of Object.entries(update.tools)) {
|
|
157
|
+
mergedTools[name] = { ...mergedTools[name], ...entry };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const merged = {
|
|
161
|
+
version: update.version ?? existing.version ?? '1.1.0',
|
|
162
|
+
tools: mergedTools,
|
|
163
|
+
roles: { ...existing.roles, ...update.roles },
|
|
164
|
+
};
|
|
165
|
+
// Ensure directory exists and write
|
|
166
|
+
await mkdir(dirname(configPath), { recursive: true });
|
|
167
|
+
await writeFile(configPath, JSON.stringify(merged, null, 2) + '\n');
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// Introspection
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
/** Expose default role mappings for TUI display. */
|
|
173
|
+
export function getDefaultRoleMappings() {
|
|
174
|
+
return { ...DEFAULT_ROLE_MAPPINGS };
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Rank enabled tools by domain tag relevance.
|
|
178
|
+
* Returns tools sorted: exact tag match first, then fullstack, then rest.
|
|
179
|
+
* Used by `maestro execute` to suggest the best tool for a task domain.
|
|
180
|
+
*/
|
|
181
|
+
export function rankToolsByDomain(domain, config) {
|
|
182
|
+
const exact = [];
|
|
183
|
+
const fullstack = [];
|
|
184
|
+
const rest = [];
|
|
185
|
+
for (const [name, entry] of Object.entries(config.tools)) {
|
|
186
|
+
if (!entry.enabled)
|
|
187
|
+
continue;
|
|
188
|
+
const tool = { name, entry };
|
|
189
|
+
if (entry.tags.includes(domain)) {
|
|
190
|
+
exact.push(tool);
|
|
191
|
+
}
|
|
192
|
+
else if (entry.tags.includes('fullstack')) {
|
|
193
|
+
fullstack.push(tool);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
rest.push(tool);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return [...exact, ...fullstack, ...rest];
|
|
200
|
+
}
|
|
201
|
+
/** Load global and workspace configs separately (un-merged) for introspection. */
|
|
202
|
+
export async function loadConfigSources(workDir) {
|
|
203
|
+
const gp = join(homedir(), '.maestro', 'cli-tools.json');
|
|
204
|
+
let g = null;
|
|
205
|
+
try {
|
|
206
|
+
g = JSON.parse(await readFile(gp, 'utf-8'));
|
|
207
|
+
}
|
|
208
|
+
catch { /* */ }
|
|
209
|
+
let wp = null;
|
|
210
|
+
let w = null;
|
|
211
|
+
if (workDir) {
|
|
212
|
+
wp = join(workDir, '.maestro', 'cli-tools.json');
|
|
213
|
+
try {
|
|
214
|
+
w = JSON.parse(await readFile(wp, 'utf-8'));
|
|
215
|
+
}
|
|
216
|
+
catch { /* */ }
|
|
217
|
+
}
|
|
218
|
+
return { globalPath: gp, global: g, workspacePath: wp, workspace: w };
|
|
219
|
+
}
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
// Initialization
|
|
222
|
+
// ---------------------------------------------------------------------------
|
|
223
|
+
/** CLI tool definitions with detection commands. */
|
|
224
|
+
const TOOL_DEFS = [
|
|
225
|
+
{ name: 'gemini', cmd: 'gemini', primaryModel: 'gemini-2.5-pro', tags: ['fullstack', 'frontend'], type: 'builtin' },
|
|
226
|
+
{ name: 'claude', cmd: 'claude', primaryModel: 'claude-sonnet-4-20250514', tags: ['fullstack'], type: 'builtin' },
|
|
227
|
+
{ name: 'codex', cmd: 'codex', primaryModel: 'o3', tags: ['fullstack', 'backend'], type: 'builtin' },
|
|
228
|
+
{ name: 'opencode', cmd: 'opencode', primaryModel: '', tags: ['fullstack'], type: 'builtin' },
|
|
229
|
+
];
|
|
230
|
+
function isCliAvailable(cmd) {
|
|
231
|
+
try {
|
|
232
|
+
execSync(`${cmd} --version`, { stdio: 'ignore', timeout: 5000 });
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Initialize ~/.maestro/cli-tools.json with auto-detected tool availability.
|
|
241
|
+
* No-op if the file already exists.
|
|
242
|
+
* Returns true if created, false if skipped.
|
|
243
|
+
*/
|
|
244
|
+
export async function initCliToolsConfig() {
|
|
245
|
+
const configPath = join(homedir(), '.maestro', 'cli-tools.json');
|
|
246
|
+
try {
|
|
247
|
+
await readFile(configPath, 'utf-8');
|
|
248
|
+
return false; // already exists
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// doesn't exist — create it
|
|
252
|
+
}
|
|
253
|
+
const tools = {};
|
|
254
|
+
for (const def of TOOL_DEFS) {
|
|
255
|
+
tools[def.name] = {
|
|
256
|
+
enabled: isCliAvailable(def.cmd),
|
|
257
|
+
primaryModel: def.primaryModel,
|
|
258
|
+
tags: def.tags,
|
|
259
|
+
type: def.type,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const config = { version: '1.1.0', tools };
|
|
263
|
+
await mkdir(dirname(configPath), { recursive: true });
|
|
264
|
+
await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Synchronous version of initCliToolsConfig for non-async contexts (e.g. forceInstall).
|
|
269
|
+
*/
|
|
270
|
+
export function initCliToolsConfigSync() {
|
|
271
|
+
const configPath = join(homedir(), '.maestro', 'cli-tools.json');
|
|
272
|
+
if (existsSync(configPath))
|
|
273
|
+
return false;
|
|
274
|
+
const tools = {};
|
|
275
|
+
for (const def of TOOL_DEFS) {
|
|
276
|
+
tools[def.name] = {
|
|
277
|
+
enabled: isCliAvailable(def.cmd),
|
|
278
|
+
primaryModel: def.primaryModel,
|
|
279
|
+
tags: def.tags,
|
|
280
|
+
type: def.type,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
const config = { version: '1.1.0', tools };
|
|
284
|
+
mkdirSync(dirname(configPath), { recursive: true });
|
|
285
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
49
288
|
//# sourceMappingURL=cli-tools-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-tools-config.js","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iCAAiC;AACjC,wEAAwE;AACxE,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-tools-config.js","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ComponentDef {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
description: string;
|
|
5
|
+
sourcePath: string;
|
|
6
|
+
/** Resolve target path based on mode and project path */
|
|
7
|
+
target: (mode: 'global' | 'project', projectPath: string) => string;
|
|
8
|
+
/** Always installs to global location regardless of mode */
|
|
9
|
+
alwaysGlobal: boolean;
|
|
10
|
+
/** Use tag injection instead of file copy (for doc files like CLAUDE.md) */
|
|
11
|
+
inject?: boolean;
|
|
12
|
+
/** Section name for tag injection (default: "core") */
|
|
13
|
+
section?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const COMPONENT_DEFS: ComponentDef[];
|
|
16
|
+
//# sourceMappingURL=component-defs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-defs.d.ts","sourceRoot":"","sources":["../../../src/core/component-defs.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpE,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,eAAO,MAAM,cAAc,EAAE,YAAY,EA0IxC,CAAC"}
|