@sk8metal/michi-cli 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +465 -0
  3. package/dist/scripts/config/config-schema.d.ts +707 -0
  4. package/dist/scripts/config/config-schema.d.ts.map +1 -0
  5. package/dist/scripts/config/config-schema.js +100 -0
  6. package/dist/scripts/config/config-schema.js.map +1 -0
  7. package/dist/scripts/config-interactive.d.ts +10 -0
  8. package/dist/scripts/config-interactive.d.ts.map +1 -0
  9. package/dist/scripts/config-interactive.js +357 -0
  10. package/dist/scripts/config-interactive.js.map +1 -0
  11. package/dist/scripts/confluence-sync.d.ts +54 -0
  12. package/dist/scripts/confluence-sync.d.ts.map +1 -0
  13. package/dist/scripts/confluence-sync.js +407 -0
  14. package/dist/scripts/confluence-sync.js.map +1 -0
  15. package/dist/scripts/create-project.d.ts +12 -0
  16. package/dist/scripts/create-project.d.ts.map +1 -0
  17. package/dist/scripts/create-project.js +244 -0
  18. package/dist/scripts/create-project.js.map +1 -0
  19. package/dist/scripts/jira-sync.d.ts +39 -0
  20. package/dist/scripts/jira-sync.d.ts.map +1 -0
  21. package/dist/scripts/jira-sync.js +549 -0
  22. package/dist/scripts/jira-sync.js.map +1 -0
  23. package/dist/scripts/list-projects.d.ts +7 -0
  24. package/dist/scripts/list-projects.d.ts.map +1 -0
  25. package/dist/scripts/list-projects.js +61 -0
  26. package/dist/scripts/list-projects.js.map +1 -0
  27. package/dist/scripts/markdown-to-confluence.d.ts +19 -0
  28. package/dist/scripts/markdown-to-confluence.d.ts.map +1 -0
  29. package/dist/scripts/markdown-to-confluence.js +121 -0
  30. package/dist/scripts/markdown-to-confluence.js.map +1 -0
  31. package/dist/scripts/multi-project-estimate.d.ts +27 -0
  32. package/dist/scripts/multi-project-estimate.d.ts.map +1 -0
  33. package/dist/scripts/multi-project-estimate.js +202 -0
  34. package/dist/scripts/multi-project-estimate.js.map +1 -0
  35. package/dist/scripts/phase-runner.d.ts +19 -0
  36. package/dist/scripts/phase-runner.d.ts.map +1 -0
  37. package/dist/scripts/phase-runner.js +260 -0
  38. package/dist/scripts/phase-runner.js.map +1 -0
  39. package/dist/scripts/pr-automation.d.ts +12 -0
  40. package/dist/scripts/pr-automation.d.ts.map +1 -0
  41. package/dist/scripts/pr-automation.js +45 -0
  42. package/dist/scripts/pr-automation.js.map +1 -0
  43. package/dist/scripts/pre-flight-check.d.ts +15 -0
  44. package/dist/scripts/pre-flight-check.d.ts.map +1 -0
  45. package/dist/scripts/pre-flight-check.js +244 -0
  46. package/dist/scripts/pre-flight-check.js.map +1 -0
  47. package/dist/scripts/resource-dashboard.d.ts +7 -0
  48. package/dist/scripts/resource-dashboard.d.ts.map +1 -0
  49. package/dist/scripts/resource-dashboard.js +100 -0
  50. package/dist/scripts/resource-dashboard.js.map +1 -0
  51. package/dist/scripts/setup-existing-project.d.ts +13 -0
  52. package/dist/scripts/setup-existing-project.d.ts.map +1 -0
  53. package/dist/scripts/setup-existing-project.js +334 -0
  54. package/dist/scripts/setup-existing-project.js.map +1 -0
  55. package/dist/scripts/utils/config-loader.d.ts +20 -0
  56. package/dist/scripts/utils/config-loader.d.ts.map +1 -0
  57. package/dist/scripts/utils/config-loader.js +291 -0
  58. package/dist/scripts/utils/config-loader.js.map +1 -0
  59. package/dist/scripts/utils/config-validator.d.ts +34 -0
  60. package/dist/scripts/utils/config-validator.d.ts.map +1 -0
  61. package/dist/scripts/utils/config-validator.js +286 -0
  62. package/dist/scripts/utils/config-validator.js.map +1 -0
  63. package/dist/scripts/utils/confluence-hierarchy.d.ts +47 -0
  64. package/dist/scripts/utils/confluence-hierarchy.d.ts.map +1 -0
  65. package/dist/scripts/utils/confluence-hierarchy.js +516 -0
  66. package/dist/scripts/utils/confluence-hierarchy.js.map +1 -0
  67. package/dist/scripts/utils/feature-name-validator.d.ts +25 -0
  68. package/dist/scripts/utils/feature-name-validator.d.ts.map +1 -0
  69. package/dist/scripts/utils/feature-name-validator.js +113 -0
  70. package/dist/scripts/utils/feature-name-validator.js.map +1 -0
  71. package/dist/scripts/utils/project-meta.d.ts +23 -0
  72. package/dist/scripts/utils/project-meta.d.ts.map +1 -0
  73. package/dist/scripts/utils/project-meta.js +50 -0
  74. package/dist/scripts/utils/project-meta.js.map +1 -0
  75. package/dist/scripts/validate-phase.d.ts +17 -0
  76. package/dist/scripts/validate-phase.d.ts.map +1 -0
  77. package/dist/scripts/validate-phase.js +234 -0
  78. package/dist/scripts/validate-phase.js.map +1 -0
  79. package/dist/scripts/workflow-orchestrator.d.ts +35 -0
  80. package/dist/scripts/workflow-orchestrator.d.ts.map +1 -0
  81. package/dist/scripts/workflow-orchestrator.js +130 -0
  82. package/dist/scripts/workflow-orchestrator.js.map +1 -0
  83. package/dist/src/cli.d.ts +11 -0
  84. package/dist/src/cli.d.ts.map +1 -0
  85. package/dist/src/cli.js +229 -0
  86. package/dist/src/cli.js.map +1 -0
  87. package/docs/config-reference.md +666 -0
  88. package/docs/customization-guide.md +432 -0
  89. package/docs/multi-project.md +233 -0
  90. package/docs/new-project-setup.md +576 -0
  91. package/docs/phase-automation.md +361 -0
  92. package/docs/quick-reference.md +291 -0
  93. package/docs/setup.md +404 -0
  94. package/docs/tasks-template.md +550 -0
  95. package/docs/testing.md +202 -0
  96. package/docs/workflow.md +342 -0
  97. package/env.example +44 -0
  98. package/mcp.json.example +14 -0
  99. package/package.json +97 -0
@@ -0,0 +1,100 @@
1
+ /**
2
+ * リソースダッシュボード生成
3
+ * プロジェクト横断のリソース管理ダッシュボードをConfluenceに作成
4
+ */
5
+ import { Octokit } from '@octokit/rest';
6
+ import { config } from 'dotenv';
7
+ config();
8
+ /**
9
+ * HTMLエスケープ
10
+ */
11
+ function escapeHtml(text) {
12
+ return text
13
+ .replace(/&/g, '&')
14
+ .replace(/</g, '&lt;')
15
+ .replace(/>/g, '&gt;')
16
+ .replace(/"/g, '&quot;')
17
+ .replace(/'/g, '&#039;');
18
+ }
19
+ async function createResourceDashboard() {
20
+ const token = process.env.GITHUB_TOKEN;
21
+ const org = process.env.GITHUB_ORG;
22
+ if (!token || !org) {
23
+ throw new Error('Missing GitHub credentials');
24
+ }
25
+ const octokit = new Octokit({ auth: token });
26
+ const projects = [];
27
+ console.log('Gathering project resources...');
28
+ const { data: repos } = await octokit.repos.listForOrg({ org });
29
+ for (const repo of repos) {
30
+ try {
31
+ const { data } = await octokit.repos.getContent({
32
+ owner: org,
33
+ repo: repo.name,
34
+ path: '.kiro/project.json'
35
+ });
36
+ if ('content' in data) {
37
+ const content = Buffer.from(data.content, 'base64').toString('utf-8');
38
+ const meta = JSON.parse(content);
39
+ projects.push({
40
+ projectName: meta.projectName,
41
+ projectId: meta.projectId,
42
+ status: meta.status,
43
+ team: meta.team,
44
+ progress: 0 // TODO: JIRAから進捗を取得
45
+ });
46
+ }
47
+ }
48
+ catch (error) {
49
+ console.warn(`⚠️ Skipping ${repo.name}:`, error instanceof Error ? error.message : 'Unknown error');
50
+ continue;
51
+ }
52
+ }
53
+ // Confluenceページコンテンツ生成
54
+ const dashboardContent = `
55
+ <h2>プロジェクトリソースダッシュボード</h2>
56
+
57
+ <p>更新日時: ${new Date().toLocaleString('ja-JP')}</p>
58
+
59
+ <table>
60
+ <tr>
61
+ <th>プロジェクト</th>
62
+ <th>ID</th>
63
+ <th>ステータス</th>
64
+ <th>チーム</th>
65
+ <th>進捗</th>
66
+ </tr>
67
+ ${projects.map(p => `
68
+ <tr>
69
+ <td>${escapeHtml(p.projectName)}</td>
70
+ <td>${escapeHtml(p.projectId)}</td>
71
+ <td>${escapeHtml(p.status)}</td>
72
+ <td>${escapeHtml(p.team.join(', '))}</td>
73
+ <td>${p.progress}%</td>
74
+ </tr>
75
+ `).join('')}
76
+ </table>
77
+
78
+ <p><strong>合計</strong>: ${projects.length} プロジェクト</p>
79
+ `.trim();
80
+ console.log('Dashboard content generated');
81
+ console.log(dashboardContent);
82
+ // TODO: Confluenceに保存
83
+ // const confluenceConfig = getConfluenceConfig();
84
+ // const client = new ConfluenceClient(confluenceConfig);
85
+ // await client.createPage('PRD', 'プロジェクトリソースダッシュボード', dashboardContent);
86
+ }
87
+ // CLI実行
88
+ if (import.meta.url === `file://${process.argv[1]}`) {
89
+ createResourceDashboard()
90
+ .then(() => {
91
+ console.log('✅ Dashboard created');
92
+ process.exit(0);
93
+ })
94
+ .catch((error) => {
95
+ console.error('❌ Failed:', error.message);
96
+ process.exit(1);
97
+ });
98
+ }
99
+ export { createResourceDashboard };
100
+ //# sourceMappingURL=resource-dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-dashboard.js","sourceRoot":"","sources":["../../scripts/resource-dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * 既存プロジェクトにMichiワークフローを追加するスクリプト
4
+ *
5
+ * 使い方:
6
+ * cd /path/to/existing-repo
7
+ * npx tsx /path/to/michi/scripts/setup-existing-project.ts \
8
+ * --michi-path /path/to/michi \
9
+ * --project-name "既存プロジェクト" \
10
+ * --jira-key "EXIST"
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=setup-existing-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-existing-project.d.ts","sourceRoot":"","sources":["../../scripts/setup-existing-project.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
@@ -0,0 +1,334 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * 既存プロジェクトにMichiワークフローを追加するスクリプト
4
+ *
5
+ * 使い方:
6
+ * cd /path/to/existing-repo
7
+ * npx tsx /path/to/michi/scripts/setup-existing-project.ts \
8
+ * --michi-path /path/to/michi \
9
+ * --project-name "既存プロジェクト" \
10
+ * --jira-key "EXIST"
11
+ */
12
+ import { cpSync, existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
13
+ import { resolve, join, basename } from 'path';
14
+ import { execSync } from 'child_process';
15
+ function parseArgs() {
16
+ const args = process.argv.slice(2);
17
+ const config = {};
18
+ for (let i = 0; i < args.length; i += 2) {
19
+ const key = args[i].replace(/^--/, '');
20
+ const value = args[i + 1];
21
+ switch (key) {
22
+ case 'michi-path':
23
+ config.michiPath = value;
24
+ break;
25
+ case 'project-name':
26
+ config.projectName = value;
27
+ break;
28
+ case 'jira-key':
29
+ config.jiraKey = value;
30
+ break;
31
+ }
32
+ }
33
+ // デフォルト値
34
+ if (!config.michiPath) {
35
+ config.michiPath = resolve(__dirname, '..');
36
+ }
37
+ // 必須フィールドチェック
38
+ if (!config.projectName || !config.jiraKey) {
39
+ console.error('Missing required parameters');
40
+ console.error('Usage: tsx setup-existing-project.ts --project-name <name> --jira-key <key> [--michi-path <path>]');
41
+ process.exit(1);
42
+ }
43
+ return config;
44
+ }
45
+ async function setupExistingProject(config) {
46
+ const currentDir = process.cwd();
47
+ const projectId = basename(currentDir);
48
+ console.log('🚀 既存プロジェクトにMichiワークフローを追加');
49
+ console.log(` プロジェクト: ${config.projectName}`);
50
+ console.log(` ディレクトリ: ${currentDir}`);
51
+ console.log(` Michiパス: ${config.michiPath}`);
52
+ console.log('');
53
+ // Step 1: cc-sdd導入確認
54
+ console.log('📦 Step 1: Checking cc-sdd installation...');
55
+ if (!existsSync('.cursor/commands/kiro')) {
56
+ console.log(' Installing cc-sdd...');
57
+ execSync('npx cc-sdd@latest --cursor --lang ja --yes', { stdio: 'inherit' });
58
+ console.log(' ✅ cc-sdd installed');
59
+ }
60
+ else {
61
+ console.log(' ✅ cc-sdd already installed');
62
+ }
63
+ // Step 2: .kiro ディレクトリ作成
64
+ console.log('\n📁 Step 2: Creating .kiro directory structure...');
65
+ mkdirSync('.kiro/settings/templates', { recursive: true });
66
+ mkdirSync('.kiro/steering', { recursive: true });
67
+ mkdirSync('.kiro/specs', { recursive: true });
68
+ console.log(' ✅ Directory structure created');
69
+ // Step 3: プロジェクトメタデータ作成
70
+ console.log('\n📝 Step 3: Creating project metadata...');
71
+ // GitHub URLを取得(既存リポジトリから)
72
+ let repoUrl = '';
73
+ try {
74
+ repoUrl = execSync('git config --get remote.origin.url', { encoding: 'utf-8' }).trim();
75
+ // SSH形式をHTTPS形式に変換
76
+ if (repoUrl.startsWith('git@github.com:')) {
77
+ repoUrl = repoUrl.replace('git@github.com:', 'https://github.com/').replace('.git', '');
78
+ }
79
+ }
80
+ catch {
81
+ repoUrl = `https://github.com/org/${projectId}`;
82
+ }
83
+ const labels = config.labels || (() => {
84
+ // プロジェクトIDからプロジェクトラベル生成
85
+ const projectLabel = projectId.toLowerCase().replace(/[^a-z0-9-]/g, '');
86
+ const labelSet = new Set([`project:${projectLabel}`]);
87
+ // ハイフンが存在する場合のみサービスラベルを生成
88
+ if (projectId.includes('-')) {
89
+ const parts = projectId.split('-');
90
+ const servicePart = parts[parts.length - 1];
91
+ const serviceLabel = servicePart.toLowerCase().replace(/[^a-z0-9-]/g, '');
92
+ // サービスラベルがプロジェクトラベルと異なる場合のみ追加
93
+ if (serviceLabel !== projectLabel) {
94
+ labelSet.add(`service:${serviceLabel}`);
95
+ }
96
+ }
97
+ return Array.from(labelSet);
98
+ })();
99
+ const projectJson = {
100
+ projectId,
101
+ projectName: config.projectName,
102
+ jiraProjectKey: config.jiraKey,
103
+ confluenceLabels: labels,
104
+ status: 'active',
105
+ team: [],
106
+ stakeholders: ['@企画', '@部長'],
107
+ repository: repoUrl,
108
+ description: `${config.projectName}の開発`
109
+ };
110
+ writeFileSync('.kiro/project.json', JSON.stringify(projectJson, null, 2));
111
+ console.log(' ✅ project.json created');
112
+ // Step 4: Michiから共通ルールをコピー
113
+ console.log('\n📋 Step 4: Copying common rules from Michi...');
114
+ const rulesToCopy = [
115
+ 'multi-project.mdc',
116
+ 'github-ssot.mdc',
117
+ 'atlassian-mcp.mdc'
118
+ ];
119
+ for (const rule of rulesToCopy) {
120
+ const src = join(config.michiPath, '.cursor/rules', rule);
121
+ const dest = join(currentDir, '.cursor/rules', rule);
122
+ if (existsSync(src)) {
123
+ cpSync(src, dest);
124
+ console.log(` ✅ ${rule}`);
125
+ }
126
+ else {
127
+ console.log(` ⚠️ ${rule} not found in Michi`);
128
+ }
129
+ }
130
+ // Step 5: カスタムコマンドをコピー
131
+ console.log('\n🔧 Step 5: Copying custom commands...');
132
+ const commandsToCopy = [
133
+ 'confluence-sync.md',
134
+ 'project-switch.md'
135
+ ];
136
+ for (const cmd of commandsToCopy) {
137
+ const src = join(config.michiPath, '.cursor/commands/kiro', cmd);
138
+ const dest = join(currentDir, '.cursor/commands/kiro', cmd);
139
+ if (existsSync(src)) {
140
+ cpSync(src, dest);
141
+ console.log(` ✅ ${cmd}`);
142
+ }
143
+ }
144
+ // Step 6: Steeringテンプレートをコピー
145
+ console.log('\n📚 Step 6: Copying steering templates...');
146
+ const steeringDir = join(config.michiPath, '.kiro/steering');
147
+ if (existsSync(steeringDir)) {
148
+ cpSync(steeringDir, '.kiro/steering', { recursive: true });
149
+ console.log(' ✅ product.md, tech.md, structure.md');
150
+ }
151
+ // Step 7: テンプレートをコピー
152
+ console.log('\n📄 Step 7: Copying spec templates...');
153
+ const templatesDir = join(config.michiPath, '.kiro/settings/templates');
154
+ if (existsSync(templatesDir)) {
155
+ cpSync(templatesDir, '.kiro/settings/templates', { recursive: true });
156
+ console.log(' ✅ requirements.md, design.md, tasks.md');
157
+ }
158
+ // Step 8: CLIツールのセットアップ案内
159
+ console.log('\n⚙️ Step 8: Setting up Michi CLI...');
160
+ console.log(' ✅ Michi CLI setup complete!');
161
+ console.log('');
162
+ console.log(' 📋 使用方法:');
163
+ console.log(' npx @michi/cli jira:sync <feature>');
164
+ console.log(' npx @michi/cli confluence:sync <feature> requirements');
165
+ console.log(' npx @michi/cli phase:run <feature> tasks');
166
+ console.log('');
167
+ console.log(' または、グローバルインストール:');
168
+ console.log(' npm install -g @michi/cli');
169
+ console.log(' michi jira:sync <feature>');
170
+ // Step 9: package.json と tsconfig.json をコピー
171
+ console.log('\n📦 Step 9: Setting up package.json and TypeScript...');
172
+ // 既存の package.json があるかチェック
173
+ const hasPackageJson = existsSync('package.json');
174
+ if (!hasPackageJson) {
175
+ // package.json がない場合はコピー
176
+ const src = join(config.michiPath, 'package.json');
177
+ if (existsSync(src)) {
178
+ cpSync(src, 'package.json');
179
+ console.log(' ✅ package.json created');
180
+ }
181
+ }
182
+ else {
183
+ // 既存の package.json にスクリプトを追加
184
+ console.log(' ℹ️ Existing package.json found');
185
+ console.log(' 📝 手動で以下のスクリプトを追加してください:');
186
+ console.log('');
187
+ console.log(' "scripts": {');
188
+ console.log(' "jira:sync": "npx @michi/cli jira:sync",');
189
+ console.log(' "confluence:sync": "npx @michi/cli confluence:sync",');
190
+ console.log(' "phase:run": "npx @michi/cli phase:run",');
191
+ console.log(' "validate:phase": "npx @michi/cli validate:phase",');
192
+ console.log(' "preflight": "npx @michi/cli preflight",');
193
+ console.log(' "project:list": "npx @michi/cli project:list",');
194
+ console.log(' "project:dashboard": "npx @michi/cli project:dashboard",');
195
+ console.log(' "workflow:run": "npx @michi/cli workflow:run"');
196
+ console.log(' }');
197
+ console.log('');
198
+ }
199
+ // tsconfig.json をコピー
200
+ if (!existsSync('tsconfig.json')) {
201
+ const src = join(config.michiPath, 'tsconfig.json');
202
+ if (existsSync(src)) {
203
+ cpSync(src, 'tsconfig.json');
204
+ console.log(' ✅ tsconfig.json created');
205
+ }
206
+ }
207
+ else {
208
+ console.log(' ℹ️ Existing tsconfig.json found (kept)');
209
+ }
210
+ // Step 10: .env テンプレート作成
211
+ console.log('\n🔐 Step 10: Creating .env template...');
212
+ const envTemplate = `# Atlassian設定(MCP + REST API共通)
213
+ ATLASSIAN_URL=https://your-domain.atlassian.net
214
+ ATLASSIAN_EMAIL=your-email@company.com
215
+ ATLASSIAN_API_TOKEN=your-token-here
216
+
217
+ # GitHub設定
218
+ GITHUB_ORG=your-org
219
+ GITHUB_TOKEN=ghp_xxx
220
+ GITHUB_REPO=${repoUrl.replace('https://github.com/', '')}
221
+
222
+ # Confluence共有スペース
223
+ CONFLUENCE_PRD_SPACE=PRD
224
+ CONFLUENCE_QA_SPACE=QA
225
+ CONFLUENCE_RELEASE_SPACE=RELEASE
226
+
227
+ # JIRAプロジェクトキー
228
+ JIRA_PROJECT_KEYS=${config.jiraKey}
229
+ `;
230
+ if (!existsSync('.env')) {
231
+ writeFileSync('.env', envTemplate);
232
+ console.log(' ✅ .env template created');
233
+ }
234
+ else {
235
+ console.log(' ℹ️ .env already exists (kept)');
236
+ }
237
+ // Step 11: README.md を更新(オプション)
238
+ console.log('\n📖 Step 11: Updating documentation...');
239
+ const readmePath = 'README.md';
240
+ if (existsSync(readmePath)) {
241
+ const currentReadme = readFileSync(readmePath, 'utf-8');
242
+ // Michiワークフロー情報を追加
243
+ const workflowSection = `
244
+
245
+ ## AI開発ワークフロー
246
+
247
+ このプロジェクトは Michi AI開発フロー自動化システムを使用しています。
248
+
249
+ ### 開発フロー
250
+
251
+ \`\`\`
252
+ /kiro:spec-init <機能説明>
253
+ → /kiro:spec-requirements <feature>
254
+ → /kiro:spec-design <feature>
255
+ → /kiro:spec-tasks <feature>
256
+ → /kiro:spec-impl <feature> <tasks>
257
+ \`\`\`
258
+
259
+ ### Confluence/JIRA連携
260
+
261
+ \`\`\`bash
262
+ npm run confluence:sync <feature> # Confluence同期
263
+ npm run jira:sync <feature> # JIRA連携
264
+ npm run github:create-pr <branch> # PR作成
265
+ \`\`\`
266
+
267
+ 詳細: [Michi Documentation](https://github.com/sk8metalme/michi)
268
+ `;
269
+ if (!currentReadme.includes('AI開発ワークフロー')) {
270
+ writeFileSync(readmePath, currentReadme + workflowSection);
271
+ console.log(' ✅ README.md updated');
272
+ }
273
+ else {
274
+ console.log(' ℹ️ README.md already has workflow section');
275
+ }
276
+ }
277
+ // Step 12: .gitignore 更新
278
+ console.log('\n🚫 Step 12: Updating .gitignore...');
279
+ const gitignoreEntries = [
280
+ '# AI Development Workflow',
281
+ 'node_modules/',
282
+ '.env',
283
+ '.env.local',
284
+ 'dist/',
285
+ '*.log'
286
+ ];
287
+ let gitignore = '';
288
+ if (existsSync('.gitignore')) {
289
+ gitignore = readFileSync('.gitignore', 'utf-8');
290
+ }
291
+ let updated = false;
292
+ for (const entry of gitignoreEntries) {
293
+ if (!gitignore.includes(entry)) {
294
+ gitignore += `\n${entry}`;
295
+ updated = true;
296
+ }
297
+ }
298
+ if (updated) {
299
+ writeFileSync('.gitignore', gitignore);
300
+ console.log(' ✅ .gitignore updated');
301
+ }
302
+ else {
303
+ console.log(' ℹ️ .gitignore already up to date');
304
+ }
305
+ // 完了メッセージ
306
+ console.log('\n');
307
+ console.log('🎉 セットアップ完了!');
308
+ console.log('');
309
+ console.log('次のステップ:');
310
+ console.log(' 1. .env ファイルを編集して認証情報を設定');
311
+ console.log(' 2. package.json が既存の場合、スクリプトを手動追加');
312
+ console.log(' 3. npm install で依存関係をインストール');
313
+ console.log(' 4. jj commit でセットアップをコミット');
314
+ console.log(' 5. Cursor で開く: cursor .');
315
+ console.log(' 6. /kiro:spec-init <機能説明> で開発開始');
316
+ console.log('');
317
+ console.log('作成されたファイル:');
318
+ console.log(' - .kiro/project.json');
319
+ console.log(' - .cursor/rules/ (3ファイル)');
320
+ console.log(' - .cursor/commands/kiro/ (2ファイル)');
321
+ console.log(' - .kiro/steering/ (3ファイル)');
322
+ console.log(' - .kiro/settings/templates/ (3ファイル)');
323
+ console.log(' - scripts/ (7+ ファイル)');
324
+ console.log(' - package.json (新規の場合)');
325
+ console.log(' - tsconfig.json (新規の場合)');
326
+ console.log(' - .env (テンプレート)');
327
+ }
328
+ // 実行
329
+ const config = parseArgs();
330
+ setupExistingProject(config).catch(error => {
331
+ console.error('❌ Error:', error.message);
332
+ process.exit(1);
333
+ });
334
+ //# sourceMappingURL=setup-existing-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-existing-project.js","sourceRoot":"","sources":["../../scripts/setup-existing-project.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAyB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1B,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,YAAY;gBACf,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC3B,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,MAAM;QACV,CAAC;IACH,CAAC;IAED,SAAS;IACT,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc;IACd,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,mGAAmG,CAAC,CAAC;QACnH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,MAAqB,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAAmB;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,QAAQ,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,SAAS,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAEhD,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAEzD,2BAA2B;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvF,mBAAmB;QACnB,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,0BAA0B,SAAS,EAAE,CAAC;IAClD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;QACpC,wBAAwB;QACxB,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC;QAEtD,0BAA0B;QAC1B,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAE1E,8BAA8B;YAC9B,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;gBAClC,QAAQ,CAAC,GAAG,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,WAAW,GAAG;QAClB,SAAS;QACT,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,OAAO;QAC9B,gBAAgB,EAAE,MAAM;QACxB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QAC5B,UAAU,EAAE,OAAO;QACnB,WAAW,EAAE,GAAG,MAAM,CAAC,WAAW,KAAK;KACxC,CAAC;IAEF,aAAa,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG;QAClB,mBAAmB;QACnB,iBAAiB;QACjB,mBAAmB;KACpB,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,qBAAqB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG;QACrB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC7D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED,qBAAqB;IACrB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAEtD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,YAAY,EAAE,0BAA0B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAE/C,4CAA4C;IAC5C,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IAEtE,4BAA4B;IAC5B,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAElD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,yBAAyB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACpD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,MAAM,WAAW,GAAG;;;;;;;;cAQR,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;;;;;;;;oBAQpC,MAAM,CAAC,OAAO;CACjC,CAAC;IAEA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,gCAAgC;IAChC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,WAAW,CAAC;IAC/B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAExD,mBAAmB;QACnB,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3B,CAAC;QAEE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpD,MAAM,gBAAgB,GAAG;QACvB,2BAA2B;QAC3B,eAAe;QACf,MAAM;QACN,YAAY;QACZ,OAAO;QACP,OAAO;KACR,CAAC;IAEF,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACtD,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACnC,CAAC;AAED,KAAK;AACL,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACzC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 設定読み込み・マージ機能
3
+ * デフォルト設定 + プロジェクト固有設定をマージ
4
+ */
5
+ import { type AppConfig } from '../config/config-schema.js';
6
+ /**
7
+ * 設定を読み込んでマージ
8
+ *
9
+ * マージ順序:
10
+ * 1. デフォルト設定
11
+ * 2. プロジェクト固有設定(上書き)
12
+ * 3. 環境変数(最終上書き、既存の動作を維持)
13
+ */
14
+ export declare function loadConfig(projectRoot?: string): AppConfig;
15
+ export declare function getConfig(projectRoot?: string): AppConfig;
16
+ /**
17
+ * 設定キャッシュをクリア(テスト用)
18
+ */
19
+ export declare function clearConfigCache(): void;
20
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../scripts/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAyK7E;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,WAAW,GAAE,MAAsB,GAAG,SAAS,CAmDzE;AAWD,wBAAgB,SAAS,CAAC,WAAW,GAAE,MAAsB,GAAG,SAAS,CAkExE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC"}