yamatovision 1.0.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.
Files changed (217) hide show
  1. package/README.md +14 -0
  2. package/bin/bluelamp-vscode-base +325 -0
  3. package/bin/bluelamp1 +2 -0
  4. package/bin/bluelamp10 +2 -0
  5. package/bin/bluelamp100 +2 -0
  6. package/bin/bluelamp11 +2 -0
  7. package/bin/bluelamp12 +2 -0
  8. package/bin/bluelamp13 +2 -0
  9. package/bin/bluelamp14 +2 -0
  10. package/bin/bluelamp15 +2 -0
  11. package/bin/bluelamp16 +2 -0
  12. package/bin/bluelamp17 +2 -0
  13. package/bin/bluelamp18 +2 -0
  14. package/bin/bluelamp19 +2 -0
  15. package/bin/bluelamp2 +2 -0
  16. package/bin/bluelamp20 +2 -0
  17. package/bin/bluelamp21 +2 -0
  18. package/bin/bluelamp22 +2 -0
  19. package/bin/bluelamp23 +2 -0
  20. package/bin/bluelamp24 +2 -0
  21. package/bin/bluelamp25 +2 -0
  22. package/bin/bluelamp26 +2 -0
  23. package/bin/bluelamp27 +2 -0
  24. package/bin/bluelamp28 +2 -0
  25. package/bin/bluelamp29 +2 -0
  26. package/bin/bluelamp3 +2 -0
  27. package/bin/bluelamp30 +2 -0
  28. package/bin/bluelamp31 +2 -0
  29. package/bin/bluelamp32 +2 -0
  30. package/bin/bluelamp33 +2 -0
  31. package/bin/bluelamp34 +2 -0
  32. package/bin/bluelamp35 +2 -0
  33. package/bin/bluelamp36 +2 -0
  34. package/bin/bluelamp37 +2 -0
  35. package/bin/bluelamp38 +2 -0
  36. package/bin/bluelamp39 +2 -0
  37. package/bin/bluelamp4 +2 -0
  38. package/bin/bluelamp40 +2 -0
  39. package/bin/bluelamp41 +2 -0
  40. package/bin/bluelamp42 +2 -0
  41. package/bin/bluelamp43 +2 -0
  42. package/bin/bluelamp44 +2 -0
  43. package/bin/bluelamp45 +2 -0
  44. package/bin/bluelamp46 +2 -0
  45. package/bin/bluelamp47 +2 -0
  46. package/bin/bluelamp48 +2 -0
  47. package/bin/bluelamp49 +2 -0
  48. package/bin/bluelamp5 +2 -0
  49. package/bin/bluelamp50 +2 -0
  50. package/bin/bluelamp51 +2 -0
  51. package/bin/bluelamp52 +2 -0
  52. package/bin/bluelamp53 +2 -0
  53. package/bin/bluelamp54 +2 -0
  54. package/bin/bluelamp55 +2 -0
  55. package/bin/bluelamp56 +2 -0
  56. package/bin/bluelamp57 +2 -0
  57. package/bin/bluelamp58 +2 -0
  58. package/bin/bluelamp59 +2 -0
  59. package/bin/bluelamp6 +2 -0
  60. package/bin/bluelamp60 +2 -0
  61. package/bin/bluelamp61 +2 -0
  62. package/bin/bluelamp62 +2 -0
  63. package/bin/bluelamp63 +2 -0
  64. package/bin/bluelamp64 +2 -0
  65. package/bin/bluelamp65 +2 -0
  66. package/bin/bluelamp66 +2 -0
  67. package/bin/bluelamp67 +2 -0
  68. package/bin/bluelamp68 +2 -0
  69. package/bin/bluelamp69 +2 -0
  70. package/bin/bluelamp7 +2 -0
  71. package/bin/bluelamp70 +2 -0
  72. package/bin/bluelamp71 +2 -0
  73. package/bin/bluelamp72 +2 -0
  74. package/bin/bluelamp73 +2 -0
  75. package/bin/bluelamp74 +2 -0
  76. package/bin/bluelamp75 +2 -0
  77. package/bin/bluelamp76 +2 -0
  78. package/bin/bluelamp77 +2 -0
  79. package/bin/bluelamp78 +2 -0
  80. package/bin/bluelamp79 +2 -0
  81. package/bin/bluelamp8 +2 -0
  82. package/bin/bluelamp80 +2 -0
  83. package/bin/bluelamp81 +2 -0
  84. package/bin/bluelamp82 +2 -0
  85. package/bin/bluelamp83 +2 -0
  86. package/bin/bluelamp84 +2 -0
  87. package/bin/bluelamp85 +2 -0
  88. package/bin/bluelamp86 +2 -0
  89. package/bin/bluelamp87 +2 -0
  90. package/bin/bluelamp88 +2 -0
  91. package/bin/bluelamp89 +2 -0
  92. package/bin/bluelamp9 +2 -0
  93. package/bin/bluelamp90 +2 -0
  94. package/bin/bluelamp91 +2 -0
  95. package/bin/bluelamp92 +2 -0
  96. package/bin/bluelamp93 +2 -0
  97. package/bin/bluelamp94 +2 -0
  98. package/bin/bluelamp95 +2 -0
  99. package/bin/bluelamp96 +2 -0
  100. package/bin/bluelamp97 +2 -0
  101. package/bin/bluelamp98 +2 -0
  102. package/bin/bluelamp99 +2 -0
  103. package/bin/musuhi1 +2 -0
  104. package/bin/musuhi10 +2 -0
  105. package/bin/musuhi100 +2 -0
  106. package/bin/musuhi11 +2 -0
  107. package/bin/musuhi12 +2 -0
  108. package/bin/musuhi13 +2 -0
  109. package/bin/musuhi14 +2 -0
  110. package/bin/musuhi15 +2 -0
  111. package/bin/musuhi16 +2 -0
  112. package/bin/musuhi17 +2 -0
  113. package/bin/musuhi18 +2 -0
  114. package/bin/musuhi19 +2 -0
  115. package/bin/musuhi2 +2 -0
  116. package/bin/musuhi20 +2 -0
  117. package/bin/musuhi21 +2 -0
  118. package/bin/musuhi22 +2 -0
  119. package/bin/musuhi23 +2 -0
  120. package/bin/musuhi24 +2 -0
  121. package/bin/musuhi25 +2 -0
  122. package/bin/musuhi26 +2 -0
  123. package/bin/musuhi27 +2 -0
  124. package/bin/musuhi28 +2 -0
  125. package/bin/musuhi29 +2 -0
  126. package/bin/musuhi3 +2 -0
  127. package/bin/musuhi30 +2 -0
  128. package/bin/musuhi31 +2 -0
  129. package/bin/musuhi32 +2 -0
  130. package/bin/musuhi33 +2 -0
  131. package/bin/musuhi34 +2 -0
  132. package/bin/musuhi35 +2 -0
  133. package/bin/musuhi36 +2 -0
  134. package/bin/musuhi37 +2 -0
  135. package/bin/musuhi38 +2 -0
  136. package/bin/musuhi39 +2 -0
  137. package/bin/musuhi4 +2 -0
  138. package/bin/musuhi40 +2 -0
  139. package/bin/musuhi41 +2 -0
  140. package/bin/musuhi42 +2 -0
  141. package/bin/musuhi43 +2 -0
  142. package/bin/musuhi44 +2 -0
  143. package/bin/musuhi45 +2 -0
  144. package/bin/musuhi46 +2 -0
  145. package/bin/musuhi47 +2 -0
  146. package/bin/musuhi48 +2 -0
  147. package/bin/musuhi49 +2 -0
  148. package/bin/musuhi5 +2 -0
  149. package/bin/musuhi50 +2 -0
  150. package/bin/musuhi51 +2 -0
  151. package/bin/musuhi52 +2 -0
  152. package/bin/musuhi53 +2 -0
  153. package/bin/musuhi54 +2 -0
  154. package/bin/musuhi55 +2 -0
  155. package/bin/musuhi56 +2 -0
  156. package/bin/musuhi57 +2 -0
  157. package/bin/musuhi58 +2 -0
  158. package/bin/musuhi59 +2 -0
  159. package/bin/musuhi6 +2 -0
  160. package/bin/musuhi60 +2 -0
  161. package/bin/musuhi61 +2 -0
  162. package/bin/musuhi62 +2 -0
  163. package/bin/musuhi63 +2 -0
  164. package/bin/musuhi64 +2 -0
  165. package/bin/musuhi65 +2 -0
  166. package/bin/musuhi66 +2 -0
  167. package/bin/musuhi67 +2 -0
  168. package/bin/musuhi68 +2 -0
  169. package/bin/musuhi69 +2 -0
  170. package/bin/musuhi7 +2 -0
  171. package/bin/musuhi70 +2 -0
  172. package/bin/musuhi71 +2 -0
  173. package/bin/musuhi72 +2 -0
  174. package/bin/musuhi73 +2 -0
  175. package/bin/musuhi74 +2 -0
  176. package/bin/musuhi75 +2 -0
  177. package/bin/musuhi76 +2 -0
  178. package/bin/musuhi77 +2 -0
  179. package/bin/musuhi78 +2 -0
  180. package/bin/musuhi79 +2 -0
  181. package/bin/musuhi8 +2 -0
  182. package/bin/musuhi80 +2 -0
  183. package/bin/musuhi81 +2 -0
  184. package/bin/musuhi82 +2 -0
  185. package/bin/musuhi83 +2 -0
  186. package/bin/musuhi84 +2 -0
  187. package/bin/musuhi85 +2 -0
  188. package/bin/musuhi86 +2 -0
  189. package/bin/musuhi87 +2 -0
  190. package/bin/musuhi88 +2 -0
  191. package/bin/musuhi89 +2 -0
  192. package/bin/musuhi9 +2 -0
  193. package/bin/musuhi90 +2 -0
  194. package/bin/musuhi91 +2 -0
  195. package/bin/musuhi92 +2 -0
  196. package/bin/musuhi93 +2 -0
  197. package/bin/musuhi94 +2 -0
  198. package/bin/musuhi95 +2 -0
  199. package/bin/musuhi96 +2 -0
  200. package/bin/musuhi97 +2 -0
  201. package/bin/musuhi98 +2 -0
  202. package/bin/musuhi99 +2 -0
  203. package/lib/agents//343/203/226/343/203/253/343/203/274/343/203/251/343/203/263/343/203/227.md +106 -0
  204. package/lib/auth/InteractiveLogin.js +253 -0
  205. package/lib/auth/PortalAuthClient.js +184 -0
  206. package/lib/auth/TokenManager.js +260 -0
  207. package/lib/i18n/en.json +136 -0
  208. package/lib/i18n/index.js +75 -0
  209. package/lib/i18n/ja.json +136 -0
  210. package/lib/mcp-server/index.cjs +536 -0
  211. package/lib/mcp-server/portal-api-client.cjs +586 -0
  212. package/lib/utils/logger.js +83 -0
  213. package/package.json +155 -0
  214. package/scripts/build.js +348 -0
  215. package/scripts/generate-commands.js +45 -0
  216. package/scripts/playwright-launch.js +141 -0
  217. package/scripts/setup-playwright.js +62 -0
package/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # むすひ MCP Server
2
+
3
+ むすひ MCP Server — Claude Code用の100個のカスタマイズ可能な開発プロンプト
4
+
5
+ ## インストール
6
+ ```bash
7
+ npx mcp-musuhi
8
+ ```
9
+
10
+ ## 開発者
11
+ Mikoto Inc.
12
+
13
+ ## ライセンス
14
+ MIT
@@ -0,0 +1,325 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * BlueLamp VSCode MCP Integration
5
+ * Base script for VSCode extension prompt injection
6
+ */
7
+
8
+ const { spawn } = require('child_process');
9
+ const path = require('path');
10
+ const fs = require('fs');
11
+ const os = require('os');
12
+
13
+ // パッケージのルートディレクトリを取得
14
+ const packageRoot = path.dirname(__dirname);
15
+
16
+ // .envファイルを読み込み(.env.localを優先)
17
+ const dotenvLocalPath = path.join(packageRoot, '.env.local');
18
+ const dotenvPath = path.join(packageRoot, '.env');
19
+
20
+ if (fs.existsSync(dotenvLocalPath)) {
21
+ require('dotenv').config({ path: dotenvLocalPath });
22
+ } else if (fs.existsSync(dotenvPath)) {
23
+ require('dotenv').config({ path: dotenvPath });
24
+ }
25
+
26
+ // i18n(環境変数がまだない段階ではデフォルトja)
27
+ const { t, setLanguage, getLanguage } = require('../lib/i18n');
28
+
29
+ // デフォルトのコマンドマッピング(18個のプロンプト - フォールバック用)
30
+ // ユーザーがスロット設定をしていない場合に使用
31
+ const DEFAULT_PROMPT_MAPPING = {
32
+ 'bluelamp1': '@要件定義', // Phase @1: 要件定義エンジニア
33
+ 'bluelamp2': '@Git管理', // Phase @2: Git/GitHub管理
34
+ 'bluelamp3': '@フロントエンド基盤', // Phase @3: フロントエンド基盤オーケストレーター
35
+ 'bluelamp4': '@ページ実装オーケストレーター', // Phase @4: ページ実装統括
36
+ 'bluelamp5': '@環境構築オーケストレーター', // Phase @5: 環境構築
37
+ 'bluelamp6': '@バックエンド計画オーケストレーター', // Phase @6: バックエンド実装計画
38
+ 'bluelamp7': '@バックエンド実装オーケストレーター', // Phase @7: バックエンド実装統括
39
+ 'bluelamp8': '@フロントエンド実装オーケストレーター', // Phase @8: API統合統括
40
+ 'bluelamp9': '@E2Eテストオーケストレーター', // Phase @9: E2Eテスト統括
41
+ 'bluelamp10': '@本番運用診断オーケストレーター', // Phase @10: CVSS 3.1準拠本番運用診断
42
+ 'bluelamp11': '@デプロイオーケストレーター', // Phase @11: デプロイメント統括
43
+ 'bluelamp12': '@拡張要件定義', // Tools @12: 拡張要件定義オーケストレーター
44
+ 'bluelamp13': '@拡張機能実装', // Tools @13: 拡張機能実装オーケストレーター
45
+ 'bluelamp14': '@デバッグ技術', // Tools @14: 自己完結型デバッグマスター
46
+ 'bluelamp15': '@リファクタリング', // Tools @15: 超並列リファクタリング
47
+ 'bluelamp16': '@ドキュメント生成', // Tools @16: ドキュメント生成統括
48
+ 'bluelamp17': '@相談', // Tools @17: 相談対応
49
+ 'bluelamp18': '@MCP追加' // Tools @18: MCP追加エージェント
50
+ };
51
+
52
+ /**
53
+ * コマンド名からスロット番号を抽出
54
+ * @returns {{ commandName: string, slotNumber: number | null }}
55
+ */
56
+ function getSlotInfoFromCommand() {
57
+ const commandPath = process.argv[1];
58
+ const commandName = path.basename(commandPath);
59
+
60
+ // bluelamp1〜100 からスロット番号を抽出
61
+ const match = commandName.match(/^bluelamp(\d+)$/);
62
+ if (match) {
63
+ const slotNumber = parseInt(match[1]);
64
+ if (slotNumber >= 1 && slotNumber <= 100) {
65
+ return { commandName, slotNumber };
66
+ }
67
+ }
68
+
69
+ // bluelamp-vscode1〜100 からもスロット番号を抽出(互換性)
70
+ const vscodeMatch = commandName.match(/^bluelamp-vscode(\d+)$/);
71
+ if (vscodeMatch) {
72
+ const slotNumber = parseInt(vscodeMatch[1]);
73
+ if (slotNumber >= 1 && slotNumber <= 100) {
74
+ return { commandName, slotNumber };
75
+ }
76
+ }
77
+
78
+ // マッピングに存在するかチェック(フォールバック)
79
+ if (DEFAULT_PROMPT_MAPPING[commandName]) {
80
+ return { commandName, slotNumber: null };
81
+ }
82
+
83
+ console.error(`❌ ${t('base.undefinedCommand', { commandName })}`);
84
+ process.exit(1);
85
+ }
86
+
87
+ /**
88
+ * スロット設定からキーワードを取得(Portal API経由)
89
+ * 設定がなければデフォルトのPROMPT_MAPPINGを使用
90
+ *
91
+ * @param {number} slotNumber - スロット番号
92
+ * @param {string} commandName - コマンド名
93
+ * @param {string} token - CLI認証トークン
94
+ * @returns {Promise<string>} キーワード
95
+ */
96
+ async function getKeywordForSlot(slotNumber, commandName, token) {
97
+ // スロット番号がない場合はデフォルトを使用
98
+ if (!slotNumber) {
99
+ return DEFAULT_PROMPT_MAPPING[commandName];
100
+ }
101
+
102
+ try {
103
+ // Portal APIからスロット設定を取得
104
+ const { getSlotConfig } = require('../lib/mcp-server/portal-api-client.cjs');
105
+ const customKeyword = await getSlotConfig(slotNumber, token);
106
+
107
+ if (customKeyword) {
108
+ console.log(`📌 ${t('base.customSlotConfig', { slotNumber, keyword: customKeyword })}`);
109
+ return customKeyword;
110
+ }
111
+ } catch (error) {
112
+ // エラー時はデフォルトにフォールバック(静かに失敗)
113
+ console.log(`⚠️ ${t('base.slotConfigError', { error: error.message })}`);
114
+ }
115
+
116
+ // フォールバック: デフォルトのマッピングを使用
117
+ return DEFAULT_PROMPT_MAPPING[commandName];
118
+ }
119
+
120
+ /**
121
+ * MCPサーバー設定を作成
122
+ */
123
+ function createMCPConfig(keyword, cliToken, language) {
124
+ const mcpServerPath = path.join(packageRoot, 'lib/mcp-server/index.cjs');
125
+ const tempConfigPath = path.join(os.tmpdir(), `bluelamp-mcp-${Date.now()}.json`);
126
+
127
+ // .env.localからPORTAL_URLを取得(デフォルトは本番)
128
+ const portalUrl = process.env.PORTAL_URL || "https://musuhi-portal-235426778039.asia-northeast1.run.app";
129
+
130
+ const config = {
131
+ mcpServers: {
132
+ "bluelamp": {
133
+ command: "node",
134
+ args: [mcpServerPath],
135
+ env: {
136
+ BLUELAMP_KEYWORD: keyword,
137
+ BLUELAMP_TOKEN: cliToken,
138
+ BLUELAMP_LANGUAGE: language,
139
+ PORTAL_URL: portalUrl
140
+ }
141
+ }
142
+ }
143
+ };
144
+
145
+ fs.writeFileSync(tempConfigPath, JSON.stringify(config, null, 2));
146
+ return tempConfigPath;
147
+ }
148
+
149
+ /**
150
+ * Portal認証の実行(BlueLamp VSCode独自の認証システム)
151
+ * @returns {Promise<{token: string, language: string}>}
152
+ */
153
+ async function performPortalAuth() {
154
+ try {
155
+ // BlueLamp VSCode用の認証モジュールを使用
156
+ const { InteractiveLogin } = require('../lib/auth/InteractiveLogin');
157
+
158
+ const authResult = await InteractiveLogin.performLogin();
159
+
160
+ // 認証結果からユーザー言語を取得(Phase 3: i18n対応)
161
+ const userLanguage = authResult.user?.language || 'ja';
162
+ setLanguage(userLanguage);
163
+
164
+ InteractiveLogin.displayLoginSuccess(authResult);
165
+
166
+ return { token: authResult.token, language: userLanguage };
167
+
168
+ } catch (error) {
169
+ console.error(`❌ ${t('auth.portalAuthError', { error: error.message })}`);
170
+ console.error('');
171
+ console.error(`${t('auth.portalAuthHelpTitle')}`);
172
+ console.error(`${t('auth.portalAuthHelp1')}`);
173
+ console.error(`${t('auth.portalAuthHelp2')}`);
174
+ console.error(`${t('auth.portalAuthHelp3', { url: 'https://musuhi-portal-235426778039.asia-northeast1.run.app' })}`);
175
+ process.exit(1);
176
+ }
177
+ }
178
+
179
+ /**
180
+ * メイン処理
181
+ */
182
+ async function main() {
183
+ // コマンドからスロット情報を取得
184
+ const { commandName, slotNumber } = getSlotInfoFromCommand();
185
+
186
+ // --debugフラグの確認
187
+ const isDebugMode = process.argv.includes('--debug');
188
+
189
+ console.log(`🔵 ${t('base.brandTitle')}`);
190
+ console.log(`📦 ${t('base.commandInfo', { commandName, slotInfo: slotNumber ? ` (slot ${slotNumber})` : '' })}`);
191
+ if (isDebugMode) {
192
+ console.log(`🐛 ${t('base.debugMode')}`);
193
+ console.log(` ${t('base.logFile', { path: path.join(os.tmpdir(), 'bluelamp-vscode-mcp-latest.log') })}`);
194
+ }
195
+ console.log('');
196
+
197
+ // Portal認証の実行(ユーザー言語を取得)
198
+ const { token: cliToken, language } = await performPortalAuth();
199
+
200
+ // スロット設定からキーワードを取得(認証後に実行)
201
+ const keyword = await getKeywordForSlot(slotNumber, commandName, cliToken);
202
+ console.log(`📚 ${t('base.promptInfo', { keyword })}`);
203
+ console.log('');
204
+
205
+ // MCP設定ファイルを作成(認証トークン + 言語を含む)
206
+ const configPath = createMCPConfig(keyword, cliToken, language);
207
+
208
+ // 初期プロンプトメッセージ(言語に応じて切り替え)
209
+ const initialPrompt = `> ${t('base.extendedMode')}
210
+
211
+ 🔵 ${t('base.authActivated')}
212
+
213
+ \x1b[34m╭─────────────────────────────────────────────────────────────────╮\x1b[0m
214
+ \x1b[34m│ │\x1b[0m
215
+ \x1b[34m│ B l u e L a m p │\x1b[0m
216
+ \x1b[34m│ ───────────────── │\x1b[0m
217
+ \x1b[34m│ ${t('base.initialPromptTitle').padEnd(37)}│\x1b[0m
218
+ \x1b[34m│ │\x1b[0m
219
+ \x1b[34m╰─────────────────────────────────────────────────────────────────╯\x1b[0m
220
+
221
+ ${t('base.initialPromptLoadContext', { keyword })}
222
+
223
+ ${t('base.initialPromptKeywordNote', { keyword })}
224
+
225
+ ${t('base.initialPromptReady', { keyword })}`;
226
+
227
+ // Claude を起動
228
+ console.log(`🚀 ${t('base.launchingClaude')}`);
229
+ console.log(` - ${t('base.mcpServer')}`);
230
+ console.log(` - ${t('base.knowledge', { keyword })}`);
231
+ console.log('');
232
+
233
+ // Windows対応: PowerShell経由でclaude.ps1を実行
234
+ const isWindows = process.platform === 'win32';
235
+ let claudeCommand, claudeArgs;
236
+
237
+ if (isWindows) {
238
+ // Windows: PowerShell経由でclaude.ps1を実行
239
+ claudeCommand = 'powershell.exe';
240
+ claudeArgs = [
241
+ '-NoProfile',
242
+ '-Command',
243
+ 'claude',
244
+ initialPrompt,
245
+ '--dangerously-skip-permissions',
246
+ '--mcp-config', configPath
247
+ ];
248
+ } else {
249
+ // Mac/Linux: 直接実行
250
+ claudeCommand = 'claude';
251
+ claudeArgs = [
252
+ initialPrompt,
253
+ '--dangerously-skip-permissions',
254
+ '--mcp-config', configPath
255
+ ];
256
+ }
257
+
258
+ // デバッグモードの場合、詳細情報を表示
259
+ if (isDebugMode) {
260
+ console.log(`🐛 ${t('base.debugInfo')}`);
261
+ console.log(` ${t('base.debugCommand', { command: claudeCommand })}`);
262
+ console.log(` ${t('base.debugArgs', { args: JSON.stringify(claudeArgs, null, 2) })}`);
263
+ console.log(` ${t('base.debugConfigFile', { path: configPath })}`);
264
+ console.log(` ${t('base.debugEnvKeyword', { keyword })}`);
265
+ console.log(` ${t('base.debugEnvToken', { token: cliToken.substring(0, 20) })}`);
266
+ console.log(` ${t('base.debugEnvPortal', { url: process.env.PORTAL_URL || 'https://musuhi-portal-235426778039.asia-northeast1.run.app' })}`);
267
+ console.log('');
268
+
269
+ // MCP設定ファイルの内容を表示
270
+ const configContent = fs.readFileSync(configPath, 'utf-8');
271
+ console.log(`📄 ${t('base.debugConfigContent')}`);
272
+ console.log(configContent);
273
+ console.log('');
274
+ }
275
+
276
+ const child = spawn(claudeCommand, claudeArgs, {
277
+ stdio: 'inherit',
278
+ env: {
279
+ ...process.env,
280
+ BLUELAMP_VSCODE_KEYWORD: keyword,
281
+ BLUELAMP_LANGUAGE: language
282
+ }
283
+ });
284
+
285
+ // エラーハンドリング
286
+ child.on('error', (error) => {
287
+ console.error(`❌ ${t('base.claudeStartError', { error: error.message })}`);
288
+
289
+ // 一時ファイルをクリーンアップ
290
+ try {
291
+ fs.unlinkSync(configPath);
292
+ } catch (e) {
293
+ // ignore
294
+ }
295
+
296
+ process.exit(1);
297
+ });
298
+
299
+ // 終了時のクリーンアップ
300
+ child.on('exit', (code) => {
301
+ console.log('');
302
+ console.log(`🔵 ${t('base.sessionEnd')}`);
303
+
304
+ // 一時ファイルをクリーンアップ
305
+ try {
306
+ fs.unlinkSync(configPath);
307
+ } catch (e) {
308
+ // ignore
309
+ }
310
+
311
+ process.exit(code || 0);
312
+ });
313
+
314
+ // SIGINT (Ctrl+C) ハンドリング
315
+ process.on('SIGINT', () => {
316
+ console.log(`\n🔵 ${t('base.shuttingDown')}`);
317
+ child.kill('SIGINT');
318
+ });
319
+ }
320
+
321
+ // メイン処理の実行
322
+ main().catch((error) => {
323
+ console.error(`❌ ${t('base.unexpectedError', { error: error.message })}`);
324
+ process.exit(1);
325
+ });
package/bin/bluelamp1 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp10 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp11 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp12 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp13 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp14 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp15 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp16 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp17 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp18 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp19 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp2 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp20 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp21 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp22 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp23 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp24 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp25 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp26 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp27 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp28 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp29 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp3 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp30 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp31 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp32 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp33 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp34 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp35 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp36 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp37 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp38 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp39 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp4 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp40 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp41 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp42 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp43 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp44 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp45 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp46 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp47 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp48 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp49 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp5 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp50 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp51 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp52 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp53 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp54 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp55 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp56 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp57 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp58 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp59 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp6 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp60 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp61 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp62 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp63 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp64 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp65 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp66 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp67 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp68 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp69 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp7 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp70 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp71 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');
package/bin/bluelamp72 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('./bluelamp-vscode-base');