@koda-sl/baker-bridge 0.36.0-dev.7ebf7748-dev.7ebf7748 → 0.37.1-dev.c223fbd9

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.
@@ -1,14 +1,25 @@
1
1
  import { query } from "@anthropic-ai/claude-agent-sdk";
2
2
  import { buildAttachmentPromptSuffix, downloadAttachments } from "./attachments.js";
3
- import { postToConvex } from "./convex.js";
3
+ import { clearStreamBuffer, enqueueStreamingTools, enqueueStreamText, flushStream, postEvent, postInputRequest, postInputResolved, postRouterSample, signalComplete, } from "./convex.js";
4
4
  import { selectModel } from "./model-router.js";
5
5
  import { loadSessionId, saveSessionId } from "./session-store.js";
6
6
  // ---------------------------------------------------------------------------
7
- // AgentSession — wraps query() with resume for multi-turn
8
- //
9
- // One session per thread. The first message creates a fresh query().
10
- // Subsequent messages create a new query() with `resume: sessionId`
11
- // so the conversation context carries over between turns.
7
+ // Tunables
8
+ // ---------------------------------------------------------------------------
9
+ /** No SDK output for this long declare the agent stalled and abort. */
10
+ const SDK_WATCHDOG_MS = 5 * 60 * 1000;
11
+ /** Max wait for a previous in-flight run to drain when a new chat arrives. */
12
+ const REPLACE_STREAM_TIMEOUT_MS = 30_000;
13
+ /** Drop sessions that haven't been touched for this long (memory bound). */
14
+ const SESSION_IDLE_TTL_MS = 24 * 60 * 60 * 1000;
15
+ /** How often the eviction sweeper runs. */
16
+ const SESSION_SWEEP_INTERVAL_MS = 60 * 60 * 1000;
17
+ /** Hard cap on how long an AskUserQuestion can block. The 20-min cron is the
18
+ * ultimate safety net for bridge-restart orphans; this stops bridge-alive
19
+ * hangs sooner so users see a real error instead of an indefinite spinner. */
20
+ const ASK_USER_QUESTION_TIMEOUT_MS = 15 * 60 * 1000;
21
+ // ---------------------------------------------------------------------------
22
+ // AgentSession — one per thread, persists across messages so SDK resume works.
12
23
  // ---------------------------------------------------------------------------
13
24
  class AgentSession {
14
25
  threadId;
@@ -16,65 +27,93 @@ class AgentSession {
16
27
  pendingQuestions = new Map();
17
28
  handlerCtx;
18
29
  options;
30
+ /** Identity token for the currently-running stream. abort() nulls this; if a
31
+ * later check sees a different value, the run knows it was abandoned. This
32
+ * replaces a global `aborted` flag whose reset-on-entry was racy. */
33
+ activeRun = null;
19
34
  activeAbort = null;
20
- aborted = false;
35
+ streamingPromise = null;
36
+ replacingStream = false;
37
+ currentTurnTools = [];
38
+ model;
39
+ lastUsedAt = Date.now();
21
40
  constructor(threadId) {
22
41
  this.threadId = threadId;
23
- this.handlerCtx = { threadId, pendingQuestions: this.pendingQuestions, onInputRequest: null };
42
+ this.handlerCtx = { threadId, pendingQuestions: this.pendingQuestions };
24
43
  this.options = buildSessionOptions(this.handlerCtx);
25
44
  }
45
+ /** Cancel any in-flight run. The next status check inside runStream will trip. */
26
46
  abort() {
27
- this.aborted = true;
47
+ this.activeRun = null;
28
48
  if (this.activeAbort) {
29
49
  this.activeAbort.abort();
30
50
  this.activeAbort = null;
31
51
  }
52
+ // Reject any pending questions so handleAskUserQuestion unblocks.
53
+ for (const [id, p] of this.pendingQuestions) {
54
+ this.pendingQuestions.delete(id);
55
+ // Fire-and-forget: the rejection will be caught by the SDK or AgentSession error path.
56
+ try {
57
+ p.resolve({});
58
+ }
59
+ catch {
60
+ // ignore
61
+ }
62
+ }
32
63
  }
33
- /** Restore a previously persisted session ID (e.g. loaded from disk after restart). */
34
64
  setSessionId(id) {
35
65
  this.sessionId = id;
36
66
  }
37
- async preparePrompt(content, attachments, callbacks) {
38
- let prompt = content;
39
- if (attachments && attachments.length > 0) {
40
- const paths = await downloadAttachments(attachments);
41
- prompt += buildAttachmentPromptSuffix(paths);
42
- }
43
- if (this.aborted) {
44
- callbacks.onComplete(0, true, ["Cancelled by user"], undefined);
45
- return null;
46
- }
47
- const routerResult = await selectModel(prompt);
48
- callbacks.onModelSelected?.(routerResult.model);
49
- callbacks.onRouterSample?.(routerResult.model, routerResult.messages);
50
- if (this.aborted) {
51
- callbacks.onComplete(0, true, ["Cancelled by user"], routerResult.model);
52
- return null;
67
+ resolveQuestion(toolUseId, answers) {
68
+ const pending = this.pendingQuestions.get(toolUseId);
69
+ if (!pending) {
70
+ return false;
53
71
  }
54
- return { prompt, model: routerResult.model };
72
+ pending.resolve(answers);
73
+ this.pendingQuestions.delete(toolUseId);
74
+ return true;
55
75
  }
56
- handleStreamError(costUsd, error, model, callbacks) {
57
- this.activeAbort = null;
58
- if (this.aborted) {
59
- callbacks.onComplete(costUsd, true, ["Cancelled by user"], model);
60
- return;
76
+ async sendAndStream(content, attachments) {
77
+ if (this.streamingPromise) {
78
+ this.replacingStream = true;
79
+ this.abort();
80
+ try {
81
+ await Promise.race([
82
+ this.streamingPromise,
83
+ new Promise((_, reject) => setTimeout(() => reject(new Error("previous stream timed out")), REPLACE_STREAM_TIMEOUT_MS)),
84
+ ]);
85
+ }
86
+ catch (err) {
87
+ console.error(`[AgentSession] previous stream did not drain on thread ${this.threadId} — forcing reset:`, err instanceof Error ? err.message : err);
88
+ }
89
+ finally {
90
+ this.streamingPromise = null;
91
+ this.replacingStream = false;
92
+ }
61
93
  }
62
- const message = error instanceof Error ? error.message : "Unknown error";
63
- console.error("Agent session error:", message);
64
- if (this.pendingQuestions.size > 0) {
65
- console.warn(`[AgentSession] SDK errored with ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
94
+ this.streamingPromise = this.runStream(content, attachments);
95
+ try {
96
+ await this.streamingPromise;
97
+ }
98
+ finally {
99
+ this.streamingPromise = null;
66
100
  }
67
- callbacks.onComplete(costUsd, true, [message], model);
68
101
  }
69
- async sendAndStream(content, callbacks, attachments) {
102
+ async runStream(content, attachments) {
103
+ const runToken = Symbol("agent-run");
104
+ this.activeRun = runToken;
105
+ this.lastUsedAt = Date.now();
106
+ this.currentTurnTools = [];
70
107
  let costUsd = 0;
71
- this.aborted = false;
72
- this.handlerCtx.onInputRequest = callbacks.onInputRequest;
108
+ this.model = undefined;
73
109
  try {
74
- const prepared = await this.preparePrompt(content, attachments, callbacks);
110
+ const prepared = await this.preparePrompt(content, attachments, runToken);
75
111
  if (!prepared) {
112
+ await this.completeWithCancel(0);
76
113
  return;
77
114
  }
115
+ this.model = prepared.model;
116
+ void postRouterSample(this.threadId, prepared.model, prepared.routerMessages);
78
117
  this.activeAbort = new AbortController();
79
118
  const opts = {
80
119
  ...this.options,
@@ -83,105 +122,226 @@ class AgentSession {
83
122
  ...(this.sessionId && { resume: this.sessionId }),
84
123
  };
85
124
  const q = query({ prompt: prepared.prompt, options: opts });
86
- for await (const msg of q) {
87
- if (msg.session_id) {
88
- this.sessionId = msg.session_id;
89
- void saveSessionId(this.threadId, msg.session_id);
125
+ let lastEventAt = Date.now();
126
+ const watchdog = setInterval(() => {
127
+ if (Date.now() - lastEventAt > SDK_WATCHDOG_MS) {
128
+ console.error(`[AgentSession] watchdog: no SDK event for ${SDK_WATCHDOG_MS}ms — aborting thread ${this.threadId}`);
129
+ clearInterval(watchdog);
130
+ this.activeAbort?.abort();
90
131
  }
91
- callbacks.onMessage(msg);
92
- if (msg.type === "result") {
93
- costUsd = msg.total_cost_usd;
132
+ }, 30_000).unref();
133
+ try {
134
+ for await (const msg of q) {
135
+ lastEventAt = Date.now();
136
+ this.lastUsedAt = lastEventAt;
137
+ if (this.activeRun !== runToken) {
138
+ break;
139
+ }
140
+ if (msg.session_id) {
141
+ this.sessionId = msg.session_id;
142
+ void saveSessionId(this.threadId, msg.session_id);
143
+ }
144
+ await this.handleMessage(msg);
145
+ if (msg.type === "result") {
146
+ costUsd = msg.total_cost_usd;
147
+ }
94
148
  }
95
149
  }
150
+ finally {
151
+ clearInterval(watchdog);
152
+ }
96
153
  this.activeAbort = null;
97
- if (this.aborted) {
98
- callbacks.onComplete(costUsd, true, ["Cancelled by user"], prepared.model);
154
+ if (this.activeRun !== runToken) {
155
+ await this.completeWithCancel(costUsd);
99
156
  return;
100
157
  }
101
158
  if (this.pendingQuestions.size > 0) {
102
159
  console.warn(`[AgentSession] SDK completed but ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
103
160
  }
104
- callbacks.onComplete(costUsd, false, undefined, prepared.model);
161
+ await signalComplete(this.threadId, costUsd, false, undefined, this.model);
105
162
  }
106
163
  catch (error) {
107
- this.handleStreamError(costUsd, error, undefined, callbacks);
164
+ await this.completeWithError(costUsd, error, runToken);
108
165
  }
109
166
  }
110
- resolveQuestion(toolUseId, answers) {
111
- const pending = this.pendingQuestions.get(toolUseId);
112
- if (!pending) {
113
- return false;
167
+ handleStreamEvent(event) {
168
+ if (event.type === "message_start") {
169
+ this.currentTurnTools = [];
170
+ return;
114
171
  }
115
- pending.resolve(answers);
116
- this.pendingQuestions.delete(toolUseId);
117
- return true;
172
+ if (event.type === "content_block_start") {
173
+ this.handleContentBlockStart(event);
174
+ return;
175
+ }
176
+ if (event.type === "content_block_delta") {
177
+ const delta = event.delta;
178
+ if (delta?.type === "text_delta" && typeof delta.text === "string") {
179
+ enqueueStreamText(this.threadId, delta.text);
180
+ }
181
+ }
182
+ }
183
+ handleContentBlockStart(event) {
184
+ const block = event.content_block;
185
+ if (block?.type !== "tool_use") {
186
+ return;
187
+ }
188
+ const tool = {
189
+ toolUseId: block.id ?? "",
190
+ toolName: block.name ?? "",
191
+ startedAt: Date.now(),
192
+ };
193
+ if (block.input && typeof block.input === "object") {
194
+ tool.input = block.input;
195
+ }
196
+ this.currentTurnTools = [...this.currentTurnTools, tool];
197
+ enqueueStreamingTools(this.threadId, this.currentTurnTools);
198
+ }
199
+ async handleMessage(msg) {
200
+ if (msg.type === "stream_event") {
201
+ const event = msg.event;
202
+ if (event) {
203
+ this.handleStreamEvent(event);
204
+ }
205
+ return;
206
+ }
207
+ if (msg.type === "assistant") {
208
+ // includePartialMessages: true emits text-only partials before the final
209
+ // assistant event. Skip partials — the live preview already shows their
210
+ // content, and posting them would wipe streamingState mid-turn.
211
+ const message = msg.message;
212
+ const isFinal = typeof message?.stop_reason === "string" && message.stop_reason.length > 0;
213
+ if (!isFinal) {
214
+ return;
215
+ }
216
+ this.currentTurnTools = [];
217
+ await postEvent(this.threadId, msg, this.model);
218
+ }
219
+ // system / result messages are not persisted; result.cost_usd is captured above.
220
+ }
221
+ async preparePrompt(content, attachments, runToken) {
222
+ let prompt = content;
223
+ if (attachments && attachments.length > 0) {
224
+ const paths = await downloadAttachments(attachments);
225
+ prompt += buildAttachmentPromptSuffix(paths);
226
+ }
227
+ if (this.activeRun !== runToken) {
228
+ return null;
229
+ }
230
+ const routerResult = await selectModel(prompt);
231
+ if (this.activeRun !== runToken) {
232
+ return null;
233
+ }
234
+ return { prompt, model: routerResult.model, routerMessages: routerResult.messages };
235
+ }
236
+ async completeWithCancel(costUsd) {
237
+ // Don't fire signalComplete if we're being replaced by another stream — the
238
+ // new stream's signalComplete will run instead, and the cancelThread mutation
239
+ // already flipped the thread. (Convex completeThread is idempotent regardless.)
240
+ await flushStream(this.threadId);
241
+ clearStreamBuffer(this.threadId);
242
+ if (this.replacingStream) {
243
+ return;
244
+ }
245
+ await signalComplete(this.threadId, costUsd, true, ["Cancelled by user"], this.model);
246
+ }
247
+ async completeWithError(costUsd, error, runToken) {
248
+ this.activeAbort = null;
249
+ if (this.activeRun !== runToken) {
250
+ await this.completeWithCancel(costUsd);
251
+ return;
252
+ }
253
+ const message = error instanceof Error ? error.message : "Unknown error";
254
+ console.error("Agent session error:", message);
255
+ if (this.pendingQuestions.size > 0) {
256
+ console.warn(`[AgentSession] SDK errored with ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
257
+ }
258
+ await signalComplete(this.threadId, costUsd, true, [message], this.model);
118
259
  }
119
260
  }
120
- // ---------------------------------------------------------------------------
121
- // Session registry — shared across WS and async paths
122
- // ---------------------------------------------------------------------------
123
- const sessions = new Map();
124
261
  async function handleAskUserQuestion(input, toolUseID, ctx, signal) {
125
262
  console.warn(`[AskUserQuestion] blocking for ${toolUseID} on thread ${ctx.threadId}`);
126
- ctx.onInputRequest?.(toolUseID, input.questions);
127
- const posted = await postToConvex("/api/chat/input-request", {
128
- threadId: ctx.threadId,
129
- toolUseId: toolUseID,
130
- questions: input.questions,
131
- });
263
+ const posted = await postInputRequest(ctx.threadId, toolUseID, input.questions);
132
264
  if (!posted) {
133
265
  console.error(`[AskUserQuestion] failed to post input-request for ${toolUseID} — frontend may not show question UI`);
134
266
  }
135
267
  const answers = await new Promise((resolve, reject) => {
136
268
  if (signal?.aborted) {
137
- console.warn(`[AskUserQuestion] ${toolUseID} signal already aborted`);
138
269
  reject(new Error("AskUserQuestion aborted before awaiting answer"));
139
270
  return;
140
271
  }
141
- ctx.pendingQuestions.set(toolUseID, { resolve });
272
+ const timeoutHandle = setTimeout(() => {
273
+ ctx.pendingQuestions.delete(toolUseID);
274
+ reject(new Error(`AskUserQuestion timed out after ${ASK_USER_QUESTION_TIMEOUT_MS}ms`));
275
+ }, ASK_USER_QUESTION_TIMEOUT_MS);
276
+ ctx.pendingQuestions.set(toolUseID, {
277
+ resolve: (a) => {
278
+ clearTimeout(timeoutHandle);
279
+ resolve(a);
280
+ },
281
+ });
142
282
  signal?.addEventListener("abort", () => {
283
+ clearTimeout(timeoutHandle);
143
284
  ctx.pendingQuestions.delete(toolUseID);
144
- console.warn(`[AskUserQuestion] ${toolUseID} aborted by SDK signal`);
145
285
  reject(new Error("AskUserQuestion aborted"));
146
286
  }, { once: true });
147
287
  });
148
288
  console.warn(`[AskUserQuestion] ${toolUseID} answered, resuming`);
149
- void postToConvex("/api/chat/input-resolved", { threadId: ctx.threadId });
289
+ void postInputResolved(ctx.threadId);
150
290
  return {
151
291
  behavior: "allow",
152
292
  updatedInput: { questions: input.questions, answers },
153
293
  };
154
294
  }
155
- const toolHandlers = {
156
- AskUserQuestion: handleAskUserQuestion,
157
- };
158
- /**
159
- * Build SDK options with settingSources, cwd, and canUseTool dispatcher.
160
- * No permissionMode — the CLI routes every tool through canUseTool via
161
- * --permission-prompt-tool stdio. Our callback returns "allow" for
162
- * everything except AskUserQuestion (which awaits user answers).
163
- */
295
+ // ---------------------------------------------------------------------------
296
+ // SDK Options factory
297
+ // ---------------------------------------------------------------------------
164
298
  function buildSessionOptions(handlerCtx) {
165
299
  return {
166
300
  cwd: process.cwd(),
167
301
  settingSources: ["project"],
168
302
  includePartialMessages: true,
169
- canUseTool: async (toolName, input, opts) => {
170
- const handler = toolHandlers[toolName];
171
- if (handler) {
172
- return await handler(input, opts.toolUseID, handlerCtx, opts.signal);
303
+ canUseTool: (toolName, input, opts) => {
304
+ if (toolName === "AskUserQuestion") {
305
+ return handleAskUserQuestion(input, opts.toolUseID, handlerCtx, opts.signal);
173
306
  }
174
- return { behavior: "allow", updatedInput: input };
307
+ return Promise.resolve({ behavior: "allow", updatedInput: input });
175
308
  },
176
309
  };
177
310
  }
178
- /**
179
- * Get or create a session for a thread. All code paths (WS, async) MUST use
180
- * this function so every message on the same thread hits the same session.
181
- *
182
- * On cache miss, attempts to load a persisted sessionId from disk so that
183
- * conversation context survives bridge restarts (e.g. after sandbox pause/resume).
184
- */
311
+ // ---------------------------------------------------------------------------
312
+ // Session registry bounded by TTL eviction so a long-lived bridge can't leak.
313
+ // ---------------------------------------------------------------------------
314
+ const sessions = new Map();
315
+ setInterval(() => {
316
+ const cutoff = Date.now() - SESSION_IDLE_TTL_MS;
317
+ for (const [id, session] of sessions) {
318
+ if (session.lastUsedAt < cutoff) {
319
+ sessions.delete(id);
320
+ }
321
+ }
322
+ }, SESSION_SWEEP_INTERVAL_MS).unref();
323
+ export async function getOrCreateSession(threadId) {
324
+ const existing = sessions.get(threadId);
325
+ if (existing) {
326
+ existing.lastUsedAt = Date.now();
327
+ return existing;
328
+ }
329
+ const session = new AgentSession(threadId);
330
+ const savedSessionId = await loadSessionId(threadId);
331
+ if (savedSessionId) {
332
+ session.setSessionId(savedSessionId);
333
+ }
334
+ sessions.set(threadId, session);
335
+ return session;
336
+ }
337
+ export function abortSession(threadId) {
338
+ const session = sessions.get(threadId);
339
+ if (!session) {
340
+ return false;
341
+ }
342
+ session.abort();
343
+ return true;
344
+ }
185
345
  // ---------------------------------------------------------------------------
186
346
  // Slash commands — cached introspection of available skills
187
347
  // ---------------------------------------------------------------------------
@@ -212,25 +372,4 @@ export async function getSlashCommands() {
212
372
  pendingFetch = null;
213
373
  }
214
374
  }
215
- export function abortSession(threadId) {
216
- const session = sessions.get(threadId);
217
- if (!session) {
218
- return false;
219
- }
220
- session.abort();
221
- return true;
222
- }
223
- export async function getOrCreateSession(threadId) {
224
- const existing = sessions.get(threadId);
225
- if (existing) {
226
- return existing;
227
- }
228
- const session = new AgentSession(threadId);
229
- const savedSessionId = await loadSessionId(threadId);
230
- if (savedSessionId) {
231
- session.setSessionId(savedSessionId);
232
- }
233
- sessions.set(threadId, session);
234
- return session;
235
- }
236
375
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
1
  import type { AsyncMessageRequest } from "./types.ts";
2
+ /**
3
+ * Process a chat message dispatched via /message/async. The session writes
4
+ * stream deltas, persisted events, and completion directly to Convex; nothing
5
+ * needs to be returned because Convex is the source of truth for the UI.
6
+ */
2
7
  export declare function processAsync(request: AsyncMessageRequest): Promise<void>;
3
8
  //# sourceMappingURL=callback.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/hono/callback.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD9E"}
1
+ {"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/hono/callback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9E"}
@@ -1,55 +1,12 @@
1
1
  import { getOrCreateSession } from "./agent.js";
2
- import { clearPostedUuids, isAlreadyPosted, postToConvex } from "./convex.js";
2
+ /**
3
+ * Process a chat message dispatched via /message/async. The session writes
4
+ * stream deltas, persisted events, and completion directly to Convex; nothing
5
+ * needs to be returned because Convex is the source of truth for the UI.
6
+ */
3
7
  export async function processAsync(request) {
4
8
  const { prompt, threadId, attachments } = request;
5
- // Use the shared registry — same session across async and WS paths
6
9
  const session = await getOrCreateSession(threadId);
7
- let selectedModel;
8
- try {
9
- await session.sendAndStream(prompt, {
10
- onModelSelected: (m) => {
11
- selectedModel = m;
12
- },
13
- onRouterSample: (model, messages) => {
14
- void postToConvex("/api/chat/router-sample", {
15
- threadId,
16
- model,
17
- messages: JSON.stringify(messages),
18
- });
19
- },
20
- onMessage: (msg) => {
21
- if (msg.type !== "stream_event") {
22
- if (isAlreadyPosted(threadId, msg)) {
23
- return;
24
- }
25
- void postToConvex("/api/chat/event", {
26
- threadId,
27
- event: msg,
28
- ...(selectedModel && { model: selectedModel }),
29
- });
30
- }
31
- },
32
- onInputRequest: () => {
33
- // Convex notification is handled inside handleAskUserQuestion directly
34
- },
35
- onComplete: async (costUsd, isError, errors, model) => {
36
- clearPostedUuids(threadId);
37
- const ok = await postToConvex("/api/chat/complete", {
38
- threadId,
39
- isError,
40
- costUsd,
41
- ...(errors && { errors }),
42
- ...(model && { model }),
43
- });
44
- if (!ok) {
45
- console.error(`Thread ${threadId} completion callback failed — message may be stuck until cron cleanup`);
46
- }
47
- },
48
- }, attachments);
49
- }
50
- catch (err) {
51
- clearPostedUuids(threadId);
52
- throw err;
53
- }
10
+ await session.sendAndStream(prompt, attachments);
54
11
  }
55
12
  //# sourceMappingURL=callback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"callback.js","sourceRoot":"","sources":["../../src/hono/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG9E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,mEAAmE;IACnE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,aAAiC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,aAAa,CACzB,MAAM,EACN;YACE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrB,aAAa,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAClC,KAAK,YAAY,CAAC,yBAAyB,EAAE;oBAC3C,QAAQ;oBACR,KAAK;oBACL,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBACjB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAChC,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;wBACnC,OAAO;oBACT,CAAC;oBACD,KAAK,YAAY,CAAC,iBAAiB,EAAE;wBACnC,QAAQ;wBACR,KAAK,EAAE,GAAG;wBACV,GAAG,CAAC,aAAa,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;qBAC/C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,cAAc,EAAE,GAAG,EAAE;gBACnB,uEAAuE;YACzE,CAAC;YACD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;gBACpD,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,oBAAoB,EAAE;oBAClD,QAAQ;oBACR,OAAO;oBACP,OAAO;oBACP,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;oBACzB,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;iBACxB,CAAC,CAAC;gBACH,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,uEAAuE,CAAC,CAAC;gBAC3G,CAAC;YACH,CAAC;SACF,EACD,WAAW,CACZ,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"callback.js","sourceRoot":"","sources":["../../src/hono/callback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC"}
@@ -1,7 +1,30 @@
1
1
  import type { SDKMessage } from "@anthropic-ai/claude-agent-sdk";
2
- /** Clear tracked UUIDs for a thread (call on completion to avoid memory leaks). */
3
- export declare function clearPostedUuids(threadId: string): void;
4
- /** Skip posting if this event's UUID was already sent. Returns true if duplicate. */
5
- export declare function isAlreadyPosted(threadId: string, message: SDKMessage): boolean;
6
- export declare function postToConvex(path: string, body: Record<string, unknown>, retries?: number): Promise<boolean>;
2
+ interface StreamingTool {
3
+ toolUseId: string;
4
+ toolName: string;
5
+ input?: Record<string, unknown>;
6
+ startedAt: number;
7
+ }
8
+ export declare function enqueueStreamText(threadId: string, delta: string): void;
9
+ export declare function enqueueStreamingTools(threadId: string, tools: StreamingTool[]): void;
10
+ /** Force-drain the buffer to Convex and wait for the round-trip. */
11
+ export declare function flushStream(threadId: string): Promise<void>;
12
+ /** Drop any buffered preview without flushing — call after stream end. */
13
+ export declare function clearStreamBuffer(threadId: string): void;
14
+ /**
15
+ * Persist an assistant event. Drains any in-flight stream preview first so
16
+ * Convex sees [..stream..][event] in order; the mutation clears streamingState
17
+ * inline so the UI snaps from preview to persisted text without a flicker.
18
+ *
19
+ * Non-assistant events (system, result) are not persisted.
20
+ */
21
+ export declare function postEvent(threadId: string, message: SDKMessage, model?: string): Promise<boolean>;
22
+ export declare function postRouterSample(threadId: string, model: string, messages: Array<{
23
+ role: string;
24
+ content: string;
25
+ }>): Promise<void>;
26
+ export declare function postInputRequest(threadId: string, toolUseId: string, questions: unknown): Promise<boolean>;
27
+ export declare function postInputResolved(threadId: string): Promise<boolean>;
28
+ export declare function signalComplete(threadId: string, costUsd: number, isError: boolean, errors?: string[], model?: string): Promise<boolean>;
29
+ export {};
7
30
  //# sourceMappingURL=convex.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../src/hono/convex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAqCjE,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAG9E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B7G"}
1
+ {"version":3,"file":"convex.d.ts","sourceRoot":"","sources":["../../src/hono/convex.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AA0HjE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAiED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAWvE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAIpF;AAED,oEAAoE;AACpE,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMxD;AAMD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUvG;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1G;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE;AAOD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAkBlB"}