@gtc6244/immediacy-daemon 0.2.0 → 0.2.2

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.
@@ -35,6 +35,14 @@ export declare class ClaudeAgent extends BaseAgent {
35
35
  */
36
36
  private pendingCalls;
37
37
  private inputQueue;
38
+ /**
39
+ * Messages the input stream has yielded to the SDK but that haven't yet been
40
+ * confirmed by a first inbound SDK message. If a `--resume` is rejected (the
41
+ * session is gone — see the recovery in {@link runLoop}) we abandon that query
42
+ * and re-queue these so the fresh, resume-less query still sees the prompt
43
+ * instead of hanging on an empty queue. Cleared once the turn is live.
44
+ */
45
+ private inFlight;
38
46
  private inputResolver;
39
47
  private closed;
40
48
  private started;
@@ -65,6 +73,12 @@ export declare class ClaudeAgent extends BaseAgent {
65
73
  stop(): Promise<void>;
66
74
  /** Push-based async iterable of user messages for the SDK's streaming input. */
67
75
  private inputStream;
76
+ /**
77
+ * Build and launch the SDK query for the current turn, resuming
78
+ * `this.sessionId` when it's set. Extracted from runLoop so a recoverable
79
+ * resume miss can relaunch it once, fresh (with `this.sessionId` cleared).
80
+ */
81
+ private startQuery;
68
82
  private runLoop;
69
83
  private handleMessage;
70
84
  /** Surface any base64 image blocks in a message/tool-result as image events. */
@@ -21,7 +21,7 @@ import { BaseAgent } from "./agent.js";
21
21
  import { PermissionGate, QuestionGate } from "../permission-gate.js";
22
22
  import { isWorkspaceScoped } from "./workspace-scope.js";
23
23
  import { extractImages } from "./images.js";
24
- import { classifyModelError } from "./model-error.js";
24
+ import { classifyModelError, isSessionNotFound } from "./model-error.js";
25
25
  import { detectUsageLimit } from "../usage-limit.js";
26
26
  import { extractTurnUsage } from "../usage.js";
27
27
  import { logger } from "../log.js";
@@ -45,6 +45,14 @@ export class ClaudeAgent extends BaseAgent {
45
45
  */
46
46
  pendingCalls = new Map();
47
47
  inputQueue = [];
48
+ /**
49
+ * Messages the input stream has yielded to the SDK but that haven't yet been
50
+ * confirmed by a first inbound SDK message. If a `--resume` is rejected (the
51
+ * session is gone — see the recovery in {@link runLoop}) we abandon that query
52
+ * and re-queue these so the fresh, resume-less query still sees the prompt
53
+ * instead of hanging on an empty queue. Cleared once the turn is live.
54
+ */
55
+ inFlight = [];
48
56
  inputResolver = null;
49
57
  closed = false;
50
58
  started = false;
@@ -140,142 +148,187 @@ export class ClaudeAgent extends BaseAgent {
140
148
  async *inputStream() {
141
149
  while (!this.closed) {
142
150
  while (this.inputQueue.length) {
143
- yield this.inputQueue.shift();
151
+ const msg = this.inputQueue.shift();
152
+ // Track as in-flight until the turn is confirmed live, so a resume
153
+ // failure can re-queue it (see runLoop's recovery).
154
+ this.inFlight.push(msg);
155
+ yield msg;
144
156
  }
145
157
  if (this.closed)
146
158
  return;
147
159
  await new Promise((r) => (this.inputResolver = r));
148
160
  }
149
161
  }
162
+ /**
163
+ * Build and launch the SDK query for the current turn, resuming
164
+ * `this.sessionId` when it's set. Extracted from runLoop so a recoverable
165
+ * resume miss can relaunch it once, fresh (with `this.sessionId` cleared).
166
+ */
167
+ startQuery() {
168
+ return query({
169
+ prompt: this.inputStream(),
170
+ options: {
171
+ cwd: this.ctx.worktreePath,
172
+ resume: this.sessionId,
173
+ ...(this.ctx.model ? { model: this.ctx.model } : {}),
174
+ // Reasoning-effort level (low/medium/high/xhigh/max). The CLI silently
175
+ // downgrades a level the selected model doesn't support, so passing it
176
+ // through is safe. Undefined → the model's own default.
177
+ ...(this.ctx.effort
178
+ ? { effort: this.ctx.effort }
179
+ : {}),
180
+ ...(this.sdkEnv ? { env: { ...process.env, ...this.sdkEnv } } : {}),
181
+ // prompts.general (app config): append to Claude Code's own system
182
+ // prompt rather than replacing it. Omitted when empty.
183
+ ...(this.ctx.appendSystemPrompt
184
+ ? {
185
+ systemPrompt: {
186
+ type: "preset",
187
+ preset: "claude_code",
188
+ append: this.ctx.appendSystemPrompt,
189
+ },
190
+ }
191
+ : {}),
192
+ includePartialMessages: false,
193
+ // Workspace-scoped calls run without a phone round-trip; anything
194
+ // that escapes the worktree routes through canUseTool → the phone.
195
+ canUseTool: async (toolName, input, opts) => {
196
+ // AskUserQuestion is not a permission gate — it's an interactive
197
+ // multiple-choice prompt whose *answers* become the tool result. Emit
198
+ // a dedicated card, wait for the user's picks, and hand them back as
199
+ // updatedInput (SDK contract: { questions, answers }). No tool_use
200
+ // event, so it never renders as a collapsed generic tool call.
201
+ if (toolName === "AskUserQuestion") {
202
+ const requestId = opts.toolUseID;
203
+ const questions = extractQuestions(input);
204
+ this.emitEvent({ kind: "ask_question", requestId, questions });
205
+ this.emitEvent({ kind: "status", status: "awaiting_permission" });
206
+ const answer = await this.questionGate.wait(requestId);
207
+ this.emitEvent({ kind: "status", status: "running" });
208
+ if (!answer || (Object.keys(answer.answers).length === 0 && !answer.response)) {
209
+ return { behavior: "deny", message: "User did not answer the question." };
210
+ }
211
+ return {
212
+ behavior: "allow",
213
+ updatedInput: {
214
+ questions: input.questions ?? questions,
215
+ answers: answer.answers,
216
+ ...(answer.response ? { response: answer.response } : {}),
217
+ },
218
+ };
219
+ }
220
+ const inputSummary = opts.title ?? summarize(toolName, input);
221
+ this.emitEvent({ kind: "tool_use", tool: toolName, inputSummary });
222
+ if (AUTO_APPROVE_WORKSPACE &&
223
+ isWorkspaceScoped(toolName, input, this.ctx.worktreePath)) {
224
+ return { behavior: "allow", updatedInput: input };
225
+ }
226
+ // A prior "Allow all" may already cover this category (same host,
227
+ // folder, or tool) — auto-approve without a phone round-trip.
228
+ if (this.ctx.allowlist?.isAllowed(toolName, input, this.ctx.worktreePath)) {
229
+ return { behavior: "allow", updatedInput: input };
230
+ }
231
+ const requestId = opts.toolUseID;
232
+ this.pendingCalls.set(requestId, { tool: toolName, input });
233
+ this.emitEvent({ kind: "status", status: "awaiting_permission" });
234
+ this.emitEvent({ kind: "permission", requestId, tool: toolName, inputSummary });
235
+ const decision = await this.gate.wait(requestId);
236
+ this.pendingCalls.delete(requestId);
237
+ this.emitEvent({ kind: "status", status: "running" });
238
+ return decision === "allow"
239
+ ? { behavior: "allow", updatedInput: input }
240
+ : { behavior: "deny", message: "Denied from phone" };
241
+ },
242
+ },
243
+ });
244
+ }
150
245
  async runLoop() {
151
246
  const ws = this.ctx.workspaceId;
152
247
  const model = this.ctx.model ?? "default";
153
248
  const startMs = Date.now();
154
249
  let firstMessageSeen = false;
250
+ // We relaunch the query at most once, to recover from a dead `--resume`.
251
+ let recoveredFromResume = false;
155
252
  logger.info("model", "model request started", {
156
253
  ws,
157
254
  data: { model, resumed: Boolean(this.sessionId) },
158
255
  });
159
- try {
160
- const response = query({
161
- prompt: this.inputStream(),
162
- options: {
163
- cwd: this.ctx.worktreePath,
164
- resume: this.sessionId,
165
- ...(this.ctx.model ? { model: this.ctx.model } : {}),
166
- // Reasoning-effort level (low/medium/high/xhigh/max). The CLI silently
167
- // downgrades a level the selected model doesn't support, so passing it
168
- // through is safe. Undefined → the model's own default.
169
- ...(this.ctx.effort
170
- ? { effort: this.ctx.effort }
171
- : {}),
172
- ...(this.sdkEnv ? { env: { ...process.env, ...this.sdkEnv } } : {}),
173
- // prompts.general (app config): append to Claude Code's own system
174
- // prompt rather than replacing it. Omitted when empty.
175
- ...(this.ctx.appendSystemPrompt
176
- ? {
177
- systemPrompt: {
178
- type: "preset",
179
- preset: "claude_code",
180
- append: this.ctx.appendSystemPrompt,
181
- },
182
- }
183
- : {}),
184
- includePartialMessages: false,
185
- // Workspace-scoped calls run without a phone round-trip; anything
186
- // that escapes the worktree routes through canUseTool → the phone.
187
- canUseTool: async (toolName, input, opts) => {
188
- // AskUserQuestion is not a permission gate — it's an interactive
189
- // multiple-choice prompt whose *answers* become the tool result. Emit
190
- // a dedicated card, wait for the user's picks, and hand them back as
191
- // updatedInput (SDK contract: { questions, answers }). No tool_use
192
- // event, so it never renders as a collapsed generic tool call.
193
- if (toolName === "AskUserQuestion") {
194
- const requestId = opts.toolUseID;
195
- const questions = extractQuestions(input);
196
- this.emitEvent({ kind: "ask_question", requestId, questions });
197
- this.emitEvent({ kind: "status", status: "awaiting_permission" });
198
- const answer = await this.questionGate.wait(requestId);
199
- this.emitEvent({ kind: "status", status: "running" });
200
- if (!answer || (Object.keys(answer.answers).length === 0 && !answer.response)) {
201
- return { behavior: "deny", message: "User did not answer the question." };
202
- }
203
- return {
204
- behavior: "allow",
205
- updatedInput: {
206
- questions: input.questions ?? questions,
207
- answers: answer.answers,
208
- ...(answer.response ? { response: answer.response } : {}),
209
- },
210
- };
211
- }
212
- const inputSummary = opts.title ?? summarize(toolName, input);
213
- this.emitEvent({ kind: "tool_use", tool: toolName, inputSummary });
214
- if (AUTO_APPROVE_WORKSPACE &&
215
- isWorkspaceScoped(toolName, input, this.ctx.worktreePath)) {
216
- return { behavior: "allow", updatedInput: input };
217
- }
218
- // A prior "Allow all" may already cover this category (same host,
219
- // folder, or tool) — auto-approve without a phone round-trip.
220
- if (this.ctx.allowlist?.isAllowed(toolName, input, this.ctx.worktreePath)) {
221
- return { behavior: "allow", updatedInput: input };
222
- }
223
- const requestId = opts.toolUseID;
224
- this.pendingCalls.set(requestId, { tool: toolName, input });
225
- this.emitEvent({ kind: "status", status: "awaiting_permission" });
226
- this.emitEvent({ kind: "permission", requestId, tool: toolName, inputSummary });
227
- const decision = await this.gate.wait(requestId);
228
- this.pendingCalls.delete(requestId);
229
- this.emitEvent({ kind: "status", status: "running" });
230
- return decision === "allow"
231
- ? { behavior: "allow", updatedInput: input }
232
- : { behavior: "deny", message: "Denied from phone" };
233
- },
234
- },
235
- });
236
- this.emitEvent({ kind: "status", status: "running" });
237
- for await (const msg of response) {
238
- if (this.closed)
239
- break;
240
- if (!firstMessageSeen) {
241
- firstMessageSeen = true;
242
- // First inbound SDK message = the model is reachable and answering.
243
- logger.info("model", "model reachable", {
256
+ for (;;) {
257
+ try {
258
+ const response = this.startQuery();
259
+ this.emitEvent({ kind: "status", status: "running" });
260
+ for await (const msg of response) {
261
+ if (this.closed)
262
+ break;
263
+ if (!firstMessageSeen) {
264
+ firstMessageSeen = true;
265
+ // Turn is live: the queued prompt was accepted, so nothing needs
266
+ // re-queuing if a *later* error occurs.
267
+ this.inFlight = [];
268
+ // First inbound SDK message = the model is reachable and answering.
269
+ logger.info("model", "model reachable", {
270
+ ws,
271
+ data: { model, latencyMs: Date.now() - startMs },
272
+ });
273
+ }
274
+ this.handleMessage(msg);
275
+ }
276
+ return;
277
+ }
278
+ catch (err) {
279
+ // Recoverable resume miss: the persisted session id isn't known to this
280
+ // backend — pruned, or (the reported bug) minted by a *different*
281
+ // provider before a mid-task model switch fed it to the wrong resume.
282
+ // Drop the resume, re-queue the prompt the abandoned query already
283
+ // pulled, and relaunch once as a fresh session instead of failing the
284
+ // turn. Only meaningful before the turn goes live; a mid-stream failure
285
+ // is a real error, not a resume problem.
286
+ if (!recoveredFromResume &&
287
+ !firstMessageSeen &&
288
+ !this.closed &&
289
+ this.sessionId &&
290
+ isSessionNotFound(err)) {
291
+ recoveredFromResume = true;
292
+ logger.warn("model", "resume session missing — restarting fresh", {
244
293
  ws,
245
- data: { model, latencyMs: Date.now() - startMs },
294
+ data: { model, sessionId: this.sessionId },
246
295
  });
296
+ this.sessionId = undefined;
297
+ // Restore the messages the failed query's input stream had consumed so
298
+ // the fresh query sees them (else its input queue is empty and hangs).
299
+ this.inputQueue.unshift(...this.inFlight);
300
+ this.inFlight = [];
301
+ continue;
247
302
  }
248
- this.handleMessage(msg);
249
- }
250
- }
251
- catch (err) {
252
- const cls = classifyModelError(err);
253
- logger.error("model", "model request failed", {
254
- ws,
255
- data: {
256
- model,
257
- class: cls,
258
- reachedModel: firstMessageSeen,
259
- message: err instanceof Error ? err.message : String(err),
260
- },
261
- });
262
- const message = err instanceof Error ? err.message : String(err);
263
- // A plan/session usage limit is a distinct, actionable case: strict
264
- // matching keeps a transient 429/overload (also class `rate_limit`) out of
265
- // the restart flow — only a real usage-limit notice surfaces the card.
266
- const limit = detectUsageLimit(message, { strict: true });
267
- if (limit) {
268
- this.emitEvent({ kind: "limit", message: limit.message, resetAt: limit.resetAt });
269
- }
270
- else if (cls === "auth") {
271
- // Rejected credential (expired/unrefreshable login or bad key): surface a
272
- // dedicated event so the client can name the account and offer re-login.
273
- this.emitEvent({ kind: "auth_failure", message });
274
- }
275
- else {
276
- this.emitEvent({ kind: "error", message });
303
+ const cls = classifyModelError(err);
304
+ logger.error("model", "model request failed", {
305
+ ws,
306
+ data: {
307
+ model,
308
+ class: cls,
309
+ reachedModel: firstMessageSeen,
310
+ message: err instanceof Error ? err.message : String(err),
311
+ },
312
+ });
313
+ const message = err instanceof Error ? err.message : String(err);
314
+ // A plan/session usage limit is a distinct, actionable case: strict
315
+ // matching keeps a transient 429/overload (also class `rate_limit`) out
316
+ // of the restart flow — only a real usage-limit notice surfaces the card.
317
+ const limit = detectUsageLimit(message, { strict: true });
318
+ if (limit) {
319
+ this.emitEvent({ kind: "limit", message: limit.message, resetAt: limit.resetAt });
320
+ }
321
+ else if (cls === "auth") {
322
+ // Rejected credential (expired/unrefreshable login or bad key): surface
323
+ // a dedicated event so the client can name the account and offer re-login.
324
+ this.emitEvent({ kind: "auth_failure", message });
325
+ }
326
+ else {
327
+ this.emitEvent({ kind: "error", message });
328
+ }
329
+ this.emitEvent({ kind: "status", status: "error" });
330
+ return;
277
331
  }
278
- this.emitEvent({ kind: "status", status: "error" });
279
332
  }
280
333
  }
281
334
  handleMessage(msg) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/agent/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/agent/claude.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,12 @@
5
5
  * tests against canned strings without touching the network.
6
6
  */
7
7
  export type ModelErrorClass = "auth" | "rate_limit" | "timeout" | "network" | "unknown";
8
+ /**
9
+ * True when a backend rejected a `--resume` because the session id doesn't
10
+ * exist for it (e.g. "No conversation found with session ID: <uuid>"). This is
11
+ * recoverable: drop the resume and start a fresh session rather than failing the
12
+ * turn. Matches the Claude Agent SDK / CLI phrasings, staying narrow so an
13
+ * unrelated "not found" (a missing file, a 404 fetch) doesn't trip it.
14
+ */
15
+ export declare function isSessionNotFound(err: unknown): boolean;
8
16
  export declare function classifyModelError(err: unknown): ModelErrorClass;
@@ -4,6 +4,19 @@
4
4
  * first-match-wins over the error's message + any numeric status, so it unit
5
5
  * tests against canned strings without touching the network.
6
6
  */
7
+ /**
8
+ * True when a backend rejected a `--resume` because the session id doesn't
9
+ * exist for it (e.g. "No conversation found with session ID: <uuid>"). This is
10
+ * recoverable: drop the resume and start a fresh session rather than failing the
11
+ * turn. Matches the Claude Agent SDK / CLI phrasings, staying narrow so an
12
+ * unrelated "not found" (a missing file, a 404 fetch) doesn't trip it.
13
+ */
14
+ export function isSessionNotFound(err) {
15
+ const msg = (err instanceof Error ? err.message : String(err ?? "")).toLowerCase();
16
+ return (/no conversation found with session id/.test(msg) ||
17
+ /(session|conversation)[^.]*\bnot found\b/.test(msg) ||
18
+ /no (session|conversation) (found|with)/.test(msg));
19
+ }
7
20
  export function classifyModelError(err) {
8
21
  const status = err && typeof err === "object" && "status" in err
9
22
  ? String(err.status)
@@ -1 +1 @@
1
- {"version":3,"file":"model-error.js","sourceRoot":"","sources":["../../../src/agent/model-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,MAAM,GACV,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG;QAC/C,CAAC,CAAC,MAAM,CAAE,GAA2B,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAE/B,IACE,6IAA6I,CAAC,IAAI,CAChJ,GAAG,CACJ,EACD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5E,IAAI,iCAAiC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,IAAI,qFAAqF,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"model-error.js","sourceRoot":"","sources":["../../../src/agent/model-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,OAAO,CACL,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC;QACjD,0CAA0C,CAAC,IAAI,CAAC,GAAG,CAAC;QACpD,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,MAAM,GACV,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG;QAC/C,CAAC,CAAC,MAAM,CAAE,GAA2B,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAE/B,IACE,6IAA6I,CAAC,IAAI,CAChJ,GAAG,CACJ,EACD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5E,IAAI,iCAAiC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,IAAI,qFAAqF,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/dist/src/hub.d.ts CHANGED
@@ -37,6 +37,14 @@ export declare class Hub {
37
37
  subscribeLog(socket: WebSocket): void;
38
38
  /** Push a daemon→client message to just the log subscribers. */
39
39
  broadcastLog<T extends MessageType>(type: T, ws: string | null, payload: PayloadFor<T>): void;
40
+ /**
41
+ * True while at least one client socket is attached and open. The FCM push
42
+ * path gates on this: a live socket already delivers the event (and the app
43
+ * raises its own local notification), so the daemon only remote-wakes devices
44
+ * when nothing is attached — a backgrounded phone drops its socket, so this
45
+ * flips false and the wake-up fires.
46
+ */
47
+ hasLiveClients(): boolean;
40
48
  /** The codec bound to a socket (cleartext if unknown/unpaired). */
41
49
  codecFor(socket: WebSocket): Codec;
42
50
  /** Bind a socket to a codec (called once the device's key is known). */
package/dist/src/hub.js CHANGED
@@ -61,6 +61,20 @@ export class Hub {
61
61
  }
62
62
  }
63
63
  }
64
+ /**
65
+ * True while at least one client socket is attached and open. The FCM push
66
+ * path gates on this: a live socket already delivers the event (and the app
67
+ * raises its own local notification), so the daemon only remote-wakes devices
68
+ * when nothing is attached — a backgrounded phone drops its socket, so this
69
+ * flips false and the wake-up fires.
70
+ */
71
+ hasLiveClients() {
72
+ for (const socket of this.conns.keys()) {
73
+ if (socket.readyState === WebSocket.OPEN)
74
+ return true;
75
+ }
76
+ return false;
77
+ }
64
78
  /** The codec bound to a socket (cleartext if unknown/unpaired). */
65
79
  codecFor(socket) {
66
80
  return this.conns.get(socket) ?? clearCodec;
@@ -1 +1 @@
1
- {"version":3,"file":"hub.js","sourceRoot":"","sources":["../../src/hub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub.js","sourceRoot":"","sources":["../../src/hub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,UAAU,EAAc,MAAM,aAAa,CAAC;AAErD,MAAM,OAAO,GAAG;IAiBM;IAhBpB,wEAAwE;IAChE,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC5C;;;;OAIG;IACK,cAAc,GAAG,IAAI,GAAG,EAAa,CAAC;IAE9C;;;;;;OAMG;IACH,YAAoB,gBAAgB,KAAK;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAAG,CAAC;IAE7C,yEAAyE;IACjE,MAAM,CAAC,MAAiB;QAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC;IACtE,CAAC;IAED,GAAG,CAAC,MAAiB;QACnB,2EAA2E;QAC3E,0CAA0C;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,MAAiB;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,8DAA8D;IAC9D,YAAY,CAAC,MAAiB;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,gEAAgE;IAChE,YAAY,CAAwB,IAAO,EAAE,EAAiB,EAAE,OAAsB;QACpF,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,KAAK,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,cAAc;QACZ,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mEAAmE;IACnE,QAAQ,CAAC,MAAiB;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC;IAC9C,CAAC;IAED,wEAAwE;IACxE,QAAQ,CAAC,MAAiB,EAAE,KAAY;QACtC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,MAAiB,EAAE,GAAa;QACnC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAiB,EAAE,GAAa,EAAE,KAA4B;QACrE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,CACJ,MAAiB,EACjB,IAAO,EACP,EAAiB,EACjB,OAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,0EAA0E;IAC1E,SAAS,CAAwB,IAAO,EAAE,EAAiB,EAAE,OAAsB;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -12,7 +12,7 @@
12
12
  * `payload` is encrypted in the E2E layer (slice 5); until then it travels as
13
13
  * plain JSON.
14
14
  */
15
- export declare const PROTOCOL_VERSION: 3;
15
+ export declare const PROTOCOL_VERSION: 4;
16
16
  /** Workspace lifecycle status, surfaced as a badge in the client. */
17
17
  export type WorkspaceStatus = "idle" | "running" | "awaiting_permission" | "done" | "error";
18
18
  /** Generic envelope. `T` is the message `type`; `P` its payload shape. */
@@ -25,7 +25,7 @@ export interface Envelope<T extends MessageType = MessageType> {
25
25
  payload: PayloadFor<T>;
26
26
  }
27
27
  /** Client → daemon. */
28
- export type ClientMessageType = "project.list" | "project.create" | "project.delete" | "project.rename" | "project.reorder" | "project.branches" | "project.pulls" | "project.issues" | "issue.create" | "workspace.list" | "workspace.create" | "workspace.delete" | "workspace.archive" | "workspace.rename" | "workspace.action" | "workspace.setModel" | "delete.batch" | "prompt.send" | "agent.stop" | "permission.respond" | "question.respond" | "allowlist.list" | "allowlist.revoke" | "allowlist.clear" | "terminal.input" | "terminal.resize" | "terminal.snapshot" | "forward.list" | "forward.open" | "forward.data" | "forward.close" | "git.status" | "git.commit" | "git.push" | "git.resolve" | "git.merge" | "pr.create" | "pr.merge" | "workspace.open" | "diff.get" | "tree.get" | "file.get" | "file.set" | "media.get" | "chat.history" | "github.status" | "github.repos" | "models.list" | "job.list" | "job.create" | "job.update" | "job.delete" | "job.run" | "job.runs" | "settings.get" | "settings.set" | "config.set" | "log.tail" | "client.hello" | "hello" | "pair.info" | "daemon.get" | "daemon.rename" | "daemon.update.check" | "daemon.update" | "ping" | "echo";
28
+ export type ClientMessageType = "project.list" | "project.create" | "project.delete" | "project.rename" | "project.reorder" | "project.branches" | "project.pulls" | "project.issues" | "issue.create" | "workspace.list" | "workspace.create" | "workspace.delete" | "workspace.archive" | "workspace.rename" | "workspace.action" | "workspace.setModel" | "delete.batch" | "prompt.send" | "agent.stop" | "permission.respond" | "question.respond" | "allowlist.list" | "allowlist.revoke" | "allowlist.clear" | "terminal.input" | "terminal.resize" | "terminal.snapshot" | "forward.list" | "forward.open" | "forward.data" | "forward.close" | "git.status" | "git.commit" | "git.push" | "git.resolve" | "git.merge" | "pr.create" | "pr.merge" | "workspace.open" | "diff.get" | "tree.get" | "file.get" | "file.set" | "media.get" | "chat.history" | "github.status" | "github.repos" | "models.list" | "job.list" | "job.create" | "job.update" | "job.delete" | "job.run" | "job.runs" | "settings.get" | "settings.set" | "config.set" | "log.tail" | "client.hello" | "hello" | "pair.info" | "daemon.get" | "daemon.rename" | "daemon.update.check" | "daemon.update" | "push.register" | "push.unregister" | "ping" | "echo";
29
29
  /** Daemon → client. */
30
30
  export type DaemonMessageType = "project.list.result" | "project.branches.result" | "project.pulls.result" | "project.issues.result" | "workspace.list.result" | "workspace.created" | "workspace.renamed" | "delete.batch.result" | "event.assistant_message" | "event.assistant_image" | "event.tool_use" | "event.permission_request" | "event.permission_resolved" | "event.ask_question" | "event.question_resolved" | "event.session" | "event.agent_done" | "event.session_limit" | "event.system_notice" | "event.auth_failure" | "terminal.data" | "terminal.snapshot.result" | "forward.available" | "git.status.result" | "git.result" | "diff.result" | "tree.result" | "file.result" | "file.saved" | "media.result" | "chat.history.result" | "github.status.result" | "github.repos.result" | "models.list.result" | "job.list.result" | "job.runs.result" | "event.job_run" | "settings.result" | "allowlist.result" | "log.tail.result" | "log.event" | "hello.ok" | "pair.info.result" | "daemon.info" | "daemon.update.result" | "pong" | "error" | "echo.result";
31
31
  export type MessageType = ClientMessageType | DaemonMessageType;
@@ -1366,7 +1366,7 @@ export interface EventJobRunPayload {
1366
1366
  /** Severity. `debug` is dropped unless LOG_DEBUG=1; warn/error always kept. */
1367
1367
  export type LogLevel = "debug" | "info" | "warn" | "error";
1368
1368
  /** Which subsystem an entry came from — drives the client-side filter. */
1369
- export type LogCategory = "conn" | "model" | "agent" | "forward" | "error" | "system";
1369
+ export type LogCategory = "conn" | "model" | "agent" | "forward" | "push" | "error" | "system";
1370
1370
  /**
1371
1371
  * One structured log line. `seq` is a daemon-monotonic counter (resets to 0 on
1372
1372
  * restart) and is the ordering + dedup key: clients render ascending `seq` and
@@ -1401,6 +1401,22 @@ export interface LogTailResultPayload {
1401
1401
  export interface LogEventPayload {
1402
1402
  entry: LogEntry;
1403
1403
  }
1404
+ /** The platform a push token was minted on (drives the daemon's FCM payload). */
1405
+ export type PushPlatform = "android" | "ios" | "macos" | "web";
1406
+ /**
1407
+ * Client → daemon: register this device's FCM token so the daemon can remote-wake
1408
+ * it when no socket is live (a deferred permission, a finished turn, a usage
1409
+ * limit). Idempotent — re-registering the same token just refreshes it (FCM
1410
+ * rotates tokens, so the client re-sends on `onTokenRefresh`).
1411
+ */
1412
+ export interface PushRegisterPayload {
1413
+ token: string;
1414
+ platform: PushPlatform;
1415
+ }
1416
+ /** Client → daemon: drop a previously-registered token (sign-out / disabled). */
1417
+ export interface PushUnregisterPayload {
1418
+ token: string;
1419
+ }
1404
1420
  export interface PayloadMap {
1405
1421
  "project.list": ProjectListPayload;
1406
1422
  "project.create": ProjectCreatePayload;
@@ -1465,6 +1481,8 @@ export interface PayloadMap {
1465
1481
  "daemon.rename": DaemonRenamePayload;
1466
1482
  "daemon.update.check": DaemonUpdateCheckPayload;
1467
1483
  "daemon.update": DaemonUpdatePayload;
1484
+ "push.register": PushRegisterPayload;
1485
+ "push.unregister": PushUnregisterPayload;
1468
1486
  ping: PingPayload;
1469
1487
  echo: EchoPayload;
1470
1488
  "project.list.result": ProjectListResultPayload;
@@ -14,5 +14,8 @@
14
14
  */
15
15
  // v3: added `workspace.setModel` (change a workspace's model/effort before its
16
16
  // first turn) and started populating `WorkspaceSummary.effort` on the wire.
17
- export const PROTOCOL_VERSION = 3;
17
+ // v4: added `push.register` / `push.unregister` (FCM device-token registration
18
+ // for daemon-driven remote wake). Additive + client→daemon only, so an older
19
+ // daemon just ignores it — the skew is a warning, never fatal.
20
+ export const PROTOCOL_VERSION = 4;
18
21
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,+EAA+E;AAC/E,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAU,CAAC"}