promptkaizen-agent 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +5 -1
  2. package/dist/backfill/run.d.ts +15 -0
  3. package/dist/backfill/run.d.ts.map +1 -0
  4. package/dist/backfill/run.js +33 -0
  5. package/dist/backfill/run.js.map +1 -0
  6. package/dist/backfill/scanner.d.ts +82 -0
  7. package/dist/backfill/scanner.d.ts.map +1 -0
  8. package/dist/backfill/scanner.js +271 -0
  9. package/dist/backfill/scanner.js.map +1 -0
  10. package/dist/cli/detect.d.ts +2 -0
  11. package/dist/cli/detect.d.ts.map +1 -0
  12. package/dist/cli/detect.js +40 -0
  13. package/dist/cli/detect.js.map +1 -0
  14. package/dist/cli/disable.d.ts +2 -0
  15. package/dist/cli/disable.d.ts.map +1 -0
  16. package/dist/cli/disable.js +44 -0
  17. package/dist/cli/disable.js.map +1 -0
  18. package/dist/cli/enable.d.ts +2 -0
  19. package/dist/cli/enable.d.ts.map +1 -0
  20. package/dist/cli/enable.js +105 -0
  21. package/dist/cli/enable.js.map +1 -0
  22. package/dist/cli/hook.d.ts +2 -0
  23. package/dist/cli/hook.d.ts.map +1 -0
  24. package/dist/cli/hook.js +406 -0
  25. package/dist/cli/hook.js.map +1 -0
  26. package/dist/cli/init.d.ts.map +1 -1
  27. package/dist/cli/init.js +70 -8
  28. package/dist/cli/init.js.map +1 -1
  29. package/dist/cli/install-hooks.d.ts +5 -0
  30. package/dist/cli/install-hooks.d.ts.map +1 -0
  31. package/dist/cli/install-hooks.js +132 -0
  32. package/dist/cli/install-hooks.js.map +1 -0
  33. package/dist/cli/install-task.d.ts +28 -0
  34. package/dist/cli/install-task.d.ts.map +1 -0
  35. package/dist/cli/install-task.js +119 -0
  36. package/dist/cli/install-task.js.map +1 -0
  37. package/dist/cli/mcp.d.ts +2 -0
  38. package/dist/cli/mcp.d.ts.map +1 -0
  39. package/dist/cli/mcp.js +148 -0
  40. package/dist/cli/mcp.js.map +1 -0
  41. package/dist/cli/metrics.d.ts +2 -0
  42. package/dist/cli/metrics.d.ts.map +1 -0
  43. package/dist/cli/metrics.js +103 -0
  44. package/dist/cli/metrics.js.map +1 -0
  45. package/dist/cli/report.d.ts +2 -0
  46. package/dist/cli/report.d.ts.map +1 -0
  47. package/dist/cli/report.js +211 -0
  48. package/dist/cli/report.js.map +1 -0
  49. package/dist/cli/scan.d.ts +2 -0
  50. package/dist/cli/scan.d.ts.map +1 -0
  51. package/dist/cli/scan.js +171 -0
  52. package/dist/cli/scan.js.map +1 -0
  53. package/dist/cli/start.d.ts.map +1 -1
  54. package/dist/cli/start.js +70 -17
  55. package/dist/cli/start.js.map +1 -1
  56. package/dist/cli/status.d.ts.map +1 -1
  57. package/dist/cli/status.js +82 -18
  58. package/dist/cli/status.js.map +1 -1
  59. package/dist/cli/uninstall-task.d.ts +8 -0
  60. package/dist/cli/uninstall-task.d.ts.map +1 -0
  61. package/dist/cli/uninstall-task.js +44 -0
  62. package/dist/cli/uninstall-task.js.map +1 -0
  63. package/dist/config.d.ts +172 -6
  64. package/dist/config.d.ts.map +1 -1
  65. package/dist/config.js +114 -2
  66. package/dist/config.js.map +1 -1
  67. package/dist/console-safe.d.ts +21 -0
  68. package/dist/console-safe.d.ts.map +1 -0
  69. package/dist/console-safe.js +71 -0
  70. package/dist/console-safe.js.map +1 -0
  71. package/dist/detection-secret.d.ts.map +1 -1
  72. package/dist/detection-secret.js +12 -0
  73. package/dist/detection-secret.js.map +1 -1
  74. package/dist/env-detect.d.ts +44 -0
  75. package/dist/env-detect.d.ts.map +1 -0
  76. package/dist/env-detect.js +151 -0
  77. package/dist/env-detect.js.map +1 -0
  78. package/dist/exec/executor.d.ts +42 -0
  79. package/dist/exec/executor.d.ts.map +1 -0
  80. package/dist/exec/executor.js +135 -0
  81. package/dist/exec/executor.js.map +1 -0
  82. package/dist/exec/pk-execute.d.ts +30 -0
  83. package/dist/exec/pk-execute.d.ts.map +1 -0
  84. package/dist/exec/pk-execute.js +174 -0
  85. package/dist/exec/pk-execute.js.map +1 -0
  86. package/dist/exec/policy-fetcher.d.ts +9 -0
  87. package/dist/exec/policy-fetcher.d.ts.map +1 -0
  88. package/dist/exec/policy-fetcher.js +46 -0
  89. package/dist/exec/policy-fetcher.js.map +1 -0
  90. package/dist/exec/policy.d.ts +32 -0
  91. package/dist/exec/policy.d.ts.map +1 -0
  92. package/dist/exec/policy.js +88 -0
  93. package/dist/exec/policy.js.map +1 -0
  94. package/dist/hooks/block-store.d.ts +14 -0
  95. package/dist/hooks/block-store.d.ts.map +1 -0
  96. package/dist/hooks/block-store.js +26 -0
  97. package/dist/hooks/block-store.js.map +1 -0
  98. package/dist/hooks/claude-hook.d.ts +55 -0
  99. package/dist/hooks/claude-hook.d.ts.map +1 -0
  100. package/dist/hooks/claude-hook.js +122 -0
  101. package/dist/hooks/claude-hook.js.map +1 -0
  102. package/dist/hooks/continuity.d.ts +48 -0
  103. package/dist/hooks/continuity.d.ts.map +1 -0
  104. package/dist/hooks/continuity.js +92 -0
  105. package/dist/hooks/continuity.js.map +1 -0
  106. package/dist/hooks/observation.d.ts +27 -0
  107. package/dist/hooks/observation.d.ts.map +1 -0
  108. package/dist/hooks/observation.js +0 -0
  109. package/dist/hooks/observation.js.map +1 -0
  110. package/dist/hooks/platforms.d.ts +24 -0
  111. package/dist/hooks/platforms.d.ts.map +1 -0
  112. package/dist/hooks/platforms.js +57 -0
  113. package/dist/hooks/platforms.js.map +1 -0
  114. package/dist/hooks/read-cache.d.ts +71 -0
  115. package/dist/hooks/read-cache.d.ts.map +1 -0
  116. package/dist/hooks/read-cache.js +166 -0
  117. package/dist/hooks/read-cache.js.map +1 -0
  118. package/dist/hooks/reduction.d.ts +78 -0
  119. package/dist/hooks/reduction.d.ts.map +1 -0
  120. package/dist/hooks/reduction.js +111 -0
  121. package/dist/hooks/reduction.js.map +1 -0
  122. package/dist/hooks/settings-merge.d.ts +32 -0
  123. package/dist/hooks/settings-merge.d.ts.map +1 -0
  124. package/dist/hooks/settings-merge.js +74 -0
  125. package/dist/hooks/settings-merge.js.map +1 -0
  126. package/dist/hooks/snapshot.d.ts +37 -0
  127. package/dist/hooks/snapshot.d.ts.map +1 -0
  128. package/dist/hooks/snapshot.js +180 -0
  129. package/dist/hooks/snapshot.js.map +1 -0
  130. package/dist/index.js +51 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/mcp/server.d.ts +118 -0
  133. package/dist/mcp/server.d.ts.map +1 -0
  134. package/dist/mcp/server.js +240 -0
  135. package/dist/mcp/server.js.map +1 -0
  136. package/dist/onboarding-report.d.ts +66 -0
  137. package/dist/onboarding-report.d.ts.map +1 -0
  138. package/dist/onboarding-report.js +152 -0
  139. package/dist/onboarding-report.js.map +1 -0
  140. package/dist/onboarding.d.ts +55 -0
  141. package/dist/onboarding.d.ts.map +1 -0
  142. package/dist/onboarding.js +98 -0
  143. package/dist/onboarding.js.map +1 -0
  144. package/dist/pii-masker.d.ts +7 -0
  145. package/dist/pii-masker.d.ts.map +1 -1
  146. package/dist/pii-masker.js +27 -51
  147. package/dist/pii-masker.js.map +1 -1
  148. package/dist/privacy.d.ts +13 -0
  149. package/dist/privacy.d.ts.map +1 -0
  150. package/dist/privacy.js +67 -0
  151. package/dist/privacy.js.map +1 -0
  152. package/dist/residency.d.ts +21 -0
  153. package/dist/residency.d.ts.map +1 -0
  154. package/dist/residency.js +68 -0
  155. package/dist/residency.js.map +1 -0
  156. package/dist/secret-detector.d.ts +19 -0
  157. package/dist/secret-detector.d.ts.map +1 -1
  158. package/dist/secret-detector.js +116 -0
  159. package/dist/secret-detector.js.map +1 -1
  160. package/dist/store/local-store.d.ts +167 -0
  161. package/dist/store/local-store.d.ts.map +1 -0
  162. package/dist/store/local-store.js +538 -0
  163. package/dist/store/local-store.js.map +1 -0
  164. package/dist/store/schema.d.ts +38 -0
  165. package/dist/store/schema.d.ts.map +1 -0
  166. package/dist/store/schema.js +189 -0
  167. package/dist/store/schema.js.map +1 -0
  168. package/dist/types.d.ts +13 -2
  169. package/dist/types.d.ts.map +1 -1
  170. package/dist/version.d.ts +1 -1
  171. package/dist/version.js +1 -1
  172. package/dist/watcher.d.ts +6 -0
  173. package/dist/watcher.d.ts.map +1 -1
  174. package/dist/watcher.js +13 -2
  175. package/dist/watcher.js.map +1 -1
  176. package/package.json +4 -2
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runEnable = runEnable;
7
+ const readline_1 = __importDefault(require("readline"));
8
+ const env_detect_1 = require("../env-detect");
9
+ const residency_1 = require("../residency");
10
+ const install_hooks_1 = require("./install-hooks");
11
+ const install_launchd_1 = require("./install-launchd");
12
+ const install_systemd_1 = require("./install-systemd");
13
+ const install_task_1 = require("./install-task");
14
+ const onboarding_1 = require("../onboarding");
15
+ const version_1 = require("../version");
16
+ async function runEnable(argv) {
17
+ const flags = parseFlags(argv);
18
+ const plan = (0, residency_1.planResidency)(process.platform, (0, env_detect_1.detectWSL)(), (0, residency_1.systemdUserAvailable)());
19
+ // 同意判定 (明示同意したときだけ登録)。
20
+ if (flags.later) {
21
+ printDeclineGuidance(plan);
22
+ return;
23
+ }
24
+ let consent = flags.yes;
25
+ if (!consent) {
26
+ consent = await askConsent();
27
+ }
28
+ if (!consent) {
29
+ printDeclineGuidance(plan);
30
+ return;
31
+ }
32
+ console.log('\n常駐監視を有効化しています…\n');
33
+ await (0, onboarding_1.recordStage)('enable', { agentVersion: version_1.AGENT_VERSION }); // オンボーディング・ファネル (#109)
34
+ // 1. hooks 登録 (検出されたプラットフォーム。未検出なら Claude Code を既定)。
35
+ const env = await (0, env_detect_1.detectEnvironment)();
36
+ const platforms = env.detected.map((t) => t.tool === 'codex' ? 'codex' : 'claude-code');
37
+ const targets = platforms.length > 0 ? [...new Set(platforms)] : ['claude-code'];
38
+ for (const p of targets) {
39
+ try {
40
+ await (0, install_hooks_1.runInstallHooks)(['--platform', p]);
41
+ console.log('');
42
+ }
43
+ catch (e) {
44
+ console.error(`hooks 登録に失敗 (${p}): ${e.message}`);
45
+ }
46
+ }
47
+ // 2. 常駐デーモン (OS 別)。manual は手順案内のみ。
48
+ await installResident(plan);
49
+ // 3. サマリ + 無効化導線。
50
+ console.log('');
51
+ console.log('✅ 常駐監視を有効化しました');
52
+ console.log(` - hooks: ${targets.join(' / ')}(ライブ監視・機密ツール実行を事前ブロック)`);
53
+ console.log(plan.resident === 'manual'
54
+ ? ' - 常駐: 手動(上記の手順で start を常駐起動してください)'
55
+ : ` - 常駐: ${plan.resident}(start の chokidar 補完監視が常時稼働)`);
56
+ console.log(' 次回以降のセッションは自動チェックされます。');
57
+ console.log('\n無効化するには: promptkaizen-agent disable');
58
+ }
59
+ async function installResident(plan) {
60
+ switch (plan.resident) {
61
+ case 'launchd':
62
+ await (0, install_launchd_1.runInstallLaunchd)([]);
63
+ break;
64
+ case 'systemd':
65
+ await (0, install_systemd_1.runInstallSystemd)([]);
66
+ if (plan.note)
67
+ console.log(`\n${plan.note}`);
68
+ break;
69
+ case 'task':
70
+ await (0, install_task_1.runInstallTask)([]);
71
+ break;
72
+ case 'manual':
73
+ console.log('⚠️ この環境では常駐デーモンの自動登録ができません。');
74
+ if (plan.note)
75
+ console.log(` ${plan.note}`);
76
+ console.log(` 常駐起動: ${plan.installCmd}`);
77
+ break;
78
+ }
79
+ }
80
+ function printDeclineGuidance(plan) {
81
+ console.log('\n常駐監視は有効化しませんでした(あとから有効化できます)。');
82
+ console.log('まとめて有効化: promptkaizen-agent enable');
83
+ console.log('個別に有効化:');
84
+ console.log(' promptkaizen-agent install-hooks # Claude Code hooks');
85
+ console.log(' promptkaizen-agent install-hooks --platform codex');
86
+ console.log(` ${plan.installCmd}`);
87
+ console.log('\n無効化: promptkaizen-agent disable');
88
+ }
89
+ function askConsent() {
90
+ const rl = readline_1.default.createInterface({ input: process.stdin, output: process.stdout });
91
+ return new Promise((resolve) => {
92
+ rl.question('今後のセッションを自動チェックする常駐監視を有効化しますか? [Y/n]: ', (a) => {
93
+ rl.close();
94
+ const ans = a.trim();
95
+ resolve(ans === '' || /^y(es)?$/i.test(ans));
96
+ });
97
+ });
98
+ }
99
+ function parseFlags(argv) {
100
+ return {
101
+ yes: argv.includes('--yes') || argv.includes('-y'),
102
+ later: argv.includes('--later') || argv.includes('-n'),
103
+ };
104
+ }
105
+ //# sourceMappingURL=enable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable.js","sourceRoot":"","sources":["../../src/cli/enable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runHook(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/cli/hook.ts"],"names":[],"mappings":"AA6CA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqH3D"}
@@ -0,0 +1,406 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runHook = runHook;
4
+ const config_1 = require("../config");
5
+ const detection_secret_1 = require("../detection-secret");
6
+ const pii_masker_1 = require("../pii-masker");
7
+ const privacy_1 = require("../privacy");
8
+ const secret_detector_1 = require("../secret-detector");
9
+ const sender_1 = require("../sender");
10
+ const local_store_1 = require("../store/local-store");
11
+ const version_1 = require("../version");
12
+ const block_store_1 = require("../hooks/block-store");
13
+ const claude_hook_1 = require("../hooks/claude-hook");
14
+ const platforms_1 = require("../hooks/platforms");
15
+ const continuity_1 = require("../hooks/continuity");
16
+ const observation_1 = require("../hooks/observation");
17
+ const reduction_1 = require("../hooks/reduction");
18
+ const read_cache_1 = require("../hooks/read-cache");
19
+ const snapshot_1 = require("../hooks/snapshot");
20
+ // =============================================
21
+ // `promptkaizen-agent hook claude-code <event>` (Issue #67)
22
+ // =============================================
23
+ //
24
+ // Claude Code が hooks 設定に従ってこのコマンドを起動し、event payload を stdin で
25
+ // 渡してくる。本コマンドは:
26
+ // 1. stdin の JSON を読む
27
+ // 2. PreToolUse: 検知に該当したら deny JSON を stdout に出し、ブロックを記録
28
+ // 3. PostToolUse / UserPromptSubmit: マスク後の観測 entry を cloud へ送信
29
+ // グローバル CLI 1 つで全プロジェクトに対応する (node 直パスは使わない)。
30
+ //
31
+ // hook はツール実行のたびに同期で走るため、軽量・短時間で完結させる。失敗しても
32
+ // ツール実行をブロックしない (検知の deny を除き、エラーは握りつぶして exit 0)。
33
+ const STDIN_LIMIT = 2_000_000; // 2MB (巨大 tool_input でメモリ暴発を防ぐ)
34
+ async function runHook(argv) {
35
+ const platform = argv[0]; // 'claude-code' | 'codex'
36
+ const event = argv[1];
37
+ // プラットフォーム or イベントが不明・非対応なら、ツール側を止めないため exit 0 で静かに抜ける。
38
+ if (!(0, platforms_1.isHookPlatform)(platform) || !(0, claude_hook_1.isHookEvent)(event) || !(0, platforms_1.platformAcceptsEvent)(platform, event)) {
39
+ process.exit(0);
40
+ }
41
+ const input = await readStdinJson();
42
+ let config;
43
+ try {
44
+ config = await (0, config_1.loadConfig)();
45
+ }
46
+ catch {
47
+ // 未設定 (init 前) ならブロックも送信もできないが、ツールは止めない。
48
+ process.exit(0);
49
+ }
50
+ // セッション継続 (Issue #95 / R3): PreCompact / Stop = 保存、SessionStart = 復元注入。
51
+ if (event === 'SessionStart' || event === 'PreCompact' || event === 'Stop') {
52
+ await runContinuity(event, input, config).catch(() => {
53
+ // 失敗してもツール・セッションを止めない。
54
+ });
55
+ process.exit(0);
56
+ }
57
+ // 検知器を組み立てる (start.ts と同じ構成。hmac 鍵はローカルのみ)。
58
+ const detector = config.detection.enabled
59
+ ? new secret_detector_1.SecretDetector({
60
+ customDictionary: config.detection.customDictionary,
61
+ enableEntropy: config.detection.enableEntropy,
62
+ hmacSecret: await (0, detection_secret_1.loadOrCreateDetectionSecret)(config.detection.hmacSecret),
63
+ })
64
+ : null;
65
+ // 1. PreToolUse: 事前ブロック判定。
66
+ if (event === 'PreToolUse') {
67
+ if (!detector)
68
+ process.exit(0);
69
+ const evaluation = (0, claude_hook_1.evaluateHook)(event, input, detector);
70
+ if (evaluation.blocked && evaluation.output) {
71
+ // ブロックイベントを記録 (best-effort)。生機密は含まない。
72
+ // Issue #68: SQLite (blocks テーブル) を優先、無効時のみ JSONL にフォールバック。
73
+ await recordBlock(config, {
74
+ recordedAt: new Date().toISOString(),
75
+ sessionId: typeof input.session_id === 'string' ? input.session_id : null,
76
+ cwd: typeof input.cwd === 'string' ? input.cwd : null,
77
+ toolName: typeof input.tool_name === 'string' ? input.tool_name : null,
78
+ detections: evaluation.detections,
79
+ });
80
+ process.stdout.write(JSON.stringify(evaluation.output));
81
+ process.exit(evaluation.exitCode);
82
+ }
83
+ process.exit(0);
84
+ }
85
+ // 2. Read 特化リダクション (#110 R1.5) + 汎用ツール出力退避 (#93 R1)。
86
+ // ① 再読込キャッシュ: 同一 file_path の再 Read を「前回と同一」ヒントに差し替え (純粋削減)
87
+ // ② 退避: 閾値超過の出力をマスク→SQLite 退避しプレビュー+ref_id に差し替え
88
+ // Edit/Write 後は当該ファイルのキャッシュを無効化 (古い内容での作業を防ぐ = 品質ガード)。
89
+ // ⚠️ Claude Code 限定: Codex は updatedToolOutput 非対応のため一切介入しない。
90
+ // 退避/差し替えの保存に成功した場合のみ stdout で差し替える。
91
+ let updatedToolOutput = null;
92
+ let reductionMeta = null;
93
+ let additionalContext = null;
94
+ if (event === 'PostToolUse' && platform === 'claude-code' && config.localStore.enabled) {
95
+ try {
96
+ const r = await applyReadReduction(input, platform, config);
97
+ updatedToolOutput = r.updatedToolOutput;
98
+ reductionMeta = r.reductionMeta;
99
+ additionalContext = r.additionalContext;
100
+ }
101
+ catch {
102
+ // 失敗時は無介入 (ツール出力をそのまま通す)。
103
+ updatedToolOutput = null;
104
+ reductionMeta = null;
105
+ additionalContext = null;
106
+ }
107
+ }
108
+ // 3. PostToolUse / UserPromptSubmit: 受信→マスク (buildEntry 内) → ローカル保存 → 送信。
109
+ const entry = buildEntry(platform, event, input, config, detector);
110
+ if (entry) {
111
+ if (reductionMeta)
112
+ entry.reduction = reductionMeta;
113
+ // 2a. ローカル SQLite にマスク済みで保存 (生 PII をディスクに残さない)。
114
+ if (config.localStore.enabled) {
115
+ try {
116
+ const store = new local_store_1.LocalStore(config.localStore.path);
117
+ store.recordEvent(entry);
118
+ store.close();
119
+ }
120
+ catch {
121
+ // ローカル保存失敗は致命ではない (送信側で補完)。
122
+ }
123
+ }
124
+ // 2b. 送信 (online のみ)。プロンプト本文は組織 opt-in 時だけ送る。
125
+ if ((0, config_1.hasCloudToken)(config)) {
126
+ const [outgoing] = (0, privacy_1.applyPrivacyGate)([entry], {
127
+ sendPromptBody: config.privacy.sendPromptBody,
128
+ });
129
+ const sender = new sender_1.Sender({
130
+ apiEndpoint: config.apiEndpoint,
131
+ apiKey: config.apiKey,
132
+ agentVersion: version_1.AGENT_VERSION,
133
+ });
134
+ await sender.send([outgoing]).catch(() => {
135
+ // 送信失敗は chokidar 経路が補完するので握りつぶす。
136
+ });
137
+ }
138
+ }
139
+ // 4. 退避/キャッシュ/連続Read誘導が成立した場合のみ stdout で返す。
140
+ if (updatedToolOutput !== null || additionalContext !== null) {
141
+ const hookSpecificOutput = { hookEventName: 'PostToolUse' };
142
+ if (updatedToolOutput !== null)
143
+ hookSpecificOutput.updatedToolOutput = updatedToolOutput;
144
+ if (additionalContext !== null)
145
+ hookSpecificOutput.additionalContext = additionalContext;
146
+ process.stdout.write(JSON.stringify({ hookSpecificOutput }));
147
+ }
148
+ process.exit(0);
149
+ }
150
+ /**
151
+ * Read 特化リダクション (#110 R1.5) のオーケストレーション。
152
+ * SQLite I/O を伴うため純粋ロジック (read-cache.ts / reduction.ts) から分離して cli 層に置く。
153
+ * 戻り値: Claude Code に返す差し替え値と、観測 entry / cloud に載せる削減メタ。
154
+ */
155
+ async function applyReadReduction(input, platform, config) {
156
+ const rc = config.reduction;
157
+ const none = { updatedToolOutput: null, reductionMeta: null, additionalContext: null };
158
+ if (!rc.enabled)
159
+ return none;
160
+ const masker = new pii_masker_1.PiiMasker(config.pii);
161
+ const mask = (text) => maskText(masker, platform, text);
162
+ const sessionId = typeof input.session_id === 'string' ? input.session_id : null;
163
+ // ③ 連続 Read 集約誘導 (#110)。transcript tail から連続 Read を数え、跨いだ瞬間に 1 度だけ誘導。
164
+ // 削減トークンは計測できないため savedTokens は記録しない (ガイダンスのみ)。
165
+ let additionalContext = null;
166
+ if (rc.batch && (0, read_cache_1.extractReadFilePath)(input) && typeof input.transcript_path === 'string') {
167
+ const tail = (0, snapshot_1.readTranscriptTail)(input.transcript_path);
168
+ if (tail) {
169
+ const b = (0, read_cache_1.planBatchGuidance)(tail, rc.batchThreshold);
170
+ if (b.advise)
171
+ additionalContext = (0, read_cache_1.buildBatchGuidance)(b.count);
172
+ }
173
+ }
174
+ const store = new local_store_1.LocalStore(config.localStore.path);
175
+ try {
176
+ // 2a. Edit/Write 後の再読込キャッシュ無効化 (品質ガードの核)。
177
+ const edited = (0, read_cache_1.editedFilePath)(input);
178
+ if (rc.readCache && edited && sessionId) {
179
+ store.invalidateReadCache(sessionId, edited);
180
+ }
181
+ const filePath = (0, read_cache_1.extractReadFilePath)(input);
182
+ // 2b. Read 以外 (Bash 等) は従来どおりの汎用退避のみ。
183
+ if (!filePath) {
184
+ if (!rc.offload)
185
+ return { ...none, additionalContext };
186
+ const offload = (0, reduction_1.planReduction)({
187
+ input,
188
+ maskText: mask,
189
+ thresholdBytes: rc.thresholdBytes,
190
+ headChars: rc.headChars,
191
+ });
192
+ if (!offload)
193
+ return { ...none, additionalContext };
194
+ store.recordToolOutputRef(offload.ref);
195
+ return { updatedToolOutput: offload.updatedToolOutput, reductionMeta: offload.meta, additionalContext };
196
+ }
197
+ // 2c. Read/NotebookRead: ① 再読込キャッシュ → ② 退避 → seed。
198
+ if (!sessionId)
199
+ return { ...none, additionalContext };
200
+ const extracted = (0, reduction_1.extractToolResponse)(input);
201
+ if (!extracted || !extracted.text)
202
+ return { ...none, additionalContext };
203
+ const masked = mask(extracted.text);
204
+ const prev = store.getReadCache(sessionId, filePath);
205
+ const now = new Date().toISOString();
206
+ // ① キャッシュヒット (前回と同一・未編集) → ヒントに差し替え (純粋削減)。
207
+ if (rc.readCache) {
208
+ const hit = (0, read_cache_1.planReadCacheHit)({
209
+ input,
210
+ maskedContent: masked,
211
+ prevHash: prev?.contentHash ?? null,
212
+ prevRefId: prev?.refId ?? null,
213
+ invalidated: prev?.invalidated ?? false,
214
+ });
215
+ if (hit && prev) {
216
+ // アクセス時刻だけ更新 (TTL 延命)。ハッシュ/ref は不変。
217
+ store.upsertReadCache({
218
+ sessionId,
219
+ filePath,
220
+ contentHash: prev.contentHash,
221
+ refId: prev.refId,
222
+ updatedAt: now,
223
+ });
224
+ return { updatedToolOutput: hit.updatedToolOutput, reductionMeta: hit.meta, additionalContext };
225
+ }
226
+ }
227
+ // ② ミス: 閾値超過なら今回からプレビュー差し替え (offload)。seed の refId を共有する。
228
+ const seed = (0, read_cache_1.buildReadCacheSeed)({ input, filePath, maskedContent: masked, now });
229
+ const offload = rc.offload
230
+ ? (0, reduction_1.planReduction)({
231
+ input,
232
+ maskText: mask,
233
+ thresholdBytes: rc.thresholdBytes,
234
+ headChars: rc.headChars,
235
+ refId: seed.ref.refId,
236
+ })
237
+ : null;
238
+ if (offload) {
239
+ store.recordToolOutputRef({
240
+ ...offload.ref,
241
+ filePath,
242
+ contentHash: seed.contentHash,
243
+ kind: 'offload',
244
+ });
245
+ if (rc.readCache) {
246
+ store.upsertReadCache({ sessionId, filePath, contentHash: seed.contentHash, refId: seed.ref.refId, updatedAt: now });
247
+ }
248
+ return { updatedToolOutput: offload.updatedToolOutput, reductionMeta: offload.meta, additionalContext };
249
+ }
250
+ // 退避閾値未満でも、キャッシュ有効時は次回ヒットのため body を seed 保存する。
251
+ if (rc.readCache) {
252
+ store.recordToolOutputRef(seed.ref);
253
+ store.upsertReadCache({ sessionId, filePath, contentHash: seed.contentHash, refId: seed.ref.refId, updatedAt: now });
254
+ }
255
+ return { ...none, additionalContext };
256
+ }
257
+ finally {
258
+ store.close();
259
+ }
260
+ }
261
+ /**
262
+ * セッション継続 (Issue #95 / R3)。
263
+ * - PreCompact (Claude Code) / Stop (Codex): 作業状態スナップショットを保存
264
+ * - SessionStart (source=compact/resume): 直近スナップショットの要約を注入 +
265
+ * 復元マーカー観測を記録・送信 (#69 計測パターン用)
266
+ * いずれも best-effort。continuity.enabled かつ localStore.enabled が前提。
267
+ */
268
+ async function runContinuity(event, input, config) {
269
+ if (!config.continuity.enabled || !config.localStore.enabled)
270
+ return;
271
+ const masker = new pii_masker_1.PiiMasker(config.pii);
272
+ if (event === 'PreCompact' || event === 'Stop') {
273
+ const store = new local_store_1.LocalStore(config.localStore.path);
274
+ try {
275
+ (0, continuity_1.saveSnapshot)({
276
+ maskText: (text) => maskText(masker, 'claude-code', text),
277
+ recordSnapshot: (s) => store.recordSnapshot(s),
278
+ }, { input, trigger: event === 'PreCompact' ? 'pre_compact' : 'stop' });
279
+ }
280
+ finally {
281
+ store.close();
282
+ }
283
+ return;
284
+ }
285
+ // SessionStart: 復元注入。
286
+ const store = new local_store_1.LocalStore(config.localStore.path);
287
+ let restore;
288
+ try {
289
+ restore = (0, continuity_1.buildRestore)({
290
+ latestSnapshot: (p) => store.latestSnapshot(p),
291
+ maxInjectChars: config.continuity.maxInjectChars,
292
+ maxAgeDays: config.continuity.maxAgeDays,
293
+ }, input);
294
+ if (restore)
295
+ store.recordEvent(restore.markerEntry);
296
+ }
297
+ finally {
298
+ store.close();
299
+ }
300
+ if (!restore)
301
+ return;
302
+ // マーカーを cloud にも送る (#69 計測用)。失敗しても注入は行う。
303
+ if ((0, config_1.hasCloudToken)(config)) {
304
+ const [outgoing] = (0, privacy_1.applyPrivacyGate)([restore.markerEntry], {
305
+ sendPromptBody: config.privacy.sendPromptBody,
306
+ });
307
+ const sender = new sender_1.Sender({
308
+ apiEndpoint: config.apiEndpoint,
309
+ apiKey: config.apiKey,
310
+ agentVersion: version_1.AGENT_VERSION,
311
+ });
312
+ await sender.send([outgoing]).catch(() => { });
313
+ }
314
+ process.stdout.write(JSON.stringify(restore.output));
315
+ }
316
+ /** テキストをマスキング前置パイプラインに通す (退避 body / プレビュー用)。 */
317
+ function maskText(masker, platform, text) {
318
+ const masked = masker.mask({
319
+ filepath: `hook://${platform}/tool_response`,
320
+ lineNumber: 0,
321
+ raw: text,
322
+ parsedAt: new Date().toISOString(),
323
+ source: 'hook',
324
+ });
325
+ return typeof masked.raw === 'string' ? masked.raw : text;
326
+ }
327
+ /**
328
+ * ブロックイベントを記録する。localStore 有効時は SQLite (blocks)、無効時は JSONL。
329
+ * いずれも best-effort (失敗してもブロック自体は成立済み)。
330
+ */
331
+ async function recordBlock(config, data) {
332
+ if (config.localStore.enabled) {
333
+ try {
334
+ const store = new local_store_1.LocalStore(config.localStore.path);
335
+ store.recordBlock(data);
336
+ store.close();
337
+ return;
338
+ }
339
+ catch {
340
+ // SQLite 失敗時は JSONL にフォールバック。
341
+ }
342
+ }
343
+ await (0, block_store_1.recordBlockEvent)({
344
+ recordedAt: data.recordedAt,
345
+ sessionId: data.sessionId,
346
+ cwd: data.cwd,
347
+ toolName: data.toolName,
348
+ detections: data.detections,
349
+ }).catch(() => { });
350
+ }
351
+ function buildEntry(platform, event, input, config, detector) {
352
+ const masker = new pii_masker_1.PiiMasker(config.pii);
353
+ if (event === 'UserPromptSubmit') {
354
+ const prompt = (0, observation_1.hookPromptText)(event, input);
355
+ if (!prompt)
356
+ return null;
357
+ // 検知 (生テキスト) → マスキング (本文)。送るのはマスク後のみ。
358
+ const detections = detector ? detector.detect(prompt) : [];
359
+ const masked = masker.mask({
360
+ filepath: `hook://${platform}`,
361
+ lineNumber: 0,
362
+ raw: prompt,
363
+ parsedAt: new Date().toISOString(),
364
+ source: 'hook',
365
+ });
366
+ return (0, observation_1.buildHookObservation)({
367
+ platform,
368
+ event,
369
+ input,
370
+ maskedText: typeof masked.raw === 'string' ? masked.raw : prompt,
371
+ detections,
372
+ masks: masked.masks ?? [],
373
+ });
374
+ }
375
+ // PostToolUse: 集計用の軽量 entry のみ (本文は送らない)。検知だけ付与。
376
+ const text = (0, secret_detector_1.collectStrings)(input.tool_input ?? {});
377
+ const detections = detector && text ? detector.detect(text) : [];
378
+ return (0, observation_1.buildHookObservation)({ platform, event, input, maskedText: '', detections, masks: [] });
379
+ }
380
+ /** stdin から JSON を読む (上限あり)。空/不正なら {} を返す。 */
381
+ async function readStdinJson() {
382
+ const chunks = [];
383
+ let total = 0;
384
+ try {
385
+ for await (const chunk of process.stdin) {
386
+ const buf = chunk;
387
+ total += buf.length;
388
+ if (total > STDIN_LIMIT)
389
+ break;
390
+ chunks.push(buf);
391
+ }
392
+ }
393
+ catch {
394
+ return {};
395
+ }
396
+ const raw = Buffer.concat(chunks).toString('utf8').trim();
397
+ if (!raw)
398
+ return {};
399
+ try {
400
+ return JSON.parse(raw);
401
+ }
402
+ catch {
403
+ return {};
404
+ }
405
+ }
406
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/cli/hook.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsG3D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgI3D"}