@koda-sl/baker-bridge 0.35.1 → 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 +17 -0
- 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
|
@@ -172,6 +172,23 @@ After testing, always clean up to avoid running pre-release in production:
|
|
|
172
172
|
npx convex env remove BAKER_BRIDGE_VERSION
|
|
173
173
|
```
|
|
174
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
|
+
|
|
175
192
|
## Requirements
|
|
176
193
|
|
|
177
194
|
- Node.js 18+
|
|
@@ -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":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;AACvE,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,KAAK,UAAU,aAAa,CAAC,KAO5B;IACC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,UAAU,CAAC,iBAAiB,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;AACnD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,+EAA+E;AAC/E,SAAS,UAAU,CAAC,QAAgB,EAAE,IAAwB;IAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,sCAAsC;IACtC,IAAI,GAAG,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAmB;IACnE,MAAM,IAAI,GAAI,OAAmC,CAAC,IAA0B,CAAC;IAC7E,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAA6B,EAAE,OAAO,GAAG,CAAC;IACzF,IAAI,UAA8B,CAAC;IACnC,IAAI,gBAAoC,CAAC;IACzC,IAAI,SAA6B,CAAC;IAElC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,qBAAqB,GAAG,IAAI,EAAE,EAAE;gBAC7D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,aAAa,EAAE,UAAU,GAAG,CAAC,aAAa,EAAE;iBAC7C;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC;YACd,CAAC;YACD,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;YACxB,gBAAgB,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,YAAY,OAAO,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC5E,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,UAAU,OAAO,WAAW,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA8B,CAAC;IACrD,KAAK,aAAa,CAAC;QACjB,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,gBAAgB;QAC9B,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,IAAI,KAAK,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KACvD,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC"}
|