maestro-flow 0.4.13 → 0.4.15
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/.agents/skills/maestro/SKILL.md +11 -31
- package/.agents/skills/maestro-brainstorm/SKILL.md +2 -2
- package/.agents/skills/maestro-ralph/SKILL.md +58 -51
- package/.agents/skills/maestro-ralph-execute/SKILL.md +48 -56
- package/.agents/skills/maestro-verify/SKILL.md +1 -1
- package/.agy/skills/maestro/SKILL.md +11 -31
- package/.agy/skills/maestro-brainstorm/SKILL.md +2 -2
- package/.agy/skills/maestro-ralph/SKILL.md +58 -51
- package/.agy/skills/maestro-ralph-execute/SKILL.md +48 -56
- package/.agy/skills/maestro-verify/SKILL.md +1 -1
- package/.claude/commands/maestro-brainstorm.md +2 -2
- package/.claude/commands/maestro-ralph-execute.md +48 -56
- package/.claude/commands/maestro-ralph.md +58 -51
- package/.claude/commands/maestro-verify.md +1 -1
- package/.claude/commands/maestro.md +11 -31
- package/dist/src/commands/hooks.d.ts +30 -3
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +138 -11
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +49 -4
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +163 -53
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +45 -10
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/uninstall.d.ts.map +1 -1
- package/dist/src/commands/uninstall.js +25 -38
- package/dist/src/commands/uninstall.js.map +1 -1
- package/dist/src/core/manifest.d.ts +43 -0
- package/dist/src/core/manifest.d.ts.map +1 -1
- package/dist/src/core/manifest.js +37 -1
- package/dist/src/core/manifest.js.map +1 -1
- package/dist/src/tui/install-ui/ExecutionView.d.ts.map +1 -1
- package/dist/src/tui/install-ui/ExecutionView.js +13 -5
- package/dist/src/tui/install-ui/ExecutionView.js.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.js +87 -45
- package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/tui/uninstall-ui/UninstallFlow.d.ts.map +1 -1
- package/dist/src/tui/uninstall-ui/UninstallFlow.js +12 -28
- package/dist/src/tui/uninstall-ui/UninstallFlow.js.map +1 -1
- package/package.json +1 -1
- package/workflows/analyze.md +6 -6
- package/workflows/brainstorm.md +5 -5
- package/workflows/debug.md +4 -4
- package/workflows/harvest.md +1 -1
- package/workflows/init.md +1 -1
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +4 -4
- package/workflows/refactor.md +3 -3
- package/workflows/retrospective.md +3 -3
- package/workflows/ui-design.md +1 -1
- package/workflows/ui-style.md +1 -1
- package/workflows/verify.md +1 -1
|
@@ -2,47 +2,41 @@
|
|
|
2
2
|
// `maestro uninstall` — remove installed maestro assets using manifests
|
|
3
3
|
//
|
|
4
4
|
// Interactive Ink TUI by default. Supports --all -y for non-interactive.
|
|
5
|
-
//
|
|
5
|
+
// All removal goes through the unified uninstallManifest() function which
|
|
6
|
+
// reads the manifest as the source of truth — no marker scanning.
|
|
6
7
|
// ---------------------------------------------------------------------------
|
|
7
|
-
import { join } from 'node:path';
|
|
8
|
-
import { existsSync, writeFileSync } from 'node:fs';
|
|
9
|
-
import { homedir } from 'node:os';
|
|
10
8
|
import { confirm } from '@inquirer/prompts';
|
|
11
9
|
import { ExitPromptError } from '@inquirer/core';
|
|
12
|
-
import { getAllManifests,
|
|
13
|
-
import {
|
|
14
|
-
import { removeMcpServer } from './install-backend.js';
|
|
15
|
-
import { removeMaestroHooks, loadClaudeSettings, getClaudeSettingsPath, } from './hooks.js';
|
|
10
|
+
import { getAllManifests, } from '../core/manifest.js';
|
|
11
|
+
import { uninstallManifest } from './install-backend.js';
|
|
16
12
|
import { runUninstallFlow } from '../tui/uninstall-ui/index.js';
|
|
17
13
|
import { t } from '../i18n/index.js';
|
|
18
14
|
// ---------------------------------------------------------------------------
|
|
19
|
-
// Helpers
|
|
15
|
+
// Helpers
|
|
20
16
|
// ---------------------------------------------------------------------------
|
|
21
17
|
function formatManifest(m) {
|
|
22
18
|
const date = m.installedAt.split('T')[0];
|
|
23
19
|
return `[${m.scope}] ${m.targetPath} (${(m.entries ?? []).length} entries, ${date})`;
|
|
24
20
|
}
|
|
25
|
-
function
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
deleteManifest(manifest);
|
|
45
|
-
return { removed, skipped, mcp, hooks };
|
|
21
|
+
function formatResult(r) {
|
|
22
|
+
const parts = [`${r.filesRemoved} removed`];
|
|
23
|
+
if (r.filesSkipped > 0)
|
|
24
|
+
parts.push(`${r.filesSkipped} preserved`);
|
|
25
|
+
if (r.claudeHooksRemoved > 0)
|
|
26
|
+
parts.push(`${r.claudeHooksRemoved} claude hooks`);
|
|
27
|
+
if (r.codexHooksRemoved > 0)
|
|
28
|
+
parts.push(`${r.codexHooksRemoved} codex hooks`);
|
|
29
|
+
if (r.agyHooksRemoved > 0)
|
|
30
|
+
parts.push(`${r.agyHooksRemoved} agy hooks`);
|
|
31
|
+
if (r.statuslineRemoved)
|
|
32
|
+
parts.push('statusline');
|
|
33
|
+
if (r.mcpRemoved.claude)
|
|
34
|
+
parts.push('claude mcp');
|
|
35
|
+
if (r.mcpRemoved.codex)
|
|
36
|
+
parts.push('codex mcp');
|
|
37
|
+
if (r.mcpRemoved.extras.length)
|
|
38
|
+
parts.push(`${r.mcpRemoved.extras.length} extra mcp`);
|
|
39
|
+
return parts.join(', ');
|
|
46
40
|
}
|
|
47
41
|
// ---------------------------------------------------------------------------
|
|
48
42
|
// Command registration
|
|
@@ -86,14 +80,7 @@ export function registerUninstallCommand(program) {
|
|
|
86
80
|
for (const m of manifests) {
|
|
87
81
|
console.error(`\n${formatManifest(m)}`);
|
|
88
82
|
const r = uninstallManifest(m);
|
|
89
|
-
|
|
90
|
-
if (r.skipped > 0)
|
|
91
|
-
parts.push(`${r.skipped} preserved`);
|
|
92
|
-
if (r.mcp)
|
|
93
|
-
parts.push('MCP cleaned');
|
|
94
|
-
if (r.hooks)
|
|
95
|
-
parts.push('hooks cleaned');
|
|
96
|
-
console.error(` ${parts.join(', ')}`);
|
|
83
|
+
console.error(` ${formatResult(r)}`);
|
|
97
84
|
}
|
|
98
85
|
console.error('\nDone.');
|
|
99
86
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,yEAAyE;AACzE,
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,33 @@ export interface ManifestEntry {
|
|
|
2
2
|
path: string;
|
|
3
3
|
type: 'file' | 'dir';
|
|
4
4
|
}
|
|
5
|
+
/** Claude Code / Codex / Antigravity hook installation record. */
|
|
6
|
+
export interface HookRecord {
|
|
7
|
+
/** Absolute path to the settings/hooks config file written. */
|
|
8
|
+
settingsPath: string;
|
|
9
|
+
/** Hook names registered (matches keys in HOOK_DEFS / CODEX_HOOK_DEFS / AGY_HOOK_DEFS). */
|
|
10
|
+
installed: string[];
|
|
11
|
+
}
|
|
12
|
+
/** Statusline installation record (Claude Code settings.statusLine). */
|
|
13
|
+
export interface StatuslineRecord {
|
|
14
|
+
settingsPath: string;
|
|
15
|
+
/** Theme stored to maestro config; null when no theme was persisted. */
|
|
16
|
+
theme?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Single MCP server registration record. */
|
|
19
|
+
export interface McpRecord {
|
|
20
|
+
/** Absolute path to the config file containing the registration. */
|
|
21
|
+
configPath: string;
|
|
22
|
+
/** Server name under mcpServers / servers key. */
|
|
23
|
+
serverName: string;
|
|
24
|
+
}
|
|
25
|
+
/** Extra MCP target registration (Cursor / Qoder / Trae / Kiro / Roo / VS Code / Gemini). */
|
|
26
|
+
export interface ExtraMcpRecord extends McpRecord {
|
|
27
|
+
targetId: string;
|
|
28
|
+
}
|
|
5
29
|
export interface Manifest {
|
|
6
30
|
id: string;
|
|
31
|
+
/** Manifest schema version. Bumped when fields change in a backward-incompatible way. */
|
|
7
32
|
version: string;
|
|
8
33
|
scope: 'global' | 'project';
|
|
9
34
|
targetPath: string;
|
|
@@ -13,6 +38,17 @@ export interface Manifest {
|
|
|
13
38
|
hookLevel?: string;
|
|
14
39
|
/** Component IDs selected during interactive install (omitted = all) */
|
|
15
40
|
selectedComponentIds?: string[];
|
|
41
|
+
hooks?: {
|
|
42
|
+
claude?: HookRecord;
|
|
43
|
+
codex?: HookRecord;
|
|
44
|
+
agy?: HookRecord;
|
|
45
|
+
};
|
|
46
|
+
statusline?: StatuslineRecord;
|
|
47
|
+
mcp?: {
|
|
48
|
+
claude?: McpRecord;
|
|
49
|
+
codex?: McpRecord;
|
|
50
|
+
extras?: ExtraMcpRecord[];
|
|
51
|
+
};
|
|
16
52
|
}
|
|
17
53
|
export declare function createManifest(scope: 'global' | 'project', targetPath: string, opts?: {
|
|
18
54
|
hookLevel?: string;
|
|
@@ -20,6 +56,13 @@ export declare function createManifest(scope: 'global' | 'project', targetPath:
|
|
|
20
56
|
}): Manifest;
|
|
21
57
|
export declare function addFile(manifest: Manifest, filePath: string): void;
|
|
22
58
|
export declare function addDir(manifest: Manifest, dirPath: string): void;
|
|
59
|
+
export declare function recordClaudeHooks(manifest: Manifest, record: HookRecord): void;
|
|
60
|
+
export declare function recordCodexHooks(manifest: Manifest, record: HookRecord): void;
|
|
61
|
+
export declare function recordAgyHooks(manifest: Manifest, record: HookRecord): void;
|
|
62
|
+
export declare function recordStatusline(manifest: Manifest, record: StatuslineRecord): void;
|
|
63
|
+
export declare function recordClaudeMcp(manifest: Manifest, record: McpRecord): void;
|
|
64
|
+
export declare function recordCodexMcp(manifest: Manifest, record: McpRecord): void;
|
|
65
|
+
export declare function recordExtraMcp(manifest: Manifest, record: ExtraMcpRecord): void;
|
|
23
66
|
export declare function saveManifest(manifest: Manifest): string;
|
|
24
67
|
export declare function findManifest(scope: 'global' | 'project', targetPath: string): Manifest | null;
|
|
25
68
|
export declare function getAllManifests(): Manifest[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
// Installation Manifest
|
|
3
3
|
// Tracks installed files for clean reinstall and uninstall.
|
|
4
4
|
// Manifests stored at ~/.maestro/manifests/{id}.json
|
|
5
|
+
//
|
|
6
|
+
// Manifest is the single source of truth for an installation. Every install
|
|
7
|
+
// step (files, hooks, MCP, statusline) records itself here so uninstall can
|
|
8
|
+
// reverse exactly what was installed — no marker scanning, no guesswork.
|
|
5
9
|
// ---------------------------------------------------------------------------
|
|
6
10
|
import { join } from 'node:path';
|
|
7
11
|
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, unlinkSync, rmSync, } from 'node:fs';
|
|
8
12
|
import { paths } from '../config/paths.js';
|
|
9
13
|
import { hasAnyMarkers, removeAllSections } from './tag-injector.js';
|
|
14
|
+
/** Current manifest schema version. */
|
|
15
|
+
const SCHEMA_VERSION = '2.0';
|
|
10
16
|
// ---------------------------------------------------------------------------
|
|
11
17
|
// Paths
|
|
12
18
|
// ---------------------------------------------------------------------------
|
|
@@ -26,7 +32,7 @@ export function createManifest(scope, targetPath, opts) {
|
|
|
26
32
|
const ts = new Date().toISOString().replace(/[-:]/g, '').replace('T', '-').split('.')[0];
|
|
27
33
|
return {
|
|
28
34
|
id: `${scope}-${ts}`,
|
|
29
|
-
version:
|
|
35
|
+
version: SCHEMA_VERSION,
|
|
30
36
|
scope,
|
|
31
37
|
targetPath,
|
|
32
38
|
installedAt: new Date().toISOString(),
|
|
@@ -41,6 +47,36 @@ export function addFile(manifest, filePath) {
|
|
|
41
47
|
export function addDir(manifest, dirPath) {
|
|
42
48
|
manifest.entries.push({ path: dirPath, type: 'dir' });
|
|
43
49
|
}
|
|
50
|
+
// --- Extended tracking helpers ---
|
|
51
|
+
export function recordClaudeHooks(manifest, record) {
|
|
52
|
+
manifest.hooks ??= {};
|
|
53
|
+
manifest.hooks.claude = record;
|
|
54
|
+
}
|
|
55
|
+
export function recordCodexHooks(manifest, record) {
|
|
56
|
+
manifest.hooks ??= {};
|
|
57
|
+
manifest.hooks.codex = record;
|
|
58
|
+
}
|
|
59
|
+
export function recordAgyHooks(manifest, record) {
|
|
60
|
+
manifest.hooks ??= {};
|
|
61
|
+
manifest.hooks.agy = record;
|
|
62
|
+
}
|
|
63
|
+
export function recordStatusline(manifest, record) {
|
|
64
|
+
manifest.statusline = record;
|
|
65
|
+
}
|
|
66
|
+
export function recordClaudeMcp(manifest, record) {
|
|
67
|
+
manifest.mcp ??= {};
|
|
68
|
+
manifest.mcp.claude = record;
|
|
69
|
+
}
|
|
70
|
+
export function recordCodexMcp(manifest, record) {
|
|
71
|
+
manifest.mcp ??= {};
|
|
72
|
+
manifest.mcp.codex = record;
|
|
73
|
+
}
|
|
74
|
+
export function recordExtraMcp(manifest, record) {
|
|
75
|
+
manifest.mcp ??= {};
|
|
76
|
+
manifest.mcp.extras ??= [];
|
|
77
|
+
manifest.mcp.extras.push(record);
|
|
78
|
+
}
|
|
79
|
+
// --- Save / Load ---
|
|
44
80
|
export function saveManifest(manifest) {
|
|
45
81
|
ensureDir();
|
|
46
82
|
// Remove old manifests for same scope+path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/manifest.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wBAAwB;AACxB,4DAA4D;AAC5D,qDAAqD;AACrD,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,MAAM,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/manifest.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wBAAwB;AACxB,4DAA4D;AAC5D,qDAAqD;AACrD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAkErE,uCAAuC;AACvC,MAAM,cAAc,GAAG,KAAK,CAAC;AAE7B,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAEpD,SAAS,SAAS;IAChB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAC5B,KAA2B,EAC3B,UAAkB,EAClB,IAA8D;IAE9D,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO;QACL,EAAE,EAAE,GAAG,KAAK,IAAI,EAAE,EAAE;QACpB,OAAO,EAAE,cAAc;QACvB,KAAK;QACL,UAAU;QACV,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,oBAAoB,EAAE,IAAI,EAAE,oBAAoB;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,QAAkB,EAAE,QAAgB;IAC1D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,QAAkB,EAAE,OAAe;IACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,oCAAoC;AAEpC,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,MAAkB;IACtE,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,MAAkB;IACrE,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,MAAkB;IACnE,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB,EAAE,MAAwB;IAC3E,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,MAAiB;IACnE,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC;IACpB,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,MAAiB;IAClE,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC;IACpB,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,MAAsB;IACvE,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC;IACpB,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,sBAAsB;AAEtB,MAAM,UAAU,YAAY,CAAC,QAAkB;IAC7C,SAAS,EAAE,CAAC;IACZ,2CAA2C;IAC3C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,UAAkB;IAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAa,CAAC;YAChF,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpF,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA2B,EAAE,UAAkB;IAC1E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAa,CAAC;YAChF,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpF,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAa,CAAC;YAChF,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC;YACjB,uDAAuD;YACvD,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,UAAU,CAAC,EAAE,CAAC;QAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E,6CAA6C;AAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,CAAC;AAEnE,0GAA0G;AAC1G,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtC,qEAAqE;QACrE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,IAAuC;IAEvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,2CAA2C;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACnD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAEhD,wEAAwE;QACxE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,IAAI,EAAE,kBAAkB,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACtD,IAAI,CAAC;gBACH,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,OAAO,EAAE,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,2CAA2C;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionView.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ExecutionView.tsx"],"names":[],"mappings":"AAQA,OAAO,
|
|
1
|
+
{"version":3,"file":"ExecutionView.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/ExecutionView.tsx"],"names":[],"mappings":"AAQA,OAAO,EASL,KAAK,gBAAgB,EAEtB,MAAM,mCAAmC,CAAC;AAU3C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAMpE,UAAU,kBAAkB;IAC1B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,aAAa,CAAC,EAC5B,UAAU,EACV,MAAM,EACN,OAAO,EACP,OAAO,EACP,UAAU,GACX,EAAE,kBAAkB,2CAwMpB"}
|
|
@@ -7,8 +7,8 @@ import { homedir } from 'node:os';
|
|
|
7
7
|
import { writeFileSync } from 'node:fs';
|
|
8
8
|
import { paths } from '../../config/paths.js';
|
|
9
9
|
import { C } from '../shared/index.js';
|
|
10
|
-
import { scanDisabledItems, restoreDisabledState, applyOverlaysPostInstall, addMcpServer, copyRecursive, createBackup, } from '../../commands/install-backend.js';
|
|
11
|
-
import { createManifest, addFile, saveManifest, findManifest,
|
|
10
|
+
import { scanDisabledItems, restoreDisabledState, applyOverlaysPostInstall, addMcpServer, copyRecursive, createBackup, uninstallManifest, } from '../../commands/install-backend.js';
|
|
11
|
+
import { createManifest, addFile, saveManifest, findManifest, recordClaudeHooks, recordClaudeMcp, } from '../../core/manifest.js';
|
|
12
12
|
import { installHooksByLevel } from '../../commands/hooks.js';
|
|
13
13
|
export function ExecutionView({ components, config, pkgRoot, version, onComplete, }) {
|
|
14
14
|
const [status, setStatus] = useState('Scanning...');
|
|
@@ -43,13 +43,13 @@ export function ExecutionView({ components, config, pkgRoot, version, onComplete
|
|
|
43
43
|
createBackup(existingManifest);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
// 3. Clean previous installation
|
|
46
|
+
// 3. Clean previous installation (full uninstall — files + hooks + mcp + statusline)
|
|
47
47
|
const existingManifest = findManifest(config.mode, targetPath);
|
|
48
48
|
if (existingManifest) {
|
|
49
49
|
if (cancelled)
|
|
50
50
|
return;
|
|
51
51
|
setStatus('Cleaning previous installation...');
|
|
52
|
-
|
|
52
|
+
uninstallManifest(existingManifest, { skipContentManaged: true });
|
|
53
53
|
}
|
|
54
54
|
// 4. Ensure home directory exists
|
|
55
55
|
paths.ensure(paths.home);
|
|
@@ -103,7 +103,11 @@ export function ExecutionView({ components, config, pkgRoot, version, onComplete
|
|
|
103
103
|
if (cancelled)
|
|
104
104
|
return;
|
|
105
105
|
setStatus('Registering MCP server...');
|
|
106
|
-
|
|
106
|
+
const path = addMcpServer(config.mode, config.projectPath, config.mcpTools, config.mcpProjectRoot || undefined);
|
|
107
|
+
mcpRegistered = !!path;
|
|
108
|
+
if (path) {
|
|
109
|
+
recordClaudeMcp(manifest, { configPath: path, serverName: 'maestro-tools' });
|
|
110
|
+
}
|
|
107
111
|
}
|
|
108
112
|
// 11. Hook installation
|
|
109
113
|
let hookResult = null;
|
|
@@ -116,6 +120,10 @@ export function ExecutionView({ components, config, pkgRoot, version, onComplete
|
|
|
116
120
|
installedHooks: hookRes.installedHooks,
|
|
117
121
|
level: config.hookLevel,
|
|
118
122
|
};
|
|
123
|
+
recordClaudeHooks(manifest, {
|
|
124
|
+
settingsPath: hookRes.settingsPath,
|
|
125
|
+
installed: hookRes.installedHooks,
|
|
126
|
+
});
|
|
119
127
|
}
|
|
120
128
|
// 12. Save manifest
|
|
121
129
|
if (cancelled)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionView.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ExecutionView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAEL,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"ExecutionView.js","sourceRoot":"","sources":["../../../../src/tui/install-ui/ExecutionView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstallExecution.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/InstallExecution.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InstallExecution.d.ts","sourceRoot":"","sources":["../../../../src/tui/install-ui/InstallExecution.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAc7D,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,qBAAqB,2CA0P/F"}
|
|
@@ -7,9 +7,9 @@ import { homedir } from 'node:os';
|
|
|
7
7
|
import { writeFileSync } from 'node:fs';
|
|
8
8
|
import { paths } from '../../config/paths.js';
|
|
9
9
|
import { C } from '../shared/index.js';
|
|
10
|
-
import { scanComponents, scanDisabledItems, restoreDisabledState, applyOverlaysPostInstall, addMcpServer, addCodexMcpServer, addExtraMcpServer, copyRecursive, injectDocFile, createTargetBackup, } from '../../commands/install-backend.js';
|
|
11
|
-
import { createManifest, addFile, saveManifest, findManifest,
|
|
12
|
-
import { installHooksByLevel, installCodexHooksByLevel, installStatusline as installStatuslineFn } from '../../commands/hooks.js';
|
|
10
|
+
import { scanComponents, scanDisabledItems, restoreDisabledState, applyOverlaysPostInstall, addMcpServer, addCodexMcpServer, addExtraMcpServer, copyRecursive, injectDocFile, createTargetBackup, uninstallManifest, } from '../../commands/install-backend.js';
|
|
11
|
+
import { createManifest, addFile, saveManifest, findManifest, recordClaudeHooks, recordCodexHooks, recordStatusline, recordClaudeMcp, recordCodexMcp, recordExtraMcp, } from '../../core/manifest.js';
|
|
12
|
+
import { installHooksByLevel, installCodexHooksByLevel, installStatusline as installStatuslineFn, } from '../../commands/hooks.js';
|
|
13
13
|
import { t } from '../../i18n/index.js';
|
|
14
14
|
export function InstallExecution({ config, pkgRoot, version, onComplete }) {
|
|
15
15
|
const [status, setStatus] = useState(t.install.execPreparing);
|
|
@@ -26,7 +26,6 @@ export function InstallExecution({ config, pkgRoot, version, onComplete }) {
|
|
|
26
26
|
try {
|
|
27
27
|
const targetBase = config.mode === 'global' ? homedir() : config.projectPath;
|
|
28
28
|
const targetPath = config.mode === 'global' ? paths.home : config.projectPath;
|
|
29
|
-
let manifestPath = '';
|
|
30
29
|
let filesInstalled = 0;
|
|
31
30
|
let dirsCreated = 0;
|
|
32
31
|
let filesSkipped = 0;
|
|
@@ -39,35 +38,40 @@ export function InstallExecution({ config, pkgRoot, version, onComplete }) {
|
|
|
39
38
|
let statuslineInstalled = false;
|
|
40
39
|
let backupPath = null;
|
|
41
40
|
const warnings = [];
|
|
42
|
-
//
|
|
43
|
-
if (config.installComponents) {
|
|
41
|
+
// --- Backup (before any destructive cleanup) ---
|
|
42
|
+
if (config.installComponents && (config.backupClaudeMd || config.backupAll)) {
|
|
44
43
|
if (cancelled)
|
|
45
44
|
return;
|
|
46
|
-
setStatus(t.install.
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
45
|
+
setStatus(t.install.execBackingUp);
|
|
46
|
+
const components = scanComponents(pkgRoot, config.mode, config.projectPath)
|
|
47
|
+
.filter((c) => c.available && config.selectedComponentIds.includes(c.def.id));
|
|
48
|
+
backupPath = createTargetBackup(components, {
|
|
49
|
+
backupClaudeMd: config.backupClaudeMd,
|
|
50
|
+
backupAll: config.backupAll,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// --- Full uninstall of prior installation ---
|
|
54
|
+
if (cancelled)
|
|
55
|
+
return;
|
|
56
|
+
setStatus(t.install.execCleaning);
|
|
57
|
+
const disabledItems = scanDisabledItems(targetBase);
|
|
58
|
+
const prior = findManifest(config.mode, targetPath);
|
|
59
|
+
if (prior) {
|
|
60
|
+
// skipContentManaged: tag injection updates CLAUDE.md/AGENTS.md in
|
|
61
|
+
// place, so don't strip them here — they'll be re-written below.
|
|
62
|
+
uninstallManifest(prior, { skipContentManaged: true });
|
|
63
|
+
}
|
|
64
|
+
// --- Fresh manifest ---
|
|
65
|
+
paths.ensure(paths.home);
|
|
66
|
+
const manifest = createManifest(config.mode, targetPath, {
|
|
67
|
+
hookLevel: config.installHooks ? config.hookLevel : 'none',
|
|
68
|
+
selectedComponentIds: config.installComponents ? config.selectedComponentIds : [],
|
|
69
|
+
});
|
|
70
|
+
// --- Components ---
|
|
71
|
+
if (config.installComponents) {
|
|
60
72
|
if (cancelled)
|
|
61
73
|
return;
|
|
62
|
-
setStatus(t.install.
|
|
63
|
-
const existing = findManifest(config.mode, targetPath);
|
|
64
|
-
if (existing)
|
|
65
|
-
cleanManifestFiles(existing, { skipContentManaged: true });
|
|
66
|
-
paths.ensure(paths.home);
|
|
67
|
-
const manifest = createManifest(config.mode, targetPath, {
|
|
68
|
-
hookLevel: config.installHooks ? config.hookLevel : 'none',
|
|
69
|
-
selectedComponentIds: config.selectedComponentIds,
|
|
70
|
-
});
|
|
74
|
+
setStatus(t.install.execScanning);
|
|
71
75
|
const stats = { files: 0, dirs: 0, skipped: 0 };
|
|
72
76
|
const components = scanComponents(pkgRoot, config.mode, config.projectPath)
|
|
73
77
|
.filter((c) => c.available && config.selectedComponentIds.includes(c.def.id));
|
|
@@ -95,41 +99,52 @@ export function InstallExecution({ config, pkgRoot, version, onComplete }) {
|
|
|
95
99
|
addFile(manifest, versionPath);
|
|
96
100
|
restoreDisabledState(disabledItems, targetBase);
|
|
97
101
|
applyOverlaysPostInstall(config.mode, targetBase);
|
|
98
|
-
manifestPath = saveManifest(manifest);
|
|
99
102
|
filesInstalled = stats.files;
|
|
100
103
|
dirsCreated = stats.dirs;
|
|
101
104
|
filesSkipped = stats.skipped;
|
|
102
105
|
}
|
|
103
|
-
// Hooks (
|
|
104
|
-
|
|
106
|
+
// --- Hooks (Claude) ---
|
|
107
|
+
// Statusline is NOT installed here — it has its own opt-in branch below.
|
|
108
|
+
if (config.installHooks && config.hookLevel !== 'none') {
|
|
105
109
|
if (cancelled)
|
|
106
110
|
return;
|
|
107
111
|
setStatus(t.install.execInstallingHooks.replace('{level}', config.hookLevel));
|
|
108
112
|
const result = installHooksByLevel(config.hookLevel, {
|
|
109
113
|
project: config.mode === 'project',
|
|
110
|
-
skipStatusline: config.installStatusline,
|
|
111
114
|
});
|
|
112
115
|
hooksInstalled = result.installedHooks.length;
|
|
116
|
+
recordClaudeHooks(manifest, {
|
|
117
|
+
settingsPath: result.settingsPath,
|
|
118
|
+
installed: result.installedHooks,
|
|
119
|
+
});
|
|
113
120
|
}
|
|
114
|
-
// Statusline (
|
|
121
|
+
// --- Statusline (opt-in) ---
|
|
115
122
|
if (config.installStatusline) {
|
|
116
123
|
if (cancelled)
|
|
117
124
|
return;
|
|
118
125
|
setStatus(t.install.execInstallingStatusline);
|
|
119
|
-
installStatuslineFn({
|
|
126
|
+
const settingsPath = installStatuslineFn({
|
|
120
127
|
project: config.mode === 'project',
|
|
121
128
|
theme: config.statuslineTheme,
|
|
122
129
|
});
|
|
123
130
|
statuslineInstalled = true;
|
|
131
|
+
recordStatusline(manifest, {
|
|
132
|
+
settingsPath,
|
|
133
|
+
theme: config.statuslineTheme,
|
|
134
|
+
});
|
|
124
135
|
}
|
|
125
|
-
// MCP
|
|
136
|
+
// --- Claude MCP ---
|
|
126
137
|
if (config.installMcp) {
|
|
127
138
|
if (cancelled)
|
|
128
139
|
return;
|
|
129
140
|
setStatus(t.install.execRegisteringMcp);
|
|
130
|
-
|
|
141
|
+
const path = addMcpServer(config.mode, config.projectPath, config.mcpTools, config.mcpProjectRoot || undefined);
|
|
142
|
+
mcpRegistered = !!path;
|
|
143
|
+
if (path) {
|
|
144
|
+
recordClaudeMcp(manifest, { configPath: path, serverName: 'maestro-tools' });
|
|
145
|
+
}
|
|
131
146
|
}
|
|
132
|
-
// Codex Hooks
|
|
147
|
+
// --- Codex Hooks ---
|
|
133
148
|
if (config.installCodexHooks) {
|
|
134
149
|
if (cancelled)
|
|
135
150
|
return;
|
|
@@ -138,25 +153,43 @@ export function InstallExecution({ config, pkgRoot, version, onComplete }) {
|
|
|
138
153
|
project: config.mode === 'project',
|
|
139
154
|
});
|
|
140
155
|
codexHooksInstalled = result.installedHooks.length;
|
|
156
|
+
recordCodexHooks(manifest, {
|
|
157
|
+
settingsPath: result.settingsPath,
|
|
158
|
+
installed: result.installedHooks,
|
|
159
|
+
});
|
|
141
160
|
}
|
|
142
|
-
// Codex MCP
|
|
161
|
+
// --- Codex MCP ---
|
|
143
162
|
if (config.installCodexMcp) {
|
|
144
163
|
if (cancelled)
|
|
145
164
|
return;
|
|
146
165
|
setStatus(t.install.execRegisteringCodexMcp);
|
|
147
|
-
|
|
166
|
+
const path = addCodexMcpServer(config.mode, config.projectPath, config.codexMcpTools, config.codexMcpProjectRoot || undefined);
|
|
167
|
+
codexMcpRegistered = !!path;
|
|
168
|
+
if (path) {
|
|
169
|
+
recordCodexMcp(manifest, { configPath: path, serverName: 'maestro-tools' });
|
|
170
|
+
}
|
|
148
171
|
}
|
|
149
|
-
// Extra MCP targets
|
|
172
|
+
// --- Extra MCP targets ---
|
|
150
173
|
if (config.installExtraMcp) {
|
|
151
174
|
for (const targetId of config.extraMcpTargetIds) {
|
|
152
175
|
if (cancelled)
|
|
153
176
|
return;
|
|
154
177
|
setStatus(`Registering MCP for ${targetId}...`);
|
|
155
|
-
const
|
|
156
|
-
|
|
178
|
+
const path = addExtraMcpServer(targetId, config.mode, config.projectPath, config.mcpTools, config.mcpProjectRoot || undefined);
|
|
179
|
+
if (path) {
|
|
180
|
+
extraMcpRegistered.push(targetId);
|
|
181
|
+
recordExtraMcp(manifest, {
|
|
182
|
+
targetId,
|
|
183
|
+
configPath: path,
|
|
184
|
+
serverName: 'maestro-tools',
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
extraMcpFailed.push(targetId);
|
|
189
|
+
}
|
|
157
190
|
}
|
|
158
191
|
}
|
|
159
|
-
// CLI tools config
|
|
192
|
+
// --- CLI tools config ---
|
|
160
193
|
if (!cancelled) {
|
|
161
194
|
const { initCliToolsConfig } = await import('../../config/cli-tools-config.js');
|
|
162
195
|
const result = await initCliToolsConfig();
|
|
@@ -165,9 +198,18 @@ export function InstallExecution({ config, pkgRoot, version, onComplete }) {
|
|
|
165
198
|
else if (result.added.length > 0)
|
|
166
199
|
setStatus(`cli-tools.json: added ${result.added.join(', ')}`);
|
|
167
200
|
}
|
|
201
|
+
// --- Save manifest (single write at the end) ---
|
|
202
|
+
const manifestPath = saveManifest(manifest);
|
|
168
203
|
setDone(true);
|
|
169
204
|
setStatus(t.install.execComplete);
|
|
170
|
-
onComplete({
|
|
205
|
+
onComplete({
|
|
206
|
+
filesInstalled, dirsCreated, filesSkipped,
|
|
207
|
+
hooksInstalled, mcpRegistered,
|
|
208
|
+
codexHooksInstalled, codexMcpRegistered,
|
|
209
|
+
extraMcpRegistered, extraMcpFailed,
|
|
210
|
+
manifestPath,
|
|
211
|
+
statuslineInstalled, backupPath, migrationWarnings: warnings,
|
|
212
|
+
});
|
|
171
213
|
}
|
|
172
214
|
catch (err) {
|
|
173
215
|
setError(err instanceof Error ? err.message : String(err));
|