@koda-sl/baker-bridge 0.35.0 → 0.35.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +31 -4
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/callback.js +1 -1
- package/dist/hono/convex.d.ts.map +1 -1
- package/dist/hono/convex.js +37 -0
- package/dist/hono/convex.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -110,6 +110,8 @@ curl -X POST http://localhost:3000/message/async \
|
|
|
110
110
|
On completion, the bridge calls:
|
|
111
111
|
- `POST /api/chat/event` — each SDK event (excluding stream events)
|
|
112
112
|
- `POST /api/chat/complete` — final callback with `{ threadId, isError, costUsd, errors? }`
|
|
113
|
+
- `POST /api/chat/input-request` — sets the thread to `awaiting_input` when the agent calls `AskUserQuestion`
|
|
114
|
+
- `POST /api/chat/input-resolved` — returns the thread to `streaming` after the user answers
|
|
113
115
|
|
|
114
116
|
## Architecture
|
|
115
117
|
|
|
@@ -170,6 +172,23 @@ After testing, always clean up to avoid running pre-release in production:
|
|
|
170
172
|
npx convex env remove BAKER_BRIDGE_VERSION
|
|
171
173
|
```
|
|
172
174
|
|
|
175
|
+
## Debugging relay failures
|
|
176
|
+
|
|
177
|
+
When `postToConvex` exhausts all retries, the error is appended to `~/.baker/relay-errors.jsonl` on the sandbox filesystem. Each line is a JSON object:
|
|
178
|
+
|
|
179
|
+
```jsonl
|
|
180
|
+
{"timestamp":"2026-04-24T15:19:55.123Z","path":"/api/chat/complete","threadId":"abc123","status":502,"responseBody":"Bad Gateway"}
|
|
181
|
+
{"timestamp":"2026-04-24T15:20:01.456Z","path":"/api/chat/event","threadId":"abc123","error":"fetch failed"}
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
To inspect on a running sandbox:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
cat ~/.baker/relay-errors.jsonl
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
If a thread is stuck in `"streaming"`, this file tells you whether the bridge failed to reach Convex (and why — auth, network, HTTP status).
|
|
191
|
+
|
|
173
192
|
## Requirements
|
|
174
193
|
|
|
175
194
|
- Node.js 18+
|
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,YAAY,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,UAAU,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAMxF,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;IAqD/G,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;CAS7E;AAyHD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAuBhE;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAahF"}
|
package/dist/hono/agent.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
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
4
|
import { selectModel } from "./model-router.js";
|
|
4
5
|
import { loadSessionId, saveSessionId } from "./session-store.js";
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
@@ -52,11 +53,17 @@ class AgentSession {
|
|
|
52
53
|
costUsd = msg.total_cost_usd;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
56
|
+
if (this.pendingQuestions.size > 0) {
|
|
57
|
+
console.warn(`[AgentSession] SDK completed but ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
|
|
58
|
+
}
|
|
55
59
|
callbacks.onComplete(costUsd, false, undefined, model);
|
|
56
60
|
}
|
|
57
61
|
catch (error) {
|
|
58
62
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
59
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}`);
|
|
66
|
+
}
|
|
60
67
|
callbacks.onComplete(costUsd, true, [message], model);
|
|
61
68
|
}
|
|
62
69
|
}
|
|
@@ -74,12 +81,32 @@ class AgentSession {
|
|
|
74
81
|
// Session registry — shared across WS and async paths
|
|
75
82
|
// ---------------------------------------------------------------------------
|
|
76
83
|
const sessions = new Map();
|
|
77
|
-
async function handleAskUserQuestion(input, toolUseID, ctx) {
|
|
78
|
-
|
|
84
|
+
async function handleAskUserQuestion(input, toolUseID, ctx, signal) {
|
|
85
|
+
console.warn(`[AskUserQuestion] blocking for ${toolUseID} on thread ${ctx.threadId}`);
|
|
79
86
|
ctx.onInputRequest?.(toolUseID, input.questions);
|
|
80
|
-
const
|
|
87
|
+
const posted = await postToConvex("/api/chat/input-request", {
|
|
88
|
+
threadId: ctx.threadId,
|
|
89
|
+
toolUseId: toolUseID,
|
|
90
|
+
questions: input.questions,
|
|
91
|
+
});
|
|
92
|
+
if (!posted) {
|
|
93
|
+
console.error(`[AskUserQuestion] failed to post input-request for ${toolUseID} — frontend may not show question UI`);
|
|
94
|
+
}
|
|
95
|
+
const answers = await new Promise((resolve, reject) => {
|
|
96
|
+
if (signal?.aborted) {
|
|
97
|
+
console.warn(`[AskUserQuestion] ${toolUseID} signal already aborted`);
|
|
98
|
+
reject(new Error("AskUserQuestion aborted before awaiting answer"));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
81
101
|
ctx.pendingQuestions.set(toolUseID, { resolve });
|
|
102
|
+
signal?.addEventListener("abort", () => {
|
|
103
|
+
ctx.pendingQuestions.delete(toolUseID);
|
|
104
|
+
console.warn(`[AskUserQuestion] ${toolUseID} aborted by SDK signal`);
|
|
105
|
+
reject(new Error("AskUserQuestion aborted"));
|
|
106
|
+
}, { once: true });
|
|
82
107
|
});
|
|
108
|
+
console.warn(`[AskUserQuestion] ${toolUseID} answered, resuming`);
|
|
109
|
+
void postToConvex("/api/chat/input-resolved", { threadId: ctx.threadId });
|
|
83
110
|
return {
|
|
84
111
|
behavior: "allow",
|
|
85
112
|
updatedInput: { questions: input.questions, answers },
|
|
@@ -102,7 +129,7 @@ function buildSessionOptions(handlerCtx) {
|
|
|
102
129
|
canUseTool: async (toolName, input, opts) => {
|
|
103
130
|
const handler = toolHandlers[toolName];
|
|
104
131
|
if (handler) {
|
|
105
|
-
return await handler(input, opts.toolUseID, handlerCtx);
|
|
132
|
+
return await handler(input, opts.toolUseID, handlerCtx, opts.signal);
|
|
106
133
|
}
|
|
107
134
|
return { behavior: "allow", updatedInput: input };
|
|
108
135
|
},
|
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;AAuBlE,8EAA8E;AAC9E,0DAA0D;AAC1D,EAAE;AACF,qEAAqE;AACrE,oEAAoE;AACpE,0DAA0D;AAC1D,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,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC9F,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,uFAAuF;IACvF,YAAY,CAAC,EAAU;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,SAA0B,EAAE,WAA8B;QAC7F,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAE1D,IAAI,CAAC;YACH,sEAAsE;YACtE,IAAI,MAAM,GAAG,OAAO,CAAC;YACrB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;YAC/C,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;YAC3B,SAAS,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;YACnC,SAAS,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;YAE3F,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;gBAC1B,mDAAmD;gBACnD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACnB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;oBAChC,KAAK,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;gBACpD,CAAC;gBAED,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAEzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC1B,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YAC/C,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,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;CACF;AAED,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/hono/callback.js
CHANGED
|
@@ -30,7 +30,7 @@ export async function processAsync(request) {
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
onInputRequest: () => {
|
|
33
|
-
//
|
|
33
|
+
// Convex notification is handled inside handleAskUserQuestion directly
|
|
34
34
|
},
|
|
35
35
|
onComplete: async (costUsd, isError, errors, model) => {
|
|
36
36
|
clearPostedUuids(threadId);
|
|
@@ -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;AAiEjE,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,CA4C7G"}
|
package/dist/hono/convex.js
CHANGED
|
@@ -1,7 +1,29 @@
|
|
|
1
|
+
import { appendFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
1
4
|
import { env } from "./env.js";
|
|
2
5
|
function delay(ms) {
|
|
3
6
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
4
7
|
}
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Filesystem error log — survives process crashes, inspectable via cat/tail
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
const RELAY_ERRORS_DIR = join(homedir(), ".baker");
|
|
12
|
+
const RELAY_ERRORS_FILE = join(RELAY_ERRORS_DIR, "relay-errors.jsonl");
|
|
13
|
+
let dirEnsured = false;
|
|
14
|
+
async function logRelayError(entry) {
|
|
15
|
+
try {
|
|
16
|
+
if (!dirEnsured) {
|
|
17
|
+
await mkdir(RELAY_ERRORS_DIR, { recursive: true });
|
|
18
|
+
dirEnsured = true;
|
|
19
|
+
}
|
|
20
|
+
const line = JSON.stringify({ timestamp: new Date().toISOString(), ...entry });
|
|
21
|
+
await appendFile(RELAY_ERRORS_FILE, `${line}\n`);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Best-effort — don't let logging failures break the relay
|
|
25
|
+
}
|
|
26
|
+
}
|
|
5
27
|
// Track posted event UUIDs per thread to prevent duplicate POSTs from retries
|
|
6
28
|
// interleaving with new events. Key: threadId, Value: Set of posted UUIDs.
|
|
7
29
|
// Capped at MAX_UUIDS_PER_THREAD to bound memory in long-running processes.
|
|
@@ -40,6 +62,9 @@ export function isAlreadyPosted(threadId, message) {
|
|
|
40
62
|
return markPosted(threadId, uuid);
|
|
41
63
|
}
|
|
42
64
|
export async function postToConvex(path, body, retries = 3) {
|
|
65
|
+
let lastStatus;
|
|
66
|
+
let lastResponseBody;
|
|
67
|
+
let lastError;
|
|
43
68
|
for (let attempt = 0; attempt < retries; attempt++) {
|
|
44
69
|
try {
|
|
45
70
|
const res = await fetch(`${env.BAKER_CONVEX_SITE_URL}${path}`, {
|
|
@@ -53,11 +78,14 @@ export async function postToConvex(path, body, retries = 3) {
|
|
|
53
78
|
if (res.ok) {
|
|
54
79
|
return true;
|
|
55
80
|
}
|
|
81
|
+
lastStatus = res.status;
|
|
82
|
+
lastResponseBody = await res.text().catch(() => "(unreadable)");
|
|
56
83
|
if (attempt < retries - 1) {
|
|
57
84
|
await delay(1000 * 2 ** attempt);
|
|
58
85
|
}
|
|
59
86
|
}
|
|
60
87
|
catch (err) {
|
|
88
|
+
lastError = err instanceof Error ? err.message : String(err);
|
|
61
89
|
console.error(`POST to Convex ${path} attempt ${attempt + 1} failed:`, err);
|
|
62
90
|
if (attempt < retries - 1) {
|
|
63
91
|
await delay(1000 * 2 ** attempt);
|
|
@@ -65,6 +93,15 @@ export async function postToConvex(path, body, retries = 3) {
|
|
|
65
93
|
}
|
|
66
94
|
}
|
|
67
95
|
console.error(`Failed to POST to Convex ${path} after ${retries} attempts`);
|
|
96
|
+
const threadId = body.threadId;
|
|
97
|
+
void logRelayError({
|
|
98
|
+
path,
|
|
99
|
+
threadId,
|
|
100
|
+
status: lastStatus,
|
|
101
|
+
responseBody: lastResponseBody,
|
|
102
|
+
error: lastError,
|
|
103
|
+
body: path === "/api/chat/complete" ? body : undefined,
|
|
104
|
+
});
|
|
68
105
|
return false;
|
|
69
106
|
}
|
|
70
107
|
//# sourceMappingURL=convex.js.map
|
package/dist/hono/convex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.js","sourceRoot":"","sources":["../../src/hono/convex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convex.js","sourceRoot":"","sources":["../../src/hono/convex.ts"],"names":[],"mappings":"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"}
|