@koda-sl/baker-bridge 0.30.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hono/agent.d.ts +6 -1
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +7 -3
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/callback.d.ts.map +1 -1
- package/dist/hono/callback.js +18 -2
- package/dist/hono/callback.js.map +1 -1
- package/dist/hono/model-router.d.ts +11 -1
- package/dist/hono/model-router.d.ts.map +1 -1
- package/dist/hono/model-router.js +34 -11
- package/dist/hono/model-router.js.map +1 -1
- package/dist/hono/server.d.ts.map +1 -1
- package/dist/hono/server.js +18 -6
- package/dist/hono/server.js.map +1 -1
- package/package.json +2 -2
package/dist/hono/agent.d.ts
CHANGED
|
@@ -3,7 +3,12 @@ import type { ChatAttachment } from "./types.ts";
|
|
|
3
3
|
interface StreamCallbacks {
|
|
4
4
|
onMessage: (msg: SDKMessage) => void;
|
|
5
5
|
onInputRequest: (toolUseId: string, questions: unknown) => void;
|
|
6
|
-
onComplete: (costUsd: number, isError: boolean, errors?: string[]) => void;
|
|
6
|
+
onComplete: (costUsd: number, isError: boolean, errors?: string[], model?: string) => void;
|
|
7
|
+
onModelSelected?: (model: string) => void;
|
|
8
|
+
onRouterSample?: (model: string, messages: Array<{
|
|
9
|
+
role: string;
|
|
10
|
+
content: string;
|
|
11
|
+
}>) => void;
|
|
7
12
|
}
|
|
8
13
|
declare class AgentSession {
|
|
9
14
|
readonly threadId: string;
|
package/dist/hono/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAK1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcjD,UAAU,eAAe;IACvB,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAK1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcjD,UAAU,eAAe;IACvB,SAAS,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3F,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC9F;AAUD,cAAM,YAAY;IAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,OAAO,CAAU;gBAEb,QAAQ,EAAE,MAAM;IAM5B,uFAAuF;IACvF,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIxB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C/G,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;CAS7E;AAqED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAahF"}
|
package/dist/hono/agent.js
CHANGED
|
@@ -26,6 +26,7 @@ class AgentSession {
|
|
|
26
26
|
}
|
|
27
27
|
async sendAndStream(content, callbacks, attachments) {
|
|
28
28
|
let costUsd = 0;
|
|
29
|
+
let model;
|
|
29
30
|
this.handlerCtx.onInputRequest = callbacks.onInputRequest;
|
|
30
31
|
try {
|
|
31
32
|
// Download attachments to local filesystem and append paths to prompt
|
|
@@ -34,7 +35,10 @@ class AgentSession {
|
|
|
34
35
|
const paths = await downloadAttachments(attachments);
|
|
35
36
|
prompt += buildAttachmentPromptSuffix(paths);
|
|
36
37
|
}
|
|
37
|
-
const
|
|
38
|
+
const routerResult = await selectModel(prompt);
|
|
39
|
+
model = routerResult.model;
|
|
40
|
+
callbacks.onModelSelected?.(model);
|
|
41
|
+
callbacks.onRouterSample?.(model, routerResult.messages);
|
|
38
42
|
const opts = { ...this.options, model, ...(this.sessionId && { resume: this.sessionId }) };
|
|
39
43
|
const q = query({ prompt, options: opts });
|
|
40
44
|
for await (const msg of q) {
|
|
@@ -48,12 +52,12 @@ class AgentSession {
|
|
|
48
52
|
costUsd = msg.total_cost_usd;
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
|
-
callbacks.onComplete(costUsd, false);
|
|
55
|
+
callbacks.onComplete(costUsd, false, undefined, model);
|
|
52
56
|
}
|
|
53
57
|
catch (error) {
|
|
54
58
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
55
59
|
console.error("Agent session error:", message);
|
|
56
|
-
callbacks.onComplete(costUsd, true, [message]);
|
|
60
|
+
callbacks.onComplete(costUsd, true, [message], model);
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
resolveQuestion(toolUseId, answers) {
|
package/dist/hono/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/hono/callback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../src/hono/callback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C9E"}
|
package/dist/hono/callback.js
CHANGED
|
@@ -5,21 +5,37 @@ export async function processAsync(request) {
|
|
|
5
5
|
const { prompt, threadId, attachments } = request;
|
|
6
6
|
// Use the shared registry — same session across async and WS paths
|
|
7
7
|
const session = await getOrCreateSession(threadId);
|
|
8
|
+
let selectedModel;
|
|
8
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
|
+
},
|
|
9
20
|
onMessage: (msg) => {
|
|
10
21
|
if (msg.type !== "stream_event") {
|
|
11
|
-
void postToConvex("/api/chat/event", {
|
|
22
|
+
void postToConvex("/api/chat/event", {
|
|
23
|
+
threadId,
|
|
24
|
+
event: msg,
|
|
25
|
+
...(selectedModel && { model: selectedModel }),
|
|
26
|
+
});
|
|
12
27
|
}
|
|
13
28
|
},
|
|
14
29
|
onInputRequest: () => {
|
|
15
30
|
// Input requests are posted to Convex inside canUseTool (AgentSession)
|
|
16
31
|
},
|
|
17
|
-
onComplete: async (costUsd, isError, errors) => {
|
|
32
|
+
onComplete: async (costUsd, isError, errors, model) => {
|
|
18
33
|
const ok = await postToConvex("/api/chat/complete", {
|
|
19
34
|
threadId,
|
|
20
35
|
isError,
|
|
21
36
|
costUsd,
|
|
22
37
|
...(errors && { errors }),
|
|
38
|
+
...(model && { model }),
|
|
23
39
|
});
|
|
24
40
|
if (!ok) {
|
|
25
41
|
console.error(`Thread ${threadId} completion callback failed — message may be stuck until cron cleanup`);
|
|
@@ -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,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,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;
|
|
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,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,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,MAAM,OAAO,CAAC,aAAa,CACzB,MAAM,EACN;QACE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAClC,KAAK,YAAY,CAAC,yBAAyB,EAAE;gBAC3C,QAAQ;gBACR,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;QACD,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAChC,KAAK,YAAY,CAAC,iBAAiB,EAAE;oBACnC,QAAQ;oBACR,KAAK,EAAE,GAAG;oBACV,GAAG,CAAC,aAAa,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;iBAC/C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACnB,uEAAuE;QACzE,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;YACpD,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,oBAAoB,EAAE;gBAClD,QAAQ;gBACR,OAAO;gBACP,OAAO;gBACP,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;gBACzB,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,KAAK,CAAC,UAAU,QAAQ,uEAAuE,CAAC,CAAC;YAC3G,CAAC;QACH,CAAC;KACF,EACD,WAAW,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
interface SelectModelResult {
|
|
2
|
+
model: string;
|
|
3
|
+
messages: Array<{
|
|
4
|
+
role: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}>;
|
|
7
|
+
}
|
|
1
8
|
/**
|
|
2
9
|
* Use NotDiamond to select the optimal Claude model for a given prompt.
|
|
3
10
|
* Uses `?type=openrouter` so models are sent and returned in OpenRouter format,
|
|
4
11
|
* eliminating the need for ID mapping.
|
|
5
12
|
* Falls back to Sonnet if NOTDIAMOND_API_KEY is not set or the API call fails.
|
|
13
|
+
* Returns both the selected model and the messages array sent to Not Diamond
|
|
14
|
+
* (for router training data collection).
|
|
6
15
|
*/
|
|
7
|
-
export declare function selectModel(prompt: string): Promise<
|
|
16
|
+
export declare function selectModel(prompt: string): Promise<SelectModelResult>;
|
|
17
|
+
export {};
|
|
8
18
|
//# sourceMappingURL=model-router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-router.d.ts","sourceRoot":"","sources":["../../src/hono/model-router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-router.d.ts","sourceRoot":"","sources":["../../src/hono/model-router.ts"],"names":[],"mappings":"AA8CA,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgD5E"}
|
|
@@ -11,6 +11,24 @@ const CANDIDATE_MODELS = [
|
|
|
11
11
|
{ model: "anthropic/claude-opus-4.6" },
|
|
12
12
|
];
|
|
13
13
|
const DEFAULT_MODEL = "anthropic/claude-sonnet-4.6";
|
|
14
|
+
/**
|
|
15
|
+
* Map a model ID returned by Not Diamond back to one of our canonical candidate IDs.
|
|
16
|
+
* The API may return versioned IDs like "anthropic/claude-4.6-sonnet-20260217"
|
|
17
|
+
* instead of the short form "anthropic/claude-sonnet-4.6" we sent.
|
|
18
|
+
*/
|
|
19
|
+
function normalizeModel(model) {
|
|
20
|
+
const lower = model.toLowerCase();
|
|
21
|
+
if (lower.includes("opus")) {
|
|
22
|
+
return "anthropic/claude-opus-4.6";
|
|
23
|
+
}
|
|
24
|
+
if (lower.includes("haiku")) {
|
|
25
|
+
return "anthropic/claude-haiku-4.5";
|
|
26
|
+
}
|
|
27
|
+
if (lower.includes("sonnet")) {
|
|
28
|
+
return "anthropic/claude-sonnet-4.6";
|
|
29
|
+
}
|
|
30
|
+
return model;
|
|
31
|
+
}
|
|
14
32
|
/** Lazily built repo context — generated once on first call. */
|
|
15
33
|
let repoContextPromise = null;
|
|
16
34
|
function getRepoContext() {
|
|
@@ -24,14 +42,20 @@ function getRepoContext() {
|
|
|
24
42
|
* Uses `?type=openrouter` so models are sent and returned in OpenRouter format,
|
|
25
43
|
* eliminating the need for ID mapping.
|
|
26
44
|
* Falls back to Sonnet if NOTDIAMOND_API_KEY is not set or the API call fails.
|
|
45
|
+
* Returns both the selected model and the messages array sent to Not Diamond
|
|
46
|
+
* (for router training data collection).
|
|
27
47
|
*/
|
|
28
48
|
export async function selectModel(prompt) {
|
|
29
49
|
const apiKey = env.NOTDIAMOND_API_KEY;
|
|
50
|
+
const systemPrompt = await getRepoContext();
|
|
51
|
+
const messages = [
|
|
52
|
+
{ role: "system", content: systemPrompt },
|
|
53
|
+
{ role: "user", content: prompt },
|
|
54
|
+
];
|
|
30
55
|
if (!apiKey) {
|
|
31
|
-
return DEFAULT_MODEL;
|
|
56
|
+
return { model: DEFAULT_MODEL, messages };
|
|
32
57
|
}
|
|
33
58
|
try {
|
|
34
|
-
const systemPrompt = await getRepoContext();
|
|
35
59
|
const response = await fetch(`${NOTDIAMOND_API_URL}?type=openrouter`, {
|
|
36
60
|
method: "POST",
|
|
37
61
|
headers: {
|
|
@@ -39,29 +63,28 @@ export async function selectModel(prompt) {
|
|
|
39
63
|
"Content-Type": "application/json",
|
|
40
64
|
},
|
|
41
65
|
body: JSON.stringify({
|
|
42
|
-
messages
|
|
43
|
-
{ role: "system", content: systemPrompt },
|
|
44
|
-
{ role: "user", content: prompt },
|
|
45
|
-
],
|
|
66
|
+
messages,
|
|
46
67
|
llm_providers: CANDIDATE_MODELS,
|
|
68
|
+
tradeoff: "latency",
|
|
47
69
|
}),
|
|
48
70
|
});
|
|
49
71
|
if (!response.ok) {
|
|
50
72
|
console.error(`[model-router] API returned ${response.status}`);
|
|
51
|
-
return DEFAULT_MODEL;
|
|
73
|
+
return { model: DEFAULT_MODEL, messages };
|
|
52
74
|
}
|
|
53
75
|
const result = (await response.json());
|
|
54
76
|
const selectedModel = result.providers[0]?.model;
|
|
55
77
|
if (!selectedModel) {
|
|
56
78
|
console.warn("[model-router] No model returned, falling back to sonnet");
|
|
57
|
-
return DEFAULT_MODEL;
|
|
79
|
+
return { model: DEFAULT_MODEL, messages };
|
|
58
80
|
}
|
|
59
|
-
|
|
60
|
-
|
|
81
|
+
const normalized = normalizeModel(selectedModel);
|
|
82
|
+
console.warn(`[model-router] Selected: ${selectedModel} → ${normalized}`);
|
|
83
|
+
return { model: normalized, messages };
|
|
61
84
|
}
|
|
62
85
|
catch (error) {
|
|
63
86
|
console.error("[model-router] Routing failed, falling back to sonnet:", error instanceof Error ? error.message : error);
|
|
64
|
-
return DEFAULT_MODEL;
|
|
87
|
+
return { model: DEFAULT_MODEL, messages };
|
|
65
88
|
}
|
|
66
89
|
}
|
|
67
90
|
//# sourceMappingURL=model-router.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-router.js","sourceRoot":"","sources":["../../src/hono/model-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,kBAAkB,GAAG,sDAAsD,CAAC;AAElF;;;GAGG;AACH,MAAM,gBAAgB,GAAG;IACvB,EAAE,KAAK,EAAE,4BAA4B,EAAE;IACvC,EAAE,KAAK,EAAE,6BAA6B,EAAE;IACxC,EAAE,KAAK,EAAE,2BAA2B,EAAE;CACvC,CAAC;AAEF,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD,gEAAgE;AAChE,IAAI,kBAAkB,GAA2B,IAAI,CAAC;AAEtD,SAAS,cAAc;IACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"model-router.js","sourceRoot":"","sources":["../../src/hono/model-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA8B5B,wBAAgB,YAAY;;iBA4LR,OAAO,CAAC,IAAI,CAAC;gBAUd,OAAO,CAAC,IAAI,CAAC;EAiB/B"}
|
package/dist/hono/server.js
CHANGED
|
@@ -11,19 +11,20 @@ import { env } from "./env.js";
|
|
|
11
11
|
import { createFlowEncoder } from "./flow-crypto.js";
|
|
12
12
|
const FLOWS_DIR = join(process.cwd(), "src/lib/flow-engine/flows");
|
|
13
13
|
/** Relay a non-streaming event to Convex (fire-and-forget) */
|
|
14
|
-
function relayToConvex(threadId, message) {
|
|
14
|
+
function relayToConvex(threadId, message, model) {
|
|
15
15
|
if (message.type === "stream_event") {
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
|
-
void postToConvex("/api/chat/event", { threadId, event: message });
|
|
18
|
+
void postToConvex("/api/chat/event", { threadId, event: message, ...(model && { model }) });
|
|
19
19
|
}
|
|
20
20
|
/** Signal stream completion to Convex */
|
|
21
|
-
function signalComplete(threadId, costUsd, isError, errors) {
|
|
21
|
+
function signalComplete(threadId, costUsd, isError, errors, model) {
|
|
22
22
|
void postToConvex("/api/chat/complete", {
|
|
23
23
|
threadId,
|
|
24
24
|
isError,
|
|
25
25
|
costUsd,
|
|
26
26
|
...(errors && { errors }),
|
|
27
|
+
...(model && { model }),
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
30
|
export function createServer() {
|
|
@@ -107,7 +108,18 @@ export function createServer() {
|
|
|
107
108
|
case "chat": {
|
|
108
109
|
const { threadId, content, attachments } = msg;
|
|
109
110
|
const session = await getOrCreateSession(threadId);
|
|
111
|
+
let selectedModel;
|
|
110
112
|
session.sendAndStream(content, {
|
|
113
|
+
onModelSelected: (m) => {
|
|
114
|
+
selectedModel = m;
|
|
115
|
+
},
|
|
116
|
+
onRouterSample: (model, messages) => {
|
|
117
|
+
void postToConvex("/api/chat/router-sample", {
|
|
118
|
+
threadId,
|
|
119
|
+
model,
|
|
120
|
+
messages: JSON.stringify(messages),
|
|
121
|
+
});
|
|
122
|
+
},
|
|
111
123
|
onMessage: (m) => {
|
|
112
124
|
try {
|
|
113
125
|
ws.send(JSON.stringify({ type: m.type, data: m }));
|
|
@@ -115,7 +127,7 @@ export function createServer() {
|
|
|
115
127
|
catch {
|
|
116
128
|
// WS may have closed — still relay to Convex
|
|
117
129
|
}
|
|
118
|
-
relayToConvex(threadId, m);
|
|
130
|
+
relayToConvex(threadId, m, selectedModel);
|
|
119
131
|
},
|
|
120
132
|
onInputRequest: (toolUseId, questions) => {
|
|
121
133
|
try {
|
|
@@ -125,14 +137,14 @@ export function createServer() {
|
|
|
125
137
|
// WS may have closed — question is still registered in pendingQuestions
|
|
126
138
|
}
|
|
127
139
|
},
|
|
128
|
-
onComplete: (costUsd, isError, errors) => {
|
|
140
|
+
onComplete: (costUsd, isError, errors, model) => {
|
|
129
141
|
try {
|
|
130
142
|
ws.send(JSON.stringify({ type: "result", costUsd, isError, errors }));
|
|
131
143
|
}
|
|
132
144
|
catch {
|
|
133
145
|
// WS may have closed — still signal Convex
|
|
134
146
|
}
|
|
135
|
-
signalComplete(threadId, costUsd, isError, errors);
|
|
147
|
+
signalComplete(threadId, costUsd, isError, errors, model);
|
|
136
148
|
},
|
|
137
149
|
}, attachments);
|
|
138
150
|
break;
|
package/dist/hono/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAmB,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;AAEnE,8DAA8D;AAC9D,SAAS,aAAa,CAAC,QAAgB,EAAE,OAAmB;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/hono/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koda-sl/baker-bridge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "HTTP server wrapping the Claude Agent SDK with SSE streaming, WebSocket, and async endpoints",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@hono/node-ws": "^1.3.0",
|
|
45
45
|
"@t3-oss/env-core": "^0.13.10",
|
|
46
46
|
"hono": "^4.0.0",
|
|
47
|
-
"zod": "^4.3.6"
|
|
47
|
+
"zod": "^4.3.6"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/node": "25.3.0",
|