@bluelamp/cli-token 1.4.0-rc.3 → 1.4.0-rc.5

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.
@@ -0,0 +1,378 @@
1
+ /**
2
+ * 置き場の書き手の門(箱 n=4591 段 B): この機体で `~/.musuhi/portal-token.enc` を読む物(読み手)を数え、
3
+ * **見つかった読み手が全部 v2 を読める版のときだけ** 書き手を v2 へ替えてよいと答える。
4
+ *
5
+ * 🩸 なぜ: v2 を読めない古い読み手(版を固定して同梱した local MCP・拡張・CLI)が残った機体で v2 を書くと、
6
+ * その読み手は札を開けずにログインが落ちる。会員の local MCP は自分では上がらない(n=4071)。
7
+ * 🔑 線(fail-safe): 置き場・版が読めない・知らない形・読み手が 1 つも見つからない=偽(古い形のまま)。
8
+ * env `BLUELAMP_TOKEN_FORMAT=v1` で常に偽。
9
+ * 🔑 重さ: ファイルの stat と package.json の読みだけ(npm を起動しない・child_process を使わない)。
10
+ * 呼ぶのは書くときだけ(savePortalToken と、移行の 1 回)。札を読むたびには呼ばない。
11
+ *
12
+ * 読み手の表(置き場の根 → 何で版を見るか):
13
+ * 1. 全体に入った npm の置き場(CLI bluelamp/bizboost・secret-exec など)=その中の `@bluelamp/cli-token` の写しの版
14
+ * 2. local MCP(`<HOME>/.claude/mcp-servers/<id>`)=その中の cli-token の写しの版。cli-token を束ねる・自前で読む物は
15
+ * MCP の版(monster-orchestrator・playwright)。cli-token の写しが無い MCP は中身に置き場の名が在れば「知らない読み手」
16
+ * 3. VS Code 系の拡張(`<HOME>/.vscode/extensions` 等の mikoto.* / global-innovations.*)=cli-token を束ねる=拡張の版
17
+ */
18
+ import * as fs from 'node:fs';
19
+ import * as path from 'node:path';
20
+ /** v2 を読める最初の版(箱 n=4590 段 A で上げた版) */
21
+ export const V2_READER_MIN = {
22
+ /** `@bluelamp/cli-token` の写し(CLI・secret-exec・MCP の node_modules) */
23
+ cliToken: '1.4.0-rc.4',
24
+ /** cli-token を dist-obf に束ねる=MCP の版で見る */
25
+ monsterOrchestrator: '3.26.3',
26
+ /** 1.14.2 より前は自前の読み(古い形だけ)を持っていた=MCP の版で見る */
27
+ playwright: '1.14.2',
28
+ /** VS Code 拡張(bluelamp・白ラベルの bizboost は同じ package.json から版を出す=境は同じ)。cli-token を webpack で束ねる */
29
+ extension: '1.3.159',
30
+ };
31
+ class UnreadablePlace extends Error {
32
+ }
33
+ function parseVersion(v) {
34
+ if (typeof v !== 'string')
35
+ return null;
36
+ const m = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(v.trim());
37
+ if (!m)
38
+ return null;
39
+ return { core: [Number(m[1]), Number(m[2]), Number(m[3])], pre: m[4] ? m[4].split('.') : [] };
40
+ }
41
+ function comparePre(a, b) {
42
+ if (a.length === 0 || b.length === 0)
43
+ return a.length === b.length ? 0 : a.length === 0 ? 1 : -1;
44
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
45
+ if (a[i] === undefined)
46
+ return -1;
47
+ if (b[i] === undefined)
48
+ return 1;
49
+ const na = /^\d+$/.test(a[i]);
50
+ const nb = /^\d+$/.test(b[i]);
51
+ if (na && nb) {
52
+ const d = Number(a[i]) - Number(b[i]);
53
+ if (d !== 0)
54
+ return d;
55
+ }
56
+ else if (na !== nb) {
57
+ return na ? -1 : 1;
58
+ }
59
+ else if (a[i] !== b[i]) {
60
+ return a[i] < b[i] ? -1 : 1;
61
+ }
62
+ }
63
+ return 0;
64
+ }
65
+ /** v が min 以上か(semver・pre-release を数える)。読めない版は null */
66
+ export function versionAtLeast(v, min) {
67
+ const a = parseVersion(v);
68
+ const b = parseVersion(min);
69
+ if (!a || !b)
70
+ return null;
71
+ for (let i = 0; i < 3; i++)
72
+ if (a.core[i] !== b.core[i])
73
+ return a.core[i] > b.core[i];
74
+ return comparePre(a.pre, b.pre) >= 0;
75
+ }
76
+ // ── 置き場を読む(I/O)──────────────────────────────────────────────────────
77
+ /** フォルダの中身。無い=null・読めない=UnreadablePlace */
78
+ function listDir(dir) {
79
+ try {
80
+ return fs.readdirSync(dir);
81
+ }
82
+ catch (e) {
83
+ const code = e.code;
84
+ if (code === 'ENOENT' || code === 'ENOTDIR')
85
+ return null;
86
+ throw new UnreadablePlace(`${dir}: ${code ?? 'unreadable'}`);
87
+ }
88
+ }
89
+ function isDir(p) {
90
+ try {
91
+ return fs.statSync(p).isDirectory();
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
97
+ /** package.json の版。無い=undefined・読めない/壊れている=null */
98
+ function packageVersion(dir) {
99
+ const file = path.join(dir, 'package.json');
100
+ let raw;
101
+ try {
102
+ raw = fs.readFileSync(file, 'utf8');
103
+ }
104
+ catch (e) {
105
+ return e.code === 'ENOENT' ? undefined : null;
106
+ }
107
+ try {
108
+ const v = JSON.parse(raw).version;
109
+ return typeof v === 'string' ? v : null;
110
+ }
111
+ catch {
112
+ return null;
113
+ }
114
+ }
115
+ function judge(place, kind, version, min) {
116
+ const ok = versionAtLeast(version, min);
117
+ if (ok === null)
118
+ return { place, kind, version, ok: false, reason: 'version-unreadable' };
119
+ return ok ? { place, kind, version, ok: true } : { place, kind, version, ok: false, reason: `below ${min}` };
120
+ }
121
+ /**
122
+ * その入口が自分で import する `@bluelamp/cli-token`(`<nodeModules>/@bluelamp/cli-token` の直下の 1 つ)。
123
+ * ⛔ `@bluelamp/*` が抱える入れ子の写しは数えない(例: MCP の中の secret-exec 0.3.1 は handoff の純関数しか
124
+ * import されず、撃たれる bluelamp-secret は全体に入った物=入れ子の bin は誰も撃たない・PM の実測 #4320)。
125
+ * 全体に入った secret-exec 自身は読み手=scanGlobalRoot がその包みの直下の写しとして数える。
126
+ */
127
+ function cliTokenCopies(nodeModules, out) {
128
+ const pkgDir = path.join(nodeModules, '@bluelamp', 'cli-token');
129
+ const v = packageVersion(pkgDir);
130
+ if (v === undefined)
131
+ return 0;
132
+ out.push(judge(pkgDir, 'cli-token', v, V2_READER_MIN.cliToken));
133
+ return 1;
134
+ }
135
+ /** 全体の npm の置き場 1 本(`<prefix>/lib/node_modules` 等)を見る */
136
+ function scanGlobalRoot(root, out) {
137
+ const names = listDir(root);
138
+ if (!names)
139
+ return;
140
+ // 巻き上げられた `<global>/@bluelamp/cli-token`(全体に直に入れた cli-token)
141
+ cliTokenCopies(root, out);
142
+ for (const name of names) {
143
+ if (name.startsWith('.'))
144
+ continue;
145
+ const dirs = name.startsWith('@')
146
+ ? (listDir(path.join(root, name)) ?? [])
147
+ .filter((n) => !(name === '@bluelamp' && n === 'cli-token'))
148
+ .map((n) => path.join(root, name, n))
149
+ : [path.join(root, name)];
150
+ for (const dir of dirs) {
151
+ const n = cliTokenCopies(path.join(dir, 'node_modules'), out);
152
+ // CLI の本体なのに写しが見えない=知らない形(束ねた・置き方が違う)
153
+ if (n === 0 && (name === 'bluelamp' || name === 'bizboost') && packageVersion(dir) !== undefined) {
154
+ out.push({ place: dir, kind: 'cli-token', version: null, ok: false, reason: 'cli-without-cli-token' });
155
+ }
156
+ }
157
+ }
158
+ }
159
+ const TOKEN_FILE_MARK = Buffer.from('portal-token.enc');
160
+ const CONTENT_SCAN_MAX_FILES = 400;
161
+ const CONTENT_SCAN_MAX_BYTES = 40 * 1024 * 1024;
162
+ /** cli-token の写しが無い MCP が、自前で置き場を読むか(中身に置き場の名が在るか)。数え切れない=true(fail-safe) */
163
+ function mentionsTokenFile(dir) {
164
+ let files = 0;
165
+ let bytes = 0;
166
+ const walk = (d, depth) => {
167
+ const names = listDir(d) ?? [];
168
+ for (const name of names) {
169
+ if (name === 'node_modules' || name.startsWith('.'))
170
+ continue;
171
+ const p = path.join(d, name);
172
+ let st;
173
+ try {
174
+ st = fs.statSync(p);
175
+ }
176
+ catch {
177
+ continue;
178
+ }
179
+ if (st.isDirectory()) {
180
+ if (depth < 4 && walk(p, depth + 1))
181
+ return true;
182
+ continue;
183
+ }
184
+ if (!/\.(m?js|cjs|py)$/.test(name))
185
+ continue;
186
+ files++;
187
+ bytes += st.size;
188
+ if (files > CONTENT_SCAN_MAX_FILES || bytes > CONTENT_SCAN_MAX_BYTES)
189
+ throw new UnreadablePlace(`${dir}: too large to scan`);
190
+ try {
191
+ if (fs.readFileSync(p).includes(TOKEN_FILE_MARK))
192
+ return true;
193
+ }
194
+ catch {
195
+ throw new UnreadablePlace(`${p}: unreadable`);
196
+ }
197
+ }
198
+ return false;
199
+ };
200
+ return walk(dir, 0);
201
+ }
202
+ /** local MCP の置き場(`<HOME>/.claude/mcp-servers`)。退避(`_*`・`*.bak*`)は走らない=数えない */
203
+ function scanMcpServers(root, out) {
204
+ const names = listDir(root);
205
+ if (!names)
206
+ return;
207
+ for (const name of names) {
208
+ if (name.startsWith('_') || name.startsWith('.') || name.includes('.bak'))
209
+ continue;
210
+ const dir = path.join(root, name);
211
+ if (!isDir(dir))
212
+ continue;
213
+ const n = cliTokenCopies(path.join(dir, 'node_modules'), out);
214
+ if (name === 'monster-orchestrator' || name === 'playwright') {
215
+ const min = name === 'playwright' ? V2_READER_MIN.playwright : V2_READER_MIN.monsterOrchestrator;
216
+ out.push(judge(dir, 'mcp', packageVersion(dir) ?? null, min));
217
+ }
218
+ else if (n === 0 && mentionsTokenFile(dir)) {
219
+ out.push({ place: dir, kind: 'mcp', version: packageVersion(dir) ?? null, ok: false, reason: 'own-reader-unknown-version' });
220
+ }
221
+ }
222
+ }
223
+ const EXTENSION_PUBLISHERS = ['mikoto.', 'global-innovations.'];
224
+ const EXTENSION_NAMES = new Set(['bluelamp', 'bizboost']);
225
+ /** 拡張の置き場 1 本。自社の発行元の拡張は bluelamp/bizboost の版で見る。それ以外の自社の拡張=知らない形 */
226
+ function scanExtensions(root, out) {
227
+ const names = listDir(root);
228
+ if (!names)
229
+ return;
230
+ for (const folder of names) {
231
+ const lower = folder.toLowerCase();
232
+ if (!EXTENSION_PUBLISHERS.some((p) => lower.startsWith(p)))
233
+ continue;
234
+ const dir = path.join(root, folder);
235
+ if (!isDir(dir))
236
+ continue;
237
+ let name;
238
+ let version;
239
+ try {
240
+ ({ name, version } = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8')));
241
+ }
242
+ catch {
243
+ out.push({ place: dir, kind: 'extension', version: null, ok: false, reason: 'package-unreadable' });
244
+ continue;
245
+ }
246
+ if (typeof name !== 'string' || !EXTENSION_NAMES.has(name)) {
247
+ out.push({ place: dir, kind: 'extension', version: typeof version === 'string' ? version : null, ok: false, reason: 'unknown-extension' });
248
+ continue;
249
+ }
250
+ out.push(judge(dir, 'extension', typeof version === 'string' ? version : null, V2_READER_MIN.extension));
251
+ }
252
+ }
253
+ // ── 置き場の表 ───────────────────────────────────────────────────────────────
254
+ function expandHome(p, home) {
255
+ return p.replace(/^~(?=$|[\\/])/, home).replace(/\$\{?HOME\}?/g, home);
256
+ }
257
+ /** `~/.npmrc` の prefix=(npm を起動せずに読む) */
258
+ function npmrcPrefix(home) {
259
+ try {
260
+ const m = /^\s*prefix\s*=\s*(.+?)\s*$/m.exec(fs.readFileSync(path.join(home, '.npmrc'), 'utf8'));
261
+ return m ? expandHome(m[1].replace(/^["']|["']$/g, ''), home) : null;
262
+ }
263
+ catch {
264
+ return null;
265
+ }
266
+ }
267
+ /** 下のフォルダを glob 1 段で(base の子それぞれの下の rest) */
268
+ function eachChild(base, rest) {
269
+ return (listDir(base) ?? []).map((n) => path.join(base, n, ...rest));
270
+ }
271
+ /** この機体で読み手が居うる置き場の表(cli-token の中に 1 本だけ持つ) */
272
+ export function tokenReaderRoots(opts = {}) {
273
+ const platform = opts.platform ?? process.platform;
274
+ const env = opts.env ?? process.env;
275
+ const win = platform === 'win32';
276
+ // 結合は走っている OS の path(本物の Windows では win32)。platform は「どの置き場の形を見るか」だけを決める=試験は
277
+ // macOS・Linux の上で Windows の置き場の形を使い捨ての HOME に模せる
278
+ const p = path;
279
+ const home = opts.home ?? (win ? env.USERPROFILE : env.HOME) ?? '';
280
+ const prefixRoot = (prefix) => (win ? p.join(prefix, 'node_modules') : p.join(prefix, 'lib', 'node_modules'));
281
+ const g = new Set();
282
+ const add = (root) => {
283
+ if (root)
284
+ g.add(p.resolve(root));
285
+ };
286
+ // 走っている node と PATH に在る node の全体の置き場(<prefix>/bin/node → <prefix>/lib/node_modules・Windows は node.exe の隣)
287
+ const nodeDirs = [p.dirname(opts.execPath ?? process.execPath)];
288
+ for (const d of (env.PATH ?? env.Path ?? '').split(win ? ';' : ':')) {
289
+ if (d && fs.existsSync(p.join(d, win ? 'node.exe' : 'node')))
290
+ nodeDirs.push(d);
291
+ }
292
+ for (const d of nodeDirs)
293
+ add(win ? p.join(d, 'node_modules') : p.join(p.dirname(d), 'lib', 'node_modules'));
294
+ // npm の prefix を書き替えた機体
295
+ for (const pre of [env.npm_config_prefix, env.NPM_CONFIG_PREFIX, home ? npmrcPrefix(home) : null])
296
+ if (pre)
297
+ add(prefixRoot(pre));
298
+ if (win) {
299
+ if (env.APPDATA) {
300
+ add(p.join(env.APPDATA, 'npm', 'node_modules'));
301
+ for (const d of eachChild(p.join(env.APPDATA, 'nvm'), ['node_modules']))
302
+ add(d);
303
+ for (const d of eachChild(p.join(env.APPDATA, 'fnm', 'node-versions'), ['installation', 'node_modules']))
304
+ add(d);
305
+ }
306
+ if (env.NVM_HOME)
307
+ for (const d of eachChild(env.NVM_HOME, ['node_modules']))
308
+ add(d);
309
+ if (env.NVM_SYMLINK)
310
+ add(p.join(env.NVM_SYMLINK, 'node_modules'));
311
+ if (env.LOCALAPPDATA) {
312
+ add(p.join(env.LOCALAPPDATA, 'pnpm', 'global', '5', 'node_modules'));
313
+ for (const d of eachChild(p.join(env.LOCALAPPDATA, 'Volta', 'tools', 'image', 'packages'), ['node_modules']))
314
+ add(d);
315
+ }
316
+ const sys = opts.systemPrefixes ?? [env.ProgramFiles, env['ProgramFiles(x86)']].filter((x) => !!x).map((d) => p.join(d, 'nodejs'));
317
+ for (const pre of sys)
318
+ add(p.join(pre, 'node_modules'));
319
+ }
320
+ else {
321
+ if (home) {
322
+ const nvm = env.NVM_DIR || p.join(home, '.nvm');
323
+ for (const d of eachChild(p.join(nvm, 'versions', 'node'), ['lib', 'node_modules']))
324
+ add(d);
325
+ for (const d of eachChild(p.join(home, '.volta', 'tools', 'image', 'packages'), ['lib', 'node_modules']))
326
+ add(d);
327
+ for (const d of eachChild(p.join(home, '.asdf', 'installs', 'nodejs'), ['lib', 'node_modules']))
328
+ add(d);
329
+ for (const base of [p.join(home, '.local', 'share', 'fnm'), p.join(home, 'Library', 'Application Support', 'fnm')]) {
330
+ for (const d of eachChild(p.join(base, 'node-versions'), ['installation', 'lib', 'node_modules']))
331
+ add(d);
332
+ }
333
+ add(p.join(home, '.npm-global', 'lib', 'node_modules'));
334
+ add(p.join(home, 'Library', 'pnpm', 'global', '5', 'node_modules'));
335
+ add(p.join(home, '.local', 'share', 'pnpm', 'global', '5', 'node_modules'));
336
+ }
337
+ const sys = opts.systemPrefixes ?? ['/opt/homebrew', '/usr/local', '/usr', '/home/linuxbrew/.linuxbrew'];
338
+ for (const pre of sys)
339
+ add(prefixRoot(pre));
340
+ }
341
+ const extensionHosts = ['.vscode', '.vscode-insiders', '.vscode-oss', '.cursor', '.windsurf', '.vscode-server', '.vscode-server-insiders', '.cursor-server', '.windsurf-server'];
342
+ const ext = new Set(home ? extensionHosts.map((h) => p.join(home, h, 'extensions')) : []);
343
+ if (env.VSCODE_EXTENSIONS)
344
+ ext.add(p.resolve(env.VSCODE_EXTENSIONS));
345
+ return {
346
+ globalRoots: [...g],
347
+ mcpRoots: home ? [p.join(home, '.claude', 'mcp-servers')] : [],
348
+ extensionRoots: [...ext],
349
+ };
350
+ }
351
+ /** 読み手を数える(何が見つかり、なぜ偽かを返す)。throw しない */
352
+ export function scanTokenReaders(opts = {}) {
353
+ const env = opts.env ?? process.env;
354
+ if ((env.BLUELAMP_TOKEN_FORMAT ?? '').toLowerCase() === 'v1')
355
+ return { allowed: false, reason: 'env BLUELAMP_TOKEN_FORMAT=v1', readers: [] };
356
+ const readers = [];
357
+ try {
358
+ const roots = tokenReaderRoots(opts);
359
+ if (!roots.mcpRoots.length)
360
+ return { allowed: false, reason: 'home-unknown', readers };
361
+ for (const r of roots.globalRoots)
362
+ scanGlobalRoot(r, readers);
363
+ for (const r of roots.mcpRoots)
364
+ scanMcpServers(r, readers);
365
+ for (const r of roots.extensionRoots)
366
+ scanExtensions(r, readers);
367
+ }
368
+ catch (e) {
369
+ return { allowed: false, reason: e instanceof UnreadablePlace ? `unreadable ${e.message}` : 'scan-failed', readers };
370
+ }
371
+ if (readers.length === 0)
372
+ return { allowed: false, reason: 'no-reader-found', readers };
373
+ const bad = readers.find((r) => !r.ok);
374
+ if (bad)
375
+ return { allowed: false, reason: `${bad.reason ?? 'old'}: ${bad.place}`, readers };
376
+ return { allowed: true, reason: 'all-readers-v2', readers };
377
+ }
378
+ //# sourceMappingURL=token-readers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-readers.js","sourceRoot":"","sources":["../../src/token-readers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluelamp/cli-token",
3
- "version": "1.4.0-rc.3",
3
+ "version": "1.4.0-rc.5",
4
4
  "description": "BlueLamp CLI が保存するローカルトークンファイルの読み書きの単一実装",
5
5
  "keywords": [
6
6
  "bluelamp",