@sk8metal/michi-cli 0.19.0 → 0.20.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.
@@ -51,7 +51,7 @@ export class GenerateRequirementsUseCase {
51
51
  return ok({
52
52
  featureName,
53
53
  requirementsFile: 'requirements.md',
54
- nextCommand: `/kiro:spec-design ${featureName.value}`,
54
+ nextCommand: `/michi:spec-design ${featureName.value}`,
55
55
  });
56
56
  }
57
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate-requirements.js","sourceRoot":"","sources":["../../../../../src/application/use-cases/spec/generate-requirements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAW1D;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE3D;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,WAAwB;QAExB,4BAA4B;QAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAE9B,sCAAsC;QACtC,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,4EAA4E,IAAI,CAAC,KAAK,SAAS;aACzG,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QAE3C,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,OAAO,EAAE,CAAC;YACR,WAAW;YACX,gBAAgB,EAAE,iBAAiB;YACnC,WAAW,EAAE,qBAAqB,WAAW,CAAC,KAAK,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"generate-requirements.js","sourceRoot":"","sources":["../../../../../src/application/use-cases/spec/generate-requirements.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAW1D;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE3D;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,WAAwB;QAExB,4BAA4B;QAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAE9B,sCAAsC;QACtC,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,4EAA4E,IAAI,CAAC,KAAK,SAAS;aACzG,CAAC,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QAE3C,oBAAoB;QACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,UAAU,CAAC,KAAK;aACxB,CAAC,CAAC;QACL,CAAC;QAED,gBAAgB;QAChB,OAAO,EAAE,CAAC;YACR,WAAW;YACX,gBAAgB,EAAE,iBAAiB;YACnC,WAAW,EAAE,sBAAsB,WAAW,CAAC,KAAK,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -55,7 +55,7 @@ export class InitSpecUseCase {
55
55
  return ok({
56
56
  featureName,
57
57
  createdFiles: ['spec.json', 'requirements.md'],
58
- nextCommand: `/kiro:spec-requirements ${featureName.value}`,
58
+ nextCommand: `/michi:spec-requirements ${featureName.value}`,
59
59
  });
60
60
  }
61
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"init-spec.js","sourceRoot":"","sources":["../../../../../src/application/use-cases/spec/init-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-spec.js","sourceRoot":"","sources":["../../../../../src/application/use-cases/spec/init-spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/commands/config/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyB7D"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/commands/config/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoF7D"}
@@ -8,6 +8,60 @@ import { validateAndReport } from '../../../../scripts/utils/config-validator.js
8
8
  * Register config-related commands
9
9
  */
10
10
  export function registerConfigCommands(program) {
11
+ program
12
+ .command('config:init')
13
+ .description('Create configuration file interactively')
14
+ .option('--global', 'Create global config (~/.michi/config.json)')
15
+ .option('--global-env', 'Create global .env (~/.michi/.env)')
16
+ .option('--project', 'Create project config (.michi/config.json)')
17
+ .option('--env', 'Create project .env file with secrets')
18
+ .option('--all', 'Create all configuration files')
19
+ .action(async (options) => {
20
+ try {
21
+ // オプションが何も指定されていない場合は --all として扱う
22
+ if (!options.global && !options.globalEnv && !options.project && !options.env && !options.all) {
23
+ options.all = true;
24
+ }
25
+ // グローバル .env 作成
26
+ if (options.globalEnv || options.all) {
27
+ const { createEnvInteractively } = await import('../../interactive/config/index.js');
28
+ await createEnvInteractively('~/.michi/.env');
29
+ }
30
+ // プロジェクト .env 作成
31
+ if (options.env || options.all) {
32
+ const { createEnvInteractively } = await import('../../interactive/config/index.js');
33
+ await createEnvInteractively('.env');
34
+ }
35
+ // グローバル設定 作成
36
+ if (options.global || options.all) {
37
+ const { configGlobal } = await import('../../../../scripts/config-global.js');
38
+ await configGlobal();
39
+ }
40
+ // プロジェクト設定 作成
41
+ if (options.project || options.all) {
42
+ const { setupWorkflowConfig } = await import('../init/setup.js');
43
+ // interactive: true のため、以下のプレースホルダー値は使用されず、
44
+ // 実際の値はユーザーにプロンプトされる
45
+ const config = {
46
+ projectId: '',
47
+ projectName: '',
48
+ langCode: 'ja',
49
+ jiraKey: '',
50
+ interactive: true,
51
+ skipWorkflowConfig: false,
52
+ environment: 'claude',
53
+ };
54
+ await setupWorkflowConfig(config, process.cwd());
55
+ }
56
+ console.log('');
57
+ console.log('✅ 設定ファイルの作成が完了しました。');
58
+ console.log('');
59
+ process.exit(0);
60
+ }
61
+ catch (error) {
62
+ handleError('Configuration initialization failed', error);
63
+ }
64
+ });
11
65
  program
12
66
  .command('config:validate')
13
67
  .description('Validate .michi/config.json')
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../../src/presentation/commands/config/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;YAChF,MAAM,cAAc,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,OAAe,EAAE,KAAc;IAClD,OAAO,CAAC,KAAK,CACX,KAAK,OAAO,GAAG,EACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../../../src/presentation/commands/config/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * .env対話入力ウィザード
3
+ */
4
+ /**
5
+ * .envファイルを対話的に作成
6
+ * @param targetPath .envファイルのパス(省略時は '.env')
7
+ */
8
+ export declare function createEnvInteractively(targetPath?: string): Promise<void>;
9
+ //# sourceMappingURL=env-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-wizard.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/interactive/config/env-wizard.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6BH;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCvF"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * .env対話入力ウィザード
3
+ */
4
+ import * as fs from 'fs/promises';
5
+ import * as path from 'path';
6
+ import * as os from 'os';
7
+ import { createInterface, question, password, textInput } from '../prompts';
8
+ /**
9
+ * .envファイルを対話的に作成
10
+ * @param targetPath .envファイルのパス(省略時は '.env')
11
+ */
12
+ export async function createEnvInteractively(targetPath = '.env') {
13
+ console.log('');
14
+ console.log('========================================');
15
+ console.log(' .env Interactive Setup');
16
+ console.log('========================================');
17
+ console.log('');
18
+ // パスを絶対パスに変換
19
+ const absolutePath = await resolveEnvPath(targetPath);
20
+ console.log(`設定ファイル: ${absolutePath}`);
21
+ console.log('');
22
+ // 既存ファイルの確認
23
+ const fileExists = await checkFileExists(absolutePath);
24
+ if (fileExists) {
25
+ const rl = createInterface();
26
+ const overwrite = await question(rl, '⚠️ 既存の.envファイルが見つかりました。上書きしますか? (y/N): ');
27
+ rl.close();
28
+ if (overwrite.toLowerCase() !== 'y') {
29
+ console.log('中止しました。');
30
+ return;
31
+ }
32
+ console.log('');
33
+ }
34
+ // 対話的に設定値を入力
35
+ const config = await collectEnvConfig();
36
+ // .envファイルに保存
37
+ await saveEnvFile(absolutePath, config);
38
+ console.log('');
39
+ console.log('✅ .envファイルを作成しました:');
40
+ console.log(` ${absolutePath}`);
41
+ console.log('');
42
+ }
43
+ /**
44
+ * .envファイルのパスを解決
45
+ */
46
+ async function resolveEnvPath(targetPath) {
47
+ // ~/.michi/.env の場合
48
+ if (targetPath.startsWith('~/.michi/')) {
49
+ const homeDir = os.homedir();
50
+ const michiDir = path.join(homeDir, '.michi');
51
+ // ディレクトリが存在しない場合は作成
52
+ await fs.mkdir(michiDir, { recursive: true });
53
+ // ファイル名部分を保持
54
+ const filename = path.basename(targetPath);
55
+ return path.join(michiDir, filename);
56
+ }
57
+ // 相対パスの場合は絶対パスに変換
58
+ if (!path.isAbsolute(targetPath)) {
59
+ return path.resolve(process.cwd(), targetPath);
60
+ }
61
+ return targetPath;
62
+ }
63
+ /**
64
+ * ファイルが存在するかチェック
65
+ */
66
+ async function checkFileExists(filePath) {
67
+ try {
68
+ await fs.access(filePath);
69
+ return true;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ /**
76
+ * 対話的に設定値を収集
77
+ */
78
+ async function collectEnvConfig() {
79
+ const rl = createInterface();
80
+ const config = {};
81
+ console.log('=== Atlassian連携設定 ===');
82
+ console.log('');
83
+ // Atlassian URL
84
+ config.ATLASSIAN_URL = await textInput(rl, 'Atlassian URL (空白でスキップ): ', {
85
+ defaultValue: '',
86
+ validator: (input) => !input || input.startsWith('https://'),
87
+ errorMessage: 'URLは "https://" で始まる必要があります。',
88
+ });
89
+ if (config.ATLASSIAN_URL) {
90
+ // Atlassian Email
91
+ config.ATLASSIAN_EMAIL = await textInput(rl, 'Atlassian Email: ', {
92
+ validator: (input) => input.includes('@'),
93
+ errorMessage: '有効なメールアドレスを入力してください。',
94
+ });
95
+ // Atlassian API Token(パスワード非表示)
96
+ rl.close(); // パスワード入力前にreadlineを閉じる
97
+ config.ATLASSIAN_API_TOKEN = await password('Atlassian API Token: ');
98
+ // 新しいreadlineインターフェースを作成
99
+ const rl2 = createInterface();
100
+ // Confluence Space設定
101
+ console.log('');
102
+ console.log('=== Confluence Space設定 ===');
103
+ console.log('');
104
+ config.CONFLUENCE_PRD_SPACE = await textInput(rl2, 'PRD Space Key (空白でスキップ): ', {
105
+ defaultValue: '',
106
+ });
107
+ config.CONFLUENCE_QA_SPACE = await textInput(rl2, 'QA Space Key (空白でスキップ): ', {
108
+ defaultValue: '',
109
+ });
110
+ config.CONFLUENCE_RELEASE_SPACE = await textInput(rl2, 'Release Space Key (空白でスキップ): ', {
111
+ defaultValue: '',
112
+ });
113
+ // JIRA Project Keys
114
+ console.log('');
115
+ console.log('=== JIRA設定 ===');
116
+ console.log('');
117
+ config.JIRA_PROJECT_KEYS = await textInput(rl2, 'JIRA Project Keys (カンマ区切り、空白でスキップ): ', {
118
+ defaultValue: '',
119
+ });
120
+ rl2.close();
121
+ }
122
+ else {
123
+ rl.close();
124
+ }
125
+ // GitHub連携設定
126
+ const rl3 = createInterface();
127
+ console.log('');
128
+ console.log('=== GitHub連携設定 ===');
129
+ console.log('');
130
+ config.GITHUB_ORG = await textInput(rl3, 'GitHub Organization (空白でスキップ): ', {
131
+ defaultValue: '',
132
+ });
133
+ if (config.GITHUB_ORG) {
134
+ rl3.close();
135
+ // GitHub Token(パスワード非表示)
136
+ config.GITHUB_TOKEN = await password('GitHub Personal Access Token: ');
137
+ }
138
+ else {
139
+ rl3.close();
140
+ }
141
+ return config;
142
+ }
143
+ /**
144
+ * .envファイルに保存
145
+ */
146
+ async function saveEnvFile(filePath, config) {
147
+ const lines = [
148
+ '# Michi Configuration',
149
+ '# Generated by: michi config:init --env',
150
+ '',
151
+ ];
152
+ // Atlassian連携
153
+ if (config.ATLASSIAN_URL) {
154
+ lines.push('# Atlassian Integration');
155
+ lines.push(`ATLASSIAN_URL=${config.ATLASSIAN_URL}`);
156
+ lines.push(`ATLASSIAN_EMAIL=${config.ATLASSIAN_EMAIL || ''}`);
157
+ lines.push(`ATLASSIAN_API_TOKEN=${config.ATLASSIAN_API_TOKEN || ''}`);
158
+ lines.push('');
159
+ }
160
+ // Confluence Space
161
+ if (config.CONFLUENCE_PRD_SPACE || config.CONFLUENCE_QA_SPACE || config.CONFLUENCE_RELEASE_SPACE) {
162
+ lines.push('# Confluence Spaces');
163
+ if (config.CONFLUENCE_PRD_SPACE) {
164
+ lines.push(`CONFLUENCE_PRD_SPACE=${config.CONFLUENCE_PRD_SPACE}`);
165
+ }
166
+ if (config.CONFLUENCE_QA_SPACE) {
167
+ lines.push(`CONFLUENCE_QA_SPACE=${config.CONFLUENCE_QA_SPACE}`);
168
+ }
169
+ if (config.CONFLUENCE_RELEASE_SPACE) {
170
+ lines.push(`CONFLUENCE_RELEASE_SPACE=${config.CONFLUENCE_RELEASE_SPACE}`);
171
+ }
172
+ lines.push('');
173
+ }
174
+ // JIRA設定
175
+ if (config.JIRA_PROJECT_KEYS) {
176
+ lines.push('# JIRA Configuration');
177
+ lines.push(`JIRA_PROJECT_KEYS=${config.JIRA_PROJECT_KEYS}`);
178
+ lines.push('');
179
+ }
180
+ // GitHub連携
181
+ if (config.GITHUB_ORG) {
182
+ lines.push('# GitHub Integration');
183
+ lines.push(`GITHUB_ORG=${config.GITHUB_ORG}`);
184
+ lines.push(`GITHUB_TOKEN=${config.GITHUB_TOKEN || ''}`);
185
+ lines.push('');
186
+ }
187
+ const content = lines.join('\n');
188
+ // 一時ファイルに書き込んでからrenameする(アトミックな書き込み)
189
+ const tmpPath = `${filePath}.tmp`;
190
+ await fs.writeFile(tmpPath, content, { mode: 0o600 }); // 0o600: 所有者のみ読み書き可能
191
+ await fs.rename(tmpPath, filePath);
192
+ }
193
+ //# sourceMappingURL=env-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-wizard.js","sourceRoot":"","sources":["../../../../../src/presentation/interactive/config/env-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Config interactive modules
3
+ */
4
+ export { createEnvInteractively } from './env-wizard';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/interactive/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Config interactive modules
3
+ */
4
+ export { createEnvInteractively } from './env-wizard';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/presentation/interactive/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
@@ -12,10 +12,9 @@ export declare function createInterface(): readline.Interface;
12
12
  export declare function question(rl: readline.Interface, query: string): Promise<string>;
13
13
  /**
14
14
  * パスワードなど、非表示で入力を受け取る
15
- * 注: Node.jsの標準機能ではパスワード入力を隠すことは難しいため、
16
- * 実際のプロダクションでは inquirer や prompts などのライブラリを使用することを推奨
15
+ * inquirerを使用してパスワードを非表示で入力
17
16
  */
18
- export declare function password(rl: readline.Interface, query: string): Promise<string>;
17
+ export declare function password(query: string): Promise<string>;
19
18
  /**
20
19
  * 数値入力を受け取る
21
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/presentation/interactive/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAAC,SAAS,CAKpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM/E;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,MAAM,CAAC,CAajB"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/presentation/interactive/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAAC,SAAS,CAKpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM/E;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -23,13 +23,11 @@ export function question(rl, query) {
23
23
  }
24
24
  /**
25
25
  * パスワードなど、非表示で入力を受け取る
26
- * 注: Node.jsの標準機能ではパスワード入力を隠すことは難しいため、
27
- * 実際のプロダクションでは inquirer や prompts などのライブラリを使用することを推奨
26
+ * inquirerを使用してパスワードを非表示で入力
28
27
  */
29
- export async function password(rl, query) {
30
- // 基本的な実装として、通常の質問と同じ処理を行う
31
- // TODO: より高度なパスワード入力機能が必要な場合は、外部ライブラリを検討
32
- return question(rl, query);
28
+ export async function password(query) {
29
+ const { password: inquirerPassword } = await import('@inquirer/prompts');
30
+ return inquirerPassword({ message: query });
33
31
  }
34
32
  /**
35
33
  * 数値入力を受け取る
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/presentation/interactive/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,CAAC,eAAe,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAsB,EAAE,KAAa;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,EAAsB,EACtB,KAAa;IAEb,0BAA0B;IAC1B,yCAAyC;IACzC,OAAO,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAsB,EACtB,KAAa,EACb,GAAY,EACZ,GAAY,EACZ,YAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEjC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,iBAAiB,CAAC,CAAC;QACzC,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,iBAAiB,CAAC,CAAC;QACzC,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAsB,EACtB,KAAa,EACb,OAIC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEzC,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,YAAY,IAAI,uBAAuB,EAAE,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/presentation/interactive/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,285 @@
1
+ # 対話的設定ガイド
2
+
3
+ このガイドでは、Michiの対話的設定機能を使って、各種設定ファイルを作成する方法を説明します。
4
+
5
+ ## 目次
6
+
7
+ 1. [コマンド一覧](#コマンド一覧)
8
+ 2. [設定ファイルの種類](#設定ファイルの種類)
9
+ 3. [使い方](#使い方)
10
+ 4. [3層設定アーキテクチャ](#3層設定アーキテクチャ)
11
+ 5. [セキュリティ](#セキュリティ)
12
+
13
+ ---
14
+
15
+ ## コマンド一覧
16
+
17
+ | コマンド | 作成ファイル | 説明 |
18
+ |---------|-------------|------|
19
+ | `michi init` | `.kiro/`, `.env`(テンプレート), `.michi/config.json` | プロジェクト全体の初期化 |
20
+ | `michi config:init` | すべての設定ファイル(`--all`オプション時) | 対話的に設定ファイルを作成 |
21
+ | `michi config:init --global` | `~/.michi/config.json` | グローバル設定を対話的に作成 |
22
+ | `michi config:init --global-env` | `~/.michi/.env` | グローバル.envを対話的に作成 |
23
+ | `michi config:init --project` | `.michi/config.json` | プロジェクト設定を対話的に作成 |
24
+ | `michi config:init --env` | `.env` | プロジェクト.envを対話的に作成 |
25
+ | `michi config:init --all` | 上記すべて | 全設定ファイルを作成 |
26
+
27
+ ### michi init と michi config:init の違い
28
+
29
+ - **`michi init`**: プロジェクトの初期化(.kiroディレクトリ構造、プロジェクトメタデータ作成)
30
+ - `.env`はテンプレートのみ(値の入力なし)
31
+ - `.michi/config.json`はグローバル設定をコピー、またはデフォルト値を使用
32
+
33
+ - **`michi config:init`**: 設定ファイルの対話的作成(値を入力)
34
+ - `.env`の各項目を対話的に入力(APIトークンはパスワード非表示)
35
+ - `.michi/config.json`も対話的に作成可能
36
+
37
+ ---
38
+
39
+ ## 設定ファイルの種類
40
+
41
+ ### 1. グローバル設定 (`~/.michi/config.json`)
42
+
43
+ すべてのプロジェクトに適用される共通設定です。
44
+
45
+ **含まれる内容:**
46
+ - Confluence設定(ページ作成粒度)
47
+ - JIRA設定(Epic作成、ストーリー作成粒度、ストーリーポイント)
48
+ - ワークフロー設定(有効なフェーズ)
49
+
50
+ **作成方法:**
51
+ ```bash
52
+ michi config:init --global
53
+ ```
54
+
55
+ ### 2. グローバル環境変数 (`~/.michi/.env`)
56
+
57
+ すべてのプロジェクトで使用する環境変数です(機密情報)。
58
+
59
+ **含まれる内容:**
60
+ - Atlassian連携(URL、Email、APIトークン)
61
+ - GitHub連携(Organization、Personalトークン)
62
+ - Confluence Space設定
63
+ - JIRAプロジェクトキー
64
+
65
+ **作成方法:**
66
+ ```bash
67
+ michi config:init --global-env
68
+ ```
69
+
70
+ ### 3. プロジェクト設定 (`.michi/config.json`)
71
+
72
+ プロジェクト固有の設定です。グローバル設定を上書きできます。
73
+
74
+ **作成方法:**
75
+ ```bash
76
+ michi config:init --project
77
+ ```
78
+
79
+ ### 4. プロジェクト環境変数 (`.env`)
80
+
81
+ プロジェクト固有の環境変数です。グローバル環境変数を上書きできます。
82
+
83
+ **作成方法:**
84
+ ```bash
85
+ michi config:init --env
86
+ ```
87
+
88
+ ---
89
+
90
+ ## 使い方
91
+
92
+ ### 基本的な使い方
93
+
94
+ #### 1. プロジェクト初期化時
95
+
96
+ プロジェクト新規作成時は、まず `michi init` でプロジェクト構造を作成します。
97
+
98
+ ```bash
99
+ cd your-project
100
+ michi init
101
+ ```
102
+
103
+ `.env` と `.michi/config.json` はテンプレートまたはデフォルト値で作成されます。
104
+
105
+ #### 2. 機密情報を含む .env の作成
106
+
107
+ APIトークンなどの機密情報を対話的に入力して、`.env` を作成します。
108
+
109
+ ```bash
110
+ michi config:init --env
111
+ ```
112
+
113
+ **入力例:**
114
+ ```
115
+ ========================================
116
+ .env Interactive Setup
117
+ ========================================
118
+
119
+ 設定ファイル: /path/to/your-project/.env
120
+
121
+ === Atlassian連携設定 ===
122
+
123
+ Atlassian URL (空白でスキップ): https://your-domain.atlassian.net
124
+ Atlassian Email: your-email@company.com
125
+ Atlassian API Token: ********** (入力は非表示)
126
+
127
+ === Confluence Space設定 ===
128
+
129
+ PRD Space Key (空白でスキップ): PRD
130
+ QA Space Key (空白でスキップ): QA
131
+ Release Space Key (空白でスキップ): RELEASE
132
+
133
+ === JIRA設定 ===
134
+
135
+ JIRA Project Keys (カンマ区切り、空白でスキップ): PROJ1,PROJ2
136
+
137
+ === GitHub連携設定 ===
138
+
139
+ GitHub Organization (空白でスキップ): your-org
140
+ GitHub Personal Access Token: ********** (入力は非表示)
141
+
142
+ ✅ .envファイルを作成しました:
143
+ /path/to/your-project/.env
144
+ ```
145
+
146
+ #### 3. グローバル設定の作成
147
+
148
+ 複数のプロジェクトで共通の設定を使う場合、グローバル設定を作成します。
149
+
150
+ ```bash
151
+ michi config:init --global
152
+ ```
153
+
154
+ #### 4. すべての設定ファイルを一度に作成
155
+
156
+ ```bash
157
+ michi config:init --all
158
+ ```
159
+
160
+ 上記コマンドは、以下の順序で実行されます:
161
+ 1. `~/.michi/.env` 作成
162
+ 2. `.env` 作成
163
+ 3. `~/.michi/config.json` 作成
164
+ 4. `.michi/config.json` 作成
165
+
166
+ ---
167
+
168
+ ## 3層設定アーキテクチャ
169
+
170
+ Michiは、3層の設定アーキテクチャを採用しています。
171
+
172
+ ### 読み込み優先順位(低 → 高)
173
+
174
+ 1. **デフォルト設定**(内蔵)
175
+ 2. **グローバル設定** (`~/.michi/config.json`)
176
+ 3. **グローバル環境変数** (`~/.michi/.env`)
177
+ 4. **プロジェクト設定** (`.michi/config.json`)
178
+ 5. **プロジェクト環境変数** (`.env`)
179
+
180
+ **例:**
181
+ - グローバル設定で `ATLASSIAN_URL=https://global.atlassian.net` を設定
182
+ - プロジェクト環境変数で `ATLASSIAN_URL=https://project.atlassian.net` を設定
183
+ - → プロジェクト環境変数の値 (`https://project.atlassian.net`) が使用される
184
+
185
+ ### 設定の上書きルール
186
+
187
+ - 上位の設定(番号が大きい)が下位の設定を上書きします
188
+ - プロジェクト固有の設定が必要な場合は、プロジェクト設定/環境変数で上書き
189
+ - 共通設定はグローバル設定/環境変数で管理
190
+
191
+ ---
192
+
193
+ ## セキュリティ
194
+
195
+ ### .envファイルの機密情報入力
196
+
197
+ APIトークンなどの機密情報は、入力時に非表示になります(`@inquirer/prompts`使用)。
198
+
199
+ ```bash
200
+ Atlassian API Token: ********** (入力は見えません)
201
+ GitHub Personal Access Token: ********** (入力は見えません)
202
+ ```
203
+
204
+ ### ファイルパーミッション
205
+
206
+ `.env` ファイルは、セキュリティのため、所有者のみ読み書き可能な権限(`0o600`)で作成されます。
207
+
208
+ ```bash
209
+ ls -la .env
210
+ -rw------- 1 user user 512 Jan 1 12:00 .env
211
+ ```
212
+
213
+ ### .gitignore
214
+
215
+ `.env` ファイルは機密情報を含むため、必ず `.gitignore` に追加してください。
216
+
217
+ ```
218
+ # .gitignore
219
+ .env
220
+ ```
221
+
222
+ **注意:** `.env.example` はGitで管理しても問題ありませんが、実際の値は含めないでください。
223
+
224
+ ---
225
+
226
+ ## 既存機能との関係
227
+
228
+ ### `michi init` との使い分け
229
+
230
+ | タイミング | コマンド | 目的 |
231
+ |-----------|---------|------|
232
+ | プロジェクト新規作成時 | `michi init` | プロジェクト構造の初期化 |
233
+ | .envに値を入力したい | `michi config:init --env` | 機密情報を対話的に入力 |
234
+ | グローバル設定を作成 | `michi config:init --global` | 複数プロジェクトで共通設定 |
235
+
236
+ ### 過去の `npm run config:global` との関係
237
+
238
+ 以前は `npm run config:global` を使用していましたが、`michi config:init --global` に統合されました。
239
+
240
+ **移行方法:**
241
+ ```bash
242
+ # 旧コマンド
243
+ npm run config:global
244
+
245
+ # 新コマンド
246
+ michi config:init --global
247
+ ```
248
+
249
+ ---
250
+
251
+ ## トラブルシューティング
252
+
253
+ ### Q1. `.env` ファイルが既に存在する場合は?
254
+
255
+ 上書き確認が表示されます。
256
+
257
+ ```
258
+ ⚠️ 既存の.envファイルが見つかりました。上書きしますか? (y/N):
259
+ ```
260
+
261
+ - `y` を入力すると上書き
262
+ - `N` または Enter で中止
263
+
264
+ ### Q2. グローバル設定とプロジェクト設定の違いは?
265
+
266
+ - **グローバル設定** (`~/.michi/config.json`): すべてのプロジェクトに適用
267
+ - **プロジェクト設定** (`.michi/config.json`): プロジェクト固有の設定(グローバル設定を上書き)
268
+
269
+ ### Q3. パスワード入力時、入力が見えない
270
+
271
+ セキュリティのため、APIトークンやパスワードは入力時に非表示になります。
272
+
273
+ 入力後、Enterを押してください。
274
+
275
+ ---
276
+
277
+ ## 関連ドキュメント
278
+
279
+ - [Atlassian連携ガイド](./atlassian-integration.md)
280
+ - [アーキテクチャガイド](../architecture.md)
281
+ - [設定ファイルリファレンス](../reference/config.md)
282
+
283
+ ---
284
+
285
+ **更新日:** 2026-01-04
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sk8metal/michi-cli",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "Managed Intelligent Comprehensive Hub for Integration - AI-driven development workflow automation",
5
5
  "license": "MIT",
6
6
  "type": "module",