@koda-sl/baker-bridge 0.36.0-dev.7ebf7748-dev.7ebf7748 → 0.37.0-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,21 @@
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
+ // ---------------------------------------------------------------------------
18
+ // AgentSession — one per thread, persists across messages so SDK resume works.
12
19
  // ---------------------------------------------------------------------------
13
20
  class AgentSession {
14
21
  threadId;
@@ -16,65 +23,93 @@ class AgentSession {
16
23
  pendingQuestions = new Map();
17
24
  handlerCtx;
18
25
  options;
26
+ /** Identity token for the currently-running stream. abort() nulls this; if a
27
+ * later check sees a different value, the run knows it was abandoned. This
28
+ * replaces a global `aborted` flag whose reset-on-entry was racy. */
29
+ activeRun = null;
19
30
  activeAbort = null;
20
- aborted = false;
31
+ streamingPromise = null;
32
+ replacingStream = false;
33
+ currentTurnTools = [];
34
+ model;
35
+ lastUsedAt = Date.now();
21
36
  constructor(threadId) {
22
37
  this.threadId = threadId;
23
- this.handlerCtx = { threadId, pendingQuestions: this.pendingQuestions, onInputRequest: null };
38
+ this.handlerCtx = { threadId, pendingQuestions: this.pendingQuestions };
24
39
  this.options = buildSessionOptions(this.handlerCtx);
25
40
  }
41
+ /** Cancel any in-flight run. The next status check inside runStream will trip. */
26
42
  abort() {
27
- this.aborted = true;
43
+ this.activeRun = null;
28
44
  if (this.activeAbort) {
29
45
  this.activeAbort.abort();
30
46
  this.activeAbort = null;
31
47
  }
48
+ // Reject any pending questions so handleAskUserQuestion unblocks.
49
+ for (const [id, p] of this.pendingQuestions) {
50
+ this.pendingQuestions.delete(id);
51
+ // Fire-and-forget: the rejection will be caught by the SDK or AgentSession error path.
52
+ try {
53
+ p.resolve({});
54
+ }
55
+ catch {
56
+ // ignore
57
+ }
58
+ }
32
59
  }
33
- /** Restore a previously persisted session ID (e.g. loaded from disk after restart). */
34
60
  setSessionId(id) {
35
61
  this.sessionId = id;
36
62
  }
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;
63
+ resolveQuestion(toolUseId, answers) {
64
+ const pending = this.pendingQuestions.get(toolUseId);
65
+ if (!pending) {
66
+ return false;
53
67
  }
54
- return { prompt, model: routerResult.model };
68
+ pending.resolve(answers);
69
+ this.pendingQuestions.delete(toolUseId);
70
+ return true;
55
71
  }
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;
72
+ async sendAndStream(content, attachments) {
73
+ if (this.streamingPromise) {
74
+ this.replacingStream = true;
75
+ this.abort();
76
+ try {
77
+ await Promise.race([
78
+ this.streamingPromise,
79
+ new Promise((_, reject) => setTimeout(() => reject(new Error("previous stream timed out")), REPLACE_STREAM_TIMEOUT_MS)),
80
+ ]);
81
+ }
82
+ catch (err) {
83
+ console.error(`[AgentSession] previous stream did not drain on thread ${this.threadId} — forcing reset:`, err instanceof Error ? err.message : err);
84
+ }
85
+ finally {
86
+ this.streamingPromise = null;
87
+ this.replacingStream = false;
88
+ }
61
89
  }
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}`);
90
+ this.streamingPromise = this.runStream(content, attachments);
91
+ try {
92
+ await this.streamingPromise;
93
+ }
94
+ finally {
95
+ this.streamingPromise = null;
66
96
  }
67
- callbacks.onComplete(costUsd, true, [message], model);
68
97
  }
69
- async sendAndStream(content, callbacks, attachments) {
98
+ async runStream(content, attachments) {
99
+ const runToken = Symbol("agent-run");
100
+ this.activeRun = runToken;
101
+ this.lastUsedAt = Date.now();
102
+ this.currentTurnTools = [];
70
103
  let costUsd = 0;
71
- this.aborted = false;
72
- this.handlerCtx.onInputRequest = callbacks.onInputRequest;
104
+ this.model = undefined;
73
105
  try {
74
- const prepared = await this.preparePrompt(content, attachments, callbacks);
106
+ const prepared = await this.preparePrompt(content, attachments, runToken);
75
107
  if (!prepared) {
108
+ await this.completeWithCancel(0);
76
109
  return;
77
110
  }
111
+ this.model = prepared.model;
112
+ void postRouterSample(this.threadId, prepared.model, prepared.routerMessages);
78
113
  this.activeAbort = new AbortController();
79
114
  const opts = {
80
115
  ...this.options,
@@ -83,105 +118,210 @@ class AgentSession {
83
118
  ...(this.sessionId && { resume: this.sessionId }),
84
119
  };
85
120
  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);
121
+ let lastEventAt = Date.now();
122
+ const watchdog = setInterval(() => {
123
+ if (Date.now() - lastEventAt > SDK_WATCHDOG_MS) {
124
+ console.error(`[AgentSession] watchdog: no SDK event for ${SDK_WATCHDOG_MS}ms — aborting thread ${this.threadId}`);
125
+ clearInterval(watchdog);
126
+ this.activeAbort?.abort();
90
127
  }
91
- callbacks.onMessage(msg);
92
- if (msg.type === "result") {
93
- costUsd = msg.total_cost_usd;
128
+ }, 30_000).unref();
129
+ try {
130
+ for await (const msg of q) {
131
+ lastEventAt = Date.now();
132
+ this.lastUsedAt = lastEventAt;
133
+ if (this.activeRun !== runToken) {
134
+ break;
135
+ }
136
+ if (msg.session_id) {
137
+ this.sessionId = msg.session_id;
138
+ void saveSessionId(this.threadId, msg.session_id);
139
+ }
140
+ await this.handleMessage(msg);
141
+ if (msg.type === "result") {
142
+ costUsd = msg.total_cost_usd;
143
+ }
94
144
  }
95
145
  }
146
+ finally {
147
+ clearInterval(watchdog);
148
+ }
96
149
  this.activeAbort = null;
97
- if (this.aborted) {
98
- callbacks.onComplete(costUsd, true, ["Cancelled by user"], prepared.model);
150
+ if (this.activeRun !== runToken) {
151
+ await this.completeWithCancel(costUsd);
99
152
  return;
100
153
  }
101
154
  if (this.pendingQuestions.size > 0) {
102
155
  console.warn(`[AgentSession] SDK completed but ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
103
156
  }
104
- callbacks.onComplete(costUsd, false, undefined, prepared.model);
157
+ await signalComplete(this.threadId, costUsd, false, undefined, this.model);
105
158
  }
106
159
  catch (error) {
107
- this.handleStreamError(costUsd, error, undefined, callbacks);
160
+ await this.completeWithError(costUsd, error, runToken);
108
161
  }
109
162
  }
110
- resolveQuestion(toolUseId, answers) {
111
- const pending = this.pendingQuestions.get(toolUseId);
112
- if (!pending) {
113
- return false;
163
+ handleStreamEvent(event) {
164
+ if (event.type === "message_start") {
165
+ this.currentTurnTools = [];
166
+ return;
114
167
  }
115
- pending.resolve(answers);
116
- this.pendingQuestions.delete(toolUseId);
117
- return true;
168
+ if (event.type === "content_block_start") {
169
+ this.handleContentBlockStart(event);
170
+ return;
171
+ }
172
+ if (event.type === "content_block_delta") {
173
+ const delta = event.delta;
174
+ if (delta?.type === "text_delta" && typeof delta.text === "string") {
175
+ enqueueStreamText(this.threadId, delta.text);
176
+ }
177
+ }
178
+ }
179
+ handleContentBlockStart(event) {
180
+ const block = event.content_block;
181
+ if (block?.type !== "tool_use") {
182
+ return;
183
+ }
184
+ const tool = {
185
+ toolUseId: block.id ?? "",
186
+ toolName: block.name ?? "",
187
+ startedAt: Date.now(),
188
+ };
189
+ if (block.input && typeof block.input === "object") {
190
+ tool.input = block.input;
191
+ }
192
+ this.currentTurnTools = [...this.currentTurnTools, tool];
193
+ enqueueStreamingTools(this.threadId, this.currentTurnTools);
194
+ }
195
+ async handleMessage(msg) {
196
+ if (msg.type === "stream_event") {
197
+ const event = msg.event;
198
+ if (event) {
199
+ this.handleStreamEvent(event);
200
+ }
201
+ return;
202
+ }
203
+ if (msg.type === "assistant") {
204
+ // Persisted message — the mutation clears streamingState, so the UI snaps
205
+ // from preview to persisted text in a single Convex update.
206
+ this.currentTurnTools = [];
207
+ await postEvent(this.threadId, msg, this.model);
208
+ }
209
+ // system / result messages are not persisted; result.cost_usd is captured above.
210
+ }
211
+ async preparePrompt(content, attachments, runToken) {
212
+ let prompt = content;
213
+ if (attachments && attachments.length > 0) {
214
+ const paths = await downloadAttachments(attachments);
215
+ prompt += buildAttachmentPromptSuffix(paths);
216
+ }
217
+ if (this.activeRun !== runToken) {
218
+ return null;
219
+ }
220
+ const routerResult = await selectModel(prompt);
221
+ if (this.activeRun !== runToken) {
222
+ return null;
223
+ }
224
+ return { prompt, model: routerResult.model, routerMessages: routerResult.messages };
225
+ }
226
+ async completeWithCancel(costUsd) {
227
+ // Don't fire signalComplete if we're being replaced by another stream — the
228
+ // new stream's signalComplete will run instead, and the cancelThread mutation
229
+ // already flipped the thread. (Convex completeThread is idempotent regardless.)
230
+ await flushStream(this.threadId);
231
+ clearStreamBuffer(this.threadId);
232
+ if (this.replacingStream) {
233
+ return;
234
+ }
235
+ await signalComplete(this.threadId, costUsd, true, ["Cancelled by user"], this.model);
236
+ }
237
+ async completeWithError(costUsd, error, runToken) {
238
+ this.activeAbort = null;
239
+ if (this.activeRun !== runToken) {
240
+ await this.completeWithCancel(costUsd);
241
+ return;
242
+ }
243
+ const message = error instanceof Error ? error.message : "Unknown error";
244
+ console.error("Agent session error:", message);
245
+ if (this.pendingQuestions.size > 0) {
246
+ console.warn(`[AgentSession] SDK errored with ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
247
+ }
248
+ await signalComplete(this.threadId, costUsd, true, [message], this.model);
118
249
  }
119
250
  }
120
- // ---------------------------------------------------------------------------
121
- // Session registry — shared across WS and async paths
122
- // ---------------------------------------------------------------------------
123
- const sessions = new Map();
124
251
  async function handleAskUserQuestion(input, toolUseID, ctx, signal) {
125
252
  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
- });
253
+ const posted = await postInputRequest(ctx.threadId, toolUseID, input.questions);
132
254
  if (!posted) {
133
255
  console.error(`[AskUserQuestion] failed to post input-request for ${toolUseID} — frontend may not show question UI`);
134
256
  }
135
257
  const answers = await new Promise((resolve, reject) => {
136
258
  if (signal?.aborted) {
137
- console.warn(`[AskUserQuestion] ${toolUseID} signal already aborted`);
138
259
  reject(new Error("AskUserQuestion aborted before awaiting answer"));
139
260
  return;
140
261
  }
141
262
  ctx.pendingQuestions.set(toolUseID, { resolve });
142
263
  signal?.addEventListener("abort", () => {
143
264
  ctx.pendingQuestions.delete(toolUseID);
144
- console.warn(`[AskUserQuestion] ${toolUseID} aborted by SDK signal`);
145
265
  reject(new Error("AskUserQuestion aborted"));
146
266
  }, { once: true });
147
267
  });
148
268
  console.warn(`[AskUserQuestion] ${toolUseID} answered, resuming`);
149
- void postToConvex("/api/chat/input-resolved", { threadId: ctx.threadId });
269
+ void postInputResolved(ctx.threadId);
150
270
  return {
151
271
  behavior: "allow",
152
272
  updatedInput: { questions: input.questions, answers },
153
273
  };
154
274
  }
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
- */
275
+ // ---------------------------------------------------------------------------
276
+ // SDK Options factory
277
+ // ---------------------------------------------------------------------------
164
278
  function buildSessionOptions(handlerCtx) {
165
279
  return {
166
280
  cwd: process.cwd(),
167
281
  settingSources: ["project"],
168
282
  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);
283
+ canUseTool: (toolName, input, opts) => {
284
+ if (toolName === "AskUserQuestion") {
285
+ return handleAskUserQuestion(input, opts.toolUseID, handlerCtx, opts.signal);
173
286
  }
174
- return { behavior: "allow", updatedInput: input };
287
+ return Promise.resolve({ behavior: "allow", updatedInput: input });
175
288
  },
176
289
  };
177
290
  }
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
- */
291
+ // ---------------------------------------------------------------------------
292
+ // Session registry bounded by TTL eviction so a long-lived bridge can't leak.
293
+ // ---------------------------------------------------------------------------
294
+ const sessions = new Map();
295
+ setInterval(() => {
296
+ const cutoff = Date.now() - SESSION_IDLE_TTL_MS;
297
+ for (const [id, session] of sessions) {
298
+ if (session.lastUsedAt < cutoff) {
299
+ sessions.delete(id);
300
+ }
301
+ }
302
+ }, SESSION_SWEEP_INTERVAL_MS).unref();
303
+ export async function getOrCreateSession(threadId) {
304
+ const existing = sessions.get(threadId);
305
+ if (existing) {
306
+ existing.lastUsedAt = Date.now();
307
+ return existing;
308
+ }
309
+ const session = new AgentSession(threadId);
310
+ const savedSessionId = await loadSessionId(threadId);
311
+ if (savedSessionId) {
312
+ session.setSessionId(savedSessionId);
313
+ }
314
+ sessions.set(threadId, session);
315
+ return session;
316
+ }
317
+ export function abortSession(threadId) {
318
+ const session = sessions.get(threadId);
319
+ if (!session) {
320
+ return false;
321
+ }
322
+ session.abort();
323
+ return true;
324
+ }
185
325
  // ---------------------------------------------------------------------------
186
326
  // Slash commands — cached introspection of available skills
187
327
  // ---------------------------------------------------------------------------
@@ -212,25 +352,4 @@ export async function getSlashCommands() {
212
352
  pendingFetch = null;
213
353
  }
214
354
  }
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
355
  //# 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;AAED,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,CAUlB"}