@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.
- package/README.md +72 -87
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +1 -1
- package/dist/hono/agent.d.ts +21 -18
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +254 -115
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/callback.d.ts +5 -0
- package/dist/hono/callback.d.ts.map +1 -1
- package/dist/hono/callback.js +6 -49
- package/dist/hono/callback.js.map +1 -1
- package/dist/hono/convex.d.ts +28 -5
- package/dist/hono/convex.d.ts.map +1 -1
- package/dist/hono/convex.js +234 -52
- package/dist/hono/convex.js.map +1 -1
- package/dist/hono/convex.test.d.ts +2 -0
- package/dist/hono/convex.test.d.ts.map +1 -0
- package/dist/hono/convex.test.js +90 -0
- package/dist/hono/convex.test.js.map +1 -0
- package/dist/hono/server.d.ts.map +1 -1
- package/dist/hono/server.js +7 -109
- package/dist/hono/server.js.map +1 -1
- package/dist/hono/types.d.ts +2 -17
- package/dist/hono/types.d.ts.map +1 -1
- package/package.json +3 -5
package/dist/hono/agent.js
CHANGED
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
2
2
|
import { buildAttachmentPromptSuffix, downloadAttachments } from "./attachments.js";
|
|
3
|
-
import {
|
|
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
|
-
//
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
if (
|
|
40
|
-
|
|
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
|
-
|
|
72
|
+
pending.resolve(answers);
|
|
73
|
+
this.pendingQuestions.delete(toolUseId);
|
|
74
|
+
return true;
|
|
55
75
|
}
|
|
56
|
-
|
|
57
|
-
this.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
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.
|
|
72
|
-
this.handlerCtx.onInputRequest = callbacks.onInputRequest;
|
|
108
|
+
this.model = undefined;
|
|
73
109
|
try {
|
|
74
|
-
const prepared = await this.preparePrompt(content, attachments,
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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.
|
|
98
|
-
|
|
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
|
-
|
|
161
|
+
await signalComplete(this.threadId, costUsd, false, undefined, this.model);
|
|
105
162
|
}
|
|
106
163
|
catch (error) {
|
|
107
|
-
this.
|
|
164
|
+
await this.completeWithError(costUsd, error, runToken);
|
|
108
165
|
}
|
|
109
166
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return
|
|
167
|
+
handleStreamEvent(event) {
|
|
168
|
+
if (event.type === "message_start") {
|
|
169
|
+
this.currentTurnTools = [];
|
|
170
|
+
return;
|
|
114
171
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
289
|
+
void postInputResolved(ctx.threadId);
|
|
150
290
|
return {
|
|
151
291
|
behavior: "allow",
|
|
152
292
|
updatedInput: { questions: input.questions, answers },
|
|
153
293
|
};
|
|
154
294
|
}
|
|
155
|
-
|
|
156
|
-
|
|
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:
|
|
170
|
-
|
|
171
|
-
|
|
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
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
package/dist/hono/agent.js.map
CHANGED
|
@@ -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":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGlE,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,yEAAyE;AACzE,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACtC,8EAA8E;AAC9E,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,4EAA4E;AAC5E,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAChD,2CAA2C;AAC3C,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACjD;;+EAE+E;AAC/E,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAsBpD,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E,MAAM,YAAY;IACP,QAAQ,CAAS;IAClB,SAAS,CAAqB;IAC9B,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,UAAU,CAAqB;IAC/B,OAAO,CAAU;IAEzB;;0EAEsE;IAC9D,SAAS,GAAkB,IAAI,CAAC;IAChC,WAAW,GAA2B,IAAI,CAAC;IAC3C,gBAAgB,GAAyB,IAAI,CAAC;IAC9C,eAAe,GAAG,KAAK,CAAC;IACxB,gBAAgB,GAAoB,EAAE,CAAC;IACvC,KAAK,CAAqB;IAClC,UAAU,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhC,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxE,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,kFAAkF;IAClF,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,kEAAkE;QAClE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,uFAAuF;YACvF,IAAI,CAAC;gBACH,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,SAAiB,EAAE,OAA+B;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,WAA8B;QACjE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,IAAI,CAAC,gBAAgB;oBACrB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACxB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAC5F;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CACX,0DAA0D,IAAI,CAAC,QAAQ,mBAAmB,EAC1F,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,WAA8B;QACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC5B,KAAK,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE9E,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,IAAI,GAAY;gBACpB,GAAG,IAAI,CAAC,OAAO;gBACf,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,eAAe,EAAE,IAAI,CAAC,WAAW;gBACjC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;aAClD,CAAC;YAEF,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5D,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;gBAChC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,eAAe,EAAE,CAAC;oBAC/C,OAAO,CAAC,KAAK,CACX,6CAA6C,eAAe,wBAAwB,IAAI,CAAC,QAAQ,EAAE,CACpG,CAAC;oBACF,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACxB,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAEnB,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;oBAC1B,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;oBAE9B,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAChC,MAAM;oBACR,CAAC;oBAED,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;wBACnB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;wBAChC,KAAK,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;oBACpD,CAAC;oBAED,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAE9B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC1B,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAExB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CACV,oCAAoC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,QAAQ,EAAE,CAC9H,CAAC;YACJ,CAAC;YACD,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAA8B;QACtD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACzC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAA4C,CAAC;YACjE,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,KAA8B;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,aAAoD,CAAC;QACzE,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAkB;YAC1B,SAAS,EAAG,KAAK,CAAC,EAAa,IAAI,EAAE;YACrC,QAAQ,EAAG,KAAK,CAAC,IAAe,IAAI,EAAE;YACtC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAgC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACzD,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAe;QACzC,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAChC,MAAM,KAAK,GAAI,GAA2C,CAAC,KAAK,CAAC;YACjE,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7B,yEAAyE;YACzE,wEAAwE;YACxE,gEAAgE;YAChE,MAAM,OAAO,GAAI,GAAqD,CAAC,OAAO,CAAC;YAC/E,MAAM,OAAO,GAAG,OAAO,OAAO,EAAE,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3F,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,iFAAiF;IACnF,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,OAAe,EACf,WAAyC,EACzC,QAAgB;QAEhB,IAAI,MAAM,GAAG,OAAO,CAAC;QACrB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACrD,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtF,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,OAAe;QAC9C,4EAA4E;QAC5E,8EAA8E;QAC9E,gFAAgF;QAChF,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxF,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,KAAc,EAAE,QAAgB;QAC/E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,mCAAmC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,QAAQ,EAAE,CAC7H,CAAC;QACJ,CAAC;QACD,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;CACF;AAQD,KAAK,UAAU,qBAAqB,CAClC,KAA8B,EAC9B,SAAiB,EACjB,GAAuB,EACvB,MAAoB;IAEpB,OAAO,CAAC,IAAI,CAAC,kCAAkC,SAAS,cAAc,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEtF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,sDAAsD,SAAS,sCAAsC,CACtG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5E,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,4BAA4B,IAAI,CAAC,CAAC,CAAC;QACzF,CAAC,EAAE,4BAA4B,CAAC,CAAC;QACjC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE;YAClC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;SACF,CAAC,CAAC;QACH,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;YACH,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC/C,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,qBAAqB,SAAS,qBAAqB,CAAC,CAAC;IAClE,KAAK,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAErC,OAAO;QACL,QAAQ,EAAE,OAAgB;QAC1B,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE;KACtD,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,mBAAmB,CAAC,UAA8B;IACzD,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,cAAc,EAAE,CAAC,SAAS,CAAC;QAC3B,sBAAsB,EAAE,IAAI;QAC5B,UAAU,EAAE,CACV,QAAgB,EAChB,KAA8B,EAC9B,IAAgD,EAChD,EAAE;YACF,IAAI,QAAQ,KAAK,iBAAiB,EAAE,CAAC;gBACnC,OAAO,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEjD,WAAW,CAAC,GAAG,EAAE;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC;IAChD,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC,EAAE,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,IAAI,cAAc,GAA0B,IAAI,CAAC;AACjD,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,IAAI,YAAY,GAAmC,IAAI,CAAC;AACxD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,YAAY,EAAE,CAAC;QAC3D,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QACzB,MAAM,IAAI,GAAY,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAC7C,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,YAAY,CAAC;QACpC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/dist/hono/callback.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/hono/callback.js
CHANGED
|
@@ -1,55 +1,12 @@
|
|
|
1
1
|
import { getOrCreateSession } from "./agent.js";
|
|
2
|
-
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/hono/convex.d.ts
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
import type { SDKMessage } from "@anthropic-ai/claude-agent-sdk";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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":"
|
|
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"}
|