@koda-sl/baker-bridge 0.38.3-dev.26436071 → 0.39.1
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 +38 -24
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +1 -1
- package/dist/hono/agent.d.ts +2 -5
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +23 -43
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/attachments.d.ts +16 -0
- package/dist/hono/attachments.d.ts.map +1 -1
- package/dist/hono/attachments.js +88 -2
- package/dist/hono/attachments.js.map +1 -1
- package/dist/hono/attachments.test.d.ts +2 -0
- package/dist/hono/attachments.test.d.ts.map +1 -0
- package/dist/hono/attachments.test.js +40 -0
- package/dist/hono/attachments.test.js.map +1 -0
- package/dist/hono/callback.js +2 -2
- package/dist/hono/callback.js.map +1 -1
- package/dist/hono/flow-strip.d.ts +4 -0
- package/dist/hono/flow-strip.d.ts.map +1 -0
- package/dist/hono/flow-strip.js +125 -0
- package/dist/hono/flow-strip.js.map +1 -0
- package/dist/hono/flow-strip.test.d.ts +2 -0
- package/dist/hono/flow-strip.test.d.ts.map +1 -0
- package/dist/hono/flow-strip.test.js +225 -0
- package/dist/hono/flow-strip.test.js.map +1 -0
- package/dist/hono/model-router.d.ts +3 -1
- package/dist/hono/model-router.d.ts.map +1 -1
- package/dist/hono/model-router.js +11 -10
- package/dist/hono/model-router.js.map +1 -1
- package/dist/hono/model-router.test.d.ts +2 -0
- package/dist/hono/model-router.test.d.ts.map +1 -0
- package/dist/hono/model-router.test.js +46 -0
- package/dist/hono/model-router.test.js.map +1 -0
- package/dist/hono/publish-recovery.d.ts +12 -0
- package/dist/hono/publish-recovery.d.ts.map +1 -0
- package/dist/hono/publish-recovery.js +40 -0
- package/dist/hono/publish-recovery.js.map +1 -0
- package/dist/hono/server.d.ts.map +1 -1
- package/dist/hono/server.js +20 -1
- package/dist/hono/server.js.map +1 -1
- package/dist/hono/types.d.ts +0 -7
- package/dist/hono/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/hono/memory.d.ts +0 -12
- package/dist/hono/memory.d.ts.map +0 -1
- package/dist/hono/memory.js +0 -203
- package/dist/hono/memory.js.map +0 -1
- package/dist/hono/memory.test.d.ts +0 -2
- package/dist/hono/memory.test.d.ts.map +0 -1
- package/dist/hono/memory.test.js +0 -242
- package/dist/hono/memory.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -41,9 +41,24 @@ await server.start();
|
|
|
41
41
|
| `BAKER_API_KEY` | API key for Convex callbacks (`bk_...`) |
|
|
42
42
|
| `INTERNAL_SECRET_KEY` | AES key for encrypting flow `_data.json` config at rest |
|
|
43
43
|
| `ANTHROPIC_API_KEY` | Anthropic API key (required by the Agent SDK) |
|
|
44
|
+
| `NOTDIAMOND_ENABLED` | `"true"` to route each prompt through NotDiamond's model selector. Defaults to `false` — every turn runs on Opus 4.7 (`claude-opus-4-7`) |
|
|
45
|
+
| `NOTDIAMOND_API_KEY` | NotDiamond bearer token. Required when `NOTDIAMOND_ENABLED=true` |
|
|
44
46
|
|
|
45
47
|
All variables are validated at startup via `@t3-oss/env-core` + `zod`.
|
|
46
48
|
|
|
49
|
+
## Model selection
|
|
50
|
+
|
|
51
|
+
The bridge picks a Claude model per turn before calling the Agent SDK:
|
|
52
|
+
|
|
53
|
+
- **Default (router disabled):** every turn runs on `claude-opus-4-7`.
|
|
54
|
+
- **Router enabled (`NOTDIAMOND_ENABLED=true`):** the prompt + repo context are
|
|
55
|
+
sent to NotDiamond with three candidates (Haiku 4.5, Sonnet 4.6, Opus 4.7).
|
|
56
|
+
NotDiamond's default selection tradeoff is used — no `latency` / `cost`
|
|
57
|
+
override. The returned OpenRouter-formatted ID is normalized to the
|
|
58
|
+
Anthropic-native form (e.g. `anthropic/claude-opus-4.7` → `claude-opus-4-7`)
|
|
59
|
+
before being passed to `query({ options: { model } })`. On any router error
|
|
60
|
+
or empty response, it falls back to Opus 4.7.
|
|
61
|
+
|
|
47
62
|
## Endpoints
|
|
48
63
|
|
|
49
64
|
| Method | Path | Auth | Description |
|
|
@@ -54,6 +69,7 @@ All variables are validated at startup via `@t3-oss/env-core` + `zod`.
|
|
|
54
69
|
| `GET` | `/brand` | None | Return BRAND.md as `{ content, title }` |
|
|
55
70
|
| `GET` | `/knowledge/:collection/:entry` | None | Return knowledge entry as `{ content, title }` |
|
|
56
71
|
| `GET` | `/documents/:slug` | None | Serve document binary (pdf, pptx, docx, xlsx) |
|
|
72
|
+
| `GET` | `/landings/:slug/definition` | None | Return landing `_definition.md` as `{ content, title }` |
|
|
57
73
|
| `GET` | `/flows/:slug` | None | Read flow `_data.json` (decrypted) |
|
|
58
74
|
| `PUT` | `/flows/:slug` | None | Write flow `_data.json` (encrypts at rest) |
|
|
59
75
|
| `POST` | `/message/async` | Bearer token | Dispatch a chat turn — fire-and-forget, 202 immediately |
|
|
@@ -92,6 +108,28 @@ Convex action ──POST /message/async──▶ Bridge AgentSession
|
|
|
92
108
|
- **AskUserQuestion** posts `/api/chat/input-request` and blocks until the
|
|
93
109
|
dashboard answers via Convex action → bridge `/answer-question`.
|
|
94
110
|
|
|
111
|
+
## Attachment validation
|
|
112
|
+
|
|
113
|
+
When the bridge downloads attachments referenced in a chat dispatch, it
|
|
114
|
+
sniffs each file's magic bytes before handing it to the agent:
|
|
115
|
+
|
|
116
|
+
- A file whose extension claims to be an image (`.jpg`, `.jpeg`, `.png`,
|
|
117
|
+
`.gif`, `.webp`) but whose bytes are a different image format is renamed
|
|
118
|
+
on disk to match the real format. Anthropic infers `media_type` from the
|
|
119
|
+
extension; mislabeled files cause `Could not process image` 400s.
|
|
120
|
+
- A file claiming to be an image but whose bytes are HTML, plain text, or
|
|
121
|
+
any non-supported format is dropped with a `console.error`. This
|
|
122
|
+
typically means the source URL returned an error page. Better to ship
|
|
123
|
+
the run without that one attachment than to abort everything.
|
|
124
|
+
- Images larger than 5 MB raw are dropped — past Anthropic's effective
|
|
125
|
+
vision endpoint ceiling once base64-encoded.
|
|
126
|
+
|
|
127
|
+
The same magic-byte rules are enforced as a pre-commit hook in
|
|
128
|
+
`apps/scaffold-template` (`validate-images`). Extension mismatches are
|
|
129
|
+
auto-fixed: the hook renames the file to match its real format, updates
|
|
130
|
+
all references in source files, and stages the changes. Corrupted or
|
|
131
|
+
oversized images still block the commit.
|
|
132
|
+
|
|
95
133
|
## Resilience
|
|
96
134
|
|
|
97
135
|
- All Convex POSTs retry 3× with exponential backoff (1s, 2s, 4s).
|
|
@@ -189,30 +227,6 @@ cat ~/.baker/relay-errors.jsonl
|
|
|
189
227
|
|
|
190
228
|
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
229
|
|
|
192
|
-
## Agent memory
|
|
193
|
-
|
|
194
|
-
The bridge auto-bootstraps a `.memory/` directory in the project cwd on first turn and injects an instruction block plus eager-loaded files into the SDK's `appendSystemPrompt`. The snapshot is **frozen per `(user, UTC date)`** — built once on the first turn and reused byte-identical across subsequent turns within the same day so Anthropic's prefix cache hits. Mid-session writes to `.memory/` persist to disk but only re-inject when the cache invalidates (date rollover or user change).
|
|
195
|
-
|
|
196
|
-
Layout the bridge expects:
|
|
197
|
-
|
|
198
|
-
```
|
|
199
|
-
<cwd>/.memory/
|
|
200
|
-
MEMORY.md # eager-loaded each session (≤80 lines)
|
|
201
|
-
sessions/YYYY-MM-DD.md # append-only daily journal; today's preview eager-loaded (≤25 lines)
|
|
202
|
-
project/<topic>.md # curated project-wide facts; lazy-loaded
|
|
203
|
-
people/<user-slug>.md # per-human facts; only the active user's file is eager-loaded
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
When `/message/async` includes `user: { id, email }`, the bridge slugifies the email's local part and eager-loads `people/<slug>.md` alongside `MEMORY.md`. Without `user`, the agent is instructed not to write under `people/`.
|
|
207
|
-
|
|
208
|
-
The agent is taught (via the injected instruction block) to:
|
|
209
|
-
|
|
210
|
-
- **Write fast observations** into `sessions/<today>.md` — low-friction draft layer
|
|
211
|
-
- **Promote durable signal** into `project/` and `people/` via the scaffold's `/memory-promote` skill
|
|
212
|
-
- **Search older or cross-user context** via `qmd search --collection agent-memory <terms>` (the scaffold registers an `agent-memory` qmd collection over `sessions/` + `project/` + `people/`. `MEMORY.md` is deliberately excluded — it's a tiny pointer index, eager-loaded above)
|
|
213
|
-
|
|
214
|
-
Memory is loose narrative recall, distinct from any structured content store the project ships (`src/content/` in scaffolds is schema-validated client intel — a different layer).
|
|
215
|
-
|
|
216
230
|
## Requirements
|
|
217
231
|
|
|
218
232
|
- Node.js 18+
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
declare const args: string[];
|
|
3
3
|
declare const command: string;
|
|
4
|
-
declare const VERSION = "0.
|
|
4
|
+
declare const VERSION = "0.39.1";
|
|
5
5
|
declare function printUsage(): void;
|
|
6
6
|
declare function main(): Promise<void>;
|
|
7
7
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.js
CHANGED
package/dist/hono/agent.d.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import type { SlashCommand } from "@anthropic-ai/claude-agent-sdk";
|
|
2
|
-
import type { ChatAttachment
|
|
2
|
+
import type { ChatAttachment } from "./types.ts";
|
|
3
3
|
declare class AgentSession {
|
|
4
4
|
readonly threadId: string;
|
|
5
5
|
private sessionId;
|
|
6
6
|
private pendingQuestions;
|
|
7
7
|
private handlerCtx;
|
|
8
8
|
private options;
|
|
9
|
-
private memorySnapshot;
|
|
10
|
-
private memoryDirEnsured;
|
|
11
9
|
/** Identity token for the currently-running stream. abort() nulls this; if a
|
|
12
10
|
* later check sees a different value, the run knows it was abandoned. This
|
|
13
11
|
* replaces a global `aborted` flag whose reset-on-entry was racy. */
|
|
@@ -27,8 +25,7 @@ declare class AgentSession {
|
|
|
27
25
|
abort(): void;
|
|
28
26
|
setSessionId(id: string): void;
|
|
29
27
|
resolveQuestion(toolUseId: string, answers: Record<string, string>): boolean;
|
|
30
|
-
|
|
31
|
-
sendAndStream(content: string, attachments?: ChatAttachment[], user?: ChatUser): Promise<void>;
|
|
28
|
+
sendAndStream(content: string, attachments?: ChatAttachment[]): Promise<void>;
|
|
32
29
|
private runStream;
|
|
33
30
|
private handleStreamEvent;
|
|
34
31
|
private handleContentBlockStart;
|
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,EAAuB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAmBxF,OAAO,KAAK,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAmBxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA+CjD,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;IAEzB;;0EAEsE;IACtE,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,KAAK,CAAqB;IAClC;oFACgF;IAChF,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,oBAAoB,CAAS;IACrC,UAAU,EAAE,MAAM,CAAc;gBAEpB,QAAQ,EAAE,MAAM;IAM5B,kFAAkF;IAClF,KAAK,IAAI,IAAI;IAgBb,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI9B,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAUtE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA8BrE,SAAS;IAsGvB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,uBAAuB;YAiBjB,aAAa;YAgBb,aAAa;YAoBb,kBAAkB;YAalB,iBAAiB;CAiBhC;AAiHD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAahF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOtD;AAWD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAuBhE"}
|
package/dist/hono/agent.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
2
2
|
import { buildAttachmentPromptSuffix, downloadAttachments } from "./attachments.js";
|
|
3
3
|
import { clearStreamBuffer, enqueueStreamingTools, enqueueStreamText, flushStream, markStreamReplace, postEvent, postHeartbeat, postInputRequest, postInputResolved, postRouterSample, signalComplete, } from "./convex.js";
|
|
4
|
-
import { buildMemoryContext, ensureMemoryDir, todaySessionFilename } from "./memory.js";
|
|
5
4
|
import { selectModel } from "./model-router.js";
|
|
5
|
+
import { recoverStalledPublish } from "./publish-recovery.js";
|
|
6
6
|
import { loadSessionId, saveSessionId } from "./session-store.js";
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
// Tunables
|
|
@@ -31,17 +31,6 @@ class AgentSession {
|
|
|
31
31
|
pendingQuestions = new Map();
|
|
32
32
|
handlerCtx;
|
|
33
33
|
options;
|
|
34
|
-
// Frozen memory snapshot — built once per (user, UTC date) and reused across
|
|
35
|
-
// turns so `appendSystemPrompt` stays byte-identical and the Anthropic prefix
|
|
36
|
-
// cache hits. Mid-session writes to `.memory/` persist to disk but do not
|
|
37
|
-
// re-inject until the cache invalidates (Hermes pattern).
|
|
38
|
-
//
|
|
39
|
-
// The date component is in the cache key because the snapshot includes a
|
|
40
|
-
// preview of `.memory/sessions/<today>.md` — a long-running thread that
|
|
41
|
-
// spans multiple days would otherwise serve a stale preview pointing at
|
|
42
|
-
// yesterday's filename.
|
|
43
|
-
memorySnapshot = null;
|
|
44
|
-
memoryDirEnsured = false;
|
|
45
34
|
/** Identity token for the currently-running stream. abort() nulls this; if a
|
|
46
35
|
* later check sees a different value, the run knows it was abandoned. This
|
|
47
36
|
* replaces a global `aborted` flag whose reset-on-entry was racy. */
|
|
@@ -90,22 +79,7 @@ class AgentSession {
|
|
|
90
79
|
this.pendingQuestions.delete(toolUseId);
|
|
91
80
|
return true;
|
|
92
81
|
}
|
|
93
|
-
async
|
|
94
|
-
const userKey = user ? `${user.id}:${user.email ?? ""}` : "_anon";
|
|
95
|
-
const cacheKey = `${userKey}|${todaySessionFilename(new Date(), this.threadId)}`;
|
|
96
|
-
if (this.memorySnapshot?.cacheKey === cacheKey) {
|
|
97
|
-
return this.memorySnapshot.promptAppend;
|
|
98
|
-
}
|
|
99
|
-
const cwd = this.options.cwd ?? process.cwd();
|
|
100
|
-
if (!this.memoryDirEnsured) {
|
|
101
|
-
await ensureMemoryDir(cwd);
|
|
102
|
-
this.memoryDirEnsured = true;
|
|
103
|
-
}
|
|
104
|
-
const ctx = await buildMemoryContext(cwd, user, this.threadId);
|
|
105
|
-
this.memorySnapshot = { cacheKey, promptAppend: ctx.systemPromptAppend };
|
|
106
|
-
return ctx.systemPromptAppend;
|
|
107
|
-
}
|
|
108
|
-
async sendAndStream(content, attachments, user) {
|
|
82
|
+
async sendAndStream(content, attachments) {
|
|
109
83
|
if (this.streamingPromise) {
|
|
110
84
|
this.replacingStream = true;
|
|
111
85
|
this.abort();
|
|
@@ -123,7 +97,7 @@ class AgentSession {
|
|
|
123
97
|
this.replacingStream = false;
|
|
124
98
|
}
|
|
125
99
|
}
|
|
126
|
-
this.streamingPromise = this.runStream(content, attachments
|
|
100
|
+
this.streamingPromise = this.runStream(content, attachments);
|
|
127
101
|
try {
|
|
128
102
|
await this.streamingPromise;
|
|
129
103
|
}
|
|
@@ -131,7 +105,7 @@ class AgentSession {
|
|
|
131
105
|
this.streamingPromise = null;
|
|
132
106
|
}
|
|
133
107
|
}
|
|
134
|
-
async runStream(content, attachments
|
|
108
|
+
async runStream(content, attachments) {
|
|
135
109
|
const runToken = Symbol("agent-run");
|
|
136
110
|
this.activeRun = runToken;
|
|
137
111
|
this.lastUsedAt = Date.now();
|
|
@@ -141,7 +115,7 @@ class AgentSession {
|
|
|
141
115
|
let costUsd = 0;
|
|
142
116
|
this.model = undefined;
|
|
143
117
|
try {
|
|
144
|
-
const prepared = await this.preparePrompt(content, attachments,
|
|
118
|
+
const prepared = await this.preparePrompt(content, attachments, runToken);
|
|
145
119
|
if (!prepared) {
|
|
146
120
|
await this.completeWithCancel(0);
|
|
147
121
|
return;
|
|
@@ -153,11 +127,6 @@ class AgentSession {
|
|
|
153
127
|
...this.options,
|
|
154
128
|
model: prepared.model,
|
|
155
129
|
abortController: this.activeAbort,
|
|
156
|
-
systemPrompt: {
|
|
157
|
-
type: "preset",
|
|
158
|
-
preset: "claude_code",
|
|
159
|
-
append: prepared.memoryPromptAppend,
|
|
160
|
-
},
|
|
161
130
|
...(this.sessionId && { resume: this.sessionId }),
|
|
162
131
|
};
|
|
163
132
|
const q = query({ prompt: prepared.prompt, options: opts });
|
|
@@ -271,7 +240,7 @@ class AgentSession {
|
|
|
271
240
|
}
|
|
272
241
|
// system / result messages are not persisted; result.cost_usd is captured above.
|
|
273
242
|
}
|
|
274
|
-
async preparePrompt(content, attachments,
|
|
243
|
+
async preparePrompt(content, attachments, runToken) {
|
|
275
244
|
let prompt = content;
|
|
276
245
|
if (attachments && attachments.length > 0) {
|
|
277
246
|
const paths = await downloadAttachments(attachments);
|
|
@@ -280,15 +249,11 @@ class AgentSession {
|
|
|
280
249
|
if (this.activeRun !== runToken) {
|
|
281
250
|
return null;
|
|
282
251
|
}
|
|
283
|
-
const memoryPromptAppend = await this.getMemorySnapshot(user);
|
|
284
|
-
if (this.activeRun !== runToken) {
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
252
|
const routerResult = await selectModel(prompt);
|
|
288
253
|
if (this.activeRun !== runToken) {
|
|
289
254
|
return null;
|
|
290
255
|
}
|
|
291
|
-
return { prompt, model: routerResult.model, routerMessages: routerResult.messages
|
|
256
|
+
return { prompt, model: routerResult.model, routerMessages: routerResult.messages };
|
|
292
257
|
}
|
|
293
258
|
async completeWithCancel(costUsd) {
|
|
294
259
|
// Don't fire signalComplete if we're being replaced by another stream — the
|
|
@@ -300,6 +265,7 @@ class AgentSession {
|
|
|
300
265
|
return;
|
|
301
266
|
}
|
|
302
267
|
await signalComplete(this.threadId, costUsd, true, ["Cancelled by user"], this.model);
|
|
268
|
+
void recoverStalledPublish();
|
|
303
269
|
}
|
|
304
270
|
async completeWithError(costUsd, error, runToken) {
|
|
305
271
|
this.activeAbort = null;
|
|
@@ -307,13 +273,27 @@ class AgentSession {
|
|
|
307
273
|
await this.completeWithCancel(costUsd);
|
|
308
274
|
return;
|
|
309
275
|
}
|
|
310
|
-
const
|
|
276
|
+
const rawMessage = error instanceof Error ? error.message : "Unknown error";
|
|
277
|
+
const message = enrichImageError(rawMessage);
|
|
311
278
|
console.error("Agent session error:", message);
|
|
312
279
|
if (this.pendingQuestions.size > 0) {
|
|
313
280
|
console.warn(`[AgentSession] SDK errored with ${String(this.pendingQuestions.size)} question(s) still pending on thread ${this.threadId}`);
|
|
314
281
|
}
|
|
315
282
|
await signalComplete(this.threadId, costUsd, true, [message], this.model);
|
|
283
|
+
void recoverStalledPublish();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// ---------------------------------------------------------------------------
|
|
287
|
+
// Image error enrichment
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
/** Anthropic returns a generic 400 "Could not process image" when an image's
|
|
290
|
+
* bytes don't match its declared media_type. Surface a hint so the user can
|
|
291
|
+
* find the offending file instead of staring at a provider error. */
|
|
292
|
+
function enrichImageError(message) {
|
|
293
|
+
if (!message.toLowerCase().includes("could not process image")) {
|
|
294
|
+
return message;
|
|
316
295
|
}
|
|
296
|
+
return `${message} — likely a file whose extension lies about its format (e.g. PNG renamed .jpg) or a corrupted download. Run the image validator and check magic bytes with \`file <path>\`.`;
|
|
317
297
|
}
|
|
318
298
|
async function handleAskUserQuestion(input, toolUseID, ctx, signal) {
|
|
319
299
|
console.warn(`[AskUserQuestion] blocking for ${toolUseID} on thread ${ctx.threadId}`);
|
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,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGlE,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E;;gEAEgE;AAChE,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACvC,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;AACpD,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAuBrC,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;oFACgF;IACxE,QAAQ,GAAG,EAAE,CAAC;IACd,oBAAoB,GAAG,KAAK,CAAC;IACrC,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,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC5C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,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,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,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;YACnB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBACjC,KAAK,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC,EAAE,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;YAElC,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;gBACxB,aAAa,CAAC,SAAS,CAAC,CAAC;YAC3B,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;YAED,yEAAyE;YACzE,2EAA2E;YAC3E,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,kBAAkB,GAAG;oBACzB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE;wBACP,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAChD,WAAW,EAAE,UAAU;qBACxB;iBACF,CAAC;gBACF,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAA2C,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1F,CAAC;YAED,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,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,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,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;gBAC5B,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,GAAsD,CAAC,KAAK,CAAC;YAC5E,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,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,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;QACtF,KAAK,qBAAqB,EAAE,CAAC;IAC/B,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,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC5E,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC7C,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;QAC1E,KAAK,qBAAqB,EAAE,CAAC;IAC/B,CAAC;CACF;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;sEAEsE;AACtE,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC/D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,OAAO,6KAA6K,CAAC;AACjM,CAAC;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;YACD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBACjB,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,MAAM,CAAC,MAAM,CAAC,CAAC;YACjB,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"}
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
import type { ChatAttachment } from "./types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Pick the on-disk filename for an attachment. If the extension claims an
|
|
4
|
+
* image but the bytes say otherwise, the file is renamed to match its real
|
|
5
|
+
* format — Anthropic's vision endpoint infers media_type from the extension
|
|
6
|
+
* and rejects anything mislabeled with `Could not process image`.
|
|
7
|
+
*
|
|
8
|
+
* Returns null when the file should be dropped (extension claims image but
|
|
9
|
+
* bytes aren't any supported image — likely an HTML error page from a failed
|
|
10
|
+
* download).
|
|
11
|
+
*/
|
|
12
|
+
export declare function pickLocalName(filename: string, buf: Buffer): string | null;
|
|
2
13
|
/**
|
|
3
14
|
* Download attachments to the sandbox filesystem and return the local paths.
|
|
4
15
|
* The AI agent can then use its Read tool to view images or read documents.
|
|
16
|
+
*
|
|
17
|
+
* Drops any attachment whose extension claims to be an image but whose bytes
|
|
18
|
+
* say otherwise (HTML error pages, oversized files). Renames files when the
|
|
19
|
+
* extension lies about the format. Skipping one bad attachment is preferable
|
|
20
|
+
* to aborting the whole agent run on a 400 from the model.
|
|
5
21
|
*/
|
|
6
22
|
export declare function downloadAttachments(attachments: ChatAttachment[]): Promise<string[]>;
|
|
7
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/hono/attachments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../../src/hono/attachments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqDjD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqD1F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAMnE"}
|
package/dist/hono/attachments.js
CHANGED
|
@@ -1,9 +1,80 @@
|
|
|
1
1
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { extname, join } from "node:path";
|
|
3
3
|
const ATTACHMENTS_DIR = "/tmp/attachments";
|
|
4
|
+
/** Anthropic rejects images larger than ~5 MB after base64. Cap raw bytes
|
|
5
|
+
* conservatively so we fail fast instead of seeing a generic 400 from the API. */
|
|
6
|
+
const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
|
|
7
|
+
const IMAGE_EXTENSIONS = new Set([".jpg", ".jpeg", ".png", ".gif", ".webp"]);
|
|
8
|
+
/**
|
|
9
|
+
* Identify an image by its magic bytes. Returns null if the buffer isn't a
|
|
10
|
+
* supported image format. We trust bytes, never the extension.
|
|
11
|
+
*/
|
|
12
|
+
function detectImageType(buf) {
|
|
13
|
+
if (buf.length >= 3 && buf[0] === 0xff && buf[1] === 0xd8 && buf[2] === 0xff) {
|
|
14
|
+
return "jpeg";
|
|
15
|
+
}
|
|
16
|
+
if (buf.length >= 8 &&
|
|
17
|
+
buf[0] === 0x89 &&
|
|
18
|
+
buf[1] === 0x50 &&
|
|
19
|
+
buf[2] === 0x4e &&
|
|
20
|
+
buf[3] === 0x47 &&
|
|
21
|
+
buf[4] === 0x0d &&
|
|
22
|
+
buf[5] === 0x0a &&
|
|
23
|
+
buf[6] === 0x1a &&
|
|
24
|
+
buf[7] === 0x0a) {
|
|
25
|
+
return "png";
|
|
26
|
+
}
|
|
27
|
+
if (buf.length >= 6 && /^GIF8[79]a$/.test(buf.slice(0, 6).toString("ascii"))) {
|
|
28
|
+
return "gif";
|
|
29
|
+
}
|
|
30
|
+
if (buf.length >= 12 &&
|
|
31
|
+
buf.slice(0, 4).toString("ascii") === "RIFF" &&
|
|
32
|
+
buf.slice(8, 12).toString("ascii") === "WEBP") {
|
|
33
|
+
return "webp";
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const ACCEPTABLE_EXTS = {
|
|
38
|
+
jpeg: [".jpg", ".jpeg"],
|
|
39
|
+
png: [".png"],
|
|
40
|
+
gif: [".gif"],
|
|
41
|
+
webp: [".webp"],
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Pick the on-disk filename for an attachment. If the extension claims an
|
|
45
|
+
* image but the bytes say otherwise, the file is renamed to match its real
|
|
46
|
+
* format — Anthropic's vision endpoint infers media_type from the extension
|
|
47
|
+
* and rejects anything mislabeled with `Could not process image`.
|
|
48
|
+
*
|
|
49
|
+
* Returns null when the file should be dropped (extension claims image but
|
|
50
|
+
* bytes aren't any supported image — likely an HTML error page from a failed
|
|
51
|
+
* download).
|
|
52
|
+
*/
|
|
53
|
+
export function pickLocalName(filename, buf) {
|
|
54
|
+
const ext = extname(filename).toLowerCase();
|
|
55
|
+
const claimsImage = IMAGE_EXTENSIONS.has(ext);
|
|
56
|
+
const detected = detectImageType(buf);
|
|
57
|
+
if (!claimsImage) {
|
|
58
|
+
return filename;
|
|
59
|
+
}
|
|
60
|
+
if (detected === null) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
const validExts = ACCEPTABLE_EXTS[detected];
|
|
64
|
+
if (validExts.includes(ext)) {
|
|
65
|
+
return filename;
|
|
66
|
+
}
|
|
67
|
+
const stem = filename.slice(0, filename.length - ext.length);
|
|
68
|
+
return `${stem}${validExts[0]}`;
|
|
69
|
+
}
|
|
4
70
|
/**
|
|
5
71
|
* Download attachments to the sandbox filesystem and return the local paths.
|
|
6
72
|
* The AI agent can then use its Read tool to view images or read documents.
|
|
73
|
+
*
|
|
74
|
+
* Drops any attachment whose extension claims to be an image but whose bytes
|
|
75
|
+
* say otherwise (HTML error pages, oversized files). Renames files when the
|
|
76
|
+
* extension lies about the format. Skipping one bad attachment is preferable
|
|
77
|
+
* to aborting the whole agent run on a 400 from the model.
|
|
7
78
|
*/
|
|
8
79
|
export async function downloadAttachments(attachments) {
|
|
9
80
|
if (attachments.length === 0) {
|
|
@@ -13,14 +84,29 @@ export async function downloadAttachments(attachments) {
|
|
|
13
84
|
const paths = [];
|
|
14
85
|
for (const att of attachments) {
|
|
15
86
|
const sanitized = att.filename.replace(/[^a-zA-Z0-9._-]/g, "_");
|
|
16
|
-
const localPath = join(ATTACHMENTS_DIR, `${Date.now()}-${sanitized}`);
|
|
17
87
|
try {
|
|
18
88
|
const response = await fetch(att.url);
|
|
19
89
|
if (!response.ok) {
|
|
20
90
|
console.error(`Failed to download attachment ${att.filename}: ${response.status}`);
|
|
21
91
|
continue;
|
|
22
92
|
}
|
|
93
|
+
const isImage = IMAGE_EXTENSIONS.has(extname(sanitized).toLowerCase());
|
|
94
|
+
const contentLength = Number(response.headers.get("content-length") ?? "0");
|
|
95
|
+
if (isImage && contentLength > MAX_IMAGE_BYTES) {
|
|
96
|
+
console.error(`Dropping oversized image ${att.filename} (${String(contentLength)} bytes declared > ${String(MAX_IMAGE_BYTES)})`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
23
99
|
const buffer = Buffer.from(await response.arrayBuffer());
|
|
100
|
+
if (isImage && buffer.length > MAX_IMAGE_BYTES) {
|
|
101
|
+
console.error(`Dropping oversized image ${att.filename} (${String(buffer.length)} bytes > ${String(MAX_IMAGE_BYTES)})`);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const localName = pickLocalName(sanitized, buffer);
|
|
105
|
+
if (localName === null) {
|
|
106
|
+
console.error(`Dropping attachment ${att.filename}: extension claims image but bytes aren't a supported format`);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
const localPath = join(ATTACHMENTS_DIR, `${String(Date.now())}-${localName}`);
|
|
24
110
|
await writeFile(localPath, buffer);
|
|
25
111
|
paths.push(localPath);
|
|
26
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/hono/attachments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../src/hono/attachments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.test.d.ts","sourceRoot":"","sources":["../../src/hono/attachments.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { pickLocalName } from "./attachments.js";
|
|
3
|
+
const JPEG_HEADER = Buffer.from([0xff, 0xd8, 0xff, 0xe0]);
|
|
4
|
+
const PNG_HEADER = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
5
|
+
const GIF_HEADER = Buffer.from("GIF89a", "ascii");
|
|
6
|
+
const WEBP_HEADER = Buffer.concat([
|
|
7
|
+
Buffer.from("RIFF", "ascii"),
|
|
8
|
+
Buffer.from([0, 0, 0, 0]),
|
|
9
|
+
Buffer.from("WEBP", "ascii"),
|
|
10
|
+
]);
|
|
11
|
+
const HTML_BODY = Buffer.from("<!doctype html><title>404</title>", "ascii");
|
|
12
|
+
describe("pickLocalName", () => {
|
|
13
|
+
it("keeps real JPEG named .jpg unchanged", () => {
|
|
14
|
+
expect(pickLocalName("hero.jpg", JPEG_HEADER)).toBe("hero.jpg");
|
|
15
|
+
});
|
|
16
|
+
it("renames PNG mislabeled as .jpg to .png", () => {
|
|
17
|
+
expect(pickLocalName("hero.jpg", PNG_HEADER)).toBe("hero.png");
|
|
18
|
+
});
|
|
19
|
+
it("renames JPEG mislabeled as .png to .jpg", () => {
|
|
20
|
+
expect(pickLocalName("hero.png", JPEG_HEADER)).toBe("hero.jpg");
|
|
21
|
+
});
|
|
22
|
+
it("drops .jpg whose body is HTML (failed download)", () => {
|
|
23
|
+
expect(pickLocalName("club.jpg", HTML_BODY)).toBeNull();
|
|
24
|
+
});
|
|
25
|
+
it("recognises real GIF and WebP by magic bytes", () => {
|
|
26
|
+
expect(pickLocalName("anim.gif", GIF_HEADER)).toBe("anim.gif");
|
|
27
|
+
expect(pickLocalName("photo.webp", WEBP_HEADER)).toBe("photo.webp");
|
|
28
|
+
});
|
|
29
|
+
it("renames WebP mislabeled as .jpg to .webp", () => {
|
|
30
|
+
expect(pickLocalName("photo.jpg", WEBP_HEADER)).toBe("photo.webp");
|
|
31
|
+
});
|
|
32
|
+
it("does not touch non-image extensions even if bytes look weird", () => {
|
|
33
|
+
expect(pickLocalName("brief.pdf", HTML_BODY)).toBe("brief.pdf");
|
|
34
|
+
expect(pickLocalName("data.json", PNG_HEADER)).toBe("data.json");
|
|
35
|
+
});
|
|
36
|
+
it("treats .jpeg as JPEG (no rename when bytes match)", () => {
|
|
37
|
+
expect(pickLocalName("hero.jpeg", JPEG_HEADER)).toBe("hero.jpeg");
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=attachments.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachments.test.js","sourceRoot":"","sources":["../../src/hono/attachments.test.ts"],"names":[],"mappings":"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"}
|
package/dist/hono/callback.js
CHANGED
|
@@ -5,8 +5,8 @@ import { getOrCreateSession } from "./agent.js";
|
|
|
5
5
|
* needs to be returned because Convex is the source of truth for the UI.
|
|
6
6
|
*/
|
|
7
7
|
export async function processAsync(request) {
|
|
8
|
-
const { prompt, threadId, attachments
|
|
8
|
+
const { prompt, threadId, attachments } = request;
|
|
9
9
|
const session = await getOrCreateSession(threadId);
|
|
10
|
-
await session.sendAndStream(prompt, attachments
|
|
10
|
+
await session.sendAndStream(prompt, attachments);
|
|
11
11
|
}
|
|
12
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;AAGhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-strip.d.ts","sourceRoot":"","sources":["../../src/hono/flow-strip.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAmIzC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAE7D"}
|