bizboost 6.6.29 → 6.6.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,208 +1,20 @@
|
|
|
1
|
-
#
|
|
1
|
+
# bizboost
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
BizBoost を Claude Code で使うための CLI です(ログイン・MCP サーバ・`bizboost1` などのコマンド)。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## はじめての方
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
npm install -g bluelamp
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
インストール後、 `bluelamp1` 〜 `bluelamp200` のいずれかを実行すると Claude Code が起動し、 対応する slot の MCP 設定がロードされます。
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
bluelamp1 # slot #1
|
|
15
|
-
bluelamp42 # slot #42
|
|
16
|
-
# ...
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## 配布物が難読化されていることについて
|
|
20
|
-
|
|
21
|
-
npm で配布している `bluelamp` の `dist/` は、**意図的に難読化してあります**。中身がそのまま読めないのはビルドの設計であって、隠しごとではありません。以下にその理由と、正規のビルドであることの確かめ方を記します。
|
|
22
|
-
|
|
23
|
-
### なぜ難読化しているのか
|
|
24
|
-
|
|
25
|
-
- **認証とトークンの取り扱いを守るため。** この CLI は利用者の資格情報とアクセストークンを端末上で扱います。その取り回しを読める形のまま配ると、なりすましやトークンの窃取を試みる側に手順を渡すことになります。
|
|
26
|
-
- **当社の知的資産を守るため。** BlueLamp の価値は積み上げてきた設計そのものにあり、配布物はその一部を含みます。
|
|
27
|
-
|
|
28
|
-
難読化が掛かるのは配布物 (`dist/`) だけです。**ソースは非公開です。** そのうえで、配布物が当社の CI が出した正規ビルドであることは、第三者の立場で検証できます (下の「正規のビルドであることの確かめ方」)。ビルドの段取りそのものは下の「ビルド出力」の節のとおりです。
|
|
29
|
-
|
|
30
|
-
### 利用者にとって何が変わらないのか
|
|
31
|
-
|
|
32
|
-
- **機能・挙動は変わりません。** 難読化は publish 用ビルドの最終工程で、実行される処理は tsc が出したものと同じです。
|
|
33
|
-
- **通信先は増えません。** CLI が接続するのは当社ポータルの API と、起動する Claude Code だけです。送信先はコードに固定されており、設定で任意の URL に向け替えることはできません。
|
|
34
|
-
- **第三者の解析サービスへの送信はありません。** テレメトリ / 解析 SDK を同梱していません。当社ポータルとの通信は認証と機能提供のためのものです。
|
|
35
|
-
- **認証トークンは利用者の端末内 (`~/.musuhi/portal-token.enc`) にのみ保存されます。**
|
|
36
|
-
|
|
37
|
-
### 正規のビルドであることの確かめ方
|
|
38
|
-
|
|
39
|
-
公開されている tarball が当社の CI が出した正規ビルドであることは、**第三者の立場で検証できます**。署名は cosign の keyless 署名で行い、その記録は公開の透明性ログ (Rekor) に載ります。
|
|
40
|
-
|
|
41
|
-
🔑 **下の手順 1・2 で参照するのは npm registry と公開 Rekor だけで、当社のサーバーは一切登場しません。** 当社を信用しなくても確かめられる、というのがこの手順の要点です。必要なのは `curl` / `openssl` / `node` だけで、**cosign のインストールは要りません**。
|
|
42
|
-
|
|
43
|
-
**1. registry が配っている tarball を取得し、ハッシュを出す**
|
|
7
|
+
導入はセットアップガイドに沿って進めてください(Windows・Mac のインストーラーがすべて自動で行います)。
|
|
44
8
|
|
|
45
|
-
|
|
46
|
-
V=<インストールした版> # npm ls -g bluelamp で確認できます
|
|
47
|
-
curl -sSL "https://registry.npmjs.org/bluelamp/-/bluelamp-$V.tgz" -o "bluelamp-$V.tgz"
|
|
48
|
-
shasum -a 256 "bluelamp-$V.tgz"
|
|
49
|
-
```
|
|
9
|
+
https://bizboost-setup.pages.dev
|
|
50
10
|
|
|
51
|
-
|
|
11
|
+
## 手で入れる場合
|
|
52
12
|
|
|
53
13
|
```bash
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
-d "{\"hash\":\"sha256:$SHA\"}" \
|
|
57
|
-
https://rekor.sigstore.dev/api/v1/index/retrieve
|
|
14
|
+
npm install -g bizboost
|
|
15
|
+
bizboost1
|
|
58
16
|
```
|
|
59
17
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
**3. さらに厳密に確かめる場合** — 証明書チェーンと署名者の固定まで検証するスクリプトをパッケージに同梱しています。グローバルインストールなら次の 1 行で実行できます (依存は上と同じ `curl` / `openssl` / `node` だけです)。
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
"$(npm root -g)/bluelamp/verify-release.sh" "$V"
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
⚠️ **信頼の起点は手順 1・2** — ご自身の手で公開ログを引き、目で読む記録 — の側にあります。検証を代行するスクリプトを配布物に同梱しても、それは信頼の起点にはなりません (改ざんされた tarball は、改ざんされた検証器を同梱することもできるためです)。
|
|
69
|
-
|
|
70
|
-
📌 署名が付くのは、この README を同梱した版以降のリリースです。それより前の版では手順 2 でエントリが返りませんが、改ざんを意味するものではありません。
|
|
71
|
-
|
|
72
|
-
### ウイルス対策ソフトが反応した場合
|
|
73
|
-
|
|
74
|
-
難読化されたコードは、その形からヒューリスティックに検知されることがあります (誤検知)。お使いのウイルス対策製品が `bluelamp` を検知した場合は、下記の窓口から誤検知として報告できます。
|
|
75
|
-
|
|
76
|
-
- **各ウイルス対策ベンダーの窓口一覧**: https://docs.virustotal.com/docs/false-positive-contacts
|
|
77
|
-
VirusTotal 自身は判定を出さず、誤検知は各エンジンのベンダーへ直接報告する形になっています。上記ページに 150 社以上の窓口がまとまっているので、検知した製品の窓口から報告してください。
|
|
78
|
-
- **Microsoft Defender (Windows)**: https://www.microsoft.com/en-us/wdsi/filesubmission
|
|
79
|
-
サインイン不要でファイルを送信でき、誤検知として申告できます。
|
|
80
|
-
|
|
81
|
-
## 構成
|
|
82
|
-
|
|
83
|
-
- `src/auth/` — Portal API auth client + token manager + interactive login
|
|
84
|
-
- `src/utils/` — 共通 logger
|
|
85
|
-
- `src/i18n/` — `t(key, params)` / `setLanguage(lang)` (ja / en)
|
|
86
|
-
- `bin/bluelamp-vscode-base.mjs` — Claude Code 起動 + MCP 設定生成の本体 (ESM)
|
|
87
|
-
- `bin/bluelamp1.mjs` 〜 `bin/bluelamp200.mjs` — `bluelamp-vscode-base.mjs` を import する薄いトランポリン
|
|
88
|
-
- `scripts/build-obfuscate.mjs` — 2 段階難読化 (Terser + javascript-obfuscator HIGH) の production build
|
|
89
|
-
- `scripts/generate-commands.ts` — 200 トランポリンの冪等再生成 (`dist/scripts/generate-commands.js` にコンパイル)
|
|
90
|
-
|
|
91
|
-
## MCP 配布の仕組み(重要)
|
|
92
|
-
|
|
93
|
-
受講生 PC の Claude Code に MCP を「配る」のは、**`npm install -g bluelamp` で入るこのパッケージの launcher が、起動のたびに `--mcp-config` を生成して `claude` に渡している**から。ユーザーは MCP 設定ファイルを一切編集しない。
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
bluelampN (trampoline)
|
|
97
|
-
→ bin/bluelamp-vscode-base.mjs
|
|
98
|
-
→ createMCPConfig() : os.tmpdir() に bluelamp-mcp-<ts>.json を書く
|
|
99
|
-
→ spawn('claude', [..., '--mcp-config', <temp>])
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
`createMCPConfig()`(`bin/bluelamp-vscode-base.mjs`)が書く中身は現状 MCP **1 個だけ**:
|
|
103
|
-
|
|
104
|
-
```jsonc
|
|
105
|
-
{
|
|
106
|
-
"mcpServers": {
|
|
107
|
-
"bluelamp": { // gateway。これ 1 個が全 cloud_proxy tool を露出
|
|
108
|
-
"command": "node",
|
|
109
|
-
"args": ["<pkg>/lib/mcp-server/index.cjs"],
|
|
110
|
-
"env": {
|
|
111
|
-
"MUSUHI_TOKEN": cliToken, // ~/.musuhi/portal-token.enc 由来(TokenManager)
|
|
112
|
-
"MUSUHI_KEYWORD": keyword, // slot → エージェント
|
|
113
|
-
"MUSUHI_TENANT_ID": "...", // アクティブテナント
|
|
114
|
-
"PORTAL_URL": "..."
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
- `load_knowledge` / `install_from_store` / `tenant-admin` 等の "BlueLamp MCP" は **全部この `bluelamp` gateway 1 プロセス経由**。tool を増やしても MCP プロセスは増えない。
|
|
122
|
-
- token は **launcher 起動時に env 固定注入**。→ ログアウト / アカウント切替の効果は **次回 `bluelampN` 起動から**(in-session では差し替わらない)。
|
|
123
|
-
|
|
124
|
-
### ローカル MCP を 1 個足したいとき(例: アカウント管理 MCP)
|
|
125
|
-
|
|
126
|
-
cloud_proxy(portal 転送)では触れない **ローカル操作**(token 削除・`npm install -g bluelamp@latest`)をする MCP は、`@bluelamp/mcp-shim`(転送専用)では作れない。代わりに:
|
|
127
|
-
|
|
128
|
-
1. `packages/bluelamp-cli/lib/` にローカル MCP スクリプトを bundle する(`lib/` は build で `dist/lib/` にコピーされ npm 同梱される)
|
|
129
|
-
2. `createMCPConfig()` の `mcpServers` に **2 個目**を足す(ローカル操作のみなら env 注入は不要。token は MCP 側が `~/.musuhi/portal-token.enc` を直読み)
|
|
130
|
-
3. `bluelamp` を再 publish → 受講生は自己更新で入手 → launcher が毎回 temp config に書く=**自動配布・自動登録**
|
|
131
|
-
|
|
132
|
-
別 npm パッケージも、ユーザーの設定編集も不要。これが「`npm install -g bluelamp` だけで MCP が増える」の実体。
|
|
133
|
-
|
|
134
|
-
> **実装済み(Phase 151)**: 第1号が `lib/account-mcp/index.cjs`(MCP 名 `bluelamp-account`)。tool = `logout`(`~/.musuhi/portal-token.enc` を削除=別アカウント切替の起点)/ `update_cli`(`npm i -g bluelamp@latest`)。`createMCPConfig()` に登録済み。
|
|
135
|
-
> `update_cli` の効果は **次回 `bluelampN` 起動から**(実行中のプロセスは差し替わらない)。`logout`/トークン差し替えが効くタイミングは**版で異なる**——6.6.0 までは次回起動から、板#341 N1 以降は gateway がトークンを毎回読み直すため**次の tool 呼び出しから**。
|
|
136
|
-
> 📌 利用者向けの手順・失効時の復旧・罹患判定は `docs/support-knowledge/account-operations.md` が正本(ここには書き写さない)。
|
|
137
|
-
|
|
138
|
-
### `@bluelamp/mcp-shim` との違い
|
|
139
|
-
|
|
140
|
-
| | gateway / ローカル MCP(このパッケージの `lib/`) | `@bluelamp/mcp-shim`(別 npm) |
|
|
141
|
-
|---|---|---|
|
|
142
|
-
| 配布 | `bluelamp` 本体に同梱、launcher が `--mcp-config` で登録 | `manifest.json` だけで動く cloud_proxy 用 shim |
|
|
143
|
-
| できること | **ローカル操作**(token / fs / npm)も可 | portal `/api/cli/mcp-dispatch` への **転送のみ** |
|
|
144
|
-
| 用途 | gateway 本体、アカウント管理 など | cloud_proxy + externalApi の汎用 tool |
|
|
145
|
-
|
|
146
|
-
## 開発
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
pnpm install # workspace root で 1 回
|
|
150
|
-
pnpm --filter bluelamp run build:tsc # tsc emit のみ
|
|
151
|
-
pnpm --filter bluelamp run build # tsc emit → 難読化 (publish 用)
|
|
152
|
-
pnpm --filter bluelamp run tsc # 型チェックのみ
|
|
153
|
-
pnpm --filter bluelamp run test # node --test (auth + bin)
|
|
154
|
-
pnpm --filter bluelamp run generate:bins # bin/bluelamp1-200.mjs 再生成
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## ビルド出力
|
|
158
|
-
|
|
159
|
-
`pnpm run build` は 2 段階で `dist/` を生成する:
|
|
160
|
-
|
|
161
|
-
1. **tsc emit** — `src/` の TypeScript を `dist/auth/`, `dist/i18n/`, `dist/utils/`, `dist/scripts/`, `dist/index.js` に出力
|
|
162
|
-
2. **build-obfuscate** — `bin/*.mjs` を `dist/bin/` にコピー (import path を `dist/bin/` 起点に補正)、 `dist/` 配下を 2 段階で難読化
|
|
163
|
-
- **HIGH (javascript-obfuscator)** — `dist/auth/*.js` + `dist/scripts/setup-mcps.js` + `dist/bin/bluelamp-vscode-base.mjs` (5 file)
|
|
164
|
-
- **Terser (軽量縮小)** — それ以外の `dist/*.js` + `dist/bin/bluelamp{1-200}.mjs`
|
|
165
|
-
|
|
166
|
-
publish 対象は `dist/` + `README.md` のみ (`package.json files` で制限)。
|
|
167
|
-
|
|
168
|
-
## 移行元との対応
|
|
169
|
-
|
|
170
|
-
| 移行元 (旧 `bluelampportal/mcp`) | 移行先 |
|
|
171
|
-
| ------------------------------------------------ | ----------------------------------------------------- |
|
|
172
|
-
| `lib/auth/PortalAuthClient.js` | `src/auth/PortalAuthClient.ts` |
|
|
173
|
-
| `lib/auth/TokenManager.js` | `src/auth/TokenManager.ts` |
|
|
174
|
-
| `lib/auth/InteractiveLogin.js` | `src/auth/InteractiveLogin.ts` |
|
|
175
|
-
| `lib/utils/logger.js` | `src/utils/logger.ts` |
|
|
176
|
-
| `lib/i18n/index.js` + `ja.json/en.json` | `src/i18n/index.ts` + `ja.ts` / `en.ts` |
|
|
177
|
-
| `bin/bluelamp-vscode-base` (CommonJS) | `bin/bluelamp-vscode-base.mjs` (ESM) |
|
|
178
|
-
| `bin/bluelamp1`〜200 (CommonJS) | `bin/bluelamp1.mjs`〜200 (ESM trampoline) |
|
|
179
|
-
| `scripts/generate-commands.js` | `scripts/generate-commands.ts` (`dist/scripts/...js`) |
|
|
180
|
-
| `scripts/setup-mcps.js` (postinstall) | **廃止** (#358 で削除。理由は下記「`~/.mcp.json` を書かない」) |
|
|
181
|
-
| `scripts/build.js` (354 行、 CJS) | `scripts/build-obfuscate.mjs` (ESM、 同等難読化) |
|
|
182
|
-
|
|
183
|
-
## 既知の制約
|
|
184
|
-
|
|
185
|
-
- `bin/bluelamp-vscode-base.mjs` は内部で旧 `lib/mcp-server/portal-api-client.cjs` を `require` するが、 monorepo にはまだ移植されていないため **slot 設定の動的取得は無効**。 `DEFAULT_PROMPT_MAPPING` (18 個のデフォルト) にフォールバックする。
|
|
186
|
-
## `~/.mcp.json` を書かない (postinstall 廃止の理由)
|
|
187
|
-
|
|
188
|
-
**このパッケージは `~/.mcp.json` に定義を追加しない。** MCP は起動のたび launcher が一時 config を作って `--mcp-config` で渡す (上記「MCP 配布の仕組み」)。
|
|
189
|
-
|
|
190
|
-
過去 (公開版 4.3.4〜6.4.1) は postinstall (`scripts/setup-mcps.js`) が `~/.mcp.json` を書き換えていたが、次の 2 つの実害を出したので廃止した (監査: 2026-07-30):
|
|
191
|
-
|
|
192
|
-
1. 6.0.2〜6.4.1 が `bluelamp: {command: "bluelamp1"}` を書いていた。`bluelamp1` は MCP サーバーではなく launcher なので、素の `claude` から MCP として起動されると接続不能になる (`--mcp-config` が勝つ launcher 経由では症状が出ないため切り分けが極端に難しい)。→ 現在は launcher 起動時に **この 1 キーだけ** 自己修復で削除する (`src/lib/mcpJsonSelfHeal.ts`)。
|
|
193
|
-
2. 4.3.4〜6.4.1 が `playwright` / `gmail` 等をキー名だけで無条件 delete していた。利用者が自分で登録した同名 MCP を黙って消しうる。
|
|
194
|
-
|
|
195
|
-
**ルール: 今後 `~/.mcp.json` に触る処理を足す場合は、我々が書いた entry だと確認できるものだけを対象にする** (キー名一致だけで削除しない。他人の設定を消さない)。
|
|
196
|
-
|
|
197
|
-
## 開発時の注意: ソースツリーから直接動かさない
|
|
198
|
-
|
|
199
|
-
`lib/mcp-server/` は **`dist/` レイアウト前提**です(`require('../../utils/logger')` は
|
|
200
|
-
`dist/lib/mcp-server/` に置かれたときにだけ解決します)。ソースツリーの `lib/` を直接
|
|
201
|
-
起動すると `MODULE_NOT_FOUND` になり、スロット設定の取得が既定へ degrade します。
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
pnpm run build # dist/ を作ってから
|
|
205
|
-
```
|
|
18
|
+
## 提供
|
|
206
19
|
|
|
207
|
-
|
|
208
|
-
エラーメッセージが真因(=ソースツリー直実行)を指します。
|
|
20
|
+
株式会社グローバルイノベーションズ
|