@einja/dev-cli 0.1.6
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/README.md +179 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +23 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +294 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/sync.test.d.ts +2 -0
- package/dist/commands/sync.test.d.ts.map +1 -0
- package/dist/commands/sync.test.js +593 -0
- package/dist/commands/sync.test.js.map +1 -0
- package/dist/commands/task-loop.d.ts +11 -0
- package/dist/commands/task-loop.d.ts.map +1 -0
- package/dist/commands/task-loop.js +81 -0
- package/dist/commands/task-loop.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/file-system.d.ts +39 -0
- package/dist/lib/file-system.d.ts.map +1 -0
- package/dist/lib/file-system.js +79 -0
- package/dist/lib/file-system.js.map +1 -0
- package/dist/lib/mcp-config.d.ts +43 -0
- package/dist/lib/mcp-config.d.ts.map +1 -0
- package/dist/lib/mcp-config.js +109 -0
- package/dist/lib/mcp-config.js.map +1 -0
- package/dist/lib/mcp-config.test.d.ts +2 -0
- package/dist/lib/mcp-config.test.d.ts.map +1 -0
- package/dist/lib/mcp-config.test.js +285 -0
- package/dist/lib/mcp-config.test.js.map +1 -0
- package/dist/lib/merger.d.ts +41 -0
- package/dist/lib/merger.d.ts.map +1 -0
- package/dist/lib/merger.js +164 -0
- package/dist/lib/merger.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.js +83 -0
- package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
- package/dist/lib/preset-update/file-copier.d.ts +59 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.js +220 -0
- package/dist/lib/preset-update/file-copier.js.map +1 -0
- package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.test.js +297 -0
- package/dist/lib/preset-update/file-copier.test.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.d.ts +39 -0
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.js +92 -0
- package/dist/lib/preset-update/preset-finder.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.js +128 -0
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
- package/dist/lib/preset.d.ts +14 -0
- package/dist/lib/preset.d.ts.map +1 -0
- package/dist/lib/preset.js +52 -0
- package/dist/lib/preset.js.map +1 -0
- package/dist/lib/sync/backup-manager.d.ts +50 -0
- package/dist/lib/sync/backup-manager.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.js +117 -0
- package/dist/lib/sync/backup-manager.js.map +1 -0
- package/dist/lib/sync/backup-manager.test.d.ts +2 -0
- package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.test.js +155 -0
- package/dist/lib/sync/backup-manager.test.js.map +1 -0
- package/dist/lib/sync/batch-processor.d.ts +27 -0
- package/dist/lib/sync/batch-processor.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.js +46 -0
- package/dist/lib/sync/batch-processor.js.map +1 -0
- package/dist/lib/sync/batch-processor.test.d.ts +2 -0
- package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.test.js +110 -0
- package/dist/lib/sync/batch-processor.test.js.map +1 -0
- package/dist/lib/sync/category-validator.d.ts +36 -0
- package/dist/lib/sync/category-validator.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.js +46 -0
- package/dist/lib/sync/category-validator.js.map +1 -0
- package/dist/lib/sync/category-validator.test.d.ts +2 -0
- package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.test.js +89 -0
- package/dist/lib/sync/category-validator.test.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.d.ts +57 -0
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.js +81 -0
- package/dist/lib/sync/conflict-reporter.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.js +132 -0
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
- package/dist/lib/sync/diff-engine.d.ts +28 -0
- package/dist/lib/sync/diff-engine.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.js +118 -0
- package/dist/lib/sync/diff-engine.js.map +1 -0
- package/dist/lib/sync/diff-engine.test.d.ts +2 -0
- package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.test.js +133 -0
- package/dist/lib/sync/diff-engine.test.js.map +1 -0
- package/dist/lib/sync/file-filter.d.ts +40 -0
- package/dist/lib/sync/file-filter.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.js +171 -0
- package/dist/lib/sync/file-filter.js.map +1 -0
- package/dist/lib/sync/file-filter.test.d.ts +2 -0
- package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.test.js +179 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -0
- package/dist/lib/sync/hash-cache.d.ts +34 -0
- package/dist/lib/sync/hash-cache.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.js +51 -0
- package/dist/lib/sync/hash-cache.js.map +1 -0
- package/dist/lib/sync/hash-cache.test.d.ts +2 -0
- package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.test.js +110 -0
- package/dist/lib/sync/hash-cache.test.js.map +1 -0
- package/dist/lib/sync/integration.test.d.ts +2 -0
- package/dist/lib/sync/integration.test.d.ts.map +1 -0
- package/dist/lib/sync/integration.test.js +317 -0
- package/dist/lib/sync/integration.test.js.map +1 -0
- package/dist/lib/sync/marker-processor.d.ts +54 -0
- package/dist/lib/sync/marker-processor.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.js +208 -0
- package/dist/lib/sync/marker-processor.js.map +1 -0
- package/dist/lib/sync/marker-processor.test.d.ts +2 -0
- package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.test.js +245 -0
- package/dist/lib/sync/marker-processor.test.js.map +1 -0
- package/dist/lib/sync/metadata-manager.d.ts +46 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.js +129 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -0
- package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
- package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.test.js +137 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -0
- package/dist/lib/sync/performance.test.d.ts +2 -0
- package/dist/lib/sync/performance.test.d.ts.map +1 -0
- package/dist/lib/sync/performance.test.js +126 -0
- package/dist/lib/sync/performance.test.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/preset-update.d.ts +106 -0
- package/dist/types/preset-update.d.ts.map +1 -0
- package/dist/types/preset-update.js +5 -0
- package/dist/types/preset-update.js.map +1 -0
- package/dist/types/sync.d.ts +169 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +19 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +72 -0
- package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
- package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
- package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
- package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
- package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
- package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
- package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
- package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
- package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
- package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
- package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
- package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
- package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
- package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
- package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
- package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
- package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
- package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
- package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
- package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
- package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
- package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
- package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
- package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
- package/presets/minimal/.claude/settings.json +174 -0
- package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
- package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
- package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
- package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
- package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
- package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
- package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
- package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
- package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
- package/presets/minimal/preset.yaml +111 -0
- package/presets/minimal/symlinks.json +45 -0
- package/scaffolds/.mcp.json +45 -0
- package/scaffolds/CLAUDE.md.template +318 -0
- package/scaffolds/steering/README.md +170 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
- package/scaffolds/steering/architecture.md +481 -0
- package/scaffolds/steering/branch-strategy.md +362 -0
- package/scaffolds/steering/commit-rules.md +217 -0
- package/scaffolds/steering/db-schema-design.md +609 -0
- package/scaffolds/steering/development/api-development.md +783 -0
- package/scaffolds/steering/development/backend-architecture.md +731 -0
- package/scaffolds/steering/development/frontend-development.md +1537 -0
- package/scaffolds/steering/development/review-guidelines.md +365 -0
- package/scaffolds/steering/development/testing-strategy.md +819 -0
- package/scaffolds/steering/development-workflow.md +429 -0
- package/scaffolds/steering/infrastructure/deployment.md +277 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
- package/scaffolds/steering/product.md +540 -0
- package/scaffolds/steering/task-management.md +367 -0
- package/templates/README.md +159 -0
- package/templates/design-simple.md.template +172 -0
- package/templates/design.md.template +327 -0
- package/templates/qa-test.md.template +125 -0
- package/templates/requirements.md.template +254 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-loop.d.ts","sourceRoot":"","sources":["../../src/commands/task-loop.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD;;;GAGG;AACH,wBAAsB,eAAe,CACpC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
/**
|
|
5
|
+
* Claude Code がインストールされているか確認
|
|
6
|
+
*/
|
|
7
|
+
async function checkClaudeInstalled() {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
const claude = spawn("claude", ["--version"], {
|
|
10
|
+
stdio: "pipe",
|
|
11
|
+
shell: true,
|
|
12
|
+
});
|
|
13
|
+
claude.on("error", () => resolve(false));
|
|
14
|
+
claude.on("close", (code) => resolve(code === 0));
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* プロンプトを構築
|
|
19
|
+
*/
|
|
20
|
+
function buildPrompt(options) {
|
|
21
|
+
const parts = ["/task-vibe-kanban-loop"];
|
|
22
|
+
if (options.issue) {
|
|
23
|
+
// Issue番号を正規化(# がなければ追加)
|
|
24
|
+
const issueNumber = options.issue.startsWith("#")
|
|
25
|
+
? options.issue
|
|
26
|
+
: `#${options.issue}`;
|
|
27
|
+
parts.push(`Issue ${issueNumber}で実行`);
|
|
28
|
+
}
|
|
29
|
+
if (options.maxGroup) {
|
|
30
|
+
parts.push(`最大タスクグループ${options.maxGroup}まで`);
|
|
31
|
+
}
|
|
32
|
+
if (options.branch) {
|
|
33
|
+
parts.push(`ベースブランチは${options.branch}`);
|
|
34
|
+
}
|
|
35
|
+
return parts.join(" ");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* task:loop コマンド
|
|
39
|
+
* Claude Code を起動して /task-vibe-kanban-loop を実行
|
|
40
|
+
*/
|
|
41
|
+
export async function taskLoopCommand(issue, options) {
|
|
42
|
+
const spinner = ora();
|
|
43
|
+
// Issue番号をoptionsにマージ
|
|
44
|
+
const mergedOptions = Object.assign(Object.assign({}, options), { issue: issue || options.issue });
|
|
45
|
+
// 1. Claude Code の存在確認
|
|
46
|
+
spinner.start("Claude Code の確認中...");
|
|
47
|
+
const claudeExists = await checkClaudeInstalled();
|
|
48
|
+
if (!claudeExists) {
|
|
49
|
+
spinner.fail("Claude Code がインストールされていません");
|
|
50
|
+
console.log(chalk.yellow("\n以下の手順でインストールしてください:"));
|
|
51
|
+
console.log(" npm install -g @anthropic-ai/claude-code");
|
|
52
|
+
console.log(" claude /login");
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
spinner.succeed("Claude Code 確認完了");
|
|
56
|
+
// 2. Issue番号の確認
|
|
57
|
+
if (!mergedOptions.issue) {
|
|
58
|
+
spinner.fail("Issue番号が指定されていません");
|
|
59
|
+
console.log(chalk.yellow("\n使用例:"));
|
|
60
|
+
console.log(" pnpm task:loop 123");
|
|
61
|
+
console.log(" pnpm task:loop 123 --max-group 1.3");
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
// 3. プロンプト構築
|
|
65
|
+
const prompt = buildPrompt(mergedOptions);
|
|
66
|
+
console.log(chalk.gray(`\n実行: claude -p "${prompt}"\n`));
|
|
67
|
+
// 4. Claude Code 起動
|
|
68
|
+
const claude = spawn("claude", ["-p", prompt], {
|
|
69
|
+
stdio: "inherit",
|
|
70
|
+
cwd: process.cwd(),
|
|
71
|
+
shell: true,
|
|
72
|
+
});
|
|
73
|
+
claude.on("error", (error) => {
|
|
74
|
+
console.error(chalk.red(`\nエラー: ${error.message}`));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
});
|
|
77
|
+
claude.on("close", (code) => {
|
|
78
|
+
process.exit(code || 0);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=task-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-loop.js","sourceRoot":"","sources":["../../src/commands/task-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* パッケージルートからの相対パスを解決
|
|
3
|
+
*/
|
|
4
|
+
export declare function getPackageRoot(): string;
|
|
5
|
+
/**
|
|
6
|
+
* プリセットディレクトリのパスを取得
|
|
7
|
+
*/
|
|
8
|
+
export declare function getPresetsPath(): string;
|
|
9
|
+
/**
|
|
10
|
+
* テンプレートディレクトリのパスを取得
|
|
11
|
+
*/
|
|
12
|
+
export declare function getTemplatesPath(): string;
|
|
13
|
+
/**
|
|
14
|
+
* スキャフォールドディレクトリのパスを取得
|
|
15
|
+
*/
|
|
16
|
+
export declare function getScaffoldsPath(): string;
|
|
17
|
+
/**
|
|
18
|
+
* 特定のプリセットのパスを取得
|
|
19
|
+
*/
|
|
20
|
+
export declare function getPresetPath(presetName: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* ディレクトリをバックアップ
|
|
23
|
+
*/
|
|
24
|
+
export declare function backupDirectory(dirPath: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* ディレクトリをコピー(除外パターン対応)
|
|
27
|
+
*/
|
|
28
|
+
export declare function copyDirectory(src: string, dest: string, options?: {
|
|
29
|
+
exclude?: string[];
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* テンプレート変数を展開
|
|
33
|
+
*/
|
|
34
|
+
export declare function processTemplateFile(filePath: string, variables: Record<string, string>): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* 利用可能なプリセット一覧を取得
|
|
37
|
+
*/
|
|
38
|
+
export declare function getAvailablePresets(): Promise<string[]>;
|
|
39
|
+
//# sourceMappingURL=file-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/lib/file-system.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAS7D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
/**
|
|
6
|
+
* パッケージルートからの相対パスを解決
|
|
7
|
+
*/
|
|
8
|
+
export function getPackageRoot() {
|
|
9
|
+
// dist/lib/file-system.js から packages/cli/ へ
|
|
10
|
+
return path.resolve(__dirname, "../..");
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* プリセットディレクトリのパスを取得
|
|
14
|
+
*/
|
|
15
|
+
export function getPresetsPath() {
|
|
16
|
+
return path.join(getPackageRoot(), "presets");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* テンプレートディレクトリのパスを取得
|
|
20
|
+
*/
|
|
21
|
+
export function getTemplatesPath() {
|
|
22
|
+
return path.join(getPackageRoot(), "templates");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* スキャフォールドディレクトリのパスを取得
|
|
26
|
+
*/
|
|
27
|
+
export function getScaffoldsPath() {
|
|
28
|
+
return path.join(getPackageRoot(), "scaffolds");
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 特定のプリセットのパスを取得
|
|
32
|
+
*/
|
|
33
|
+
export function getPresetPath(presetName) {
|
|
34
|
+
return path.join(getPresetsPath(), presetName);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* ディレクトリをバックアップ
|
|
38
|
+
*/
|
|
39
|
+
export async function backupDirectory(dirPath) {
|
|
40
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
41
|
+
const backupPath = `${dirPath}.backup-${timestamp}`;
|
|
42
|
+
await fs.copy(dirPath, backupPath);
|
|
43
|
+
return backupPath;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* ディレクトリをコピー(除外パターン対応)
|
|
47
|
+
*/
|
|
48
|
+
export async function copyDirectory(src, dest, options = {}) {
|
|
49
|
+
const { exclude = [] } = options;
|
|
50
|
+
await fs.copy(src, dest, {
|
|
51
|
+
filter: (srcPath) => {
|
|
52
|
+
const relativePath = path.relative(src, srcPath);
|
|
53
|
+
return !exclude.some((pattern) => relativePath.includes(pattern));
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* テンプレート変数を展開
|
|
59
|
+
*/
|
|
60
|
+
export async function processTemplateFile(filePath, variables) {
|
|
61
|
+
let content = await fs.readFile(filePath, "utf-8");
|
|
62
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
63
|
+
const pattern = new RegExp(`\\{\\{${key}\\}\\}`, "g");
|
|
64
|
+
content = content.replace(pattern, value);
|
|
65
|
+
}
|
|
66
|
+
return content;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* 利用可能なプリセット一覧を取得
|
|
70
|
+
*/
|
|
71
|
+
export async function getAvailablePresets() {
|
|
72
|
+
const presetsPath = getPresetsPath();
|
|
73
|
+
if (!(await fs.pathExists(presetsPath))) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const entries = await fs.readdir(presetsPath, { withFileTypes: true });
|
|
77
|
+
return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=file-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/lib/file-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const McpServerConfigSchema: z.ZodObject<{
|
|
3
|
+
type: z.ZodOptional<z.ZodString>;
|
|
4
|
+
command: z.ZodOptional<z.ZodString>;
|
|
5
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
6
|
+
url: z.ZodOptional<z.ZodString>;
|
|
7
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
8
|
+
}, z.core.$loose>;
|
|
9
|
+
declare const McpConfigSchema: z.ZodObject<{
|
|
10
|
+
mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
11
|
+
type: z.ZodOptional<z.ZodString>;
|
|
12
|
+
command: z.ZodOptional<z.ZodString>;
|
|
13
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
14
|
+
url: z.ZodOptional<z.ZodString>;
|
|
15
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
16
|
+
}, z.core.$loose>>>;
|
|
17
|
+
}, z.core.$loose>;
|
|
18
|
+
export type McpServerConfig = z.infer<typeof McpServerConfigSchema>;
|
|
19
|
+
export type McpConfig = z.infer<typeof McpConfigSchema>;
|
|
20
|
+
export interface MergeMcpConfigResult {
|
|
21
|
+
config: McpConfig;
|
|
22
|
+
added: string[];
|
|
23
|
+
overwritten: string[];
|
|
24
|
+
preserved: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface LoadMcpConfigResult {
|
|
27
|
+
success: boolean;
|
|
28
|
+
config?: McpConfig;
|
|
29
|
+
error?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SetupMcpConfigResult {
|
|
32
|
+
success: boolean;
|
|
33
|
+
result?: MergeMcpConfigResult;
|
|
34
|
+
error?: string;
|
|
35
|
+
skipped?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export declare function getTemplateMcpConfig(): Promise<McpConfig | null>;
|
|
38
|
+
export declare function loadExistingMcpConfig(targetDir: string): Promise<LoadMcpConfigResult>;
|
|
39
|
+
export declare function mergeMcpConfigs(existing: McpConfig | null, template: McpConfig): MergeMcpConfigResult;
|
|
40
|
+
export declare function writeMcpConfig(targetDir: string, config: McpConfig): Promise<void>;
|
|
41
|
+
export declare function setupMcpConfig(targetDir: string): Promise<SetupMcpConfigResult>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=mcp-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,qBAAqB;;;;;;iBAMX,CAAC;AAEjB,QAAA,MAAM,eAAe;;;;;;;;iBAEL,CAAC;AAGjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAOtE;AAED,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2B3F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,oBAAoB,CAqCrG;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxF;AAED,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsBrF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { getScaffoldsPath } from "./file-system.js";
|
|
5
|
+
// Zodスキーマ定義
|
|
6
|
+
const McpServerConfigSchema = z.object({
|
|
7
|
+
type: z.string().optional(),
|
|
8
|
+
command: z.string().optional(),
|
|
9
|
+
args: z.array(z.string()).optional(),
|
|
10
|
+
url: z.string().optional(),
|
|
11
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
12
|
+
}).passthrough();
|
|
13
|
+
const McpConfigSchema = z.object({
|
|
14
|
+
mcpServers: z.record(z.string(), McpServerConfigSchema).optional(),
|
|
15
|
+
}).passthrough();
|
|
16
|
+
export async function getTemplateMcpConfig() {
|
|
17
|
+
const scaffoldsPath = getScaffoldsPath();
|
|
18
|
+
const templatePath = path.join(scaffoldsPath, ".mcp.json");
|
|
19
|
+
if (!(await fs.pathExists(templatePath))) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return fs.readJson(templatePath);
|
|
23
|
+
}
|
|
24
|
+
export async function loadExistingMcpConfig(targetDir) {
|
|
25
|
+
const mcpPath = path.join(targetDir, ".mcp.json");
|
|
26
|
+
// ファイルが存在しない場合
|
|
27
|
+
if (!(await fs.pathExists(mcpPath))) {
|
|
28
|
+
return { success: true, config: undefined };
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const rawConfig = await fs.readJson(mcpPath);
|
|
32
|
+
// Zodバリデーション
|
|
33
|
+
const parseResult = McpConfigSchema.safeParse(rawConfig);
|
|
34
|
+
if (!parseResult.success) {
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
error: `設定ファイルの形式が不正です: ${parseResult.error.message}`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return { success: true, config: parseResult.data };
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return {
|
|
44
|
+
success: false,
|
|
45
|
+
error: `ファイルの読み込みに失敗しました: ${error instanceof Error ? error.message : String(error)}`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function mergeMcpConfigs(existing, template) {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
const added = [];
|
|
52
|
+
const overwritten = [];
|
|
53
|
+
const preserved = [];
|
|
54
|
+
// 既存設定をベースにする(mcpServers以外のプロパティも保持)
|
|
55
|
+
const baseConfig = existing ? Object.assign({}, existing) : {};
|
|
56
|
+
const existingServers = (_a = existing === null || existing === void 0 ? void 0 : existing.mcpServers) !== null && _a !== void 0 ? _a : {};
|
|
57
|
+
const templateServers = (_b = template.mcpServers) !== null && _b !== void 0 ? _b : {};
|
|
58
|
+
const mergedServers = {};
|
|
59
|
+
// 既存サーバーのうち、テンプレートにないものを保持
|
|
60
|
+
for (const serverName of Object.keys(existingServers)) {
|
|
61
|
+
if (!(serverName in templateServers)) {
|
|
62
|
+
mergedServers[serverName] = existingServers[serverName];
|
|
63
|
+
preserved.push(serverName);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// テンプレートのサーバーを追加/上書き
|
|
67
|
+
for (const serverName of Object.keys(templateServers)) {
|
|
68
|
+
if (serverName in existingServers) {
|
|
69
|
+
overwritten.push(serverName);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
added.push(serverName);
|
|
73
|
+
}
|
|
74
|
+
mergedServers[serverName] = templateServers[serverName];
|
|
75
|
+
}
|
|
76
|
+
// ベース設定にマージしたサーバー設定を適用
|
|
77
|
+
return {
|
|
78
|
+
config: Object.assign(Object.assign({}, baseConfig), { mcpServers: mergedServers }),
|
|
79
|
+
added,
|
|
80
|
+
overwritten,
|
|
81
|
+
preserved,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export async function writeMcpConfig(targetDir, config) {
|
|
85
|
+
const mcpPath = path.join(targetDir, ".mcp.json");
|
|
86
|
+
await fs.writeJson(mcpPath, config, { spaces: "\t" });
|
|
87
|
+
}
|
|
88
|
+
export async function setupMcpConfig(targetDir) {
|
|
89
|
+
var _a;
|
|
90
|
+
// テンプレート取得
|
|
91
|
+
const template = await getTemplateMcpConfig();
|
|
92
|
+
if (!template) {
|
|
93
|
+
return { success: true, skipped: true };
|
|
94
|
+
}
|
|
95
|
+
// 既存設定の読み込み
|
|
96
|
+
const loadResult = await loadExistingMcpConfig(targetDir);
|
|
97
|
+
if (!loadResult.success) {
|
|
98
|
+
// パースエラーの場合、既存ファイルを保護するためエラーを返す
|
|
99
|
+
return {
|
|
100
|
+
success: false,
|
|
101
|
+
error: loadResult.error,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// マージと書き込み
|
|
105
|
+
const result = mergeMcpConfigs((_a = loadResult.config) !== null && _a !== void 0 ? _a : null, template);
|
|
106
|
+
await writeMcpConfig(targetDir, result.config);
|
|
107
|
+
return { success: true, result };
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=mcp-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/lib/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.test.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-config.test.ts"],"names":[],"mappings":""}
|