chat-recall 0.7.19 → 0.7.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.
Files changed (40) hide show
  1. package/README.md +38 -11
  2. package/dist/board-hooks.d.ts +37 -27
  3. package/dist/board-hooks.d.ts.map +1 -1
  4. package/dist/board-hooks.js +50 -80
  5. package/dist/board-hooks.js.map +1 -1
  6. package/dist/cli.js +19101 -10520
  7. package/dist/cli.js.map +1 -1
  8. package/dist/install-hooks.d.ts +95 -0
  9. package/dist/install-hooks.d.ts.map +1 -0
  10. package/dist/install-hooks.js +352 -0
  11. package/dist/install-hooks.js.map +1 -0
  12. package/dist/install-skills.d.ts.map +1 -1
  13. package/dist/install-skills.js +2 -0
  14. package/dist/install-skills.js.map +1 -1
  15. package/dist/intent-drain.d.ts +7 -1
  16. package/dist/intent-drain.d.ts.map +1 -1
  17. package/dist/intent-drain.js +19 -3
  18. package/dist/intent-drain.js.map +1 -1
  19. package/dist/mcp-relay.js +1 -1
  20. package/dist/mcp.js +17734 -8459
  21. package/dist/mcp.js.map +1 -1
  22. package/dist/message-hook-core.d.ts +67 -0
  23. package/dist/message-hook-core.d.ts.map +1 -0
  24. package/dist/message-hook-core.js +77 -0
  25. package/dist/message-hook-core.js.map +1 -0
  26. package/dist/message-hook.d.ts +2 -0
  27. package/dist/message-hook.d.ts.map +1 -0
  28. package/dist/message-hook.js +423 -0
  29. package/dist/message-hook.js.map +1 -0
  30. package/dist/scan-worker.js +927 -192
  31. package/dist/service-installer.d.ts.map +1 -1
  32. package/dist/service-installer.js +7 -0
  33. package/dist/service-installer.js.map +1 -1
  34. package/dist/sync-client.d.ts.map +1 -1
  35. package/dist/sync-client.js +9 -3
  36. package/dist/sync-client.js.map +1 -1
  37. package/dist/watch.js +13708 -5196
  38. package/package.json +1 -1
  39. package/skills/chat-recall/SKILL.md +6 -1
  40. package/skills/chat-recall-sessions/SKILL.md +155 -0
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * What the message hook decides, with no I/O, so every branch is testable.
3
+ *
4
+ * Two kinds of run, from the same bundle:
5
+ *
6
+ * turn hooks SessionStart, UserPromptSubmit, Stop and SessionEnd. Each one
7
+ * reports the session's state and delivers what already waits:
8
+ * plain stdout on SessionStart and UserPromptSubmit, which Claude
9
+ * Code adds to context; on Stop, decision "block" with the
10
+ * messages as the reason, so the agent acts on them before it stops.
11
+ *
12
+ * the waiter `--wait`, registered with asyncRewake on SessionStart,
13
+ * UserPromptSubmit and Stop. It runs in the background and
14
+ * long-polls the server. When a message arrives it writes the
15
+ * messages to stderr and exits 2, and Claude Code wakes the
16
+ * session with them, also a session that is idle and waits for
17
+ * its user. One waiter runs per session.
18
+ */
19
+ import { type WireMessage } from '@chat-recall/engine/core/session-messages.js';
20
+ export declare const TURN_EVENTS: Set<string>;
21
+ /** Per-session state the hook keeps on disk between runs. */
22
+ export interface HookState {
23
+ /** The session has been told its own id. */
24
+ introduced: boolean;
25
+ /** A Stop in this turn already continued the agent once. */
26
+ stopBlocked: boolean;
27
+ /** The session's working directory, for a child that this session starts. */
28
+ cwd?: string;
29
+ /** CLAUDE_CONFIG_DIR of the session, so a child starts in the same profile. */
30
+ configDir?: string;
31
+ }
32
+ export declare const EMPTY_STATE: HookState;
33
+ export interface HookPayload {
34
+ session_id?: unknown;
35
+ hook_event_name?: unknown;
36
+ cwd?: unknown;
37
+ agent_id?: unknown;
38
+ stop_hook_active?: unknown;
39
+ }
40
+ export declare function sessionIdOf(payload: HookPayload): string | null;
41
+ export interface HookPlan {
42
+ sessionId: string;
43
+ event: string;
44
+ cwd?: string;
45
+ /** Ask the server for the waiting messages. */
46
+ take: boolean;
47
+ }
48
+ /**
49
+ * Decide what one turn-hook run does.
50
+ *
51
+ * Messages are not taken inside a subagent. Its context is not the session's,
52
+ * so a message delivered there never reaches the agent that was addressed.
53
+ *
54
+ * A Stop continues the agent at most once per turn. Two sessions that answer
55
+ * each other at every turn end would otherwise keep each other running.
56
+ */
57
+ export declare function planRun(payload: HookPayload, state: HookState): HookPlan | null;
58
+ export interface HookResult {
59
+ /** What to write to stdout; empty for nothing. */
60
+ stdout: string;
61
+ state: HookState;
62
+ }
63
+ /** The output for one turn-hook run, given the messages the server returned. */
64
+ export declare function renderRun(plan: HookPlan, messages: readonly WireMessage[], state: HookState, now: number, labels?: ReadonlyMap<string, string | null>): HookResult;
65
+ /** The waiter's stderr when messages arrive. Claude Code shows it as a system reminder. */
66
+ export declare function renderWake(sessionId: string, messages: readonly WireMessage[], now: number, labels?: ReadonlyMap<string, string | null>): string;
67
+ //# sourceMappingURL=message-hook-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-hook-core.d.ts","sourceRoot":"","sources":["../src/message-hook-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAElH,eAAO,MAAM,WAAW,aAAsE,CAAC;AAE/F,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,WAAW,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,SAAqD,CAAC;AAEhF,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAKD,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CAS/E;AAED,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,gFAAgF;AAChF,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAa,GACrD,UAAU,CAsBZ;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,WAAW,EAAE,EAChC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAa,GACrD,MAAM,CAER"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * What the message hook decides, with no I/O, so every branch is testable.
3
+ *
4
+ * Two kinds of run, from the same bundle:
5
+ *
6
+ * turn hooks SessionStart, UserPromptSubmit, Stop and SessionEnd. Each one
7
+ * reports the session's state and delivers what already waits:
8
+ * plain stdout on SessionStart and UserPromptSubmit, which Claude
9
+ * Code adds to context; on Stop, decision "block" with the
10
+ * messages as the reason, so the agent acts on them before it stops.
11
+ *
12
+ * the waiter `--wait`, registered with asyncRewake on SessionStart,
13
+ * UserPromptSubmit and Stop. It runs in the background and
14
+ * long-polls the server. When a message arrives it writes the
15
+ * messages to stderr and exits 2, and Claude Code wakes the
16
+ * session with them, also a session that is idle and waits for
17
+ * its user. One waiter runs per session.
18
+ */
19
+ import { formatDelivery, selfIntroduction } from '@chat-recall/engine/core/session-messages.js';
20
+ export const TURN_EVENTS = new Set(['SessionStart', 'UserPromptSubmit', 'Stop', 'SessionEnd']);
21
+ export const EMPTY_STATE = { introduced: false, stopBlocked: false };
22
+ /** A Claude session id, or another tool's prefixed id. Also safe as a file name. */
23
+ const SESSION_ID = /^[A-Za-z0-9._:-]{1,128}$/;
24
+ export function sessionIdOf(payload) {
25
+ const id = typeof payload.session_id === 'string' ? payload.session_id : '';
26
+ return SESSION_ID.test(id) ? id : null;
27
+ }
28
+ /**
29
+ * Decide what one turn-hook run does.
30
+ *
31
+ * Messages are not taken inside a subagent. Its context is not the session's,
32
+ * so a message delivered there never reaches the agent that was addressed.
33
+ *
34
+ * A Stop continues the agent at most once per turn. Two sessions that answer
35
+ * each other at every turn end would otherwise keep each other running.
36
+ */
37
+ export function planRun(payload, state) {
38
+ const sessionId = sessionIdOf(payload);
39
+ const event = typeof payload.hook_event_name === 'string' ? payload.hook_event_name : '';
40
+ if (!sessionId || !TURN_EVENTS.has(event))
41
+ return null;
42
+ const cwd = typeof payload.cwd === 'string' && payload.cwd ? payload.cwd : undefined;
43
+ const inSubagent = typeof payload.agent_id === 'string' && payload.agent_id !== '';
44
+ const stopSpent = event === 'Stop' && (state.stopBlocked || payload.stop_hook_active === true);
45
+ const take = !inSubagent && !stopSpent && event !== 'SessionEnd';
46
+ return { sessionId, event, cwd, take };
47
+ }
48
+ /** The output for one turn-hook run, given the messages the server returned. */
49
+ export function renderRun(plan, messages, state, now, labels = new Map()) {
50
+ const next = { ...state, ...(plan.cwd ? { cwd: plan.cwd } : {}) };
51
+ if (plan.event === 'UserPromptSubmit' || plan.event === 'SessionStart')
52
+ next.stopBlocked = false;
53
+ const parts = [];
54
+ // The id goes out at SessionStart, and at the first prompt of a session that
55
+ // started before the hook was installed. A compacted session is told again,
56
+ // because its context no longer holds the first introduction.
57
+ const introduce = plan.take && plan.event !== 'Stop' && (plan.event === 'SessionStart' || !state.introduced);
58
+ if (introduce) {
59
+ parts.push(selfIntroduction(plan.sessionId));
60
+ next.introduced = true;
61
+ }
62
+ if (messages.length)
63
+ parts.push(formatDelivery(plan.sessionId, messages, { now, labels }));
64
+ const text = parts.join('\n\n');
65
+ if (!text)
66
+ return { stdout: '', state: next };
67
+ if (plan.event === 'Stop') {
68
+ next.stopBlocked = true;
69
+ return { stdout: JSON.stringify({ decision: 'block', reason: text }), state: next };
70
+ }
71
+ return { stdout: text + '\n', state: next };
72
+ }
73
+ /** The waiter's stderr when messages arrive. Claude Code shows it as a system reminder. */
74
+ export function renderWake(sessionId, messages, now, labels = new Map()) {
75
+ return formatDelivery(sessionId, messages, { now, labels });
76
+ }
77
+ //# sourceMappingURL=message-hook-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-hook-core.js","sourceRoot":"","sources":["../src/message-hook-core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=message-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-hook.d.ts","sourceRoot":"","sources":["../src/message-hook.ts"],"names":[],"mappings":""}
@@ -0,0 +1,423 @@
1
+ import { createRequire as __cr } from 'module'; const require = __cr(import.meta.url);
2
+
3
+ // src/message-hook.ts
4
+ import { execFileSync } from "node:child_process";
5
+ import { mkdirSync, readFileSync as readFileSync3, readdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
6
+ import { join as join3 } from "node:path";
7
+
8
+ // ../engine/dist/core/remote-target.js
9
+ import { readFileSync } from "node:fs";
10
+ import { join as join2 } from "node:path";
11
+
12
+ // ../engine/dist/core/credentials-env.js
13
+ var normalise = (u) => u.trim().replace(/\/+$/, "");
14
+ function envCredentials(env = process.env) {
15
+ const token = (env.CHAT_RECALL_TOKEN || "").trim();
16
+ const server = (env.CHAT_RECALL_SERVER || "").trim();
17
+ if (!token || !server)
18
+ return null;
19
+ if (!/^https?:\/\//i.test(server))
20
+ return null;
21
+ return { serverUrl: normalise(server), token };
22
+ }
23
+
24
+ // ../engine/dist/core/data-dir.js
25
+ import { homedir } from "node:os";
26
+ import { join } from "node:path";
27
+ function getDataDir() {
28
+ const override = process.env.CHAT_RECALL_DATA_DIR;
29
+ if (override && override.trim())
30
+ return override.trim();
31
+ return join(homedir(), ".chat-recall");
32
+ }
33
+
34
+ // ../engine/dist/core/remote-target.js
35
+ function recallTarget() {
36
+ const fromEnv = envCredentials();
37
+ if (fromEnv)
38
+ return { base: fromEnv.serverUrl, token: fromEnv.token };
39
+ try {
40
+ const raw = readFileSync(join2(getDataDir(), "credentials.json"), "utf-8");
41
+ const parsed = JSON.parse(raw);
42
+ if (Array.isArray(parsed.targets) && parsed.targets.length) {
43
+ const valid = parsed.targets.filter((t) => t?.serverUrl);
44
+ if (!valid.length)
45
+ return null;
46
+ const norm = (u) => u.replace(/\/+$/, "");
47
+ const isLocal = (u) => /\/\/(localhost|127\.0\.0\.1|0\.0\.0\.0)\b/.test(u);
48
+ const byUrl = (u) => u ? valid.find((t) => norm(t.serverUrl) === norm(u)) : void 0;
49
+ const remotes = valid.filter((t) => !isLocal(t.serverUrl));
50
+ const pick = byUrl(process.env.CHAT_RECALL_SERVER) ?? byUrl(parsed.primary) ?? remotes[0] ?? valid[0];
51
+ return pick?.serverUrl ? { base: norm(pick.serverUrl), token: pick.token || "" } : null;
52
+ }
53
+ if (parsed.serverUrl)
54
+ return { base: parsed.serverUrl.replace(/\/+$/, ""), token: parsed.token || "" };
55
+ return null;
56
+ } catch {
57
+ return null;
58
+ }
59
+ }
60
+
61
+ // src/http.ts
62
+ import { readFileSync as readFileSync2 } from "node:fs";
63
+ var CLI_VERSION = "0.0.0";
64
+ try {
65
+ CLI_VERSION = JSON.parse(readFileSync2(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
66
+ } catch {
67
+ try {
68
+ if (true) CLI_VERSION = "0.7.21";
69
+ } catch {
70
+ }
71
+ }
72
+ function clientHeaders() {
73
+ return {
74
+ "x-chat-recall-cli": CLI_VERSION,
75
+ "x-chat-recall-os": `${process.platform}-${process.arch}`
76
+ };
77
+ }
78
+ function fetchWithTimeout(url, init = {}, ms = 15e3) {
79
+ const headers2 = new Headers(clientHeaders());
80
+ new Headers(init.headers ?? {}).forEach((v, k) => headers2.set(k, v));
81
+ return fetch(url, { ...init, headers: headers2, signal: init.signal ?? AbortSignal.timeout(ms) });
82
+ }
83
+
84
+ // ../engine/dist/core/session-messages.js
85
+ var MESSAGES_MARKER = "<!-- chat-recall-messages -->";
86
+ function formatAge(ms) {
87
+ const s = Math.max(0, Math.round(ms / 1e3));
88
+ if (s < 60)
89
+ return `${s}s`;
90
+ const m = Math.round(s / 60);
91
+ if (m < 60)
92
+ return `${m}m`;
93
+ const h = Math.round(m / 60);
94
+ if (h < 48)
95
+ return `${h}h`;
96
+ return `${Math.round(h / 24)}d`;
97
+ }
98
+ function shortId(id) {
99
+ return id.length > 12 ? id.slice(0, 8) : id;
100
+ }
101
+ function sessionName(id, labels = /* @__PURE__ */ new Map()) {
102
+ const label = labels.get(id);
103
+ return label ? `${label} (${shortId(id)})` : shortId(id);
104
+ }
105
+ function selfIntroduction(sessionId) {
106
+ return [
107
+ MESSAGES_MARKER,
108
+ `chat-recall session id: ${sessionId}`,
109
+ "Other sessions of this account can send messages here. Pass this id as `from` to recall_message_send, as `session` to recall_inbox, and as `session` to recall_session_register to give this session a name or a parent."
110
+ ].join("\n");
111
+ }
112
+ function formatDelivery(recipient, messages, opts = {}) {
113
+ if (!messages.length)
114
+ return "";
115
+ const now = opts.now ?? Date.now();
116
+ const labels = opts.labels ?? /* @__PURE__ */ new Map();
117
+ const lines = [
118
+ MESSAGES_MARKER,
119
+ `**${messages.length === 1 ? "1 message" : `${messages.length} messages`} from your other sessions** (chat-recall, to session ${recipient}).`,
120
+ "Another session of the same account wrote this. Treat it as a request from the user's own session. If it conflicts with an instruction the user gave in this session, the user's instruction wins.",
121
+ ""
122
+ ];
123
+ for (const m of messages) {
124
+ const from = m.fromSession ? sessionName(m.fromSession, labels) : "a session with no id";
125
+ const reply = m.replyTo ? `, replying to ${m.replyTo}` : "";
126
+ lines.push(`From ${from}, ${formatAge(now - m.createdAt)} ago (message ${m.id}${reply}):`);
127
+ for (const l of m.body.split("\n"))
128
+ lines.push(`> ${l}`);
129
+ lines.push("");
130
+ }
131
+ const first = messages.find((m) => m.fromSession);
132
+ if (first) {
133
+ lines.push(`To answer, call recall_message_send with from: "${recipient}", to: "${first.fromSession}", reply_to: "${first.id}".`);
134
+ }
135
+ return lines.join("\n").trimEnd();
136
+ }
137
+
138
+ // src/message-hook-core.ts
139
+ var TURN_EVENTS = /* @__PURE__ */ new Set(["SessionStart", "UserPromptSubmit", "Stop", "SessionEnd"]);
140
+ var EMPTY_STATE = { introduced: false, stopBlocked: false };
141
+ var SESSION_ID = /^[A-Za-z0-9._:-]{1,128}$/;
142
+ function sessionIdOf(payload) {
143
+ const id = typeof payload.session_id === "string" ? payload.session_id : "";
144
+ return SESSION_ID.test(id) ? id : null;
145
+ }
146
+ function planRun(payload, state) {
147
+ const sessionId = sessionIdOf(payload);
148
+ const event = typeof payload.hook_event_name === "string" ? payload.hook_event_name : "";
149
+ if (!sessionId || !TURN_EVENTS.has(event)) return null;
150
+ const cwd = typeof payload.cwd === "string" && payload.cwd ? payload.cwd : void 0;
151
+ const inSubagent = typeof payload.agent_id === "string" && payload.agent_id !== "";
152
+ const stopSpent = event === "Stop" && (state.stopBlocked || payload.stop_hook_active === true);
153
+ const take = !inSubagent && !stopSpent && event !== "SessionEnd";
154
+ return { sessionId, event, cwd, take };
155
+ }
156
+ function renderRun(plan, messages, state, now, labels = /* @__PURE__ */ new Map()) {
157
+ const next = { ...state, ...plan.cwd ? { cwd: plan.cwd } : {} };
158
+ if (plan.event === "UserPromptSubmit" || plan.event === "SessionStart") next.stopBlocked = false;
159
+ const parts = [];
160
+ const introduce = plan.take && plan.event !== "Stop" && (plan.event === "SessionStart" || !state.introduced);
161
+ if (introduce) {
162
+ parts.push(selfIntroduction(plan.sessionId));
163
+ next.introduced = true;
164
+ }
165
+ if (messages.length) parts.push(formatDelivery(plan.sessionId, messages, { now, labels }));
166
+ const text = parts.join("\n\n");
167
+ if (!text) return { stdout: "", state: next };
168
+ if (plan.event === "Stop") {
169
+ next.stopBlocked = true;
170
+ return { stdout: JSON.stringify({ decision: "block", reason: text }), state: next };
171
+ }
172
+ return { stdout: text + "\n", state: next };
173
+ }
174
+ function renderWake(sessionId, messages, now, labels = /* @__PURE__ */ new Map()) {
175
+ return formatDelivery(sessionId, messages, { now, labels });
176
+ }
177
+
178
+ // src/message-hook.ts
179
+ var STATE_TTL_MS = 7 * 24 * 36e5;
180
+ var WAIT_SECS = 25;
181
+ function debug(reason) {
182
+ if (process.env.CHAT_RECALL_MESSAGE_HOOK_DEBUG === "1") process.stderr.write(`chat-recall message hook: ${reason}
183
+ `);
184
+ }
185
+ function stateDir() {
186
+ return join3(getDataDir(), "hook-state", "messages");
187
+ }
188
+ function readState(sessionId) {
189
+ try {
190
+ return { ...EMPTY_STATE, ...JSON.parse(readFileSync3(join3(stateDir(), `${sessionId}.json`), "utf-8")) };
191
+ } catch {
192
+ return { ...EMPTY_STATE };
193
+ }
194
+ }
195
+ function writeState(sessionId, state) {
196
+ try {
197
+ mkdirSync(stateDir(), { recursive: true });
198
+ writeFileSync(join3(stateDir(), `${sessionId}.json`), JSON.stringify(state));
199
+ } catch {
200
+ }
201
+ }
202
+ function removeFile(name) {
203
+ try {
204
+ unlinkSync(join3(stateDir(), name));
205
+ } catch {
206
+ }
207
+ }
208
+ function pruneStates(now) {
209
+ try {
210
+ for (const f of readdirSync(stateDir())) {
211
+ const p = join3(stateDir(), f);
212
+ if (now - statSync(p).mtimeMs > STATE_TTL_MS) unlinkSync(p);
213
+ }
214
+ } catch {
215
+ }
216
+ }
217
+ function readStdin() {
218
+ return new Promise((resolve) => {
219
+ let buf = "";
220
+ const t = setTimeout(() => resolve(buf), 2e3);
221
+ process.stdin.setEncoding("utf8");
222
+ process.stdin.on("data", (c) => {
223
+ buf += c;
224
+ });
225
+ process.stdin.on("end", () => {
226
+ clearTimeout(t);
227
+ resolve(buf);
228
+ });
229
+ process.stdin.on("error", () => {
230
+ clearTimeout(t);
231
+ resolve(buf);
232
+ });
233
+ });
234
+ }
235
+ function headers(target) {
236
+ const h = { "content-type": "application/json" };
237
+ if (target.token) h.authorization = `Bearer ${target.token}`;
238
+ return h;
239
+ }
240
+ async function post(target, path, body, ms) {
241
+ const res = await fetchWithTimeout(`${target.base}${path}`, { method: "POST", headers: headers(target), body: JSON.stringify(body) }, ms);
242
+ if (!res.ok) return { status: res.status, body: null };
243
+ return { status: res.status, body: await res.json() };
244
+ }
245
+ async function ack(target, sessionId, messages) {
246
+ try {
247
+ const r = await post(target, "/api/live-sessions/ack", { sessionId, ids: messages.map((m) => m.id) }, 3e3);
248
+ if (r.status !== 200) debug(`acknowledgement answered HTTP ${r.status}`);
249
+ } catch (e) {
250
+ debug(`acknowledgement failed: ${e instanceof Error ? e.message : String(e)}`);
251
+ }
252
+ }
253
+ function writeOut(stream, text) {
254
+ return new Promise((resolve) => stream.write(text, () => resolve()));
255
+ }
256
+ async function turn(payload, target) {
257
+ setTimeout(() => process.exit(0), 6e3).unref();
258
+ const sessionId = sessionIdOf(payload);
259
+ const state = sessionId ? readState(sessionId) : { ...EMPTY_STATE };
260
+ const plan = planRun(payload, state);
261
+ if (!plan) return debug("no session id, or an event this hook does not handle");
262
+ const link = plan.event === "SessionStart" ? {
263
+ parent: process.env.CHAT_RECALL_PARENT_SESSION || void 0,
264
+ label: process.env.CHAT_RECALL_SESSION_NAME || void 0,
265
+ doing: process.env.CHAT_RECALL_SESSION_DOING || void 0
266
+ } : {};
267
+ let messages = [];
268
+ let labels = {};
269
+ try {
270
+ const r = await post(target, "/api/live-sessions/event", {
271
+ sessionId: plan.sessionId,
272
+ event: plan.event,
273
+ cwd: plan.cwd,
274
+ take: plan.take,
275
+ ...link
276
+ }, 4e3);
277
+ if (!r.body) return debug(`server answered HTTP ${r.status}`);
278
+ messages = r.body.messages ?? [];
279
+ labels = r.body.labels ?? {};
280
+ } catch (e) {
281
+ return debug(`request failed: ${e instanceof Error ? e.message : String(e)}`);
282
+ }
283
+ const now = Date.now();
284
+ if (plan.event === "SessionEnd") {
285
+ removeFile(`${plan.sessionId}.json`);
286
+ return;
287
+ }
288
+ if (plan.event === "SessionStart") pruneStates(now);
289
+ const result = renderRun(plan, messages, state, now, new Map(Object.entries(labels)));
290
+ result.state.configDir = process.env.CLAUDE_CONFIG_DIR ?? "";
291
+ writeState(plan.sessionId, result.state);
292
+ if (!result.stdout) return;
293
+ await writeOut(process.stdout, result.stdout);
294
+ if (messages.length) await ack(target, plan.sessionId, messages);
295
+ }
296
+ function alive(pid) {
297
+ try {
298
+ process.kill(pid, 0);
299
+ return true;
300
+ } catch (e) {
301
+ return e.code === "EPERM";
302
+ }
303
+ }
304
+ function ancestors() {
305
+ const out = [process.ppid];
306
+ try {
307
+ const stat = readFileSync3(`/proc/${process.ppid}/stat`, "utf-8");
308
+ const ppid = Number(stat.slice(stat.lastIndexOf(")") + 2).split(" ")[1]);
309
+ if (ppid > 1) out.push(ppid);
310
+ } catch {
311
+ if (process.platform === "win32") return out;
312
+ try {
313
+ const ppid = Number(execFileSync("ps", ["-o", "ppid=", "-p", String(process.ppid)], { encoding: "utf8", timeout: 2e3, stdio: ["ignore", "pipe", "ignore"] }).trim());
314
+ if (ppid > 1) out.push(ppid);
315
+ } catch {
316
+ }
317
+ }
318
+ return out;
319
+ }
320
+ function claimWaiter(sessionId) {
321
+ const lock = join3(stateDir(), `${sessionId}.waiter`);
322
+ try {
323
+ const pid = Number(readFileSync3(lock, "utf-8"));
324
+ if (pid && pid !== process.pid && alive(pid)) return false;
325
+ } catch {
326
+ }
327
+ try {
328
+ mkdirSync(stateDir(), { recursive: true });
329
+ writeFileSync(lock, String(process.pid));
330
+ } catch {
331
+ return false;
332
+ }
333
+ return true;
334
+ }
335
+ function releaseWaiter(sessionId) {
336
+ try {
337
+ if (Number(readFileSync3(join3(stateDir(), `${sessionId}.waiter`), "utf-8")) === process.pid) removeFile(`${sessionId}.waiter`);
338
+ } catch {
339
+ }
340
+ }
341
+ async function wait(payload, target) {
342
+ const sessionId = sessionIdOf(payload);
343
+ if (!sessionId) {
344
+ debug("waiter: no session id");
345
+ return 0;
346
+ }
347
+ if (typeof payload.agent_id === "string" && payload.agent_id) {
348
+ debug("waiter: not inside a subagent");
349
+ return 0;
350
+ }
351
+ if (!claimWaiter(sessionId)) {
352
+ debug("waiter: another waiter runs for this session");
353
+ return 0;
354
+ }
355
+ const watch = ancestors();
356
+ let failures = 0;
357
+ let notFound = 0;
358
+ try {
359
+ for (; ; ) {
360
+ if (!watch.every(alive)) {
361
+ debug("waiter: the session process is gone");
362
+ return 0;
363
+ }
364
+ let r;
365
+ try {
366
+ r = await post(target, "/api/live-sessions/wait", { sessionId, timeoutSecs: WAIT_SECS }, (WAIT_SECS + 15) * 1e3);
367
+ } catch (e) {
368
+ r = { status: 0, body: null };
369
+ debug(`waiter: request failed: ${e instanceof Error ? e.message : String(e)}`);
370
+ }
371
+ if (r.status === 401 || r.status === 402 || r.status === 403) {
372
+ debug(`waiter: HTTP ${r.status}`);
373
+ return 0;
374
+ }
375
+ if (!r.body) {
376
+ failures += 1;
377
+ notFound = r.status === 404 ? notFound + 1 : 0;
378
+ if (notFound >= 5 || failures > 120) return 0;
379
+ await new Promise((res) => setTimeout(res, Math.min(3e4, 1e3 * 2 ** Math.min(failures, 5))));
380
+ continue;
381
+ }
382
+ failures = 0;
383
+ notFound = 0;
384
+ if (r.body.ended) {
385
+ debug("waiter: the session ended");
386
+ return 0;
387
+ }
388
+ const messages = r.body.messages ?? [];
389
+ if (!messages.length) continue;
390
+ await writeOut(process.stderr, renderWake(sessionId, messages, Date.now(), new Map(Object.entries(r.body.labels ?? {}))) + "\n");
391
+ await ack(target, sessionId, messages);
392
+ return 2;
393
+ }
394
+ } finally {
395
+ releaseWaiter(sessionId);
396
+ }
397
+ }
398
+ async function main() {
399
+ if (process.env.CHAT_RECALL_MESSAGE_HOOK === "0") return 0;
400
+ const raw = await readStdin();
401
+ let payload;
402
+ try {
403
+ payload = JSON.parse(raw);
404
+ } catch {
405
+ debug("stdin is not JSON");
406
+ return 0;
407
+ }
408
+ const target = recallTarget();
409
+ if (!target) {
410
+ debug("no login: run `chat-recall login`");
411
+ return 0;
412
+ }
413
+ if (process.argv.includes("--wait")) return wait(payload, target);
414
+ await turn(payload, target);
415
+ return 0;
416
+ }
417
+ main().then(
418
+ (code) => process.exit(code),
419
+ (e) => {
420
+ debug(e instanceof Error ? e.message : String(e));
421
+ process.exit(0);
422
+ }
423
+ );