@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.
- package/dist/src/agent/claude.d.ts +14 -0
- package/dist/src/agent/claude.js +171 -118
- package/dist/src/agent/claude.js.map +1 -1
- package/dist/src/agent/model-error.d.ts +8 -0
- package/dist/src/agent/model-error.js +13 -0
- package/dist/src/agent/model-error.js.map +1 -1
- package/dist/src/hub.d.ts +8 -0
- package/dist/src/hub.js +14 -0
- package/dist/src/hub.js.map +1 -1
- package/dist/src/protocol.d.ts +21 -3
- package/dist/src/protocol.js +4 -1
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/push.d.ts +104 -0
- package/dist/src/push.js +339 -0
- package/dist/src/push.js.map +1 -0
- package/dist/src/server.js +32 -4
- package/dist/src/server.js.map +1 -1
- package/dist/src/session-map.d.ts +33 -0
- package/dist/src/session-map.js +48 -0
- package/dist/src/session-map.js.map +1 -0
- package/dist/src/types.d.ts +16 -1
- package/dist/src/workspace.d.ts +16 -1
- package/dist/src/workspace.js +32 -4
- package/dist/src/workspace.js.map +1 -1
- package/package.json +4 -2
|
@@ -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. */
|
package/dist/src/agent/claude.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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,
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
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;
|
package/dist/src/hub.js.map
CHANGED
|
@@ -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":"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"}
|
package/dist/src/protocol.d.ts
CHANGED
|
@@ -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:
|
|
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;
|
package/dist/src/protocol.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/src/protocol.js.map
CHANGED
|
@@ -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"}
|