musubix2 0.3.7 → 0.4.0
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/.musubix-managed +1 -0
- package/.claude/skills/code-generator/SKILL.md +145 -0
- package/.claude/skills/code-generator/scripts/explain.sh +4 -0
- package/.claude/skills/code-generator/scripts/generate.sh +4 -0
- package/.claude/skills/code-generator/scripts/scaffold.sh +4 -0
- package/.claude/skills/code-generator/scripts/synthesis.sh +4 -0
- package/.claude/skills/constitution-enforcer/SKILL.md +133 -0
- package/.claude/skills/constitution-enforcer/scripts/check.sh +4 -0
- package/.claude/skills/constitution-enforcer/scripts/validate.sh +4 -0
- package/.claude/skills/design-generator/SKILL.md +136 -0
- package/.claude/skills/design-generator/scripts/c4.sh +4 -0
- package/.claude/skills/design-generator/scripts/decision.sh +4 -0
- package/.claude/skills/design-generator/scripts/generate.sh +4 -0
- package/.claude/skills/design-generator/scripts/verify.sh +4 -0
- package/.claude/skills/orchestrator/SKILL.md +565 -0
- package/.claude/skills/orchestrator/scripts/knowledge.sh +4 -0
- package/.claude/skills/orchestrator/scripts/learn.sh +4 -0
- package/.claude/skills/orchestrator/scripts/repl.sh +4 -0
- package/.claude/skills/orchestrator/scripts/research.sh +4 -0
- package/.claude/skills/orchestrator/scripts/security.sh +4 -0
- package/.claude/skills/orchestrator/scripts/skills.sh +4 -0
- package/.claude/skills/orchestrator/scripts/status.sh +4 -0
- package/.claude/skills/orchestrator/scripts/watch.sh +4 -0
- package/.claude/skills/orchestrator/scripts/workflow.sh +4 -0
- package/.claude/skills/requirements-analyst/SKILL.md +158 -0
- package/.claude/skills/requirements-analyst/scripts/analyze.sh +5 -0
- package/.claude/skills/requirements-analyst/scripts/interview-answer.sh +4 -0
- package/.claude/skills/requirements-analyst/scripts/interview-generate.sh +4 -0
- package/.claude/skills/requirements-analyst/scripts/interview.sh +9 -0
- package/.claude/skills/requirements-analyst/scripts/validate.sh +5 -0
- package/.claude/skills/requirements-analyst/scripts/wizard.sh +4 -0
- package/.claude/skills/review-orchestrator/SKILL.md +162 -0
- package/.claude/skills/review-orchestrator/review-orchestrator.prompt.md +45 -0
- package/.claude/skills/review-orchestrator/scripts/review.sh +13 -0
- package/.claude/skills/test-engineer/SKILL.md +139 -0
- package/.claude/skills/test-engineer/scripts/generate.sh +4 -0
- package/.claude/skills/traceability-auditor/SKILL.md +114 -0
- package/.claude/skills/traceability-auditor/scripts/matrix.sh +4 -0
- package/.claude/skills/traceability-auditor/scripts/verify-detailed.sh +4 -0
- package/.claude/skills/traceability-auditor/scripts/verify.sh +4 -0
- package/dist/application/install/claude-setup-transaction.d.ts +28 -0
- package/dist/application/install/claude-setup-transaction.d.ts.map +1 -0
- package/dist/application/install/claude-setup-transaction.js +113 -0
- package/dist/application/install/claude-setup-transaction.js.map +1 -0
- package/dist/application/install/claude-skill-index-builder.d.ts +8 -0
- package/dist/application/install/claude-skill-index-builder.d.ts.map +1 -0
- package/dist/application/install/claude-skill-index-builder.js +18 -0
- package/dist/application/install/claude-skill-index-builder.js.map +1 -0
- package/dist/application/install/copilot-setup-service.d.ts +20 -0
- package/dist/application/install/copilot-setup-service.d.ts.map +1 -0
- package/dist/application/install/copilot-setup-service.js +56 -0
- package/dist/application/install/copilot-setup-service.js.map +1 -0
- package/dist/application/install/index.d.ts +10 -0
- package/dist/application/install/index.d.ts.map +1 -0
- package/dist/application/install/index.js +10 -0
- package/dist/application/install/index.js.map +1 -0
- package/dist/application/install/install-planner.d.ts +8 -0
- package/dist/application/install/install-planner.d.ts.map +1 -0
- package/dist/application/install/install-planner.js +24 -0
- package/dist/application/install/install-planner.js.map +1 -0
- package/dist/application/install/mcp-config-generator.d.ts +12 -0
- package/dist/application/install/mcp-config-generator.d.ts.map +1 -0
- package/dist/application/install/mcp-config-generator.js +36 -0
- package/dist/application/install/mcp-config-generator.js.map +1 -0
- package/dist/application/install/mcp-launch-resolver.d.ts +5 -0
- package/dist/application/install/mcp-launch-resolver.d.ts.map +1 -0
- package/dist/application/install/mcp-launch-resolver.js +23 -0
- package/dist/application/install/mcp-launch-resolver.js.map +1 -0
- package/dist/application/install/platform-detector.d.ts +7 -0
- package/dist/application/install/platform-detector.d.ts.map +1 -0
- package/dist/application/install/platform-detector.js +60 -0
- package/dist/application/install/platform-detector.js.map +1 -0
- package/dist/application/install/update-service.d.ts +9 -0
- package/dist/application/install/update-service.d.ts.map +1 -0
- package/dist/application/install/update-service.js +28 -0
- package/dist/application/install/update-service.js.map +1 -0
- package/dist/application/install/workspace-merge-service.d.ts +9 -0
- package/dist/application/install/workspace-merge-service.d.ts.map +1 -0
- package/dist/application/install/workspace-merge-service.js +100 -0
- package/dist/application/install/workspace-merge-service.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8164 -3142
- package/dist/cli.js.map +1 -1
- package/dist/domain/install/index.d.ts +2 -0
- package/dist/domain/install/index.d.ts.map +1 -0
- package/dist/domain/install/index.js +2 -0
- package/dist/domain/install/index.js.map +1 -0
- package/dist/domain/install/types.d.ts +140 -0
- package/dist/domain/install/types.d.ts.map +1 -0
- package/dist/domain/install/types.js +6 -0
- package/dist/domain/install/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +27 -49
- package/dist/infrastructure/assets/package-asset-catalog.d.ts +10 -0
- package/dist/infrastructure/assets/package-asset-catalog.d.ts.map +1 -0
- package/dist/infrastructure/assets/package-asset-catalog.js +28 -0
- package/dist/infrastructure/assets/package-asset-catalog.js.map +1 -0
- package/dist/infrastructure/assets/package-root-locator.d.ts +4 -0
- package/dist/infrastructure/assets/package-root-locator.d.ts.map +1 -0
- package/dist/infrastructure/assets/package-root-locator.js +22 -0
- package/dist/infrastructure/assets/package-root-locator.js.map +1 -0
- package/dist/infrastructure/templates/template-renderer.d.ts +11 -0
- package/dist/infrastructure/templates/template-renderer.d.ts.map +1 -0
- package/dist/infrastructure/templates/template-renderer.js +41 -0
- package/dist/infrastructure/templates/template-renderer.js.map +1 -0
- package/dist/infrastructure/workspace/workspace-root-resolver.d.ts +8 -0
- package/dist/infrastructure/workspace/workspace-root-resolver.d.ts.map +1 -0
- package/dist/infrastructure/workspace/workspace-root-resolver.js +10 -0
- package/dist/infrastructure/workspace/workspace-root-resolver.js.map +1 -0
- package/dist/infrastructure/workspace/workspace-writer.d.ts +5 -0
- package/dist/infrastructure/workspace/workspace-writer.d.ts.map +1 -0
- package/dist/infrastructure/workspace/workspace-writer.js +92 -0
- package/dist/infrastructure/workspace/workspace-writer.js.map +1 -0
- package/dist/interface/cli/confirmation-resolver.d.ts +6 -0
- package/dist/interface/cli/confirmation-resolver.d.ts.map +1 -0
- package/dist/interface/cli/confirmation-resolver.js +42 -0
- package/dist/interface/cli/confirmation-resolver.js.map +1 -0
- package/dist/interface/cli/dry-run-reporter.d.ts +8 -0
- package/dist/interface/cli/dry-run-reporter.d.ts.map +1 -0
- package/dist/interface/cli/dry-run-reporter.js +44 -0
- package/dist/interface/cli/dry-run-reporter.js.map +1 -0
- package/dist/interface/cli/init-command-handler.d.ts +29 -0
- package/dist/interface/cli/init-command-handler.d.ts.map +1 -0
- package/dist/interface/cli/init-command-handler.js +166 -0
- package/dist/interface/cli/init-command-handler.js.map +1 -0
- package/dist/interface/cli/init-mode-resolver.d.ts +10 -0
- package/dist/interface/cli/init-mode-resolver.d.ts.map +1 -0
- package/dist/interface/cli/init-mode-resolver.js +11 -0
- package/dist/interface/cli/init-mode-resolver.js.map +1 -0
- package/dist/interface/cli/mcp-cli-launcher.d.ts +8 -0
- package/dist/interface/cli/mcp-cli-launcher.d.ts.map +1 -0
- package/dist/interface/cli/mcp-cli-launcher.js +20 -0
- package/dist/interface/cli/mcp-cli-launcher.js.map +1 -0
- package/dist/interface/cli/postinstall-bootstrap.d.ts +9 -0
- package/dist/interface/cli/postinstall-bootstrap.d.ts.map +1 -0
- package/dist/interface/cli/postinstall-bootstrap.js +51 -0
- package/dist/interface/cli/postinstall-bootstrap.js.map +1 -0
- package/dist/interface/cli/sse-transport-bridge.d.ts +13 -0
- package/dist/interface/cli/sse-transport-bridge.d.ts.map +1 -0
- package/dist/interface/cli/sse-transport-bridge.js +15 -0
- package/dist/interface/cli/sse-transport-bridge.js.map +1 -0
- package/dist/templates/claude-md.md +44 -0
- package/dist/templates/copilot-instructions.md +44 -0
- package/dist/templates/mcp/claude.json +8 -0
- package/dist/templates/mcp/copilot.json +9 -0
- package/package.json +7 -4
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GeneratedFile, GeneratedDirectory, InstallContext, TransactionResult } from '../../domain/install/types.js';
|
|
2
|
+
import { PackageAssetCatalog } from '../../infrastructure/assets/package-asset-catalog.js';
|
|
3
|
+
import { PackageRootLocator } from '../../infrastructure/assets/package-root-locator.js';
|
|
4
|
+
import { TemplateRenderer } from '../../infrastructure/templates/template-renderer.js';
|
|
5
|
+
import { WorkspaceWriter } from '../../infrastructure/workspace/workspace-writer.js';
|
|
6
|
+
import { McpConfigGenerator } from './mcp-config-generator.js';
|
|
7
|
+
import { WorkspaceMergeService } from './workspace-merge-service.js';
|
|
8
|
+
import { ClaudeSkillIndexBuilder } from './claude-skill-index-builder.js';
|
|
9
|
+
export interface ClaudeSetupArtifacts {
|
|
10
|
+
claudeMd: GeneratedFile;
|
|
11
|
+
skills: GeneratedDirectory;
|
|
12
|
+
mcpConfig: GeneratedFile;
|
|
13
|
+
marker: GeneratedFile;
|
|
14
|
+
}
|
|
15
|
+
export declare class ClaudeSetupTransaction {
|
|
16
|
+
private readonly catalog;
|
|
17
|
+
private readonly renderer;
|
|
18
|
+
private readonly mcpGen;
|
|
19
|
+
private readonly merger;
|
|
20
|
+
private readonly writer;
|
|
21
|
+
private readonly indexBuilder;
|
|
22
|
+
private readonly locator;
|
|
23
|
+
constructor(catalog: PackageAssetCatalog, renderer: TemplateRenderer, mcpGen: McpConfigGenerator, merger: WorkspaceMergeService, writer: WorkspaceWriter, indexBuilder: ClaudeSkillIndexBuilder, locator: PackageRootLocator);
|
|
24
|
+
prepare(context: InstallContext): Promise<ClaudeSetupArtifacts>;
|
|
25
|
+
execute(context: InstallContext, artifacts: ClaudeSetupArtifacts, dryRun: boolean): Promise<TransactionResult>;
|
|
26
|
+
private readAsset;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=claude-setup-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-setup-transaction.d.ts","sourceRoot":"","sources":["../../../src/application/install/claude-setup-transaction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EAGlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBANP,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,uBAAuB,EACrC,OAAO,EAAE,kBAAkB;IAGxC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkE/D,OAAO,CACX,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,iBAAiB,CAAC;IA+B7B,OAAO,CAAC,SAAS;CAQlB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-07 / DES-INS-004: Atomic Claude setup with rollback on I/O failure.
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
export class ClaudeSetupTransaction {
|
|
7
|
+
catalog;
|
|
8
|
+
renderer;
|
|
9
|
+
mcpGen;
|
|
10
|
+
merger;
|
|
11
|
+
writer;
|
|
12
|
+
indexBuilder;
|
|
13
|
+
locator;
|
|
14
|
+
constructor(catalog, renderer, mcpGen, merger, writer, indexBuilder, locator) {
|
|
15
|
+
this.catalog = catalog;
|
|
16
|
+
this.renderer = renderer;
|
|
17
|
+
this.mcpGen = mcpGen;
|
|
18
|
+
this.merger = merger;
|
|
19
|
+
this.writer = writer;
|
|
20
|
+
this.indexBuilder = indexBuilder;
|
|
21
|
+
this.locator = locator;
|
|
22
|
+
}
|
|
23
|
+
async prepare(context) {
|
|
24
|
+
const entries = await this.catalog.list('claude');
|
|
25
|
+
const pkgRoot = this.locator.resolve(import.meta.url);
|
|
26
|
+
// Build skill index for CLAUDE.md
|
|
27
|
+
const indexItems = entries.map(e => ({
|
|
28
|
+
name: e.skillName,
|
|
29
|
+
summary: e.skillName,
|
|
30
|
+
triggers: [],
|
|
31
|
+
path: `.claude/skills/${e.skillName}/SKILL.md`,
|
|
32
|
+
}));
|
|
33
|
+
// Override skill section in project context
|
|
34
|
+
const enrichedContext = {
|
|
35
|
+
...context.project,
|
|
36
|
+
constitutionSummary: context.project.constitutionSummary,
|
|
37
|
+
};
|
|
38
|
+
// Render CLAUDE.md with skill index
|
|
39
|
+
let claudeContent = await this.renderer.render('claude-md', enrichedContext);
|
|
40
|
+
const skillSection = this.indexBuilder.build(indexItems);
|
|
41
|
+
claudeContent = claudeContent.replace(/\{\{SKILL_SECTION\}\}/g, skillSection || context.project.skillNames.map(n => `- **${n}**`).join('\n'));
|
|
42
|
+
const claudeMd = {
|
|
43
|
+
path: 'CLAUDE.md',
|
|
44
|
+
content: claudeContent,
|
|
45
|
+
managed: true,
|
|
46
|
+
};
|
|
47
|
+
// Skills directory
|
|
48
|
+
const skillFiles = entries.map(e => ({
|
|
49
|
+
path: `.claude/skills/${e.skillName}/SKILL.md`,
|
|
50
|
+
content: this.readAsset(pkgRoot, e),
|
|
51
|
+
managed: false,
|
|
52
|
+
}));
|
|
53
|
+
const skills = {
|
|
54
|
+
basePath: '.claude/skills',
|
|
55
|
+
files: skillFiles,
|
|
56
|
+
};
|
|
57
|
+
// MCP config
|
|
58
|
+
const mcpDoc = await this.mcpGen.buildClaudeConfig(context.projectPath);
|
|
59
|
+
const mcpConfig = {
|
|
60
|
+
path: mcpDoc.path,
|
|
61
|
+
content: JSON.stringify(mcpDoc.json, null, 2) + '\n',
|
|
62
|
+
managed: false,
|
|
63
|
+
};
|
|
64
|
+
// Managed marker
|
|
65
|
+
const marker = {
|
|
66
|
+
path: '.claude/.musubix-managed',
|
|
67
|
+
content: JSON.stringify({
|
|
68
|
+
generator: 'musubix2',
|
|
69
|
+
version: '0.4.0',
|
|
70
|
+
timestamp: new Date().toISOString(),
|
|
71
|
+
}),
|
|
72
|
+
managed: false,
|
|
73
|
+
};
|
|
74
|
+
return { claudeMd, skills, mcpConfig, marker };
|
|
75
|
+
}
|
|
76
|
+
async execute(context, artifacts, dryRun) {
|
|
77
|
+
const allArtifacts = [
|
|
78
|
+
artifacts.claudeMd,
|
|
79
|
+
artifacts.skills,
|
|
80
|
+
artifacts.mcpConfig,
|
|
81
|
+
artifacts.marker,
|
|
82
|
+
];
|
|
83
|
+
try {
|
|
84
|
+
const snapshot = {
|
|
85
|
+
existingFiles: new Map(),
|
|
86
|
+
projectRoot: context.projectPath,
|
|
87
|
+
};
|
|
88
|
+
const ops = await this.merger.plan(snapshot, allArtifacts, context.options.force);
|
|
89
|
+
const summary = await this.writer.execute(ops, dryRun);
|
|
90
|
+
if (summary.errors.length > 0) {
|
|
91
|
+
return { committed: false, rolledBack: true, failures: summary.errors };
|
|
92
|
+
}
|
|
93
|
+
return { committed: true, rolledBack: false, failures: [] };
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
return {
|
|
97
|
+
committed: false,
|
|
98
|
+
rolledBack: true,
|
|
99
|
+
failures: [err instanceof Error ? err.message : String(err)],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
readAsset(pkgRoot, entry) {
|
|
104
|
+
const fullPath = resolve(pkgRoot, entry.sourcePath.replace(/^\./, ''));
|
|
105
|
+
try {
|
|
106
|
+
return readFileSync(fullPath, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return `# ${entry.skillName}\n\n_Asset not found during packaging._\n`;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=claude-setup-transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-setup-transaction.js","sourceRoot":"","sources":["../../../src/application/install/claude-setup-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-05 / DES-SKL-002: Build skill index section for CLAUDE.md.
|
|
3
|
+
*/
|
|
4
|
+
import type { SkillIndexItem } from '../../domain/install/types.js';
|
|
5
|
+
export declare class ClaudeSkillIndexBuilder {
|
|
6
|
+
build(items: SkillIndexItem[]): string;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=claude-skill-index-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-skill-index-builder.d.ts","sourceRoot":"","sources":["../../../src/application/install/claude-skill-index-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,qBAAa,uBAAuB;IAClC,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM;CAiBvC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class ClaudeSkillIndexBuilder {
|
|
2
|
+
build(items) {
|
|
3
|
+
if (items.length === 0)
|
|
4
|
+
return '';
|
|
5
|
+
const lines = [
|
|
6
|
+
'## スキル一覧',
|
|
7
|
+
'',
|
|
8
|
+
'| スキル | 概要 | 起動条件 | パス |',
|
|
9
|
+
'|--------|------|---------|------|',
|
|
10
|
+
];
|
|
11
|
+
for (const item of items) {
|
|
12
|
+
const triggers = item.triggers.join(', ') || '—';
|
|
13
|
+
lines.push(`| **${item.name}** | ${item.summary} | ${triggers} | \`${item.path}\` |`);
|
|
14
|
+
}
|
|
15
|
+
return lines.join('\n');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=claude-skill-index-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-skill-index-builder.js","sourceRoot":"","sources":["../../../src/application/install/claude-skill-index-builder.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,uBAAuB;IAClC,KAAK,CAAC,KAAuB;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,KAAK,GAAa;YACtB,UAAU;YACV,EAAE;YACF,0BAA0B;YAC1B,oCAAoC;SACrC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,OAAO,MAAM,QAAQ,QAAQ,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;QACxF,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GeneratedFile, GeneratedDirectory, InstallContext } from '../../domain/install/types.js';
|
|
2
|
+
import { PackageAssetCatalog } from '../../infrastructure/assets/package-asset-catalog.js';
|
|
3
|
+
import { PackageRootLocator } from '../../infrastructure/assets/package-root-locator.js';
|
|
4
|
+
import { TemplateRenderer } from '../../infrastructure/templates/template-renderer.js';
|
|
5
|
+
import { McpConfigGenerator } from './mcp-config-generator.js';
|
|
6
|
+
export interface CopilotSetupArtifacts {
|
|
7
|
+
instructions: GeneratedFile;
|
|
8
|
+
skills: GeneratedDirectory;
|
|
9
|
+
mcpConfig: GeneratedFile;
|
|
10
|
+
}
|
|
11
|
+
export declare class CopilotSetupService {
|
|
12
|
+
private readonly catalog;
|
|
13
|
+
private readonly renderer;
|
|
14
|
+
private readonly mcpGen;
|
|
15
|
+
private readonly locator;
|
|
16
|
+
constructor(catalog: PackageAssetCatalog, renderer: TemplateRenderer, mcpGen: McpConfigGenerator, locator: PackageRootLocator);
|
|
17
|
+
prepare(context: InstallContext): Promise<CopilotSetupArtifacts>;
|
|
18
|
+
private readAsset;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=copilot-setup-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-setup-service.d.ts","sourceRoot":"","sources":["../../../src/application/install/copilot-setup-service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,EAEf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,aAAa,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHP,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,kBAAkB;IAGxC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkCtE,OAAO,CAAC,SAAS;CAQlB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-06 / DES-INS-003: Prepare Copilot setup artifacts.
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
export class CopilotSetupService {
|
|
7
|
+
catalog;
|
|
8
|
+
renderer;
|
|
9
|
+
mcpGen;
|
|
10
|
+
locator;
|
|
11
|
+
constructor(catalog, renderer, mcpGen, locator) {
|
|
12
|
+
this.catalog = catalog;
|
|
13
|
+
this.renderer = renderer;
|
|
14
|
+
this.mcpGen = mcpGen;
|
|
15
|
+
this.locator = locator;
|
|
16
|
+
}
|
|
17
|
+
async prepare(context) {
|
|
18
|
+
// 1. Render copilot-instructions.md
|
|
19
|
+
const instructionsContent = await this.renderer.render('copilot-instructions', context.project);
|
|
20
|
+
const instructions = {
|
|
21
|
+
path: '.github/copilot-instructions.md',
|
|
22
|
+
content: instructionsContent,
|
|
23
|
+
managed: true,
|
|
24
|
+
};
|
|
25
|
+
// 2. List and copy skills
|
|
26
|
+
const entries = await this.catalog.list('copilot');
|
|
27
|
+
const pkgRoot = this.locator.resolve(import.meta.url);
|
|
28
|
+
const skillFiles = entries.map(e => ({
|
|
29
|
+
path: `.github/skills/${e.skillName}/SKILL.md`,
|
|
30
|
+
content: this.readAsset(pkgRoot, e),
|
|
31
|
+
managed: false,
|
|
32
|
+
}));
|
|
33
|
+
const skills = {
|
|
34
|
+
basePath: '.github/skills',
|
|
35
|
+
files: skillFiles,
|
|
36
|
+
};
|
|
37
|
+
// 3. MCP config
|
|
38
|
+
const mcpDoc = await this.mcpGen.buildCopilotConfig(context.projectPath);
|
|
39
|
+
const mcpConfig = {
|
|
40
|
+
path: mcpDoc.path,
|
|
41
|
+
content: JSON.stringify(mcpDoc.json, null, 2) + '\n',
|
|
42
|
+
managed: false,
|
|
43
|
+
};
|
|
44
|
+
return { instructions, skills, mcpConfig };
|
|
45
|
+
}
|
|
46
|
+
readAsset(pkgRoot, entry) {
|
|
47
|
+
const fullPath = resolve(pkgRoot, entry.sourcePath.replace(/^\./, ''));
|
|
48
|
+
try {
|
|
49
|
+
return readFileSync(fullPath, 'utf-8');
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return `# ${entry.skillName}\n\n_Asset not found during packaging._\n`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=copilot-setup-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot-setup-service.js","sourceRoot":"","sources":["../../../src/application/install/copilot-setup-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,MAAM,OAAO,mBAAmB;IAEX;IACA;IACA;IACA;IAJnB,YACmB,OAA4B,EAC5B,QAA0B,EAC1B,MAA0B,EAC1B,OAA2B;QAH3B,YAAO,GAAP,OAAO,CAAqB;QAC5B,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,WAAM,GAAN,MAAM,CAAoB;QAC1B,YAAO,GAAP,OAAO,CAAoB;IAC3C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,oCAAoC;QACpC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChG,MAAM,YAAY,GAAkB;YAClC,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,mBAAmB;YAC5B,OAAO,EAAE,IAAI;SACd,CAAC;QAEF,0BAA0B;QAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,UAAU,GAAoB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,kBAAkB,CAAC,CAAC,SAAS,WAAW;YAC9C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAuB;YACjC,QAAQ,EAAE,gBAAgB;YAC1B,KAAK,EAAE,UAAU;SAClB,CAAC;QAEF,gBAAgB;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,SAAS,GAAkB;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;YACpD,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,OAAe,EAAE,KAAiB;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,KAAK,CAAC,SAAS,2CAA2C,CAAC;QACzE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { PlatformDetector } from './platform-detector.js';
|
|
2
|
+
export { McpLaunchResolver } from './mcp-launch-resolver.js';
|
|
3
|
+
export { McpConfigGenerator } from './mcp-config-generator.js';
|
|
4
|
+
export { WorkspaceMergeService } from './workspace-merge-service.js';
|
|
5
|
+
export { ClaudeSkillIndexBuilder } from './claude-skill-index-builder.js';
|
|
6
|
+
export { CopilotSetupService } from './copilot-setup-service.js';
|
|
7
|
+
export { ClaudeSetupTransaction } from './claude-setup-transaction.js';
|
|
8
|
+
export { InstallPlanner } from './install-planner.js';
|
|
9
|
+
export { UpdateService } from './update-service.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/application/install/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { PlatformDetector } from './platform-detector.js';
|
|
2
|
+
export { McpLaunchResolver } from './mcp-launch-resolver.js';
|
|
3
|
+
export { McpConfigGenerator } from './mcp-config-generator.js';
|
|
4
|
+
export { WorkspaceMergeService } from './workspace-merge-service.js';
|
|
5
|
+
export { ClaudeSkillIndexBuilder } from './claude-skill-index-builder.js';
|
|
6
|
+
export { CopilotSetupService } from './copilot-setup-service.js';
|
|
7
|
+
export { ClaudeSetupTransaction } from './claude-setup-transaction.js';
|
|
8
|
+
export { InstallPlanner } from './install-planner.js';
|
|
9
|
+
export { UpdateService } from './update-service.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/application/install/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-08 / DES-INS-001: Build install plan from platform selection and workspace state.
|
|
3
|
+
*/
|
|
4
|
+
import type { PlatformSelection, WorkspaceSnapshot, InitOptions, InstallPlan } from '../../domain/install/types.js';
|
|
5
|
+
export declare class InstallPlanner {
|
|
6
|
+
buildPlan(selection: PlatformSelection, _workspaceState: WorkspaceSnapshot, _options: InitOptions): Promise<InstallPlan>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=install-planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-planner.d.ts","sourceRoot":"","sources":["../../../src/application/install/install-planner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,WAAW,EAEZ,MAAM,+BAA+B,CAAC;AAEvC,qBAAa,cAAc;IACnB,SAAS,CACb,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,iBAAiB,EAClC,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,WAAW,CAAC;CAkCxB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class InstallPlanner {
|
|
2
|
+
async buildPlan(selection, _workspaceState, _options) {
|
|
3
|
+
const artifacts = [];
|
|
4
|
+
const warnings = [];
|
|
5
|
+
const transactionalGroups = [];
|
|
6
|
+
if (selection.copilot) {
|
|
7
|
+
artifacts.push({ path: '.github/copilot-instructions.md', platform: 'copilot', category: 'instruction' }, { path: '.github/skills/', platform: 'copilot', category: 'skill' }, { path: '.vscode/mcp.json', platform: 'copilot', category: 'mcp-config' });
|
|
8
|
+
}
|
|
9
|
+
if (selection.claude) {
|
|
10
|
+
transactionalGroups.push('claude-setup');
|
|
11
|
+
artifacts.push({ path: 'CLAUDE.md', platform: 'claude', category: 'instruction', transactionalGroup: 'claude-setup' }, { path: '.claude/skills/', platform: 'claude', category: 'skill', transactionalGroup: 'claude-setup' }, { path: '.mcp.json', platform: 'claude', category: 'mcp-config', transactionalGroup: 'claude-setup' }, { path: '.claude/.musubix-managed', platform: 'claude', category: 'marker', transactionalGroup: 'claude-setup' });
|
|
12
|
+
}
|
|
13
|
+
if (!selection.copilot && !selection.claude) {
|
|
14
|
+
warnings.push('No platform selected. Run with --platform copilot|claude|both.');
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
artifacts,
|
|
18
|
+
transactionalGroups,
|
|
19
|
+
requiresConfirmation: selection.needsConfirmation,
|
|
20
|
+
warnings,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=install-planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-planner.js","sourceRoot":"","sources":["../../../src/application/install/install-planner.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,SAAS,CACb,SAA4B,EAC5B,eAAkC,EAClC,QAAqB;QAErB,MAAM,SAAS,GAAsB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,mBAAmB,GAAa,EAAE,CAAC;QAEzC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CACZ,EAAE,IAAI,EAAE,iCAAiC,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,EACzF,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,EACnE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,CAC1E,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACzC,SAAS,CAAC,IAAI,CACZ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,EACtG,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,EACtG,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,EACrG,EAAE,IAAI,EAAE,0BAA0B,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,CACjH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAClF,CAAC;QAED,OAAO;YACL,SAAS;YACT,mBAAmB;YACnB,oBAAoB,EAAE,SAAS,CAAC,iBAAiB;YACjD,QAAQ;SACT,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-03 / DES-INS-005: Generate MCP config JSON for Copilot and Claude formats.
|
|
3
|
+
*/
|
|
4
|
+
import type { McpConfigDocument } from '../../domain/install/types.js';
|
|
5
|
+
import { McpLaunchResolver } from './mcp-launch-resolver.js';
|
|
6
|
+
export declare class McpConfigGenerator {
|
|
7
|
+
private readonly launchResolver;
|
|
8
|
+
constructor(launchResolver: McpLaunchResolver);
|
|
9
|
+
buildCopilotConfig(projectPath: string): Promise<McpConfigDocument>;
|
|
10
|
+
buildClaudeConfig(projectPath: string): Promise<McpConfigDocument>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=mcp-config-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config-generator.d.ts","sourceRoot":"","sources":["../../../src/application/install/mcp-config-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,iBAAiB;IAExD,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBnE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAczE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export class McpConfigGenerator {
|
|
2
|
+
launchResolver;
|
|
3
|
+
constructor(launchResolver) {
|
|
4
|
+
this.launchResolver = launchResolver;
|
|
5
|
+
}
|
|
6
|
+
async buildCopilotConfig(projectPath) {
|
|
7
|
+
const launch = await this.launchResolver.resolve(projectPath);
|
|
8
|
+
return {
|
|
9
|
+
path: '.vscode/mcp.json',
|
|
10
|
+
json: {
|
|
11
|
+
servers: {
|
|
12
|
+
musubix2: {
|
|
13
|
+
type: 'stdio',
|
|
14
|
+
command: launch.command,
|
|
15
|
+
args: launch.args,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async buildClaudeConfig(projectPath) {
|
|
22
|
+
const launch = await this.launchResolver.resolve(projectPath);
|
|
23
|
+
return {
|
|
24
|
+
path: '.mcp.json',
|
|
25
|
+
json: {
|
|
26
|
+
mcpServers: {
|
|
27
|
+
musubix2: {
|
|
28
|
+
command: launch.command,
|
|
29
|
+
args: launch.args,
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=mcp-config-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config-generator.js","sourceRoot":"","sources":["../../../src/application/install/mcp-config-generator.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,cAAiC;QAAjC,mBAAc,GAAd,cAAc,CAAmB;IAAG,CAAC;IAElE,KAAK,CAAC,kBAAkB,CAAC,WAAmB;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE;gBACJ,OAAO,EAAE;oBACP,QAAQ,EAAE;wBACR,IAAI,EAAE,OAAO;wBACb,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;qBAClB;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE;gBACJ,UAAU,EAAE;oBACV,QAAQ,EAAE;wBACR,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;qBAClB;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-launch-resolver.d.ts","sourceRoot":"","sources":["../../../src/application/install/mcp-launch-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,qBAAa,iBAAiB;IACtB,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAe9D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-02 / DES-INS-005: Resolve MCP launch command — prefer local, fallback to npx.
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
export class McpLaunchResolver {
|
|
7
|
+
async resolve(projectPath) {
|
|
8
|
+
const localBin = resolve(projectPath, 'node_modules', '.bin', 'musubix2');
|
|
9
|
+
if (existsSync(localBin)) {
|
|
10
|
+
return {
|
|
11
|
+
command: './node_modules/.bin/musubix2',
|
|
12
|
+
args: ['mcp'],
|
|
13
|
+
transport: 'stdio',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
command: 'npx',
|
|
18
|
+
args: ['musubix2', 'mcp'],
|
|
19
|
+
transport: 'stdio',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=mcp-launch-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-launch-resolver.js","sourceRoot":"","sources":["../../../src/application/install/mcp-launch-resolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1E,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,8BAA8B;gBACvC,IAAI,EAAE,CAAC,KAAK,CAAC;gBACb,SAAS,EAAE,OAAO;aACnB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;YACzB,SAAS,EAAE,OAAO;SACnB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PlatformSelection, InitOptions } from '../../domain/install/types.js';
|
|
2
|
+
export declare class PlatformDetector {
|
|
3
|
+
detect(projectPath: string, requested: InitOptions['platform']): Promise<PlatformSelection>;
|
|
4
|
+
private gatherHints;
|
|
5
|
+
private hasCommand;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=platform-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-detector.d.ts","sourceRoot":"","sources":["../../../src/application/install/platform-detector.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEnG,qBAAa,gBAAgB;IACrB,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,iBAAiB,CAAC;IAwC7B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;CAQnB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-01 / DES-INS-002: Detect available platforms from workspace hints and CLI flags.
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync } from 'node:fs';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import { execSync } from 'node:child_process';
|
|
7
|
+
export class PlatformDetector {
|
|
8
|
+
async detect(projectPath, requested) {
|
|
9
|
+
// Explicit flag override
|
|
10
|
+
if (requested !== 'auto') {
|
|
11
|
+
return {
|
|
12
|
+
copilot: requested === 'copilot' || requested === 'both',
|
|
13
|
+
claude: requested === 'claude' || requested === 'both',
|
|
14
|
+
source: 'flag',
|
|
15
|
+
needsConfirmation: false,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const hints = this.gatherHints(projectPath);
|
|
19
|
+
const copilot = hints.hasVscodeDir;
|
|
20
|
+
// .claude/ with .musubix-managed means self-generated — exclude from detection
|
|
21
|
+
const claude = hints.hasClaudeDir && !hints.hasManagedClaudeMarker;
|
|
22
|
+
if (copilot || claude) {
|
|
23
|
+
return { copilot, claude, source: 'workspace', needsConfirmation: false };
|
|
24
|
+
}
|
|
25
|
+
// claude command exists but no workspace hints → candidate, needs confirmation
|
|
26
|
+
if (hints.hasClaudeCommand) {
|
|
27
|
+
return {
|
|
28
|
+
copilot: false,
|
|
29
|
+
claude: false,
|
|
30
|
+
source: 'candidate',
|
|
31
|
+
needsConfirmation: true,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Nothing found — need user prompt
|
|
35
|
+
return {
|
|
36
|
+
copilot: false,
|
|
37
|
+
claude: false,
|
|
38
|
+
source: 'candidate',
|
|
39
|
+
needsConfirmation: true,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
gatherHints(projectPath) {
|
|
43
|
+
return {
|
|
44
|
+
hasVscodeDir: existsSync(resolve(projectPath, '.vscode')),
|
|
45
|
+
hasClaudeDir: existsSync(resolve(projectPath, '.claude')),
|
|
46
|
+
hasManagedClaudeMarker: existsSync(resolve(projectPath, '.claude', '.musubix-managed')),
|
|
47
|
+
hasClaudeCommand: this.hasCommand('claude'),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
hasCommand(cmd) {
|
|
51
|
+
try {
|
|
52
|
+
execSync(`command -v ${cmd}`, { stdio: 'ignore' });
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=platform-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../../src/application/install/platform-detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,MAAM,CACV,WAAmB,EACnB,SAAkC;QAElC,yBAAyB;QACzB,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM;gBACxD,MAAM,EAAE,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM;gBACtD,MAAM,EAAE,MAAM;gBACd,iBAAiB,EAAE,KAAK;aACzB,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACnC,+EAA+E;QAC/E,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAEnE,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;QAC5E,CAAC;QAED,+EAA+E;QAC/E,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,WAAW;gBACnB,iBAAiB,EAAE,IAAI;aACxB,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW;YACnB,iBAAiB,EAAE,IAAI;SACxB,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,WAAmB;QACrC,OAAO;YACL,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACzD,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACzD,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;YACvF,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC5C,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,GAAW;QAC5B,IAAI,CAAC;YACH,QAAQ,CAAC,cAAc,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InstallContext, UpdateResult, WriteOperation } from '../../domain/install/types.js';
|
|
2
|
+
import { WorkspaceMergeService } from './workspace-merge-service.js';
|
|
3
|
+
import { WorkspaceWriter } from '../../infrastructure/workspace/workspace-writer.js';
|
|
4
|
+
export declare class UpdateService {
|
|
5
|
+
private readonly writer;
|
|
6
|
+
constructor(_merger: WorkspaceMergeService, writer: WorkspaceWriter);
|
|
7
|
+
run(_context: InstallContext, generatedOps: WriteOperation[]): Promise<UpdateResult>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=update-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-service.d.ts","sourceRoot":"","sources":["../../../src/application/install/update-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAErF,qBAAa,aAAa;IAGtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADvB,OAAO,EAAE,qBAAqB,EACb,MAAM,EAAE,eAAe;IAGpC,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAuB3F"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P2-09 / DES-UPD-001: Update musubix-managed sections and create .bak backups.
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, copyFileSync } from 'node:fs';
|
|
5
|
+
export class UpdateService {
|
|
6
|
+
writer;
|
|
7
|
+
constructor(_merger, writer) {
|
|
8
|
+
this.writer = writer;
|
|
9
|
+
}
|
|
10
|
+
async run(_context, generatedOps) {
|
|
11
|
+
const backups = [];
|
|
12
|
+
const updatedPaths = [];
|
|
13
|
+
const diffSummary = [];
|
|
14
|
+
const updateOps = generatedOps.filter(op => op.mode === 'append-section' || op.mode === 'merge-json');
|
|
15
|
+
for (const op of updateOps) {
|
|
16
|
+
if (existsSync(op.targetPath)) {
|
|
17
|
+
const bakPath = `${op.targetPath}.bak`;
|
|
18
|
+
copyFileSync(op.targetPath, bakPath);
|
|
19
|
+
backups.push(bakPath);
|
|
20
|
+
diffSummary.push(`${op.targetPath}: ${op.mode}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const summary = await this.writer.execute(updateOps, false);
|
|
24
|
+
updatedPaths.push(...summary.updated);
|
|
25
|
+
return { backups, updatedPaths, diffSummary };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=update-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-service.js","sourceRoot":"","sources":["../../../src/application/install/update-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AASnD,MAAM,OAAO,aAAa;IAGL;IAFnB,YACE,OAA8B,EACb,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IACvC,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,QAAwB,EAAE,YAA8B;QAChE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACnC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,gBAAgB,IAAI,EAAE,CAAC,IAAI,KAAK,YAAY,CAC/D,CAAC;QAEF,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,MAAM,CAAC;gBACvC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5D,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IAChD,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GeneratedArtifacts, WorkspaceSnapshot, WriteOperation } from '../../domain/install/types.js';
|
|
2
|
+
export declare class WorkspaceMergeService {
|
|
3
|
+
plan(snapshot: WorkspaceSnapshot, generated: GeneratedArtifacts, force: boolean): Promise<WriteOperation[]>;
|
|
4
|
+
private planFile;
|
|
5
|
+
private planJsonMerge;
|
|
6
|
+
private planSectionAppend;
|
|
7
|
+
private deepMerge;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=workspace-merge-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-merge-service.d.ts","sourceRoot":"","sources":["../../../src/application/install/workspace-merge-service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAGlB,iBAAiB,EACjB,cAAc,EACf,MAAM,+BAA+B,CAAC;AAKvC,qBAAa,qBAAqB;IAC1B,IAAI,CACR,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,kBAAkB,EAC7B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,EAAE,CAAC;IAmB5B,OAAO,CAAC,QAAQ;IA+BhB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,SAAS;CAiBlB"}
|