bizboost 6.6.20 → 6.6.21

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.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";const crypto=require("node:crypto"),fs=require("node:fs"),os=require("node:os"),path=require("node:path"),VERSION=1,EVENT_TO_EV={SessionStart:"session_start",UserPromptSubmit:"prompt",PostToolUse:"tool",PostToolUseFailure:"tool_fail",Stop:"stop",StopFailure:"api_error",SubagentStop:"subagent_stop",SessionEnd:"session_end"},HOOK_EVENTS=Object.keys(EVENT_TO_EV),ERR_KIND=/^[a-z][a-z0-9_]{0,63}$/,SID_SHAPE=/^[A-Za-z0-9-]{1,128}$/,TOOL_SHAPE=/^[A-Za-z0-9_.:-]{1,200}$/,ROLE_SHAPE=/^[^\r\n]{1,200}$/,ANSI_SEQUENCE=/\x1b(?:\[[0-?]*[ -/]*[@-~]|[@-Z\\-_])?/g;function sha16(t){return crypto.createHash("sha256").update(t,"utf8").digest("hex").slice(0,16)}function normalizePrompt(t){return t.replace(ANSI_SEQUENCE,"").replace(/\s+/gu,"")}function footprintDirName(t){return t.replace(/[^A-Za-z0-9]/g,"-")}function footprintFile(t,o,n){return path.join(t,".bluelamp","footprints",footprintDirName(o),`${n}.jsonl`)}function nonEmptyString(t){return"string"==typeof t&&t.length>0?t:null}function toFootprint(t,o,n){if(!t||"object"!=typeof t||Array.isArray(t))return null;const r=EVENT_TO_EV[t.hook_event_name];if(!r)return null;const e=nonEmptyString(t.session_id),i=nonEmptyString(t.cwd);if(!e||!SID_SHAPE.test(e)||!i)return null;const s={v:1,ts:n.toISOString(),sid:e,cwd:i,ev:r};if("session_start"===r){const t=nonEmptyString(o.BLUELAMP_FOOTPRINT_ROLE);t&&ROLE_SHAPE.test(t)&&(s.role=t)}else if("prompt"===r)"string"==typeof t.prompt&&(s.psha=sha16(t.prompt),s.pnsha=sha16(normalizePrompt(t.prompt)));else if("tool"===r||"tool_fail"===r){const o=nonEmptyString(t.tool_name);o&&TOOL_SHAPE.test(o)&&(s.tool=o),s.ok="tool"===r,"CronCreate"===o&&t.tool_input&&"boolean"==typeof t.tool_input.recurring&&(s.recurring=t.tool_input.recurring)}else if("api_error"===r){const o=nonEmptyString(t.error);o&&ERR_KIND.test(o)&&(s.err=o)}const p=nonEmptyString(o.MONSTER_ID);return p&&SID_SHAPE.test(p)&&(s.mid=p),s}function dirCwdOf(t,o){const n=o&&o.BLUELAMP_FOOTPRINT_DIR_CWD;return"string"==typeof n&&n.length>0?n:t.cwd}function appendFootprint(t,o,n={}){const r=footprintFile(t,dirCwdOf(o,n),o.sid);return fs.mkdirSync(path.dirname(r),{recursive:!0,mode:448}),fs.appendFileSync(r,`${JSON.stringify(o)}\n`,{encoding:"utf8",mode:384}),r}function main(){try{const t=fs.readFileSync(0,"utf8"),o=toFootprint(JSON.parse(t),process.env,new Date);o&&appendFootprint(os.homedir(),o,process.env)}catch{}process.exit(0)}module.exports={HOOK_EVENTS:HOOK_EVENTS,toFootprint:toFootprint,normalizePrompt:normalizePrompt,footprintDirName:footprintDirName,footprintFile:footprintFile,dirCwdOf:dirCwdOf,appendFootprint:appendFootprint},require.main===module&&main();
2
+ "use strict";const crypto=require("node:crypto"),fs=require("node:fs"),os=require("node:os"),path=require("node:path"),VERSION=1,EVENT_TO_EV={SessionStart:"session_start",UserPromptSubmit:"prompt",PostToolUse:"tool",PostToolUseFailure:"tool_fail",Stop:"stop",StopFailure:"api_error",SubagentStop:"subagent_stop",SessionEnd:"session_end"},HOOK_EVENTS=Object.keys(EVENT_TO_EV),ERR_KIND=/^[a-z][a-z0-9_]{0,63}$/,SID_SHAPE=/^[A-Za-z0-9-]{1,128}$/,TOOL_SHAPE=/^[A-Za-z0-9_.:-]{1,200}$/,ROLE_SHAPE=/^[^\r\n]{1,200}$/,ANSI_SEQUENCE=/\x1b(?:\[[0-?]*[ -/]*[@-~]|[@-Z\\-_])?/g;function sha16(t){return crypto.createHash("sha256").update(t,"utf8").digest("hex").slice(0,16)}function normalizePrompt(t){return t.replace(ANSI_SEQUENCE,"").replace(/\s+/gu,"")}function footprintDirName(t){return t.replace(/[^A-Za-z0-9]/g,"-")}function footprintFile(t,o,n){return path.join(t,".bluelamp","footprints",footprintDirName(o),`${n}.jsonl`)}function nonEmptyString(t){return"string"==typeof t&&t.length>0?t:null}function toFootprint(t,o,n){if(!t||"object"!=typeof t||Array.isArray(t))return null;const e=EVENT_TO_EV[t.hook_event_name];if(!e)return null;const r=nonEmptyString(t.session_id),i=nonEmptyString(t.cwd);if(!r||!SID_SHAPE.test(r)||!i)return null;const s={v:1,ts:n.toISOString(),sid:r,cwd:i,ev:e};if("session_start"===e){const t=nonEmptyString(o.BLUELAMP_FOOTPRINT_ROLE);t&&ROLE_SHAPE.test(t)&&(s.role=t)}else if("prompt"===e)"string"==typeof t.prompt&&(s.psha=sha16(t.prompt),s.pnsha=sha16(normalizePrompt(t.prompt)));else if("tool"===e||"tool_fail"===e){const o=nonEmptyString(t.tool_name);o&&TOOL_SHAPE.test(o)&&(s.tool=o),s.ok="tool"===e,"CronCreate"===o&&t.tool_input&&"boolean"==typeof t.tool_input.recurring&&(s.recurring=t.tool_input.recurring)}else if("api_error"===e){const o=nonEmptyString(t.error);o&&ERR_KIND.test(o)&&(s.err=o)}const p=nonEmptyString(o.MONSTER_ID);return p&&SID_SHAPE.test(p)&&(s.mid=p),s}function dirCwdOf(t,o){const n=o&&o.BLUELAMP_FOOTPRINT_DIR_CWD;return"string"==typeof n&&n.length>0?n:t.cwd}function quoteForShell(t){return`"${t.replace(/(["\\$`])/g,"\\$1")}"`}function buildSettingsJson(t,o){const n=`${quoteForShell(t)} ${quoteForShell(o)}`,e={};for(const t of HOOK_EVENTS)e[t]=[{hooks:[{type:"command",command:n}]}];return JSON.stringify({hooks:e})}function appendFootprint(t,o,n={}){const e=footprintFile(t,dirCwdOf(o,n),o.sid);return fs.mkdirSync(path.dirname(e),{recursive:!0,mode:448}),fs.appendFileSync(e,`${JSON.stringify(o)}\n`,{encoding:"utf8",mode:384}),e}function main(){"--settings-json"===process.argv[2]&&(process.stdout.write(buildSettingsJson(process.execPath,__filename)),process.exit(0));try{const t=fs.readFileSync(0,"utf8"),o=toFootprint(JSON.parse(t),process.env,new Date);o&&appendFootprint(os.homedir(),o,process.env)}catch{}process.exit(0)}module.exports={HOOK_EVENTS:HOOK_EVENTS,buildSettingsJson:buildSettingsJson,toFootprint:toFootprint,normalizePrompt:normalizePrompt,footprintDirName:footprintDirName,footprintFile:footprintFile,dirCwdOf:dirCwdOf,appendFootprint:appendFootprint},require.main===module&&main();
@@ -1,22 +1,15 @@
1
1
  /**
2
2
  * 起動子が子の Claude Code へ渡す足跡の hook(箱 n=2475・足跡の形 v1・純関数)。
3
3
  *
4
- * 書き手は lib/footprint/footprint-hook.cjs の 1 つだけ。ここはそれを出来事ごとに呼ぶ settings を組むだけ。
4
+ * 書き手は lib/footprint/footprint-hook.cjs の 1 つだけ。hook を入れる settings の形の正本も同じファイル
5
+ * (`buildSettingsJson`・MO の素の claude の道と共有するため)。ここはファイル名と子の env だけを持つ。
5
6
  * `--settings` で渡す settings は利用者・プロジェクトの settings と並んで効く(monster の
6
7
  * .claude/settings.json の hook は消えない)。
7
- *
8
- * 出来事は書き手の HOOK_EVENTS と同じ 8 つ(Claude Code 2.1.289 に 8 つとも在ることを実測済み)。
9
8
  */
10
9
  /** 子の env に入れる鍵(launcher 無しの素の claude の道=MO spawn.ts が同じ hook を入れるときに引く)。 */
11
10
  export declare const FOOTPRINT_HOOK_ENV = "BLUELAMP_FOOTPRINT_HOOK";
12
11
  /** 役を実際に載せたとき(本体プロンプトを system へ注入できたとき)だけ入れる鍵。書き手が session_start の role に写す。 */
13
12
  export declare const FOOTPRINT_ROLE_ENV = "BLUELAMP_FOOTPRINT_ROLE";
14
- export declare const FOOTPRINT_HOOK_EVENTS: readonly ["SessionStart", "UserPromptSubmit", "PostToolUse", "PostToolUseFailure", "Stop", "StopFailure", "SubagentStop", "SessionEnd"];
15
- /**
16
- * `--settings` に渡す JSON 文字列。hook の command は `"<node の絶対パス>" "<hook の絶対パス>"`
17
- * (PATH に node が無い launchd・非対話 SSH でも動くよう、起動子を走らせている node をそのまま使う)。
18
- */
19
- export declare function buildFootprintSettings(nodePath: string, hookPath: string): string;
20
13
  /**
21
14
  * settings を書くファイルの名前(中身の sha256 先頭 16 桁)。中身は node と hook の path だけ=秘密も本文も無いので、
22
15
  * 同じ中身なら同じファイルを使い回す(消さない)。⚠️ JSON を引数で直に渡さないのは、Windows の
@@ -29,4 +22,10 @@ export declare function footprintSettingsFileName(settingsJson: string, sha256He
29
22
  export declare const FOOTPRINT_DIR_CWD_ENV = "BLUELAMP_FOOTPRINT_DIR_CWD";
30
23
  /** 子の env に足す鍵(role は役を載せたときだけ・dirCwd は claude を起こす cwd)。 */
31
24
  export declare function footprintEnv(hookPath: string, loadedRole: string | null, dirCwd: string): Record<string, string>;
25
+ /**
26
+ * 利用者が起動子に `--settings` を渡していたら止める理由(無ければ null)。PM 裁定 10/04: 合成はしない・fail closed。
27
+ * 理由: 起動子の `--settings`(足跡の hook)と利用者の `--settings` が claude で 2 つ並ぶと、どちらが効くかは
28
+ * claude 次第で、足跡が黙って消えうる(足跡の無い席は見張りから見えない)。
29
+ */
30
+ export declare function userSettingsFlagError(argv: readonly string[]): string | null;
32
31
  //# sourceMappingURL=footprintSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"footprintSettings.d.ts","sourceRoot":"","sources":["../../src/lib/footprintSettings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAC5D,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,eAAO,MAAM,qBAAqB,yIASxB,CAAC;AAOX;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOjF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAE3G;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAElE,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIhH"}
1
+ {"version":3,"file":"footprintSettings.d.ts","sourceRoot":"","sources":["../../src/lib/footprintSettings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAC5D,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAE3G;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAElE,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAIhH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAI5E"}
@@ -1 +1 @@
1
- "use strict";function quoteForShell(t){return`"${t.replace(/(["\\$`])/g,"\\$1")}"`}function buildFootprintSettings(t,o){const e=`${quoteForShell(t)} ${quoteForShell(o)}`,O={};for(const t of exports.FOOTPRINT_HOOK_EVENTS)O[t]=[{hooks:[{type:"command",command:e}]}];return JSON.stringify({hooks:O})}function footprintSettingsFileName(t,o){return`footprint-settings-${o(t).slice(0,16)}.json`}function footprintEnv(t,o,e){const O={[exports.FOOTPRINT_HOOK_ENV]:t,[exports.FOOTPRINT_DIR_CWD_ENV]:e};return o&&(O[exports.FOOTPRINT_ROLE_ENV]=o),O}Object.defineProperty(exports,"__esModule",{value:!0}),exports.FOOTPRINT_DIR_CWD_ENV=exports.FOOTPRINT_HOOK_EVENTS=exports.FOOTPRINT_ROLE_ENV=exports.FOOTPRINT_HOOK_ENV=void 0,exports.buildFootprintSettings=buildFootprintSettings,exports.footprintSettingsFileName=footprintSettingsFileName,exports.footprintEnv=footprintEnv,exports.FOOTPRINT_HOOK_ENV="BLUELAMP_FOOTPRINT_HOOK",exports.FOOTPRINT_ROLE_ENV="BLUELAMP_FOOTPRINT_ROLE",exports.FOOTPRINT_HOOK_EVENTS=["SessionStart","UserPromptSubmit","PostToolUse","PostToolUseFailure","Stop","StopFailure","SubagentStop","SessionEnd"],exports.FOOTPRINT_DIR_CWD_ENV="BLUELAMP_FOOTPRINT_DIR_CWD";
1
+ "use strict";function footprintSettingsFileName(t,e){return`footprint-settings-${e(t).slice(0,16)}.json`}function footprintEnv(t,e,s){const o={[exports.FOOTPRINT_HOOK_ENV]:t,[exports.FOOTPRINT_DIR_CWD_ENV]:s};return e&&(o[exports.FOOTPRINT_ROLE_ENV]=e),o}function userSettingsFlagError(t){return void 0===t.find(t=>"--settings"===t||"string"==typeof t&&t.startsWith("--settings="))?null:"--settings は渡せません(起動子が足跡の hook を --settings で入れるため)。設定は ~/.claude/settings.json かプロジェクトの .claude/settings.json に書いてください"}Object.defineProperty(exports,"__esModule",{value:!0}),exports.FOOTPRINT_DIR_CWD_ENV=exports.FOOTPRINT_ROLE_ENV=exports.FOOTPRINT_HOOK_ENV=void 0,exports.footprintSettingsFileName=footprintSettingsFileName,exports.footprintEnv=footprintEnv,exports.userSettingsFlagError=userSettingsFlagError,exports.FOOTPRINT_HOOK_ENV="BLUELAMP_FOOTPRINT_HOOK",exports.FOOTPRINT_ROLE_ENV="BLUELAMP_FOOTPRINT_ROLE",exports.FOOTPRINT_DIR_CWD_ENV="BLUELAMP_FOOTPRINT_DIR_CWD";
@@ -1 +1 @@
1
- {"version":3,"file":"footprintSettings.js","sourceRoot":"","sources":["../../src/lib/footprintSettings.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA2BH,wDAOC;AAOD,8DAEC;AAQD,oCAIC;AArDD,6EAA6E;AAChE,QAAA,kBAAkB,GAAG,yBAAyB,CAAC;AAC5D,gFAAgF;AACnE,QAAA,kBAAkB,GAAG,yBAAyB,CAAC;AAE/C,QAAA,qBAAqB,GAAG;IACnC,cAAc;IACd,kBAAkB;IAClB,aAAa;IACb,oBAAoB;IACpB,MAAM;IACN,aAAa;IACb,cAAc;IACd,YAAY;CACJ,CAAC;AAEX,sDAAsD;AACtD,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CAAC,QAAgB,EAAE,QAAgB;IACvE,MAAM,OAAO,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxE,MAAM,KAAK,GAAkF,EAAE,CAAC;IAChG,KAAK,MAAM,KAAK,IAAI,6BAAqB,EAAE,CAAC;QAC1C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,YAAoB,EAAE,SAAmC;IACjG,OAAO,sBAAsB,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;AAC3E,CAAC;AAED;;GAEG;AACU,QAAA,qBAAqB,GAAG,4BAA4B,CAAC;AAElE,6DAA6D;AAC7D,SAAgB,YAAY,CAAC,QAAgB,EAAE,UAAyB,EAAE,MAAc;IACtF,MAAM,GAAG,GAA2B,EAAE,CAAC,0BAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,6BAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxG,IAAI,UAAU;QAAE,GAAG,CAAC,0BAAkB,CAAC,GAAG,UAAU,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"footprintSettings.js","sourceRoot":"","sources":["../../src/lib/footprintSettings.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAYH,8DAEC;AAQD,oCAIC;AAOD,sDAIC;AAnCD,6EAA6E;AAChE,QAAA,kBAAkB,GAAG,yBAAyB,CAAC;AAC5D,gFAAgF;AACnE,QAAA,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,YAAoB,EAAE,SAAmC;IACjG,OAAO,sBAAsB,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;AAC3E,CAAC;AAED;;GAEG;AACU,QAAA,qBAAqB,GAAG,4BAA4B,CAAC;AAElE,6DAA6D;AAC7D,SAAgB,YAAY,CAAC,QAAgB,EAAE,UAAyB,EAAE,MAAc;IACtF,MAAM,GAAG,GAA2B,EAAE,CAAC,0BAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,6BAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACxG,IAAI,UAAU;QAAE,GAAG,CAAC,0BAAkB,CAAC,GAAG,UAAU,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,IAAuB;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3G,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,yHAAyH,CAAC;AACnI,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 子の Claude Code に会話の記録を書かせない(箱 n=2475・主君裁定 10/04 帳簿 4068 の ④・純関数)。
3
+ *
4
+ * `CLAUDE_CODE_SKIP_PROMPT_HISTORY=1` を付けると、~/.claude/projects の記録(本文・道具の返り)と
5
+ * ~/.claude/history.jsonl が書かれない(n=2468 の実測: 画面のある形でも記録 0 件・配下の席も 0 件)。
6
+ * 見張りの道具は記録の代わりに足跡(footprint-hook.cjs)を読む。
7
+ *
8
+ * ⛔ 付いていない子は起こさない。起動子は spawn の直前に `transcriptFreeError` で子の env を検め、
9
+ * null でなければ止まる(利用者の env が `0` を持っていても、起動子の値が最後に勝つ形で組む)。
10
+ */
11
+ export declare const SKIP_HISTORY_ENV = "CLAUDE_CODE_SKIP_PROMPT_HISTORY";
12
+ /** 子の env の最後に重ねる鍵(後勝ちで利用者の値を上書きする)。 */
13
+ export declare function transcriptFreeEnv(): Record<string, string>;
14
+ /** 子の env が記録を書かない形か。そうでなければ止める理由(そうなら null)。 */
15
+ export declare function transcriptFreeError(env: Readonly<Record<string, string | undefined>>): string | null;
16
+ //# sourceMappingURL=transcriptFree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcriptFree.d.ts","sourceRoot":"","sources":["../../src/lib/transcriptFree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,gBAAgB,oCAAoC,CAAC;AAElE,wCAAwC;AACxC,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1D;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAIpG"}
@@ -0,0 +1 @@
1
+ "use strict";function transcriptFreeEnv(){return{[exports.SKIP_HISTORY_ENV]:"1"}}function transcriptFreeError(r){const e=r[exports.SKIP_HISTORY_ENV];return"1"===e?null:`${exports.SKIP_HISTORY_ENV}=1 が子の環境に入っていません(現在: ${void 0===e?"無し":JSON.stringify(e)})`}Object.defineProperty(exports,"__esModule",{value:!0}),exports.SKIP_HISTORY_ENV=void 0,exports.transcriptFreeEnv=transcriptFreeEnv,exports.transcriptFreeError=transcriptFreeError,exports.SKIP_HISTORY_ENV="CLAUDE_CODE_SKIP_PROMPT_HISTORY";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcriptFree.js","sourceRoot":"","sources":["../../src/lib/transcriptFree.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAKH,8CAEC;AAGD,kDAIC;AAZY,QAAA,gBAAgB,GAAG,iCAAiC,CAAC;AAElE,wCAAwC;AACxC,SAAgB,iBAAiB;IAC/B,OAAO,EAAE,CAAC,wBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED,iDAAiD;AACjD,SAAgB,mBAAmB,CAAC,GAAiD;IACnF,MAAM,CAAC,GAAG,GAAG,CAAC,wBAAgB,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,GAAG,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAClG,CAAC"}
@@ -1 +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;
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var l=Object.getOwnPropertyDescriptor(t,n);l&&!("get"in l?!t.__esModule:l.writable||l.configurable)||(l={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,l)}: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),l=0;l<r.length;l++)"default"!==r[l]&&__createBinding(n,t,r[l]);return __setModuleDefault(n,t),n}}();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.askLoginShellCommandV=askLoginShellCommandV,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 n=e.askLoginShell();if(null!==n&&e.isExecutable(n))return{bin:n,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===n?"ログインシェルからは取得できず":`ログインシェルは ${n} を返したが実行可能ファイルではない`}/静的候補もすべて不在)。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(){return askLoginShellCommandV("claude")}function askLoginShellCommandV(e){if(!/^[A-Za-z0-9_-]+$/.test(e))return null;const t=resolveLoginShell();if(null===t)return null;try{return pickPathFromShellOutput((0,node_child_process_1.execFileSync)(t,["-lic",`command -v ${e}`],{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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bizboost",
3
- "version": "6.6.20",
3
+ "version": "6.6.21",
4
4
  "description": "BizBoost CLI: 旧 bluelampportal/mcp の auth / 200+ bizboost1-N binary / postinstall scripts を TypeScript 化して monorepo に統合したパッケージ。",
5
5
  "keywords": [
6
6
  "bizboost",