tailii-host 0.1.0

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 (141) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +51 -0
  3. package/dist/apnsConfigStore.d.ts +22 -0
  4. package/dist/apnsConfigStore.js +50 -0
  5. package/dist/apnsConfigStore.js.map +1 -0
  6. package/dist/apnsJwtProvider.d.ts +50 -0
  7. package/dist/apnsJwtProvider.js +158 -0
  8. package/dist/apnsJwtProvider.js.map +1 -0
  9. package/dist/apnsSender.d.ts +69 -0
  10. package/dist/apnsSender.js +155 -0
  11. package/dist/apnsSender.js.map +1 -0
  12. package/dist/approvalPushNotifier.d.ts +100 -0
  13. package/dist/approvalPushNotifier.js +236 -0
  14. package/dist/approvalPushNotifier.js.map +1 -0
  15. package/dist/broker.d.ts +24 -0
  16. package/dist/broker.js +197 -0
  17. package/dist/broker.js.map +1 -0
  18. package/dist/chatTailController.d.ts +87 -0
  19. package/dist/chatTailController.js +292 -0
  20. package/dist/chatTailController.js.map +1 -0
  21. package/dist/claudeSessionStore.d.ts +15 -0
  22. package/dist/claudeSessionStore.js +201 -0
  23. package/dist/claudeSessionStore.js.map +1 -0
  24. package/dist/cli.d.ts +2 -0
  25. package/dist/cli.js +53 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/codexRolloutTailer.d.ts +56 -0
  28. package/dist/codexRolloutTailer.js +303 -0
  29. package/dist/codexRolloutTailer.js.map +1 -0
  30. package/dist/codexSessionStore.d.ts +23 -0
  31. package/dist/codexSessionStore.js +274 -0
  32. package/dist/codexSessionStore.js.map +1 -0
  33. package/dist/codexUsage.d.ts +16 -0
  34. package/dist/codexUsage.js +144 -0
  35. package/dist/codexUsage.js.map +1 -0
  36. package/dist/deviceTokenStore.d.ts +38 -0
  37. package/dist/deviceTokenStore.js +73 -0
  38. package/dist/deviceTokenStore.js.map +1 -0
  39. package/dist/dirLister.d.ts +9 -0
  40. package/dist/dirLister.js +98 -0
  41. package/dist/dirLister.js.map +1 -0
  42. package/dist/doctor.d.ts +36 -0
  43. package/dist/doctor.js +162 -0
  44. package/dist/doctor.js.map +1 -0
  45. package/dist/engine.d.ts +85 -0
  46. package/dist/engine.js +962 -0
  47. package/dist/engine.js.map +1 -0
  48. package/dist/hook.d.ts +67 -0
  49. package/dist/hook.js +511 -0
  50. package/dist/hook.js.map +1 -0
  51. package/dist/hookSettings.d.ts +40 -0
  52. package/dist/hookSettings.js +128 -0
  53. package/dist/hookSettings.js.map +1 -0
  54. package/dist/idleReaper.d.ts +13 -0
  55. package/dist/idleReaper.js +30 -0
  56. package/dist/idleReaper.js.map +1 -0
  57. package/dist/imageService.d.ts +53 -0
  58. package/dist/imageService.js +280 -0
  59. package/dist/imageService.js.map +1 -0
  60. package/dist/kick.d.ts +8 -0
  61. package/dist/kick.js +60 -0
  62. package/dist/kick.js.map +1 -0
  63. package/dist/launch.d.ts +107 -0
  64. package/dist/launch.js +396 -0
  65. package/dist/launch.js.map +1 -0
  66. package/dist/legacyHomeMigration.d.ts +1 -0
  67. package/dist/legacyHomeMigration.js +23 -0
  68. package/dist/legacyHomeMigration.js.map +1 -0
  69. package/dist/lineWriter.d.ts +9 -0
  70. package/dist/lineWriter.js +19 -0
  71. package/dist/lineWriter.js.map +1 -0
  72. package/dist/mdnsAdvertiser.d.ts +46 -0
  73. package/dist/mdnsAdvertiser.js +268 -0
  74. package/dist/mdnsAdvertiser.js.map +1 -0
  75. package/dist/observationLog.d.ts +54 -0
  76. package/dist/observationLog.js +108 -0
  77. package/dist/observationLog.js.map +1 -0
  78. package/dist/pairingCode.d.ts +60 -0
  79. package/dist/pairingCode.js +282 -0
  80. package/dist/pairingCode.js.map +1 -0
  81. package/dist/paths.d.ts +13 -0
  82. package/dist/paths.js +46 -0
  83. package/dist/paths.js.map +1 -0
  84. package/dist/permissionMode.d.ts +8 -0
  85. package/dist/permissionMode.js +32 -0
  86. package/dist/permissionMode.js.map +1 -0
  87. package/dist/planUsageFetcher.d.ts +35 -0
  88. package/dist/planUsageFetcher.js +172 -0
  89. package/dist/planUsageFetcher.js.map +1 -0
  90. package/dist/protocol.d.ts +329 -0
  91. package/dist/protocol.js +544 -0
  92. package/dist/protocol.js.map +1 -0
  93. package/dist/pushTokenCommand.d.ts +9 -0
  94. package/dist/pushTokenCommand.js +85 -0
  95. package/dist/pushTokenCommand.js.map +1 -0
  96. package/dist/pushTypes.d.ts +41 -0
  97. package/dist/pushTypes.js +68 -0
  98. package/dist/pushTypes.js.map +1 -0
  99. package/dist/sendLog.d.ts +14 -0
  100. package/dist/sendLog.js +64 -0
  101. package/dist/sendLog.js.map +1 -0
  102. package/dist/sessionActivityProvider.d.ts +7 -0
  103. package/dist/sessionActivityProvider.js +44 -0
  104. package/dist/sessionActivityProvider.js.map +1 -0
  105. package/dist/sessionIdleTracker.d.ts +19 -0
  106. package/dist/sessionIdleTracker.js +42 -0
  107. package/dist/sessionIdleTracker.js.map +1 -0
  108. package/dist/sessionListService.d.ts +27 -0
  109. package/dist/sessionListService.js +85 -0
  110. package/dist/sessionListService.js.map +1 -0
  111. package/dist/sessionMetadataStore.d.ts +33 -0
  112. package/dist/sessionMetadataStore.js +122 -0
  113. package/dist/sessionMetadataStore.js.map +1 -0
  114. package/dist/sessionSearch.d.ts +29 -0
  115. package/dist/sessionSearch.js +139 -0
  116. package/dist/sessionSearch.js.map +1 -0
  117. package/dist/setup.d.ts +83 -0
  118. package/dist/setup.js +412 -0
  119. package/dist/setup.js.map +1 -0
  120. package/dist/sleep.d.ts +4 -0
  121. package/dist/sleep.js +25 -0
  122. package/dist/sleep.js.map +1 -0
  123. package/dist/socketPath.d.ts +12 -0
  124. package/dist/socketPath.js +51 -0
  125. package/dist/socketPath.js.map +1 -0
  126. package/dist/subagentTailer.d.ts +15 -0
  127. package/dist/subagentTailer.js +399 -0
  128. package/dist/subagentTailer.js.map +1 -0
  129. package/dist/tmux.d.ts +62 -0
  130. package/dist/tmux.js +163 -0
  131. package/dist/tmux.js.map +1 -0
  132. package/dist/transcriptTailer.d.ts +61 -0
  133. package/dist/transcriptTailer.js +606 -0
  134. package/dist/transcriptTailer.js.map +1 -0
  135. package/dist/usageAggregator.d.ts +12 -0
  136. package/dist/usageAggregator.js +55 -0
  137. package/dist/usageAggregator.js.map +1 -0
  138. package/dist/version.d.ts +10 -0
  139. package/dist/version.js +45 -0
  140. package/dist/version.js.map +1 -0
  141. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/hook.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ /**
2
+ * hook 内部デッドラインの既定値(秒)。settings の外部タイムアウト
3
+ * (hookSettings.HOOK_EXTERNAL_TIMEOUT_SECONDS = 600)より**厳密に小さく**保つこと。
4
+ * この順序により hook は外部打切り前に必ず permissionDecision(無応答時は deny)を
5
+ * 出力でき、fall-through を回避する(Req 5.7、HookTimeoutOrderingTests が検証)。
6
+ * connect 不能時は背景 push で気づかせたうえで、人間が通知タップ→cold launch→
7
+ * SSH 再接続→承認判断を完了できる猶予を与える(90→540 に延長, Req 8.4)。
8
+ */
9
+ export declare const HOOK_INTERNAL_DEADLINE_SECONDS = 540;
10
+ /** connect 不能時の retry-connect ポーリング間隔の既定値(秒)。 */
11
+ export declare const HOOK_RETRY_CONNECT_INTERVAL_SECONDS = 1;
12
+ /** hook の画像 pending キュー既定ベース(`~/.tailii/images/pending`)。 */
13
+ export declare function defaultImagesPendingBase(): string;
14
+ /** connect 不能時に送る最小 push リクエスト(diff/秘密なし, 2.3)。 */
15
+ export interface ApprovalPushRequest {
16
+ approvalId: string;
17
+ tool: string;
18
+ session: string;
19
+ }
20
+ /**
21
+ * 背景 push 統括の注入点(Swift 版 ApprovalPushNotifying 相当)。
22
+ * 送信可否は deny 判断に影響しない(結果は捨てる)。本番実装は push-token 移植時に配線する。
23
+ */
24
+ export type ApprovalPushNotifier = (request: ApprovalPushRequest, timeLimitMs: number) => Promise<void>;
25
+ export interface RunHookOptions {
26
+ stdinData: Buffer;
27
+ /** 接続する unix socket パス。null は接続不能と同義(PreToolUse は即 deny)。 */
28
+ socketPath: string | null;
29
+ /** 内部デッドライン(秒)。 */
30
+ deadlineSeconds: number;
31
+ /** セッション名(ObservationLog / push のキー)。既定 "default"。 */
32
+ session?: string;
33
+ /** ObservationLog のベース(注入)。省略時は監査追記をスキップ。 */
34
+ observationBase?: string;
35
+ /** 画像 pending キューのベース(注入)。省略時は pending 投入をスキップ。 */
36
+ imagesPendingBase?: string;
37
+ /** connect 不能時に背景 push を送る notifier。省略時は push を試みない。 */
38
+ notifier?: ApprovalPushNotifier;
39
+ /** push 送信部の時間上限(ms)。gate 非阻害のためこの時間で打ち切る。既定 5000。 */
40
+ notifierTimeLimitMs?: number;
41
+ /** connect 不能ブランチでの retry-connect ポーリング間隔(秒)。既定 1.0。 */
42
+ retryConnectIntervalSeconds?: number;
43
+ }
44
+ export interface HookRunResult {
45
+ exitCode: number;
46
+ stdout: string;
47
+ }
48
+ /** hook の本体(テスタブル・完全版)。stdin JSON の `hook_event_name` で分岐する。 */
49
+ export declare function runHookCore(options: RunHookOptions): Promise<HookRunResult>;
50
+ /**
51
+ * hook サブコマンドのエントリポイント。
52
+ * 引数: `--socket <path>` | `--session <name>` | `--deadline <seconds>` |
53
+ * `--retry-interval <seconds>` | `--images-dir <path>`。
54
+ * 常に exit 0(Claude Code は stdout の JSON を読む)。
55
+ *
56
+ * connect 不能ブランチでは本番 ApprovalPushNotifier を注入し、背景 push で気づかせる
57
+ * (相互排他 7.1 は runHookCore が担保)。実際に送るかは notifier が config/token の有無で
58
+ * 判断する(未設定なら送らず観測記録, 3.5/6.4)。送信可否は deny 判断に影響しない。
59
+ */
60
+ export declare function runHookCommand(args: string[]): Promise<number>;
61
+ /**
62
+ * エージェント別にフックが実際に stdout へ書く文字列を決める(TESTABLE)。
63
+ * claude: 生成した decision JSON をそのまま出す。
64
+ * codex : allow/ask を「unsupported」として拒否するため、承認(allow 決定)時は無出力(null)で
65
+ * exit 0 続行にする。拒否(deny)や監査出力はそのまま出す(deny JSON は codex も解釈する)。
66
+ */
67
+ export declare function hookStdoutForAgent(agent: "claude" | "codex", stdout: string): string | null;
package/dist/hook.js ADDED
@@ -0,0 +1,511 @@
1
+ // hook.ts
2
+ // tailii (TS host) — hook サブコマンド実装(Swift 版 Hook.swift の移植)
3
+ //
4
+ // Claude Code の PreToolUse / PostToolUse フック。stdin JSON の `hook_event_name` で分岐する。
5
+ //
6
+ // PreToolUse(ツール実行の唯一のゲート意思決定点):
7
+ // summary と構造化 diff(Write=create+全文 / Edit=edit+old/new)を生成し、
8
+ // unix domain socket クライアントとして broker(=iPhone)へ approval_request(一意 id)を
9
+ // 送り、内部デッドライン内に approval_decision を受信して permissionDecision を stdout 出力。
10
+ // 決定はブロードキャストされるため自 id のみ受理する(5.4)。tool_input のパスが
11
+ // 画像拡張子なら pending キューへレコードを書く(リサイズせず=デッドライン非影響)。
12
+ //
13
+ // connect 不能(アプリ背景/未起動)ブランチ:
14
+ // 即 deny せず背景 push(notifier 注入時のみ・このブランチのみ, 相互排他 7.1)→
15
+ // 内部デッドライン内で同一 SocketPath へ retry-connect(8.1)。接続できたら残り予算で
16
+ // 送出+決定待ち(8.2)。デッドライン到達で安全側 deny(8.3)。
17
+ //
18
+ // PostToolUse(別呼び出し、ゲートしない): ObservationLog に監査追記して exit 0(5.8)。
19
+ //
20
+ // 既定は常に deny(安全側)。connect 失敗・stdin 解析不能・id 不一致・非対応 v・
21
+ // undecodable 行・EOF・デッドラインのいずれでも deny を出力する。
22
+ import * as fs from "node:fs";
23
+ import * as net from "node:net";
24
+ import * as os from "node:os";
25
+ import * as path from "node:path";
26
+ import { randomUUID } from "node:crypto";
27
+ import { makeProductionPushNotifier } from "./approvalPushNotifier.js";
28
+ import { ObservationLog, defaultObservationBase } from "./observationLog.js";
29
+ import { resolveSocketPath } from "./socketPath.js";
30
+ import { sleep } from "./sleep.js";
31
+ import { PROTOCOL_V1, decodeControlMessage, encodeControlMessage, } from "./protocol.js";
32
+ // MARK: - 定数
33
+ /**
34
+ * hook 内部デッドラインの既定値(秒)。settings の外部タイムアウト
35
+ * (hookSettings.HOOK_EXTERNAL_TIMEOUT_SECONDS = 600)より**厳密に小さく**保つこと。
36
+ * この順序により hook は外部打切り前に必ず permissionDecision(無応答時は deny)を
37
+ * 出力でき、fall-through を回避する(Req 5.7、HookTimeoutOrderingTests が検証)。
38
+ * connect 不能時は背景 push で気づかせたうえで、人間が通知タップ→cold launch→
39
+ * SSH 再接続→承認判断を完了できる猶予を与える(90→540 に延長, Req 8.4)。
40
+ */
41
+ export const HOOK_INTERNAL_DEADLINE_SECONDS = 540;
42
+ /** connect 不能時の retry-connect ポーリング間隔の既定値(秒)。 */
43
+ export const HOOK_RETRY_CONNECT_INTERVAL_SECONDS = 1.0;
44
+ /** pending 投入対象とする画像拡張子(小文字, 8.5)。 */
45
+ const IMAGE_EXTENSIONS = new Set(["png", "jpg", "jpeg", "gif", "webp", "heic", "bmp", "tiff"]);
46
+ /** hook の画像 pending キュー既定ベース(`~/.tailii/images/pending`)。 */
47
+ export function defaultImagesPendingBase() {
48
+ return path.join(os.homedir(), ".tailii", "images", "pending");
49
+ }
50
+ /** hook の本体(テスタブル・完全版)。stdin JSON の `hook_event_name` で分岐する。 */
51
+ export async function runHookCore(options) {
52
+ const session = options.session ?? "default";
53
+ const deadlineSeconds = options.deadlineSeconds;
54
+ const retryIntervalSeconds = options.retryConnectIntervalSeconds ?? HOOK_RETRY_CONNECT_INTERVAL_SECONDS;
55
+ const parsed = parsePreToolUse(options.stdinData);
56
+ // --- 0. hook_event_name で分岐 ---
57
+ if (parsed.eventName === "PostToolUse") {
58
+ return runPostToolUse(parsed, session, options.observationBase);
59
+ }
60
+ // === 以降 PreToolUse(既定) ===
61
+ const summary = buildSummary(parsed.toolName, parsed.toolInput);
62
+ const diff = buildDiff(parsed.toolName, parsed.toolInput);
63
+ // 単一の内部デッドライン。push→retry-connect→send→waitForDecision の全フェーズが
64
+ // この 1 本の予算を共有する(Req 8.1)。
65
+ const deadlineAtMs = Date.now() + deadlineSeconds * 1000;
66
+ if (options.socketPath === null) {
67
+ // socket パス未決定は接続不能と同義。retry-connect の余地もないため即 deny。
68
+ return deny("iPhone unavailable (no socket path)");
69
+ }
70
+ const socket = await connectUnixSocket(options.socketPath);
71
+ if (socket) {
72
+ // 接続済み(アプリ前面)。従来経路をそのまま実行する(push しない, 7.1)。
73
+ return sendRequestAndReflect(socket, parsed, summary, diff, options, deadlineAtMs);
74
+ }
75
+ // === connect 不能ブランチ(Req 2.1 / 8.1〜8.3) ===
76
+ if (options.notifier) {
77
+ await sendBackgroundPush(options.notifier, { approvalId: randomUUID(), tool: parsed.toolName, session }, options.notifierTimeLimitMs ?? 5000);
78
+ }
79
+ const reconnected = await retryConnect(options.socketPath, deadlineAtMs, retryIntervalSeconds);
80
+ if (reconnected) {
81
+ return sendRequestAndReflect(reconnected, parsed, summary, diff, options, deadlineAtMs);
82
+ }
83
+ // 内部デッドライン内に一度も再接続できなかった → 安全側 deny(8.3)。
84
+ return deny(`iPhone unavailable (no reconnect within ${Math.round(deadlineSeconds)}s)`);
85
+ }
86
+ // MARK: - approval_request 送出+決定反映(connect 成功/再接続で共有)
87
+ async function sendRequestAndReflect(socket, parsed, summary, diff, options, deadlineAtMs) {
88
+ try {
89
+ const requestId = randomUUID();
90
+ // 画像パス検出 → pending キュー投入(非ブロッキング・リサイズなし, 8.1/8.2/8.5)。
91
+ if (options.imagesPendingBase !== undefined) {
92
+ enqueuePendingImages(parsed.toolInput, requestId, options.imagesPendingBase);
93
+ }
94
+ const encoded = encodeControlMessage({
95
+ type: "approval_request",
96
+ v: PROTOCOL_V1,
97
+ id: requestId,
98
+ tool: parsed.toolName,
99
+ summary,
100
+ cwd: parsed.cwd,
101
+ ...(diff !== undefined ? { diff } : {}),
102
+ });
103
+ try {
104
+ socket.write(encoded + "\n");
105
+ }
106
+ catch {
107
+ return deny("iPhone disconnected (write failed)");
108
+ }
109
+ // 残りデッドライン内で approval_decision を待つ(自 id のみ受理, 5.4)。
110
+ const outcome = await waitForDecision(socket, requestId, deadlineAtMs);
111
+ switch (outcome.kind) {
112
+ case "allow":
113
+ return allow(outcome.reason ?? "Approved on iPhone");
114
+ case "deny":
115
+ return deny(outcome.reason ?? "Denied on iPhone");
116
+ case "timeout":
117
+ return deny(`No response within ${Math.round(options.deadlineSeconds)}s`);
118
+ case "disconnected":
119
+ return deny("iPhone disconnected");
120
+ }
121
+ }
122
+ finally {
123
+ socket.destroy();
124
+ }
125
+ }
126
+ /**
127
+ * デッドライン内で approval_decision を1行ずつ受信し、id が一致する有効決定を待つ。
128
+ * id 不一致・undecodable・非対応 v の行はスキップして読み続ける(残り時間内)。
129
+ * EOF/エラー → disconnected。デッドライン超過 → timeout。
130
+ */
131
+ function waitForDecision(socket, expectedId, deadlineAtMs) {
132
+ return new Promise((resolve) => {
133
+ const remaining = deadlineAtMs - Date.now();
134
+ let buf = Buffer.alloc(0);
135
+ let settled = false;
136
+ const settle = (outcome) => {
137
+ if (settled)
138
+ return;
139
+ settled = true;
140
+ clearTimeout(timer);
141
+ socket.removeListener("data", onData);
142
+ socket.removeListener("end", onDisconnect);
143
+ socket.removeListener("error", onDisconnect);
144
+ socket.removeListener("close", onDisconnect);
145
+ resolve(outcome);
146
+ };
147
+ const onData = (chunk) => {
148
+ buf = buf.length === 0 ? chunk : Buffer.concat([buf, chunk]);
149
+ let idx;
150
+ while ((idx = buf.indexOf(0x0a)) >= 0) {
151
+ const line = buf.subarray(0, idx);
152
+ buf = buf.subarray(idx + 1);
153
+ const outcome = evaluateLine(line, expectedId);
154
+ if (outcome !== null) {
155
+ settle(outcome);
156
+ return;
157
+ }
158
+ }
159
+ };
160
+ const onDisconnect = () => settle({ kind: "disconnected" });
161
+ const timer = setTimeout(() => settle({ kind: "timeout" }), Math.max(0, remaining));
162
+ if (remaining <= 0) {
163
+ // デッドライン超過 → 即 timeout(安全側 deny)。
164
+ settle({ kind: "timeout" });
165
+ return;
166
+ }
167
+ socket.on("data", onData);
168
+ socket.once("end", onDisconnect);
169
+ socket.once("error", onDisconnect);
170
+ socket.once("close", onDisconnect);
171
+ });
172
+ }
173
+ /**
174
+ * 受信した1行を評価する。id 一致の approval_decision → DecisionOutcome。
175
+ * それ以外(id 不一致・型不一致・デコード失敗・空行)→ null(無視して読み続ける)。
176
+ */
177
+ function evaluateLine(line, expectedId) {
178
+ // 末尾 CR 除去(NDJSON は \n 区切りだが CRLF 耐性のため)。
179
+ const trimmed = line.length > 0 && line[line.length - 1] === 0x0d ? line.subarray(0, line.length - 1) : line;
180
+ if (trimmed.length === 0)
181
+ return null;
182
+ let message;
183
+ try {
184
+ message = decodeControlMessage(trimmed);
185
+ }
186
+ catch {
187
+ return null;
188
+ }
189
+ if (message.type !== "approval_decision")
190
+ return null;
191
+ if (message.id !== expectedId)
192
+ return null;
193
+ return message.reason !== undefined
194
+ ? { kind: message.decision, reason: message.reason }
195
+ : { kind: message.decision };
196
+ }
197
+ // MARK: - unix socket クライアント / retry-connect
198
+ /** unix domain socket に接続し、接続済み socket を返す。失敗時は null(→ 安全側 deny)。 */
199
+ function connectUnixSocket(socketPath) {
200
+ return new Promise((resolve) => {
201
+ const socket = net.connect(socketPath);
202
+ socket.once("connect", () => {
203
+ socket.removeAllListeners("error");
204
+ // 決定待機中の error は waitForDecision が disconnected として扱う。
205
+ socket.on("error", () => { });
206
+ resolve(socket);
207
+ });
208
+ socket.once("error", () => {
209
+ socket.destroy();
210
+ resolve(null);
211
+ });
212
+ });
213
+ }
214
+ /**
215
+ * 内部デッドライン内で同一 unix socket パスへ再接続を試行する(8.1)。
216
+ * 接続できた socket を返す。デッドライン到達まで一度も接続できなければ null(8.3)。
217
+ */
218
+ async function retryConnect(socketPath, deadlineAtMs, intervalSeconds) {
219
+ const intervalMs = Math.max(0, Math.min(intervalSeconds, 3600) * 1000);
220
+ for (;;) {
221
+ const socket = await connectUnixSocket(socketPath);
222
+ if (socket)
223
+ return socket;
224
+ const remaining = deadlineAtMs - Date.now();
225
+ if (remaining <= 0)
226
+ return null;
227
+ await sleep(Math.min(intervalMs, remaining));
228
+ }
229
+ }
230
+ // MARK: - 背景 push 送出(connect 不能ブランチのみ)
231
+ /** 背景 push を送出する。timeLimit で打ち切り、成否は deny 判断に影響しない。 */
232
+ async function sendBackgroundPush(notifier, request, timeLimitMs) {
233
+ await Promise.race([notifier(request, timeLimitMs).catch(() => { }), sleep(timeLimitMs)]);
234
+ }
235
+ // MARK: - PostToolUse 監査(5.8)
236
+ function runPostToolUse(parsed, session, observationBase) {
237
+ if (observationBase === undefined) {
238
+ // 監査ベース未注入時は追記できないが、PostToolUse は失敗させない(exit 0)。
239
+ return { exitCode: 0, stdout: "{}" };
240
+ }
241
+ const log = new ObservationLog(observationBase);
242
+ // 決定は tool_response の permissionDecision(無ければ実行済み=allow とみなす)。
243
+ const decision = parsed.postDecision ?? "allow";
244
+ try {
245
+ log.append({ kind: "toolExecuted", id: parsed.toolUseId, tool: parsed.toolName, decision }, session, Math.floor(Date.now() / 1000));
246
+ }
247
+ catch {
248
+ // 監査追記失敗でも PostToolUse は失敗させない。
249
+ }
250
+ return { exitCode: 0, stdout: "{}" };
251
+ }
252
+ // MARK: - 画像 pending 投入(8.1/8.2/8.5)
253
+ /** tool_input のパスが画像拡張子なら pending へ `{imageId, path, relatedApprovalId}` を書く。 */
254
+ function enqueuePendingImages(toolInput, relatedApprovalId, base) {
255
+ const paths = imagePaths(toolInput);
256
+ if (paths.length === 0)
257
+ return;
258
+ try {
259
+ fs.mkdirSync(base, { recursive: true, mode: 0o700 });
260
+ }
261
+ catch {
262
+ // ディレクトリ作成失敗は握り潰す(承認を阻害しない)。
263
+ }
264
+ for (const imagePath of paths) {
265
+ const imageId = randomUUID();
266
+ // キーは辞書順(imageId < path < relatedApprovalId)— Swift 版 .sortedKeys と同一。
267
+ const record = { imageId, path: imagePath, relatedApprovalId };
268
+ try {
269
+ fs.writeFileSync(path.join(base, `${imageId}.json`), JSON.stringify(record));
270
+ }
271
+ catch {
272
+ // 書き込み失敗は握り潰す(承認を阻害しない)。
273
+ }
274
+ }
275
+ }
276
+ /** tool_input から画像拡張子を持つパス文字列を抽出する(8.5)。 */
277
+ function imagePaths(toolInput) {
278
+ const result = [];
279
+ for (const key of ["file_path", "path", "notebook_path"]) {
280
+ const value = toolInput[key];
281
+ if (typeof value !== "string" || value.length === 0)
282
+ continue;
283
+ const ext = path.extname(value).slice(1).toLowerCase();
284
+ if (IMAGE_EXTENSIONS.has(ext))
285
+ result.push(value);
286
+ }
287
+ return result;
288
+ }
289
+ // MARK: - summary / diff 生成(6.2/6.3)
290
+ /** tool_input から1行の summary を生成する。 */
291
+ function buildSummary(toolName, toolInput) {
292
+ switch (toolName) {
293
+ case "Bash": {
294
+ const command = toolInput["command"];
295
+ if (typeof command === "string" && command.length > 0)
296
+ return oneLine(command);
297
+ return "Run a Bash command";
298
+ }
299
+ case "Write": {
300
+ const filePath = toolInput["file_path"];
301
+ if (typeof filePath === "string" && filePath.length > 0)
302
+ return `Write file: ${filePath}`;
303
+ return "Write a file";
304
+ }
305
+ case "Edit": {
306
+ const filePath = toolInput["file_path"];
307
+ if (typeof filePath === "string" && filePath.length > 0)
308
+ return `Edit file: ${filePath}`;
309
+ return "Edit a file";
310
+ }
311
+ default:
312
+ return `Run tool: ${toolName}`;
313
+ }
314
+ }
315
+ /** 文字列を1行に正規化する(改行を空白へ畳み込み、前後空白を除去)。 */
316
+ function oneLine(s) {
317
+ return s.replaceAll("\n", " ").replaceAll("\r", " ").trim();
318
+ }
319
+ /** tool_input から構造化 diff を生成する(Write=create+全文 / Edit=edit+old/new / 他は undefined)。 */
320
+ function buildDiff(toolName, toolInput) {
321
+ const filePath = toolInput["file_path"];
322
+ if (typeof filePath !== "string" || filePath.length === 0)
323
+ return undefined;
324
+ switch (toolName) {
325
+ case "Write": {
326
+ const content = toolInput["content"];
327
+ return { kind: "create", path: filePath, newText: typeof content === "string" ? content : "" };
328
+ }
329
+ case "Edit": {
330
+ const oldString = toolInput["old_string"];
331
+ const newString = toolInput["new_string"];
332
+ return {
333
+ kind: "edit",
334
+ path: filePath,
335
+ oldString: typeof oldString === "string" ? oldString : "",
336
+ newString: typeof newString === "string" ? newString : "",
337
+ };
338
+ }
339
+ default:
340
+ return undefined;
341
+ }
342
+ }
343
+ /** フック JSON を寛容にパースする。欠落フィールドは安全な既定値で補う。 */
344
+ function parsePreToolUse(data) {
345
+ const parsed = {
346
+ eventName: "PreToolUse",
347
+ toolName: "Unknown",
348
+ toolInput: {},
349
+ cwd: "",
350
+ toolUseId: "",
351
+ };
352
+ if (data.length === 0)
353
+ return parsed;
354
+ let obj;
355
+ try {
356
+ obj = JSON.parse(data.toString("utf8"));
357
+ }
358
+ catch {
359
+ return parsed;
360
+ }
361
+ if (typeof obj !== "object" || obj === null || Array.isArray(obj))
362
+ return parsed;
363
+ const raw = obj;
364
+ if (typeof raw["hook_event_name"] === "string")
365
+ parsed.eventName = raw["hook_event_name"];
366
+ if (typeof raw["tool_name"] === "string")
367
+ parsed.toolName = raw["tool_name"];
368
+ const toolInput = raw["tool_input"];
369
+ if (typeof toolInput === "object" && toolInput !== null && !Array.isArray(toolInput)) {
370
+ parsed.toolInput = toolInput;
371
+ }
372
+ if (typeof raw["cwd"] === "string")
373
+ parsed.cwd = raw["cwd"];
374
+ if (typeof raw["tool_use_id"] === "string" && raw["tool_use_id"].length > 0) {
375
+ parsed.toolUseId = raw["tool_use_id"];
376
+ }
377
+ else if (typeof raw["session_id"] === "string") {
378
+ parsed.toolUseId = raw["session_id"];
379
+ }
380
+ const response = raw["tool_response"];
381
+ if (typeof response === "object" && response !== null && !Array.isArray(response)) {
382
+ const decision = response["permissionDecision"];
383
+ if (typeof decision === "string")
384
+ parsed.postDecision = decision;
385
+ }
386
+ return parsed;
387
+ }
388
+ // MARK: - permissionDecision 出力契約
389
+ /**
390
+ * 出力契約(stdout, exit 0):
391
+ * `{ "hookSpecificOutput": { "hookEventName": "PreToolUse",
392
+ * "permissionDecision": "allow"|"deny", "permissionDecisionReason": "<reason>" } }`
393
+ * キーは辞書順(Swift 版 .sortedKeys と同一の並び)。
394
+ */
395
+ function decisionJson(permission, reason) {
396
+ return JSON.stringify({
397
+ hookSpecificOutput: {
398
+ hookEventName: "PreToolUse",
399
+ permissionDecision: permission,
400
+ permissionDecisionReason: reason,
401
+ },
402
+ });
403
+ }
404
+ function allow(reason) {
405
+ return { exitCode: 0, stdout: decisionJson("allow", reason) };
406
+ }
407
+ function deny(reason) {
408
+ return { exitCode: 0, stdout: decisionJson("deny", reason) };
409
+ }
410
+ // MARK: - CLI エントリポイント
411
+ /**
412
+ * hook サブコマンドのエントリポイント。
413
+ * 引数: `--socket <path>` | `--session <name>` | `--deadline <seconds>` |
414
+ * `--retry-interval <seconds>` | `--images-dir <path>`。
415
+ * 常に exit 0(Claude Code は stdout の JSON を読む)。
416
+ *
417
+ * connect 不能ブランチでは本番 ApprovalPushNotifier を注入し、背景 push で気づかせる
418
+ * (相互排他 7.1 は runHookCore が担保)。実際に送るかは notifier が config/token の有無で
419
+ * 判断する(未設定なら送らず観測記録, 3.5/6.4)。送信可否は deny 判断に影響しない。
420
+ */
421
+ export async function runHookCommand(args) {
422
+ let socketArg = null;
423
+ let sessionArg = null;
424
+ let imagesDirArg = null;
425
+ let deadlineSeconds = HOOK_INTERNAL_DEADLINE_SECONDS;
426
+ let retryIntervalSeconds = HOOK_RETRY_CONNECT_INTERVAL_SECONDS;
427
+ // codex モード: codex は PreToolUse フックの permissionDecision で "allow"/"ask" を
428
+ // 「unsupported」として拒否し、有効なのは "deny"(またはコード2)だけ。よって
429
+ // 承認(allow)時は decision JSON を出さず exit 0 無出力=続行にし、拒否時のみ deny JSON を出す。
430
+ // 承認ゲートは codex がフック完了を同期ブロックで待つ性質で成立する(既定 timeout 600s > 内部 540s)。
431
+ let agent = "claude";
432
+ for (let i = 0; i < args.length; i += 1) {
433
+ const next = () => (i + 1 < args.length ? args[++i] : null);
434
+ switch (args[i]) {
435
+ case "--socket":
436
+ socketArg = next();
437
+ break;
438
+ case "--session":
439
+ sessionArg = next();
440
+ break;
441
+ case "--agent": {
442
+ const raw = next();
443
+ if (raw === "codex" || raw === "claude")
444
+ agent = raw;
445
+ break;
446
+ }
447
+ case "--deadline": {
448
+ const raw = next();
449
+ const value = raw === null ? Number.NaN : Number.parseFloat(raw);
450
+ if (Number.isFinite(value))
451
+ deadlineSeconds = value;
452
+ break;
453
+ }
454
+ case "--retry-interval": {
455
+ const raw = next();
456
+ const value = raw === null ? Number.NaN : Number.parseFloat(raw);
457
+ if (Number.isFinite(value))
458
+ retryIntervalSeconds = value;
459
+ break;
460
+ }
461
+ case "--images-dir":
462
+ imagesDirArg = next();
463
+ break;
464
+ default:
465
+ break;
466
+ }
467
+ }
468
+ let socketPath = null;
469
+ if (socketArg !== null) {
470
+ socketPath = socketArg;
471
+ }
472
+ else if (sessionArg !== null) {
473
+ try {
474
+ socketPath = resolveSocketPath(sessionArg);
475
+ }
476
+ catch {
477
+ socketPath = null;
478
+ }
479
+ }
480
+ const chunks = [];
481
+ for await (const chunk of process.stdin) {
482
+ chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
483
+ }
484
+ const { exitCode, stdout } = await runHookCore({
485
+ stdinData: Buffer.concat(chunks),
486
+ socketPath,
487
+ deadlineSeconds,
488
+ session: sessionArg ?? "default",
489
+ observationBase: defaultObservationBase(),
490
+ imagesPendingBase: imagesDirArg !== null ? path.join(imagesDirArg, "pending") : defaultImagesPendingBase(),
491
+ notifier: makeProductionPushNotifier(),
492
+ retryConnectIntervalSeconds: retryIntervalSeconds,
493
+ });
494
+ const out = hookStdoutForAgent(agent, stdout);
495
+ if (out !== null)
496
+ process.stdout.write(out + "\n");
497
+ return exitCode;
498
+ }
499
+ /**
500
+ * エージェント別にフックが実際に stdout へ書く文字列を決める(TESTABLE)。
501
+ * claude: 生成した decision JSON をそのまま出す。
502
+ * codex : allow/ask を「unsupported」として拒否するため、承認(allow 決定)時は無出力(null)で
503
+ * exit 0 続行にする。拒否(deny)や監査出力はそのまま出す(deny JSON は codex も解釈する)。
504
+ */
505
+ export function hookStdoutForAgent(agent, stdout) {
506
+ if (agent === "codex" && stdout.includes('"permissionDecision":"allow"')) {
507
+ return null;
508
+ }
509
+ return stdout;
510
+ }
511
+ //# sourceMappingURL=hook.js.map