bizboost 6.4.13 → 6.6.8
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 +97 -11
- package/dist/auth/InteractiveLogin.js +1 -1
- package/dist/auth/PortalAuthClient.d.ts +1 -1
- package/dist/auth/PortalAuthClient.js +1 -1
- package/dist/auth/TokenManager.d.ts +5 -14
- package/dist/auth/TokenManager.d.ts.map +1 -1
- package/dist/auth/TokenManager.js +1 -1
- package/dist/auth/TokenManager.js.map +1 -1
- package/dist/auth/portalTokenStore.d.ts +19 -0
- package/dist/auth/portalTokenStore.d.ts.map +1 -0
- package/dist/auth/portalTokenStore.js +1 -0
- package/dist/auth/portalTokenStore.js.map +1 -0
- package/dist/bin/bizboost201.mjs +2 -0
- package/dist/bin/bizboost202.mjs +2 -0
- package/dist/bin/bizboost203.mjs +2 -0
- package/dist/bin/bizboost204.mjs +2 -0
- package/dist/bin/bizboost205.mjs +2 -0
- package/dist/bin/bizboost206.mjs +2 -0
- package/dist/bin/bizboost207.mjs +2 -0
- package/dist/bin/bizboost208.mjs +2 -0
- package/dist/bin/bizboost209.mjs +2 -0
- package/dist/bin/bizboost210.mjs +2 -0
- package/dist/bin/bizboost211.mjs +2 -0
- package/dist/bin/bizboost212.mjs +2 -0
- package/dist/bin/bizboost213.mjs +2 -0
- package/dist/bin/bizboost214.mjs +2 -0
- package/dist/bin/bizboost215.mjs +2 -0
- package/dist/bin/bizboost216.mjs +2 -0
- package/dist/bin/bizboost217.mjs +2 -0
- package/dist/bin/bizboost218.mjs +2 -0
- package/dist/bin/bizboost219.mjs +2 -0
- package/dist/bin/bizboost220.mjs +2 -0
- package/dist/bin/bizboost221.mjs +2 -0
- package/dist/bin/bizboost222.mjs +2 -0
- package/dist/bin/bizboost223.mjs +2 -0
- package/dist/bin/bizboost224.mjs +2 -0
- package/dist/bin/bizboost225.mjs +2 -0
- package/dist/bin/bizboost226.mjs +2 -0
- package/dist/bin/bizboost227.mjs +2 -0
- package/dist/bin/bizboost228.mjs +2 -0
- package/dist/bin/bizboost229.mjs +2 -0
- package/dist/bin/bizboost230.mjs +2 -0
- package/dist/bin/bizboost231.mjs +2 -0
- package/dist/bin/bizboost232.mjs +2 -0
- package/dist/bin/bizboost233.mjs +2 -0
- package/dist/bin/bizboost234.mjs +2 -0
- package/dist/bin/bizboost235.mjs +2 -0
- package/dist/bin/bizboost236.mjs +2 -0
- package/dist/bin/bizboost237.mjs +2 -0
- package/dist/bin/bizboost238.mjs +2 -0
- package/dist/bin/bizboost239.mjs +2 -0
- package/dist/bin/bizboost240.mjs +2 -0
- package/dist/bin/bizboost241.mjs +2 -0
- package/dist/bin/bizboost242.mjs +2 -0
- package/dist/bin/bizboost243.mjs +2 -0
- package/dist/bin/bizboost244.mjs +2 -0
- package/dist/bin/bizboost245.mjs +2 -0
- package/dist/bin/bizboost246.mjs +2 -0
- package/dist/bin/bizboost247.mjs +2 -0
- package/dist/bin/bizboost248.mjs +2 -0
- package/dist/bin/bizboost249.mjs +2 -0
- package/dist/bin/bizboost250.mjs +2 -0
- package/dist/bin/bizboost251.mjs +2 -0
- package/dist/bin/bizboost252.mjs +2 -0
- package/dist/bin/bizboost253.mjs +2 -0
- package/dist/bin/bizboost254.mjs +2 -0
- package/dist/bin/bizboost255.mjs +2 -0
- package/dist/bin/bizboost256.mjs +2 -0
- package/dist/bin/bizboost257.mjs +2 -0
- package/dist/bin/bizboost258.mjs +2 -0
- package/dist/bin/bizboost259.mjs +2 -0
- package/dist/bin/bizboost260.mjs +2 -0
- package/dist/bin/bizboost261.mjs +2 -0
- package/dist/bin/bizboost262.mjs +2 -0
- package/dist/bin/bizboost263.mjs +2 -0
- package/dist/bin/bizboost264.mjs +2 -0
- package/dist/bin/bizboost265.mjs +2 -0
- package/dist/bin/bizboost266.mjs +2 -0
- package/dist/bin/bizboost267.mjs +2 -0
- package/dist/bin/bizboost268.mjs +2 -0
- package/dist/bin/bizboost269.mjs +2 -0
- package/dist/bin/bizboost270.mjs +2 -0
- package/dist/bin/bizboost271.mjs +2 -0
- package/dist/bin/bizboost272.mjs +2 -0
- package/dist/bin/bizboost273.mjs +2 -0
- package/dist/bin/bizboost274.mjs +2 -0
- package/dist/bin/bizboost275.mjs +2 -0
- package/dist/bin/bizboost276.mjs +2 -0
- package/dist/bin/bizboost277.mjs +2 -0
- package/dist/bin/bizboost278.mjs +2 -0
- package/dist/bin/bizboost279.mjs +2 -0
- package/dist/bin/bizboost280.mjs +2 -0
- package/dist/bin/bizboost281.mjs +2 -0
- package/dist/bin/bizboost282.mjs +2 -0
- package/dist/bin/bizboost283.mjs +2 -0
- package/dist/bin/bizboost284.mjs +2 -0
- package/dist/bin/bizboost285.mjs +2 -0
- package/dist/bin/bizboost286.mjs +2 -0
- package/dist/bin/bizboost287.mjs +2 -0
- package/dist/bin/bizboost288.mjs +2 -0
- package/dist/bin/bizboost289.mjs +2 -0
- package/dist/bin/bizboost290.mjs +2 -0
- package/dist/bin/bizboost291.mjs +2 -0
- package/dist/bin/bizboost292.mjs +2 -0
- package/dist/bin/bizboost293.mjs +2 -0
- package/dist/bin/bizboost294.mjs +2 -0
- package/dist/bin/bizboost295.mjs +2 -0
- package/dist/bin/bizboost296.mjs +2 -0
- package/dist/bin/bizboost297.mjs +2 -0
- package/dist/bin/bizboost298.mjs +2 -0
- package/dist/bin/bizboost299.mjs +2 -0
- package/dist/bin/bizboost300.mjs +2 -0
- package/dist/bin/bluelamp-vscode-base.mjs +1 -1
- package/dist/i18n/en.d.ts +6 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/ja.d.ts +6 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +1 -1
- package/dist/i18n/ja.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/account-mcp/index.cjs +1 -1
- package/dist/lib/accountAssurance.d.ts +41 -0
- package/dist/lib/accountAssurance.d.ts.map +1 -0
- package/dist/lib/accountAssurance.js +1 -0
- package/dist/lib/accountAssurance.js.map +1 -0
- package/dist/lib/claudeAccount.d.ts +45 -0
- package/dist/lib/claudeAccount.d.ts.map +1 -0
- package/dist/lib/claudeAccount.js +1 -0
- package/dist/lib/claudeAccount.js.map +1 -0
- package/dist/lib/claudeOnboardingSeed.d.ts +131 -0
- package/dist/lib/claudeOnboardingSeed.d.ts.map +1 -0
- package/dist/lib/claudeOnboardingSeed.js +1 -0
- package/dist/lib/claudeOnboardingSeed.js.map +1 -0
- package/dist/lib/debugRedaction.d.ts +42 -0
- package/dist/lib/debugRedaction.d.ts.map +1 -0
- package/dist/lib/debugRedaction.js +1 -0
- package/dist/lib/debugRedaction.js.map +1 -0
- package/dist/lib/headlessLaunch.d.ts +63 -0
- package/dist/lib/headlessLaunch.d.ts.map +1 -0
- package/dist/lib/headlessLaunch.js +1 -0
- package/dist/lib/headlessLaunch.js.map +1 -0
- package/dist/lib/inheritedTenant.d.ts +44 -0
- package/dist/lib/inheritedTenant.d.ts.map +1 -0
- package/dist/lib/inheritedTenant.js +1 -0
- package/dist/lib/inheritedTenant.js.map +1 -0
- package/dist/lib/mcp-server/index.cjs +1 -1
- package/dist/lib/mcp-server/install-package.cjs +1 -0
- package/dist/lib/mcp-server/mcp-version-advisor.cjs +1 -0
- package/dist/lib/mcp-server/portal-api-client.cjs +1 -1
- package/dist/lib/mcpJsonSelfHeal.d.ts +77 -0
- package/dist/lib/mcpJsonSelfHeal.d.ts.map +1 -0
- package/dist/lib/mcpJsonSelfHeal.js +1 -0
- package/dist/lib/mcpJsonSelfHeal.js.map +1 -0
- package/dist/lib/promptFailureGuidance.d.ts +30 -0
- package/dist/lib/promptFailureGuidance.d.ts.map +1 -0
- package/dist/lib/promptFailureGuidance.js +1 -0
- package/dist/lib/promptFailureGuidance.js.map +1 -0
- package/dist/lib/requireFromPackage.cjs +1 -0
- package/dist/lib/slotKeywordResolve.d.ts +69 -0
- package/dist/lib/slotKeywordResolve.d.ts.map +1 -0
- package/dist/lib/slotKeywordResolve.js +1 -0
- package/dist/lib/slotKeywordResolve.js.map +1 -0
- package/dist/lib/tempMcpConfig.d.ts +79 -0
- package/dist/lib/tempMcpConfig.d.ts.map +1 -0
- package/dist/lib/tempMcpConfig.js +1 -0
- package/dist/lib/tempMcpConfig.js.map +1 -0
- package/dist/lib/whoami.d.ts +34 -0
- package/dist/lib/whoami.d.ts.map +1 -0
- package/dist/lib/whoami.js +1 -0
- package/dist/lib/whoami.js.map +1 -0
- package/dist/scripts/generate-commands.js +1 -1
- package/dist/shared/claude-bin.js +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/package.json +114 -11
- package/verify-release.sh +154 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 本体プロンプト取得失敗時の案内文を組み立てる(P3・純関数)。
|
|
3
|
+
*
|
|
4
|
+
* 従来は失敗理由に関わらず「多くの場合アクティブテナントが未選択です」と決め打ちしていた。
|
|
5
|
+
* 実際の失敗要因は backend で 3 種に分かれており(cliController.getKiPromptByKeyword)、
|
|
6
|
+
* rank 不足(403)を「テナント未選択」と案内すると、エージェントが自信を持って誤原因を
|
|
7
|
+
* 断定し、利用者は無関係な操作(テナント選択のやり直し)を繰り返すことになる。
|
|
8
|
+
* 2026-07-30 の監査でこの誤診断を実害として確認したため、status で出し分ける。
|
|
9
|
+
*
|
|
10
|
+
* backend が返す対応:
|
|
11
|
+
* 403 `Rank not allowed` … rank 不足(allowed_min_rank ゲート)
|
|
12
|
+
* 404 `Prompt not found for keyword` … キーワード未登録 or official の module 非公開
|
|
13
|
+
* 409 `NO_ACTIVE_TENANT` … アクティブテナント未選択(唯一の「テナント未選択」)
|
|
14
|
+
* 401 … CLI トークンが無効(再ログインが必要)
|
|
15
|
+
*
|
|
16
|
+
* 原則: 特定できない失敗は「特定できていない」と言う。推測を案内文に混ぜない(潔癖性)。
|
|
17
|
+
*/
|
|
18
|
+
export interface PromptFailureInput {
|
|
19
|
+
/** HTTP status。取得できなかった場合(通信失敗等)は null / undefined */
|
|
20
|
+
status?: number | null;
|
|
21
|
+
/** backend の message(そのまま利用者に見せる一次情報) */
|
|
22
|
+
message?: string | null;
|
|
23
|
+
/** backend の code(例: NO_ACTIVE_TENANT)。status が無くても分岐できる補助情報 */
|
|
24
|
+
code?: string | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 案内文を組み立てる。冒頭は必ず backend の生メッセージ(一次情報を隠さない)。
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildPromptFailureGuidance(input: PromptFailureInput): string;
|
|
30
|
+
//# sourceMappingURL=promptFailureGuidance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptFailureGuidance.d.ts","sourceRoot":"","sources":["../../src/lib/promptFailureGuidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAuCD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAW5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildPromptFailureGuidance=buildPromptFailureGuidance;const NO_LOAD_KNOWLEDGE="load_knowledge は実行しないでください。";function causeFor(e,n){if("NO_ACTIVE_TENANT"===n)return tenantCause();switch(e){case 401:return"原因: ログイン情報(CLI トークン)が無効です。\n対処: bluelamp-account MCP の logout を実行し、bizboost1〜300 を起動し直して再ログインするようユーザーへ案内してください。";case 403:return"原因: このアカウントの rank ではこのエージェントを使えません(rank 不足)。\n対処: テナント管理者に、このエージェントの配布(rank 条件の見直し)を依頼するようユーザーへ案内してください。\nテナントを選び直しても解決しません。アカウント切替の心当たりがあるなら bluelamp-account MCP の whoami で今のアカウントを確認してください。";case 404:return"原因: このキーワードのエージェントが見つかりません(未登録、またはテナントの module 設定で非公開)。\n対処: キーワードの綴りを確認し、正しければテナント管理者に配布状況(module の公開設定)を確認するようユーザーへ案内してください。";case 409:return tenantCause();default:return null}}function tenantCause(){return"原因: アクティブテナントが未選択です。\n対処: VSCode の BizBoost 拡張でテナントを選択してから、BizBoost を起動し直すようユーザーへ案内してください。"}function buildPromptFailureGuidance(e){const n=e.message&&String(e.message).trim().length>0?String(e.message).trim():"本体プロンプトを取得できませんでした",t=causeFor(e.status,e.code);return`本体プロンプトを読み込めませんでした: ${n}\n${NO_LOAD_KNOWLEDGE}\n${t??"原因はこちらでは特定できていません。上のメッセージをそのままユーザーへ伝え、推測での原因説明はしないでください。"}`}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promptFailureGuidance.js","sourceRoot":"","sources":["../../src/lib/promptFailureGuidance.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;AAmDH,gEAWC;AAnDD,yCAAyC;AACzC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAExD,yDAAyD;AACzD,SAAS,QAAQ,CAAC,MAAiC,EAAE,IAA+B;IAClF,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,WAAW,EAAE,CAAC;IACtD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,CACL,8BAA8B;gBAC9B,qFAAqF,CACtF,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,CACL,gDAAgD;gBAChD,8DAA8D;gBAC9D,sFAAsF,CACvF,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,CACL,2DAA2D;gBAC3D,uEAAuE,CACxE,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,WAAW,EAAE,CAAC;QACvB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CACL,wBAAwB;QACxB,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,KAAyB;IAClE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;QAC9B,CAAC,CAAC,oBAAoB,CAAC;IAEzB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GACR,KAAK;QACL,0DAA0D,CAAC;IAE7D,OAAO,uBAAuB,OAAO,KAAK,iBAAiB,KAAK,IAAI,EAAE,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function requireFromPackage(e,r){try{return e(r)}catch(e){if(e&&"MODULE_NOT_FOUND"===e.code&&String(e.message).includes(r)){const i=`${e.message}\n🚨 この gateway は dist/ レイアウト前提です('${r}' は dist/lib/... から解決されます)。\n ソースツリーの lib/ を直接動かしていませんか。次のどちらかにしてください:\n 1) pnpm run build を撃ってから dist/ 経由で起動する\n 2) 公開版(npm i -g bluelamp)の bin を使う\n ⚠️ ソースツリー直実行は未対応です(require パスを二重化しない方針・板 #442 ④)。`,n=new Error(i);throw n.code=e.code,n.cause=e,n}throw e}}module.exports={requireFromPackage:requireFromPackage};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* スロット設定の取得結果から「起動キーワード」を決める(純関数)。
|
|
3
|
+
*
|
|
4
|
+
* 【直した欠陥・板 n=1715】
|
|
5
|
+
* `getSlotConfig` は **5 通りの意味を全部 `null` で返していた**——
|
|
6
|
+
* ① token 無し ② 404(スロット未設定)③ 403(階級/プラン不足)④ 通信/500 ⑤ 正当に custom 設定が無い。
|
|
7
|
+
* ⇒ 呼び出し側は「既定表で救ってよい場合(⑤)」と「止めるべき場合(②③④)」を区別できず、
|
|
8
|
+
* 既定表(`bluelamp1`〜`bluelamp18` の **18 個だけ**)に無い番号(19 番以降・101 番〜)は
|
|
9
|
+
* `undefined` を掴んだまま `/cli/prompts/knowledge-injection/undefined` を取りに行っていた。
|
|
10
|
+
* 会員のターミナルには原因の分からない fetch エラーだけが出て、自力で辿れない。
|
|
11
|
+
* 🚨 `!response.ok` の時点で **status は分かっているのに `log()` に書いて捨てていた**
|
|
12
|
+
* (しかも `log()` は会員の画面ではなくログファイルに出るので、会員には何も伝わらない)。
|
|
13
|
+
*
|
|
14
|
+
* 【この関数の規律】
|
|
15
|
+
* - 既定表に在る番号(1〜18)は **取得が失敗しても従来どおり既定表で救う**(救済を壊さない)。
|
|
16
|
+
* - 既定表に無い番号で取得が失敗したら **`undefined` を返さず、理由を 1 行で述べて止める**。
|
|
17
|
+
* - 理由は ②③④ を **混ぜない**(「更新してください」の一律案内にしない)。対処が正反対だから。
|
|
18
|
+
*/
|
|
19
|
+
/** `getSlotConfig` の戻り(5 通りの `null` を判別できる形にしたもの) */
|
|
20
|
+
export type SlotConfigOutcome = {
|
|
21
|
+
ok: true;
|
|
22
|
+
keyword: string | null;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
/** no-token=① / not-configured=②404 / rank=③403 / http=④その他 status / network=④通信失敗 */
|
|
26
|
+
reason: 'no-token' | 'not-configured' | 'rank' | 'http' | 'network';
|
|
27
|
+
status?: number | null;
|
|
28
|
+
message?: string | null;
|
|
29
|
+
};
|
|
30
|
+
export interface ResolveSlotKeywordInput {
|
|
31
|
+
/** 起動された slot 番号(1-300) */
|
|
32
|
+
slotNumber: number;
|
|
33
|
+
/** `getSlotConfig` の戻り。互換: 旧実装の `string | null` も受ける(設置コピーが部分更新でも壊さない) */
|
|
34
|
+
outcome: SlotConfigOutcome | string | null | undefined;
|
|
35
|
+
/** 既定表 `DEFAULT_PROMPT_MAPPING['bluelamp<N>']` の引き当て結果(呼び出し側が引いて渡す) */
|
|
36
|
+
defaultKeyword?: string | null;
|
|
37
|
+
}
|
|
38
|
+
export type ResolveSlotKeywordResult = {
|
|
39
|
+
ok: true;
|
|
40
|
+
keyword: string;
|
|
41
|
+
source: 'custom' | 'default';
|
|
42
|
+
} | {
|
|
43
|
+
ok: false;
|
|
44
|
+
message: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* 失敗の理由だけを短く言う(既定表で救えた 1〜18 番の ⚠️ 行に使う)。
|
|
48
|
+
* ⛔ ここに対処を書かない(救えている=会員が何かをする必要は無い。事実だけ残す)。
|
|
49
|
+
*/
|
|
50
|
+
export declare function describeSlotConfigFailure(outcome: SlotConfigOutcome | string | null | undefined): string;
|
|
51
|
+
/**
|
|
52
|
+
* 失敗の理由を 1 行にする。⛔ ②③④ を 1 つにまとめない(対処が別物)。
|
|
53
|
+
* 行末に「何をすれば直るか」を必ず 1 つだけ入れる。
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildSlotConfigFailureLine(slotNumber: number, outcome: SlotConfigOutcome | string | null | undefined): string;
|
|
56
|
+
/**
|
|
57
|
+
* 起動キーワードを決める。
|
|
58
|
+
* 1. custom 設定が取れていれば それ
|
|
59
|
+
* 2. 既定表に在れば それ(🔬 1〜18 番の救済=取得が失敗していても従来どおり)
|
|
60
|
+
* 3. どちらも無ければ **失敗**(⛔ `undefined` を返さない)
|
|
61
|
+
*/
|
|
62
|
+
export declare function resolveSlotKeyword(input: ResolveSlotKeywordInput): ResolveSlotKeywordResult;
|
|
63
|
+
declare const _default: {
|
|
64
|
+
resolveSlotKeyword: typeof resolveSlotKeyword;
|
|
65
|
+
buildSlotConfigFailureLine: typeof buildSlotConfigFailureLine;
|
|
66
|
+
describeSlotConfigFailure: typeof describeSlotConfigFailure;
|
|
67
|
+
};
|
|
68
|
+
export default _default;
|
|
69
|
+
//# sourceMappingURL=slotKeywordResolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotKeywordResolve.d.ts","sourceRoot":"","sources":["../../src/lib/slotKeywordResolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpC;IACE,EAAE,EAAE,KAAK,CAAC;IACV,sFAAsF;IACtF,MAAM,EAAE,UAAU,GAAG,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEN,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAiBnC;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAgBxG;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GACrD,MAAM,CA6BR;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CAW3F;;;;;;AAED,wBAA6F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function normalize(e){return"string"==typeof e?{ok:!0,keyword:e}:e&&"object"==typeof e&&"boolean"==typeof e.ok?e:{ok:!1,reason:"http",status:null,message:null}}function withDetail(e,o){const t=(o??"").trim();return t?`${e}(${t})`:e}function describeSlotConfigFailure(e){const o=normalize(e);if(o.ok)return"このスロットに配置がありません";switch(o.reason){case"no-token":return"ログイン情報(CLI トークン)がありません";case"not-configured":return"HTTP 404: このスロットに配置がありません";case"rank":return withDetail("HTTP 403: プラン/ランク不足",o.message);case"network":return withDetail("通信エラー",o.message);default:return withDetail(`HTTP ${o.status??"不明"}`,o.message)}}function buildSlotConfigFailureLine(e,o){const t=normalize(o),r=`❌ スロット ${e} の設定を取得できないため起動を中止しました`;if(t.ok)return`${r}: このスロットにエージェントが配置されていません。BlueLamp ポータルの「エージェント配置」で ${e} 番に割り当ててください。`;switch(t.reason){case"no-token":return`${r}: ログイン情報(CLI トークン)がありません。bluelamp-account MCP の logout を実行し、起動し直して再ログインしてください。`;case"not-configured":return`${r}: このスロットにエージェントが配置されていません(HTTP 404)。BlueLamp ポータルの「エージェント配置」で ${e} 番に割り当ててください。`;case"rank":return withDetail(`${r}: 現在のプラン/ランクではこのスロットを利用できません(HTTP 403)。テナント管理者にランクの引き上げを依頼してください`,t.message)+"。";case"network":return withDetail(`${r}: BlueLamp ポータルに接続できませんでした(通信エラー)。ネットワーク/プロキシを確認して再実行してください`,t.message)+"。";default:return withDetail(`${r}: BlueLamp ポータルが応答しませんでした(HTTP ${t.status??"不明"})。時間をおいて再実行し、続く場合はこの 1 行をサポートへ伝えてください`,t.message)+"。"}}function resolveSlotKeyword(e){const{slotNumber:o,defaultKeyword:t}=e,r=normalize(e.outcome);return r.ok&&"string"==typeof r.keyword&&""!==r.keyword.trim()?{ok:!0,keyword:r.keyword,source:"custom"}:"string"==typeof t&&""!==t.trim()?{ok:!0,keyword:t,source:"default"}:{ok:!1,message:buildSlotConfigFailureLine(o,r)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.describeSlotConfigFailure=describeSlotConfigFailure,exports.buildSlotConfigFailureLine=buildSlotConfigFailureLine,exports.resolveSlotKeyword=resolveSlotKeyword,exports.default={resolveSlotKeyword:resolveSlotKeyword,buildSlotConfigFailureLine:buildSlotConfigFailureLine,describeSlotConfigFailure:describeSlotConfigFailure};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slotKeywordResolve.js","sourceRoot":"","sources":["../../src/lib/slotKeywordResolve.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AA6CH,8DAgBC;AAMD,gEAgCC;AAQD,gDAWC;AA5FD,wDAAwD;AACxD,SAAS,SAAS,CAAC,OAAsD;IACvE,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACvE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAQ,OAA6B,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QACtG,gDAAgD;QAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,OAA4B,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,MAAsB;IACtD,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,OAAsD;IAC9F,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC;IACnC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,wBAAwB,CAAC;QAClC,KAAK,gBAAgB;YACnB,OAAO,2BAA2B,CAAC;QACrC,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CACxC,UAAkB,EAClB,OAAsD;IAEtD,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,UAAU,UAAU,wBAAwB,CAAC;IAC1D,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACT,qCAAqC;QACrC,OAAO,GAAG,IAAI,uDAAuD,UAAU,eAAe,CAAC;IACjG,CAAC;IACD,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,GAAG,IAAI,gFAAgF,CAAC;QACjG,KAAK,gBAAgB;YACnB,OAAO,GAAG,IAAI,iEAAiE,UAAU,eAAe,CAAC;QAC3G,KAAK,MAAM;YACT,OAAO,UAAU,CACf,GAAG,IAAI,kEAAkE,EACzE,CAAC,CAAC,OAAO,CACV,GAAG,GAAG,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,UAAU,CACf,GAAG,IAAI,6DAA6D,EACpE,CAAC,CAAC,OAAO,CACV,GAAG,GAAG,CAAC;QACV,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,UAAU,CACf,GAAG,IAAI,kCAAkC,CAAC,CAAC,MAAM,IAAI,IAAI,uCAAuC,EAChG,CAAC,CAAC,OAAO,CACV,GAAG,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,kBAAe,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* launcher が起動のたびに `os.tmpdir()` へ書く一時 MCP config の、命名・掃除・在使用判定。
|
|
3
|
+
*
|
|
4
|
+
* 背景(2026-08-22 CTO 実測 / 2026-08-23 実装席 実測):
|
|
5
|
+
* `createMCPConfig()` が書く `bluelamp-mcp-*.json` には **CLI トークンが平文で入る**。
|
|
6
|
+
* 旧版は `writeFileSync` に mode を渡しておらず **0644**(他ユーザが読める)で、しかも
|
|
7
|
+
* 終了経路によっては消えずに残っていた。実測で ami の `$TMPDIR` に 5 件、機体全体
|
|
8
|
+
* (`/var/folders` 横断)で 253 件が **全件 0644** のまま数日分積もっていた。
|
|
9
|
+
*
|
|
10
|
+
* 🚨 安全要件(この便の設計判断・CTO 承認 2026-08-23):
|
|
11
|
+
* 掃除は「古いから消す」では**絶対にやらない**。実測で、3 日前に作られた
|
|
12
|
+
* `bluelamp-mcp-1787195847391.json` が **走行中の CTO セッションに参照され続けていた**
|
|
13
|
+
* (tmux `cto25` の作成時刻と一致・pid 98912 が保持)。年齢だけで消す実装は、
|
|
14
|
+
* その席の MCP 構成を丸ごと奪う。
|
|
15
|
+
* ⇒ 消してよいのは次の **すべて** を満たすものだけ:
|
|
16
|
+
* 1. 自分の uid が所有している(他人のものに触らない)
|
|
17
|
+
* 2. **どの走行中プロセスも `--mcp-config` で参照していない**
|
|
18
|
+
* 3. 一定時間より古い(`ps` に現れる前の生まれたてを巻き込まない保険)
|
|
19
|
+
* 4. 名前に埋めた作成元 pid が死んでいる(新形式のみ。判らなければ判定しない)
|
|
20
|
+
* ⇒ そして **参照状況が測れなかったら 1 件も消さない**(deny by default)。
|
|
21
|
+
* 「0 件だった」は「走査が届いていない」と区別がつかないため、`ps` の結果は
|
|
22
|
+
* **自分自身の pid が見えるか**という陽性対照で妥当性を確かめてから使う。
|
|
23
|
+
*/
|
|
24
|
+
/** 一時 config の名前の頭。掃除の対象を見分ける唯一の手掛かりなので固定する */
|
|
25
|
+
export declare const TEMP_CONFIG_PREFIX = "bluelamp-mcp-";
|
|
26
|
+
/** `ps` に現れる猶予。在使用判定が主で、これはその取りこぼしを埋める保険 */
|
|
27
|
+
export declare const DEFAULT_MIN_AGE_MS: number;
|
|
28
|
+
export interface SweepCandidate {
|
|
29
|
+
/** 絶対パス。`--mcp-config` に渡る形と一致させる */
|
|
30
|
+
path: string;
|
|
31
|
+
/** ファイル名のみ */
|
|
32
|
+
name: string;
|
|
33
|
+
/** 所有者 uid */
|
|
34
|
+
uid: number;
|
|
35
|
+
/** 最終更新時刻(ms) */
|
|
36
|
+
mtimeMs: number;
|
|
37
|
+
/** 通常ファイルか(symlink 等は対象外) */
|
|
38
|
+
isFile: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface SweepPlanInput {
|
|
41
|
+
candidates: SweepCandidate[];
|
|
42
|
+
/** 走行中プロセスが握っているパス。**null は「測れなかった」** を意味する */
|
|
43
|
+
inUsePaths: ReadonlySet<string> | null;
|
|
44
|
+
nowMs: number;
|
|
45
|
+
/** 自分の uid。判らない環境(Windows 等)では null にして uid 判定を省く */
|
|
46
|
+
ownUid: number | null;
|
|
47
|
+
minAgeMs: number;
|
|
48
|
+
isProcessAlive: (pid: number) => boolean;
|
|
49
|
+
}
|
|
50
|
+
/** 名前から作成元 pid を取る。旧形式・対象外はそれぞれ null / undefined を返す */
|
|
51
|
+
export declare function parseTempConfigName(name: string): {
|
|
52
|
+
ownerPid: number | null;
|
|
53
|
+
} | null;
|
|
54
|
+
/** この起動が使う一時 config のファイル名。pid を埋めて「誰が作ったか」を後から辿れるようにする */
|
|
55
|
+
export declare function tempConfigFileName(pid: number, randomHex: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* 消してよいパスだけを返す純粋関数。I/O を持たないので、危険な条件分岐を全部テストできる。
|
|
58
|
+
* `inUsePaths` が null(測定不能)なら **空配列**を返す=1 件も消さない。
|
|
59
|
+
*/
|
|
60
|
+
export declare function planTempMcpConfigSweep(input: SweepPlanInput): string[];
|
|
61
|
+
/** pid が生きているか。他ユーザ所有(EPERM)は「生きている」に倒す=消さない側へ */
|
|
62
|
+
export declare function isProcessAlive(pid: number): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* 走行中プロセスが `--mcp-config` で握っているパスの集合。
|
|
65
|
+
* **測れなかったら null**(呼び出し側は掃除を中止する)。
|
|
66
|
+
* 妥当性は「自分自身の pid が一覧に見えるか」という陽性対照で確かめる——
|
|
67
|
+
* これが取れないときの空集合は「誰も使っていない」ではなく「計器が効いていない」。
|
|
68
|
+
*/
|
|
69
|
+
export declare function readInUseMcpConfigPaths(): Set<string> | null;
|
|
70
|
+
/** `ps` 出力から `--mcp-config <path>` / `--mcp-config=<path>` を拾う(純粋) */
|
|
71
|
+
export declare function collectMcpConfigPaths(psOutput: string): Set<string>;
|
|
72
|
+
/** 掃除対象の候補を tmpdir から集める(I/O シェル)。読めないものは黙って飛ばす */
|
|
73
|
+
export declare function collectSweepCandidates(dir: string): SweepCandidate[];
|
|
74
|
+
/**
|
|
75
|
+
* 起動時の掃除本体。best-effort で、失敗しても launcher の起動は止めない。
|
|
76
|
+
* 消した件数を返す(呼び出し側でのログ・テスト用)。
|
|
77
|
+
*/
|
|
78
|
+
export declare function sweepStaleTempMcpConfigs(dir?: string, minAgeMs?: number): number;
|
|
79
|
+
//# sourceMappingURL=tempMcpConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempMcpConfig.d.ts","sourceRoot":"","sources":["../../src/lib/tempMcpConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAQlD,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,QAAiB,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,+CAA+C;IAC/C,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C;AAED,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAIpF;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CAgBtE;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAmB5D;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQnE;AAED,mDAAmD;AACnD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAyBpE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAoB,EACzB,QAAQ,GAAE,MAA2B,GACpC,MAAM,CAuBR"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,o,r)}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(null!=t)for(var o=e(t),r=0;r<o.length;r++)"default"!==o[r]&&__createBinding(n,t,o[r]);return __setModuleDefault(n,t),n}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_MIN_AGE_MS=exports.TEMP_CONFIG_PREFIX=void 0,exports.parseTempConfigName=parseTempConfigName,exports.tempConfigFileName=tempConfigFileName,exports.planTempMcpConfigSweep=planTempMcpConfigSweep,exports.isProcessAlive=isProcessAlive,exports.readInUseMcpConfigPaths=readInUseMcpConfigPaths,exports.collectMcpConfigPaths=collectMcpConfigPaths,exports.collectSweepCandidates=collectSweepCandidates,exports.sweepStaleTempMcpConfigs=sweepStaleTempMcpConfigs;const node_child_process_1=require("node:child_process"),fs=__importStar(require("node:fs")),os=__importStar(require("node:os")),path=__importStar(require("node:path"));exports.TEMP_CONFIG_PREFIX="bluelamp-mcp-";const TEMP_CONFIG_NAME=/^bluelamp-mcp-(?:(\d+)-[0-9a-f]+|\d+)\.json$/;function parseTempConfigName(e){const t=TEMP_CONFIG_NAME.exec(e);return t?{ownerPid:t[1]?Number(t[1]):null}:null}function tempConfigFileName(e,t){return`${exports.TEMP_CONFIG_PREFIX}${e}-${t}.json`}function planTempMcpConfigSweep(e){const{candidates:t,inUsePaths:n,nowMs:o,ownUid:r,minAgeMs:s,isProcessAlive:i}=e;if(null===n)return[];const c=[];for(const e of t){const t=parseTempConfigName(e.name);t&&e.isFile&&(n.has(e.path)||null!==r&&e.uid!==r||o-e.mtimeMs<s||null!==t.ownerPid&&i(t.ownerPid)||c.push(e.path))}return c}function isProcessAlive(e){if(!Number.isInteger(e)||e<=0)return!0;try{return process.kill(e,0),!0}catch(e){return"EPERM"===e?.code}}function readInUseMcpConfigPaths(){let e;try{const t=(0,node_child_process_1.spawnSync)("ps",["-Awwo","pid=,command="],{encoding:"utf8",maxBuffer:67108864});if(t.error||"string"!=typeof t.stdout)return null;e=t.stdout}catch{return null}const t=e.split("\n"),n=String(process.pid);return t.some(e=>e.trim().split(/\s+/)[0]===n)?collectMcpConfigPaths(e):null}function collectMcpConfigPaths(e){const t=new Set,n=/--mcp-config[=\s]+(\S+)/g;let o;for(;null!==(o=n.exec(e));)t.add(o[1]);return t}function collectSweepCandidates(e){let t;try{t=fs.readdirSync(e)}catch{return[]}const n=[];for(const o of t){if(!parseTempConfigName(o))continue;const t=path.join(e,o);try{const e=fs.lstatSync(t);n.push({path:t,name:o,uid:e.uid,mtimeMs:e.mtimeMs,isFile:e.isFile()})}catch{}}return n}function sweepStaleTempMcpConfigs(e=os.tmpdir(),t=exports.DEFAULT_MIN_AGE_MS){try{const n=planTempMcpConfigSweep({candidates:collectSweepCandidates(e),inUsePaths:readInUseMcpConfigPaths(),nowMs:Date.now(),ownUid:"function"==typeof process.getuid?process.getuid():null,minAgeMs:t,isProcessAlive:isProcessAlive});let o=0;for(const e of n)try{fs.unlinkSync(e),o+=1}catch{}return o}catch{return 0}}exports.DEFAULT_MIN_AGE_MS=36e5;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tempMcpConfig.js","sourceRoot":"","sources":["../../src/lib/tempMcpConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 「今どのアカウントで動いているか」の申告文を組み立てる(P4・純関数)。
|
|
3
|
+
*
|
|
4
|
+
* CLI の認証主体は単一グローバルファイル `~/.musuhi/portal-token.enc` であり、
|
|
5
|
+
* セッション / テナント単位の分離が無い。つまり一度アカウントを切り替えると、その端末の
|
|
6
|
+
* 全セッション・全 monster・scheduler が以後そのアカウントになる。
|
|
7
|
+
*
|
|
8
|
+
* ところが launcher (`bluelampN`) はアカウントを起動時に表示する(👤 / 📧 / 🎭)のに、
|
|
9
|
+
* launcher を経由しない経路(monster / scheduler / 素の `claude`)には表示箇所が一つも無い。
|
|
10
|
+
* 2026-07-30 の事故(別アカウントでログインしていたことに気づかず load_knowledge が全滅)は
|
|
11
|
+
* この不可視性そのものだったため、エージェントが自分で確認できる申告手段を用意する。
|
|
12
|
+
*/
|
|
13
|
+
export interface WhoamiFacts {
|
|
14
|
+
/** ローカルにトークンが在るか */
|
|
15
|
+
tokenPresent: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* portal が「有効」と明示的に答えたときだけ true。それ以外は null。
|
|
18
|
+
* TokenManager.validateToken は通信失敗も valid:false に潰すため、
|
|
19
|
+
* 「無効」と「繋がらなかった」を我々の側で区別できない。区別できないものを
|
|
20
|
+
* 断定しない(推測を案内文に混ぜない)ため false は作らず、理由は note に載せる。
|
|
21
|
+
*/
|
|
22
|
+
validated: true | null;
|
|
23
|
+
/** portal が返した理由 / 通信エラー文(そのまま載せる一次情報) */
|
|
24
|
+
note?: string | null;
|
|
25
|
+
email?: string | null;
|
|
26
|
+
name?: string | null;
|
|
27
|
+
role?: string | null;
|
|
28
|
+
/** アクティブテナント(UUID)。未選択は null */
|
|
29
|
+
tenantId?: string | null;
|
|
30
|
+
/** トークンファイルの場所(利用者に実体を示す) */
|
|
31
|
+
tokenPath?: string | null;
|
|
32
|
+
}
|
|
33
|
+
export declare function formatWhoami(facts: WhoamiFacts): string;
|
|
34
|
+
//# sourceMappingURL=whoami.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/lib/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,WAAW;IAC1B,oBAAoB;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAOD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAkCvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";function line(e,t){return null==t||0===String(t).trim().length?null:`${e}: ${String(t).trim()}`}function formatWhoami(e){return e.tokenPresent?[!0===e.validated?"✅ 有効なトークンで認証されています。":"🟡 トークンは保存されていますが、portal で有効と確認できませんでした(無効化された / オフラインのどちらもあり得ます)。以下は保存時の情報です。",...[!0===e.validated?null:line("ℹ️ portal の応答",e.note),line("👤 名前",e.name),line("📧 メール",e.email),line("🎭 role",e.role),e.tenantId?line("🏢 アクティブテナント",e.tenantId):"🏢 アクティブテナント: 未選択(VSCode の BizBoost 拡張で選択が必要)",line("🗂 トークン",e.tokenPath)].filter(e=>null!==e),"","この端末の全セッション(monster / scheduler / 素の claude を含む)が同じアカウントを共有します。","別アカウントに切り替えるには logout を実行してから bizboost1〜300 を起動し直してください。"].join("\n"):["🔓 ログインしていません(ローカルに認証トークンがありません)。","bizboost1〜300 のいずれかを起動するとログイン画面が出ます。",e.tokenPath?`確認した場所: ${e.tokenPath}`:null].filter(e=>null!==e).join("\n")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatWhoami=formatWhoami;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/lib/whoami.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AA4BH,oCAkCC;AAvCD,SAAS,IAAI,CAAC,KAAa,EAAE,KAAc;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,OAAO,GAAG,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,SAAgB,YAAY,CAAC,KAAkB;IAC7C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO;YACL,mCAAmC;YACnC,sCAAsC;YACtC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;SACtD;aACE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;aACtC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GACZ,KAAK,CAAC,SAAS,KAAK,IAAI;QACtB,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,gFAAgF,CAAC;IAEvF,MAAM,IAAI,GAAG;QACX,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC;QACnE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC;QAC3B,KAAK,CAAC,QAAQ;YACZ,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;YACtC,CAAC,CAAC,+CAA+C;QACnD,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;KACjC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAEzC,OAAO;QACL,QAAQ;QACR,GAAG,IAAI;QACP,EAAE;QACF,iEAAiE;QACjE,0DAA0D;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(null!=t)for(var r=e(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}}();Object.defineProperty(exports,"__esModule",{value:!0});const fs=__importStar(require("node:fs")),path=__importStar(require("node:path")),MAX_SLOTS=
|
|
2
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(null!=t)for(var r=e(t),i=0;i<r.length;i++)"default"!==r[i]&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}}();Object.defineProperty(exports,"__esModule",{value:!0});const fs=__importStar(require("node:fs")),path=__importStar(require("node:path")),MAX_SLOTS=300,TRAMPOLINE_CONTENT="#!/usr/bin/env node\nimport './bluelamp-vscode-base.mjs';\n";function main(){const e=path.resolve(__dirname,"..",".."),t=path.join(e,"bin");let n="bluelamp";try{const t=JSON.parse(fs.readFileSync(path.join(e,"package.json"),"utf-8"));"string"==typeof t.name&&t.name.trim()&&(n=t.name.trim())}catch{}fs.existsSync(t)||fs.mkdirSync(t,{recursive:!0}),console.log(`🔵 ${n} コマンド生成開始...\n`);let r=0;for(let e=1;e<=300;e++){const i=path.join(t,`${n}${e}.mjs`);(!fs.existsSync(i)||fs.readFileSync(i,"utf-8")!==TRAMPOLINE_CONTENT)&&(fs.writeFileSync(i,TRAMPOLINE_CONTENT),r++);try{fs.chmodSync(i,493)}catch{}e%50==0&&console.log(` ✅ ${n}1〜${e}.mjs 確認完了`)}const i=path.join(t,"bluelamp-vscode-base.mjs");if(fs.existsSync(i))try{fs.chmodSync(i,493)}catch{}console.log(`\n✨ 300 個の bin trampoline を確認 (新規/差分更新: ${r})`)}main();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var l=Object.getOwnPropertyDescriptor(t,r);l&&!("get"in l?!t.__esModule:l.writable||l.configurable)||(l={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,l)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(){var e=function(t){return e=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r);return t},e(t)};return function(t){if(t&&t.__esModule)return t;var r={};if(null!=t)for(var n=e(t),l=0;l<n.length;l++)"default"!==n[l]&&__createBinding(r,t,n[l]);return __setModuleDefault(r,t),r}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.SHELL_PROBE_TIMEOUT_MS=void 0,exports.staticCandidates=staticCandidates,exports.pickPathFromShellOutput=pickPathFromShellOutput,exports.resolveClaudeBinWith=resolveClaudeBinWith,exports.isExecutableFile=isExecutableFile,exports.resolveLoginShell=resolveLoginShell,exports.askLoginShellForClaude=askLoginShellForClaude,exports.resolveClaudeBinDetailed=resolveClaudeBinDetailed;const node_child_process_1=require("node:child_process"),fs=__importStar(require("node:fs")),os=__importStar(require("node:os")),path=__importStar(require("node:path"));function staticCandidates(e){return[path.join(e,".local","bin","claude"),path.join(e,".claude","local","claude"),"/opt/homebrew/bin/claude","/usr/local/bin/claude","/usr/bin/claude"]}function pickPathFromShellOutput(e){const t=e.split("\n").map(e=>e.trim()).filter(e=>e.length>0);for(let e=t.length-1;e>=0;e-=1)if(t[e].startsWith("/"))return t[e];return null}function resolveClaudeBinWith(e){const t=e.env("SCHEDULER_CLAUDE_BIN");if(t&&t.length>0)return{bin:t,source:"env"};const r=e.askLoginShell();if(null!==r&&e.isExecutable(r))return{bin:r,source:"login_shell"};for(const t of staticCandidates(e.home()))if(e.isExecutable(t))return{bin:t,source:"static_candidate"};return{bin:null,error:`claude 実行ファイルを解決できません(${null===r?"ログインシェルからは取得できず":`ログインシェルは ${r} を返したが実行可能ファイルではない`}/静的候補もすべて不在)。SCHEDULER_CLAUDE_BIN に絶対パスを設定すれば確実に解決できます`}}function isExecutableFile(e){try{return!!fs.statSync(e).isFile()&&(fs.accessSync(e,fs.constants.X_OK),!0)}catch{return!1}}function resolveLoginShell(){const e=process.env.SHELL;if(e&&e.length>0)return e;try{const e=os.userInfo().shell;if(e&&e.length>0)return e}catch{}return null}function askLoginShellForClaude(){const e=resolveLoginShell();if(null===e)return null;try{return pickPathFromShellOutput((0,node_child_process_1.execFileSync)(e,["-lic","command -v claude"],{encoding:"utf-8",timeout:exports.SHELL_PROBE_TIMEOUT_MS,stdio:["ignore","pipe","ignore"]}))}catch{return null}}function resolveClaudeBinDetailed(){return resolveClaudeBinWith({env:e=>process.env[e],home:()=>os.homedir(),isExecutable:isExecutableFile,askLoginShell:askLoginShellForClaude})}exports.SHELL_PROBE_TIMEOUT_MS=5e3;
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* BizBoost CLI logger — env `MUSUHI_LOG_LEVEL` で出力レベルを制御。
|
|
3
3
|
* 旧 `bluelampportal/mcp/lib/utils/logger.js` を TypeScript で再実装したもの。
|
|
4
4
|
*/
|
|
5
5
|
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bizboost",
|
|
3
|
-
"version": "6.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "6.6.8",
|
|
4
|
+
"description": "BizBoost CLI: 旧 bluelampportal/mcp の auth / 200+ bizboost1-N binary / postinstall scripts を TypeScript 化して monorepo に統合したパッケージ。",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"
|
|
6
|
+
"bizboost",
|
|
7
7
|
"cli",
|
|
8
8
|
"mcp",
|
|
9
9
|
"claude-code",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"types": "dist/index.d.ts",
|
|
16
16
|
"files": [
|
|
17
17
|
"dist",
|
|
18
|
-
"README.md"
|
|
18
|
+
"README.md",
|
|
19
|
+
"verify-release.sh"
|
|
19
20
|
],
|
|
20
21
|
"publishConfig": {
|
|
21
22
|
"access": "public"
|
|
@@ -23,24 +24,26 @@
|
|
|
23
24
|
"preferGlobal": true,
|
|
24
25
|
"repository": {
|
|
25
26
|
"type": "git",
|
|
26
|
-
"url": "git+https://github.com/
|
|
27
|
+
"url": "git+https://github.com/mikoto-co-jp/mikoto-monorepo.git",
|
|
27
28
|
"directory": "packages/bluelamp-cli"
|
|
28
29
|
},
|
|
29
|
-
"homepage": "https://github.com/
|
|
30
|
+
"homepage": "https://github.com/mikoto-co-jp/mikoto-monorepo/tree/main/packages/bluelamp-cli",
|
|
30
31
|
"bugs": {
|
|
31
|
-
"url": "https://github.com/
|
|
32
|
+
"url": "https://github.com/mikoto-co-jp/mikoto-monorepo/issues"
|
|
32
33
|
},
|
|
33
34
|
"scripts": {
|
|
34
|
-
"build:tsc": "rm -rf dist && tsc && tsc -p scripts/tsconfig.json",
|
|
35
|
+
"build:tsc": "rm -rf dist && tsc && tsc -p scripts/tsconfig.json && tsc -p tsconfig.claude-bin.json",
|
|
35
36
|
"build:obfuscate": "node scripts/build-obfuscate.mjs",
|
|
36
37
|
"build": "pnpm run build:tsc && pnpm run build:obfuscate",
|
|
37
|
-
"tsc": "tsc --noEmit && tsc -p scripts/tsconfig.json --noEmit",
|
|
38
|
+
"tsc": "tsc --noEmit && tsc -p scripts/tsconfig.json --noEmit && tsc -p tsconfig.claude-bin.json --noEmit",
|
|
38
39
|
"generate:bins": "node dist/scripts/generate-commands.js",
|
|
39
|
-
"test": "node
|
|
40
|
+
"test": "node scripts/run-tests.mjs",
|
|
40
41
|
"prepublishOnly": "pnpm run build"
|
|
41
42
|
},
|
|
42
43
|
"dependencies": {
|
|
44
|
+
"@bluelamp/cli-token": "1.0.2",
|
|
43
45
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
46
|
+
"cross-spawn": "^7.0.6",
|
|
44
47
|
"dotenv": "^16.6.1",
|
|
45
48
|
"node-fetch": "^3.3.2"
|
|
46
49
|
},
|
|
@@ -253,6 +256,106 @@
|
|
|
253
256
|
"bizboost197": "./dist/bin/bizboost197.mjs",
|
|
254
257
|
"bizboost198": "./dist/bin/bizboost198.mjs",
|
|
255
258
|
"bizboost199": "./dist/bin/bizboost199.mjs",
|
|
256
|
-
"bizboost200": "./dist/bin/bizboost200.mjs"
|
|
259
|
+
"bizboost200": "./dist/bin/bizboost200.mjs",
|
|
260
|
+
"bizboost201": "./dist/bin/bizboost201.mjs",
|
|
261
|
+
"bizboost202": "./dist/bin/bizboost202.mjs",
|
|
262
|
+
"bizboost203": "./dist/bin/bizboost203.mjs",
|
|
263
|
+
"bizboost204": "./dist/bin/bizboost204.mjs",
|
|
264
|
+
"bizboost205": "./dist/bin/bizboost205.mjs",
|
|
265
|
+
"bizboost206": "./dist/bin/bizboost206.mjs",
|
|
266
|
+
"bizboost207": "./dist/bin/bizboost207.mjs",
|
|
267
|
+
"bizboost208": "./dist/bin/bizboost208.mjs",
|
|
268
|
+
"bizboost209": "./dist/bin/bizboost209.mjs",
|
|
269
|
+
"bizboost210": "./dist/bin/bizboost210.mjs",
|
|
270
|
+
"bizboost211": "./dist/bin/bizboost211.mjs",
|
|
271
|
+
"bizboost212": "./dist/bin/bizboost212.mjs",
|
|
272
|
+
"bizboost213": "./dist/bin/bizboost213.mjs",
|
|
273
|
+
"bizboost214": "./dist/bin/bizboost214.mjs",
|
|
274
|
+
"bizboost215": "./dist/bin/bizboost215.mjs",
|
|
275
|
+
"bizboost216": "./dist/bin/bizboost216.mjs",
|
|
276
|
+
"bizboost217": "./dist/bin/bizboost217.mjs",
|
|
277
|
+
"bizboost218": "./dist/bin/bizboost218.mjs",
|
|
278
|
+
"bizboost219": "./dist/bin/bizboost219.mjs",
|
|
279
|
+
"bizboost220": "./dist/bin/bizboost220.mjs",
|
|
280
|
+
"bizboost221": "./dist/bin/bizboost221.mjs",
|
|
281
|
+
"bizboost222": "./dist/bin/bizboost222.mjs",
|
|
282
|
+
"bizboost223": "./dist/bin/bizboost223.mjs",
|
|
283
|
+
"bizboost224": "./dist/bin/bizboost224.mjs",
|
|
284
|
+
"bizboost225": "./dist/bin/bizboost225.mjs",
|
|
285
|
+
"bizboost226": "./dist/bin/bizboost226.mjs",
|
|
286
|
+
"bizboost227": "./dist/bin/bizboost227.mjs",
|
|
287
|
+
"bizboost228": "./dist/bin/bizboost228.mjs",
|
|
288
|
+
"bizboost229": "./dist/bin/bizboost229.mjs",
|
|
289
|
+
"bizboost230": "./dist/bin/bizboost230.mjs",
|
|
290
|
+
"bizboost231": "./dist/bin/bizboost231.mjs",
|
|
291
|
+
"bizboost232": "./dist/bin/bizboost232.mjs",
|
|
292
|
+
"bizboost233": "./dist/bin/bizboost233.mjs",
|
|
293
|
+
"bizboost234": "./dist/bin/bizboost234.mjs",
|
|
294
|
+
"bizboost235": "./dist/bin/bizboost235.mjs",
|
|
295
|
+
"bizboost236": "./dist/bin/bizboost236.mjs",
|
|
296
|
+
"bizboost237": "./dist/bin/bizboost237.mjs",
|
|
297
|
+
"bizboost238": "./dist/bin/bizboost238.mjs",
|
|
298
|
+
"bizboost239": "./dist/bin/bizboost239.mjs",
|
|
299
|
+
"bizboost240": "./dist/bin/bizboost240.mjs",
|
|
300
|
+
"bizboost241": "./dist/bin/bizboost241.mjs",
|
|
301
|
+
"bizboost242": "./dist/bin/bizboost242.mjs",
|
|
302
|
+
"bizboost243": "./dist/bin/bizboost243.mjs",
|
|
303
|
+
"bizboost244": "./dist/bin/bizboost244.mjs",
|
|
304
|
+
"bizboost245": "./dist/bin/bizboost245.mjs",
|
|
305
|
+
"bizboost246": "./dist/bin/bizboost246.mjs",
|
|
306
|
+
"bizboost247": "./dist/bin/bizboost247.mjs",
|
|
307
|
+
"bizboost248": "./dist/bin/bizboost248.mjs",
|
|
308
|
+
"bizboost249": "./dist/bin/bizboost249.mjs",
|
|
309
|
+
"bizboost250": "./dist/bin/bizboost250.mjs",
|
|
310
|
+
"bizboost251": "./dist/bin/bizboost251.mjs",
|
|
311
|
+
"bizboost252": "./dist/bin/bizboost252.mjs",
|
|
312
|
+
"bizboost253": "./dist/bin/bizboost253.mjs",
|
|
313
|
+
"bizboost254": "./dist/bin/bizboost254.mjs",
|
|
314
|
+
"bizboost255": "./dist/bin/bizboost255.mjs",
|
|
315
|
+
"bizboost256": "./dist/bin/bizboost256.mjs",
|
|
316
|
+
"bizboost257": "./dist/bin/bizboost257.mjs",
|
|
317
|
+
"bizboost258": "./dist/bin/bizboost258.mjs",
|
|
318
|
+
"bizboost259": "./dist/bin/bizboost259.mjs",
|
|
319
|
+
"bizboost260": "./dist/bin/bizboost260.mjs",
|
|
320
|
+
"bizboost261": "./dist/bin/bizboost261.mjs",
|
|
321
|
+
"bizboost262": "./dist/bin/bizboost262.mjs",
|
|
322
|
+
"bizboost263": "./dist/bin/bizboost263.mjs",
|
|
323
|
+
"bizboost264": "./dist/bin/bizboost264.mjs",
|
|
324
|
+
"bizboost265": "./dist/bin/bizboost265.mjs",
|
|
325
|
+
"bizboost266": "./dist/bin/bizboost266.mjs",
|
|
326
|
+
"bizboost267": "./dist/bin/bizboost267.mjs",
|
|
327
|
+
"bizboost268": "./dist/bin/bizboost268.mjs",
|
|
328
|
+
"bizboost269": "./dist/bin/bizboost269.mjs",
|
|
329
|
+
"bizboost270": "./dist/bin/bizboost270.mjs",
|
|
330
|
+
"bizboost271": "./dist/bin/bizboost271.mjs",
|
|
331
|
+
"bizboost272": "./dist/bin/bizboost272.mjs",
|
|
332
|
+
"bizboost273": "./dist/bin/bizboost273.mjs",
|
|
333
|
+
"bizboost274": "./dist/bin/bizboost274.mjs",
|
|
334
|
+
"bizboost275": "./dist/bin/bizboost275.mjs",
|
|
335
|
+
"bizboost276": "./dist/bin/bizboost276.mjs",
|
|
336
|
+
"bizboost277": "./dist/bin/bizboost277.mjs",
|
|
337
|
+
"bizboost278": "./dist/bin/bizboost278.mjs",
|
|
338
|
+
"bizboost279": "./dist/bin/bizboost279.mjs",
|
|
339
|
+
"bizboost280": "./dist/bin/bizboost280.mjs",
|
|
340
|
+
"bizboost281": "./dist/bin/bizboost281.mjs",
|
|
341
|
+
"bizboost282": "./dist/bin/bizboost282.mjs",
|
|
342
|
+
"bizboost283": "./dist/bin/bizboost283.mjs",
|
|
343
|
+
"bizboost284": "./dist/bin/bizboost284.mjs",
|
|
344
|
+
"bizboost285": "./dist/bin/bizboost285.mjs",
|
|
345
|
+
"bizboost286": "./dist/bin/bizboost286.mjs",
|
|
346
|
+
"bizboost287": "./dist/bin/bizboost287.mjs",
|
|
347
|
+
"bizboost288": "./dist/bin/bizboost288.mjs",
|
|
348
|
+
"bizboost289": "./dist/bin/bizboost289.mjs",
|
|
349
|
+
"bizboost290": "./dist/bin/bizboost290.mjs",
|
|
350
|
+
"bizboost291": "./dist/bin/bizboost291.mjs",
|
|
351
|
+
"bizboost292": "./dist/bin/bizboost292.mjs",
|
|
352
|
+
"bizboost293": "./dist/bin/bizboost293.mjs",
|
|
353
|
+
"bizboost294": "./dist/bin/bizboost294.mjs",
|
|
354
|
+
"bizboost295": "./dist/bin/bizboost295.mjs",
|
|
355
|
+
"bizboost296": "./dist/bin/bizboost296.mjs",
|
|
356
|
+
"bizboost297": "./dist/bin/bizboost297.mjs",
|
|
357
|
+
"bizboost298": "./dist/bin/bizboost298.mjs",
|
|
358
|
+
"bizboost299": "./dist/bin/bizboost299.mjs",
|
|
359
|
+
"bizboost300": "./dist/bin/bizboost300.mjs"
|
|
257
360
|
}
|
|
258
361
|
}
|