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.
Files changed (144) hide show
  1. package/.claude/commands/maestro-analyze.md +1 -1
  2. package/.claude/commands/maestro-brainstorm.md +1 -1
  3. package/.claude/commands/maestro-composer.md +3 -3
  4. package/.claude/commands/maestro-init.md +4 -4
  5. package/.claude/commands/maestro-roadmap.md +164 -108
  6. package/.claude/commands/maestro.md +19 -10
  7. package/.claude/commands/quality-business-test.md +2 -2
  8. package/.claude/skills/team-quality-assurance/roles/scout/role.md +1 -1
  9. package/.claude/skills/team-review/roles/reviewer/role.md +1 -1
  10. package/.claude/skills/team-review/roles/scanner/role.md +1 -1
  11. package/.claude/skills/team-tech-debt/roles/scanner/role.md +3 -3
  12. package/.codex/skills/maestro/SKILL.md +12 -9
  13. package/.codex/skills/maestro-brainstorm/SKILL.md +1 -1
  14. package/.codex/skills/maestro-composer/SKILL.md +3 -3
  15. package/.codex/skills/maestro-init/SKILL.md +1 -1
  16. package/.codex/skills/maestro-link-coordinate/SKILL.md +1 -1
  17. package/.codex/skills/maestro-player/SKILL.md +2 -2
  18. package/.codex/skills/maestro-roadmap/SKILL.md +443 -332
  19. package/.codex/skills/quality-business-test/SKILL.md +2 -2
  20. package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -1
  21. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +1 -1
  22. package/.codex/skills/team-quality-assurance/roles/scout/role.md +1 -1
  23. package/.codex/skills/team-review/roles/reviewer/role.md +1 -1
  24. package/.codex/skills/team-review/roles/scanner/role.md +1 -1
  25. package/.codex/skills/team-tech-debt/roles/scanner/role.md +3 -3
  26. package/chains/singles/spec-generate.json +3 -3
  27. package/chains/spec-driven.json +2 -2
  28. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +4 -0
  29. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  30. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +2 -2
  31. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  32. package/dashboard/dist-server/dashboard/src/server/routes/install-utils.d.ts +5 -12
  33. package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js +10 -65
  34. package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js.map +1 -1
  35. package/dashboard/dist-server/dashboard/src/server/routes/install.js +17 -11
  36. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  37. package/dashboard/dist-server/src/agents/cli-agent-runner.d.ts +4 -0
  38. package/dashboard/dist-server/src/agents/cli-agent-runner.js +4 -2
  39. package/dashboard/dist-server/src/agents/cli-agent-runner.js.map +1 -1
  40. package/dashboard/dist-server/src/commands/delegate.d.ts +2 -0
  41. package/dashboard/dist-server/src/commands/delegate.js +20 -4
  42. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  43. package/dashboard/dist-server/src/config/cli-tools-config.d.ts +68 -3
  44. package/dashboard/dist-server/src/config/cli-tools-config.js +248 -9
  45. package/dashboard/dist-server/src/config/cli-tools-config.js.map +1 -1
  46. package/dist/src/agents/cli-agent-runner.d.ts +4 -0
  47. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  48. package/dist/src/agents/cli-agent-runner.js +4 -2
  49. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  50. package/dist/src/cli.js +2 -0
  51. package/dist/src/cli.js.map +1 -1
  52. package/dist/src/commands/cli.d.ts.map +1 -1
  53. package/dist/src/commands/cli.js +21 -4
  54. package/dist/src/commands/cli.js.map +1 -1
  55. package/dist/src/commands/delegate.d.ts +2 -0
  56. package/dist/src/commands/delegate.d.ts.map +1 -1
  57. package/dist/src/commands/delegate.js +20 -4
  58. package/dist/src/commands/delegate.js.map +1 -1
  59. package/dist/src/commands/install-backend.d.ts +5 -16
  60. package/dist/src/commands/install-backend.d.ts.map +1 -1
  61. package/dist/src/commands/install-backend.js +8 -104
  62. package/dist/src/commands/install-backend.js.map +1 -1
  63. package/dist/src/commands/install-ui/ExecutionView.js +1 -1
  64. package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
  65. package/dist/src/commands/install-ui/InstallExecution.d.ts +1 -0
  66. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  67. package/dist/src/commands/install-ui/InstallExecution.js +19 -4
  68. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  69. package/dist/src/commands/install-ui/InstallResult.d.ts.map +1 -1
  70. package/dist/src/commands/install-ui/InstallResult.js +1 -1
  71. package/dist/src/commands/install-ui/InstallResult.js.map +1 -1
  72. package/dist/src/commands/install.d.ts.map +1 -1
  73. package/dist/src/commands/install.js +28 -3
  74. package/dist/src/commands/install.js.map +1 -1
  75. package/dist/src/commands/tools-ui/CommandReference.d.ts +7 -0
  76. package/dist/src/commands/tools-ui/CommandReference.d.ts.map +1 -0
  77. package/dist/src/commands/tools-ui/CommandReference.js +33 -0
  78. package/dist/src/commands/tools-ui/CommandReference.js.map +1 -0
  79. package/dist/src/commands/tools-ui/ConfigSources.d.ts +6 -0
  80. package/dist/src/commands/tools-ui/ConfigSources.d.ts.map +1 -0
  81. package/dist/src/commands/tools-ui/ConfigSources.js +27 -0
  82. package/dist/src/commands/tools-ui/ConfigSources.js.map +1 -0
  83. package/dist/src/commands/tools-ui/RegisterSettings.d.ts +8 -0
  84. package/dist/src/commands/tools-ui/RegisterSettings.d.ts.map +1 -0
  85. package/dist/src/commands/tools-ui/RegisterSettings.js +125 -0
  86. package/dist/src/commands/tools-ui/RegisterSettings.js.map +1 -0
  87. package/dist/src/commands/tools-ui/RoleMappings.d.ts +9 -0
  88. package/dist/src/commands/tools-ui/RoleMappings.d.ts.map +1 -0
  89. package/dist/src/commands/tools-ui/RoleMappings.js +104 -0
  90. package/dist/src/commands/tools-ui/RoleMappings.js.map +1 -0
  91. package/dist/src/commands/tools-ui/ToolsDashboard.d.ts +8 -0
  92. package/dist/src/commands/tools-ui/ToolsDashboard.d.ts.map +1 -0
  93. package/dist/src/commands/tools-ui/ToolsDashboard.js +60 -0
  94. package/dist/src/commands/tools-ui/ToolsDashboard.js.map +1 -0
  95. package/dist/src/commands/tools-ui/ToolsOverview.d.ts +9 -0
  96. package/dist/src/commands/tools-ui/ToolsOverview.d.ts.map +1 -0
  97. package/dist/src/commands/tools-ui/ToolsOverview.js +84 -0
  98. package/dist/src/commands/tools-ui/ToolsOverview.js.map +1 -0
  99. package/dist/src/commands/tools.d.ts +3 -0
  100. package/dist/src/commands/tools.d.ts.map +1 -0
  101. package/dist/src/commands/tools.js +78 -0
  102. package/dist/src/commands/tools.js.map +1 -0
  103. package/dist/src/config/cli-tools-config.d.ts +68 -3
  104. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  105. package/dist/src/config/cli-tools-config.js +248 -9
  106. package/dist/src/config/cli-tools-config.js.map +1 -1
  107. package/dist/src/core/component-defs.d.ts +16 -0
  108. package/dist/src/core/component-defs.d.ts.map +1 -0
  109. package/dist/src/core/component-defs.js +142 -0
  110. package/dist/src/core/component-defs.js.map +1 -0
  111. package/dist/src/core/manifest.d.ts +8 -1
  112. package/dist/src/core/manifest.d.ts.map +1 -1
  113. package/dist/src/core/manifest.js +29 -40
  114. package/dist/src/core/manifest.js.map +1 -1
  115. package/dist/src/core/tag-injector.d.ts +72 -0
  116. package/dist/src/core/tag-injector.d.ts.map +1 -0
  117. package/dist/src/core/tag-injector.js +228 -0
  118. package/dist/src/core/tag-injector.js.map +1 -0
  119. package/dist/src/index.d.ts +4 -0
  120. package/dist/src/index.d.ts.map +1 -1
  121. package/dist/src/index.js +2 -0
  122. package/dist/src/index.js.map +1 -1
  123. package/dist/tsconfig.tsbuildinfo +1 -0
  124. package/package.json +1 -1
  125. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +1 -1
  126. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +1 -1
  127. package/templates/search-tools.md +1 -1
  128. package/templates/workflows/specs/node-catalog.md +1 -1
  129. package/workflows/brainstorm.md +1 -1
  130. package/{.claude/CLAUDE.md → workflows/claude-instructions.md} +25 -26
  131. package/workflows/cli-tools-usage.md +16 -2
  132. package/workflows/codex-instructions.md +150 -0
  133. package/workflows/delegate-usage.md +16 -2
  134. package/workflows/execute.md +28 -14
  135. package/workflows/init.md +2 -2
  136. package/workflows/issue-discover.md +2 -2
  137. package/workflows/maestro-super.md +120 -0
  138. package/workflows/maestro.codex.md +4 -4
  139. package/workflows/maestro.md +5 -5
  140. package/workflows/roadmap-common.md +197 -0
  141. package/workflows/roadmap.md +190 -355
  142. package/workflows/spec-generate.md +457 -544
  143. package/.claude/commands/maestro-spec-generate.md +0 -78
  144. 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,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerToolsCommand(program: Command): void;
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -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 from ~/.maestro/cli-tools.json.
14
- * Returns a default empty config if the file does not exist or is invalid.
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":"AAaA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAeD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAQlE;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"}
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 from ~/.maestro/cli-tools.json.
20
- * Returns a default empty config if the file does not exist or is invalid.
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
- const configPath = join(homedir(), '.maestro', 'cli-tools.json');
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(configPath, 'utf-8');
26
- return JSON.parse(raw);
62
+ const raw = await readFile(globalPath, 'utf-8');
63
+ global = JSON.parse(raw);
27
64
  }
28
65
  catch {
29
- return DEFAULT_CONFIG;
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;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAmBjC,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,cAAc,GAAmB;IACrC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,IAAwB,EACxB,MAAsB;IAEtB,sBAAsB;IACtB,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,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"}