experimental-ash 0.3.0-alpha.13 → 0.3.0-alpha.14
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/src/execution/sandboxes/bindings/local.js +11 -0
- package/dist/src/execution/sandboxes/bindings/local.js.map +1 -1
- package/dist/src/execution/sandboxes/bindings/vercel.js +7 -0
- package/dist/src/execution/sandboxes/bindings/vercel.js.map +1 -1
- package/dist/src/execution/sandboxes/session.d.ts +10 -0
- package/dist/src/execution/sandboxes/session.d.ts.map +1 -1
- package/dist/src/execution/sandboxes/session.js +4 -0
- package/dist/src/execution/sandboxes/session.js.map +1 -1
- package/dist/src/harness/attachment-staging.d.ts +79 -19
- package/dist/src/harness/attachment-staging.d.ts.map +1 -1
- package/dist/src/harness/attachment-staging.js +218 -24
- package/dist/src/harness/attachment-staging.js.map +1 -1
- package/dist/src/harness/tool-loop.d.ts.map +1 -1
- package/dist/src/harness/tool-loop.js +14 -4
- package/dist/src/harness/tool-loop.js.map +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/attachments/sandbox-refs.d.ts +99 -0
- package/dist/src/internal/attachments/sandbox-refs.d.ts.map +1 -0
- package/dist/src/internal/attachments/sandbox-refs.js +127 -0
- package/dist/src/internal/attachments/sandbox-refs.js.map +1 -0
- package/dist/src/internal/nitro/routes/web-ui/assets/index-BEQWswDI.js +11 -0
- package/dist/src/internal/nitro/routes/web-ui/index.html +2 -2
- package/dist/src/public/definitions/sandbox.d.ts +13 -0
- package/dist/src/public/definitions/sandbox.d.ts.map +1 -1
- package/dist/src/public/definitions/sandbox.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/internal/nitro/routes/web-ui/assets/index.js +0 -11
- /package/dist/src/internal/nitro/routes/web-ui/assets/{style.css → style-Kqb6YxTP.css} +0 -0
|
@@ -148,6 +148,16 @@ async function createBashSandbox(input) {
|
|
|
148
148
|
const result = await bash.exec(command);
|
|
149
149
|
return { exitCode: result.exitCode, stderr: result.stderr, stdout: result.stdout };
|
|
150
150
|
},
|
|
151
|
+
async readFileBytes(path) {
|
|
152
|
+
let bytes;
|
|
153
|
+
try {
|
|
154
|
+
bytes = await filesystem.readFileBuffer(path);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
return Buffer.from(bytes);
|
|
160
|
+
},
|
|
151
161
|
async readFileText(path) {
|
|
152
162
|
let bytes;
|
|
153
163
|
try {
|
|
@@ -193,6 +203,7 @@ function createHandle(sandbox, sandboxName) {
|
|
|
193
203
|
function createLocalSessionPrimitives(sandbox) {
|
|
194
204
|
return {
|
|
195
205
|
id: sandbox.sessionKey,
|
|
206
|
+
readFileBytes: (path) => sandbox.readFileBytes(path),
|
|
196
207
|
readFileRaw: (path) => sandbox.readFileText(path),
|
|
197
208
|
resolvePath: resolveLocalPath,
|
|
198
209
|
runCommand: (command) => sandbox.executeCommand(command),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../src/execution/sandboxes/bindings/local.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../src/execution/sandboxes/bindings/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -135,6 +135,13 @@ function createHandle(sandbox, sandboxName, sessionKey) {
|
|
|
135
135
|
function createVercelSessionPrimitives(sandbox, id) {
|
|
136
136
|
return {
|
|
137
137
|
id,
|
|
138
|
+
async readFileBytes(resolvedPath) {
|
|
139
|
+
const buffer = await sandbox.readFileToBuffer({ path: resolvedPath });
|
|
140
|
+
if (buffer === null) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer);
|
|
144
|
+
},
|
|
138
145
|
async readFileRaw(resolvedPath) {
|
|
139
146
|
const buffer = await sandbox.readFileToBuffer({ path: resolvedPath });
|
|
140
147
|
if (buffer === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../../../src/execution/sandboxes/bindings/vercel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../../../src/execution/sandboxes/bindings/vercel.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,16 @@ export interface SandboxSessionPrimitives {
|
|
|
16
16
|
* live sessions or the `templateKey` for bootstrap/prewarm sessions.
|
|
17
17
|
*/
|
|
18
18
|
readonly id: string;
|
|
19
|
+
/**
|
|
20
|
+
* Reads the full file at `resolvedPath` as raw bytes, or `null` if
|
|
21
|
+
* missing.
|
|
22
|
+
*
|
|
23
|
+
* The public {@link SandboxSession} exposes only text reads; this
|
|
24
|
+
* binary counterpart is consumed by internal framework paths that
|
|
25
|
+
* need byte fidelity — attachment hydration, for example — where a
|
|
26
|
+
* UTF-8 decode would corrupt the payload.
|
|
27
|
+
*/
|
|
28
|
+
readFileBytes(resolvedPath: string): Promise<Buffer | null>;
|
|
19
29
|
/** Reads the full file at `resolvedPath` as UTF-8, or `null` if missing. */
|
|
20
30
|
readFileRaw(resolvedPath: string): Promise<string | null>;
|
|
21
31
|
/** Translates a user-facing path to the backend's native path. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/execution/sandboxes/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,cAAc,EACf,MAAM,qCAAqC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,kEAAkE;IAClE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,iDAAiD;IACjD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3D;;;;;;;OAOG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,wBAAwB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/execution/sandboxes/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,cAAc,EACf,MAAM,qCAAqC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,kEAAkE;IAClE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,iDAAiD;IACjD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3D;;;;;;;OAOG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,wBAAwB,GAAG,cAAc,CA2BxF"}
|
|
@@ -16,6 +16,10 @@ export function buildSandboxSession(primitives) {
|
|
|
16
16
|
}
|
|
17
17
|
return applyLineRange(content, options);
|
|
18
18
|
},
|
|
19
|
+
async readFileBytes(path) {
|
|
20
|
+
const resolvedPath = primitives.resolvePath(path);
|
|
21
|
+
return await primitives.readFileBytes(resolvedPath);
|
|
22
|
+
},
|
|
19
23
|
resolvePath(path) {
|
|
20
24
|
return primitives.resolvePath(path);
|
|
21
25
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/execution/sandboxes/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/execution/sandboxes/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UserContent } from "ai";
|
|
1
|
+
import type { ModelMessage, UserContent } from "ai";
|
|
2
2
|
import type { ChannelAdapterContext } from "../channel/adapter.js";
|
|
3
3
|
import type { SandboxSession } from "../public/definitions/sandbox.js";
|
|
4
4
|
/**
|
|
@@ -9,28 +9,40 @@ import type { SandboxSession } from "../public/definitions/sandbox.js";
|
|
|
9
9
|
export declare const ATTACHMENTS_ROOT = "/workspace/attachments";
|
|
10
10
|
/**
|
|
11
11
|
* Writes every `FilePart` carried on the inbound turn message into the
|
|
12
|
-
* agent's sandbox
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* agent's sandbox and rewrites each part so no raw bytes travel on the
|
|
13
|
+
* returned message.
|
|
14
|
+
*
|
|
15
|
+
* Each `FilePart` is transformed to carry:
|
|
16
|
+
*
|
|
17
|
+
* - `data` — an `ash-sandbox:` URL encoding `{ path, size, mediaType }`.
|
|
18
|
+
* The raw bytes are NOT attached. Sandbox URLs are small enough
|
|
19
|
+
* (typically <300 bytes) to cross step boundaries without bloating
|
|
20
|
+
* `session.history`.
|
|
21
|
+
* - `filename` — the backend-native resolved path (for example
|
|
22
|
+
* `/vercel/sandbox/workspace/attachments/<sha>/<name>` on Vercel),
|
|
23
|
+
* so tools (`read_file`, `bash`, authored tools) can access the
|
|
24
|
+
* file directly from the sandbox filesystem.
|
|
25
|
+
* - `mediaType` — preserved in parallel with the sandbox-ref's `type`
|
|
26
|
+
* param so providers and AI SDK consumers see the expected shape.
|
|
17
27
|
*
|
|
18
28
|
* Opaque `data` shapes (`ash-attachment:` refs, data URLs, bare base64
|
|
19
|
-
* strings) are resolved to
|
|
20
|
-
*
|
|
21
|
-
*
|
|
29
|
+
* strings) are resolved to bytes here before being written to the
|
|
30
|
+
* sandbox. Remote `http(s):` URLs pass through untouched — the
|
|
31
|
+
* provider fetches those directly. `ash-sandbox:` URLs are passed
|
|
32
|
+
* through unchanged (idempotent staging).
|
|
22
33
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
34
|
+
* The raw bytes are written once at staging time; subsequent model
|
|
35
|
+
* calls within the same step (and across all future steps of the
|
|
36
|
+
* conversation) reach the bytes via the hydration pass, never the
|
|
37
|
+
* message history. Addressing is SHA-prefixed to dedupe across turns
|
|
38
|
+
* and sessions.
|
|
27
39
|
*
|
|
28
40
|
* `adapterCtx` is the same shape the runtime hands to `deliver` and
|
|
29
|
-
* event handlers. {@link
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
41
|
+
* event handlers. {@link stageAttachmentsToSandbox} builds it from the
|
|
42
|
+
* active {@link AshContext}; tests that never produce refs can pass a
|
|
43
|
+
* stub whose accessor answers `undefined` for {@link ChannelKey} — a
|
|
44
|
+
* ref on the message will then surface as {@link AshAttachmentError}
|
|
45
|
+
* with `kind: "missing-adapter"`.
|
|
34
46
|
*
|
|
35
47
|
* This module imports Node built-ins (`node:crypto`, `node:path`) and
|
|
36
48
|
* is only safe to call from step-running code.
|
|
@@ -59,5 +71,53 @@ export declare function stageAttachmentsForAdapter(content: string | UserContent
|
|
|
59
71
|
* message into the model history. Exposed here so integration tests can
|
|
60
72
|
* exercise the same handoff without driving the full harness.
|
|
61
73
|
*/
|
|
62
|
-
export declare function
|
|
74
|
+
export declare function stageAttachmentsToSandbox(message: string | UserContent): Promise<string | UserContent>;
|
|
75
|
+
/**
|
|
76
|
+
* Hydrates `ash-sandbox:` ref `FilePart`s in a message list into the
|
|
77
|
+
* shape expected at the AI SDK model call site.
|
|
78
|
+
*
|
|
79
|
+
* Walks every message's content. For each `FilePart` whose `data` is
|
|
80
|
+
* an `ash-sandbox:` URL, branches on the ref's `mediaType` and `size`:
|
|
81
|
+
*
|
|
82
|
+
* - Images (`image/*`) with `size <= 3 MiB` are hydrated as inline
|
|
83
|
+
* bytes — the provider consumes them multimodally.
|
|
84
|
+
* - PDFs (`application/pdf`) with `size <= 20 MiB` are hydrated as
|
|
85
|
+
* inline bytes — most document-aware providers ingest PDFs natively
|
|
86
|
+
* at these sizes.
|
|
87
|
+
* - Everything else (oversized images, large PDFs, every non-image /
|
|
88
|
+
* non-PDF media type) is substituted for a {@link TextPart} of the
|
|
89
|
+
* form `Attached file <path> (<mediaType>)`. The path is the
|
|
90
|
+
* backend-native resolved sandbox path recorded on the ref, so the
|
|
91
|
+
* agent can reach the bytes through its normal filesystem tools
|
|
92
|
+
* (`read_file`, `bash`, authored tools) without the model ever
|
|
93
|
+
* receiving the payload inline. This matches the text shape
|
|
94
|
+
* compaction produces when summarizing older file attachments,
|
|
95
|
+
* giving the model one consistent way to reason about staged files.
|
|
96
|
+
*
|
|
97
|
+
* Every other shape (inline `Buffer`, remote `http(s):` URL,
|
|
98
|
+
* already-staged or unrelated `URL`) passes through unchanged, so
|
|
99
|
+
* repeated hydration is idempotent.
|
|
100
|
+
*
|
|
101
|
+
* Non-mutating: when nothing needs rewriting the input array is
|
|
102
|
+
* returned as-is (no allocation), so the common attachment-free turn
|
|
103
|
+
* pays zero overhead. When hydration is needed, a new array with new
|
|
104
|
+
* message objects is returned — the original messages (and the
|
|
105
|
+
* `session.history` that will eventually be persisted from them) are
|
|
106
|
+
* never mutated. This preserves the core invariant: `session.history`
|
|
107
|
+
* stays ref-only across step boundaries regardless of the inlining
|
|
108
|
+
* decision taken here, so every step re-evaluates the decision from
|
|
109
|
+
* the same stable wire format.
|
|
110
|
+
*
|
|
111
|
+
* The hydrated array is intended for one-shot consumption at the
|
|
112
|
+
* model call site; it must never be written back onto `session.history`
|
|
113
|
+
* or `promptMessages`, because that would defeat the whole purpose of
|
|
114
|
+
* the sandbox-ref wire format.
|
|
115
|
+
*
|
|
116
|
+
* Throws when a `SandboxKey` is required (a message contains an
|
|
117
|
+
* `ash-sandbox:` ref that will inline as bytes) but none is bound on
|
|
118
|
+
* the active context, or when the referenced payload is missing from
|
|
119
|
+
* the sandbox — both indicate a programming error elsewhere in the
|
|
120
|
+
* pipeline rather than a recoverable condition.
|
|
121
|
+
*/
|
|
122
|
+
export declare function hydrateSandboxAttachments(messages: readonly ModelMessage[]): Promise<ModelMessage[]>;
|
|
63
123
|
//# sourceMappingURL=attachment-staging.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-staging.d.ts","sourceRoot":"","sources":["../../../src/harness/attachment-staging.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment-staging.d.ts","sourceRoot":"","sources":["../../../src/harness/attachment-staging.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,YAAY,EAAY,WAAW,EAAE,MAAM,IAAI,CAAC;AAGxE,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,uBAAuB,CAAC;AAa/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AAwBzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GAAG,WAAW,EAC7B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAa/B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,GAAG,WAAW,GAC5B,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAkC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,SAAS,YAAY,EAAE,GAChC,OAAO,CAAC,YAAY,EAAE,CAAC,CA6BzB"}
|
|
@@ -7,6 +7,7 @@ import { ChannelKey, SandboxKey } from "../context/keys.js";
|
|
|
7
7
|
import { fileDataToBytes } from "../internal/attachments/data.js";
|
|
8
8
|
import { AshAttachmentError } from "../internal/attachments/errors.js";
|
|
9
9
|
import { isAttachmentRefUrl, parseAttachmentRef } from "../internal/attachments/refs.js";
|
|
10
|
+
import { decodeSandboxRef, encodeSandboxRef, isSandboxRefUrl, } from "../internal/attachments/sandbox-refs.js";
|
|
10
11
|
/**
|
|
11
12
|
* Sandbox directory where inbound file attachments are staged before the
|
|
12
13
|
* model call. Authored canonical path — {@link SandboxSession.writeFile}
|
|
@@ -15,30 +16,57 @@ import { isAttachmentRefUrl, parseAttachmentRef } from "../internal/attachments/
|
|
|
15
16
|
export const ATTACHMENTS_ROOT = "/workspace/attachments";
|
|
16
17
|
const UNSAFE_FILENAME_CHARS = /[^\w.-]+/g;
|
|
17
18
|
const SHA_PREFIX_LENGTH = 16;
|
|
19
|
+
const DEFAULT_MEDIA_TYPE = "application/octet-stream";
|
|
20
|
+
/**
|
|
21
|
+
* Upper bound, in bytes, on image payloads that hydrate as inline bytes
|
|
22
|
+
* on the model call. Larger images are substituted for a text reference
|
|
23
|
+
* pointing at the staged sandbox path so the agent can read the file
|
|
24
|
+
* through its normal filesystem tools (`read_file`, `bash`, etc.).
|
|
25
|
+
*/
|
|
26
|
+
const HYDRATE_IMAGE_INLINE_MAX_BYTES = 3 * 1024 * 1024;
|
|
27
|
+
/**
|
|
28
|
+
* Upper bound, in bytes, on PDF payloads that hydrate as inline bytes.
|
|
29
|
+
* Matches provider-side caps for native document understanding.
|
|
30
|
+
*/
|
|
31
|
+
const HYDRATE_PDF_INLINE_MAX_BYTES = 20 * 1024 * 1024;
|
|
32
|
+
const PDF_MEDIA_TYPE = "application/pdf";
|
|
33
|
+
const IMAGE_MEDIA_TYPE_PREFIX = "image/";
|
|
18
34
|
/**
|
|
19
35
|
* Writes every `FilePart` carried on the inbound turn message into the
|
|
20
|
-
* agent's sandbox
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
36
|
+
* agent's sandbox and rewrites each part so no raw bytes travel on the
|
|
37
|
+
* returned message.
|
|
38
|
+
*
|
|
39
|
+
* Each `FilePart` is transformed to carry:
|
|
40
|
+
*
|
|
41
|
+
* - `data` — an `ash-sandbox:` URL encoding `{ path, size, mediaType }`.
|
|
42
|
+
* The raw bytes are NOT attached. Sandbox URLs are small enough
|
|
43
|
+
* (typically <300 bytes) to cross step boundaries without bloating
|
|
44
|
+
* `session.history`.
|
|
45
|
+
* - `filename` — the backend-native resolved path (for example
|
|
46
|
+
* `/vercel/sandbox/workspace/attachments/<sha>/<name>` on Vercel),
|
|
47
|
+
* so tools (`read_file`, `bash`, authored tools) can access the
|
|
48
|
+
* file directly from the sandbox filesystem.
|
|
49
|
+
* - `mediaType` — preserved in parallel with the sandbox-ref's `type`
|
|
50
|
+
* param so providers and AI SDK consumers see the expected shape.
|
|
25
51
|
*
|
|
26
52
|
* Opaque `data` shapes (`ash-attachment:` refs, data URLs, bare base64
|
|
27
|
-
* strings) are resolved to
|
|
28
|
-
*
|
|
29
|
-
*
|
|
53
|
+
* strings) are resolved to bytes here before being written to the
|
|
54
|
+
* sandbox. Remote `http(s):` URLs pass through untouched — the
|
|
55
|
+
* provider fetches those directly. `ash-sandbox:` URLs are passed
|
|
56
|
+
* through unchanged (idempotent staging).
|
|
30
57
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
58
|
+
* The raw bytes are written once at staging time; subsequent model
|
|
59
|
+
* calls within the same step (and across all future steps of the
|
|
60
|
+
* conversation) reach the bytes via the hydration pass, never the
|
|
61
|
+
* message history. Addressing is SHA-prefixed to dedupe across turns
|
|
62
|
+
* and sessions.
|
|
35
63
|
*
|
|
36
64
|
* `adapterCtx` is the same shape the runtime hands to `deliver` and
|
|
37
|
-
* event handlers. {@link
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
65
|
+
* event handlers. {@link stageAttachmentsToSandbox} builds it from the
|
|
66
|
+
* active {@link AshContext}; tests that never produce refs can pass a
|
|
67
|
+
* stub whose accessor answers `undefined` for {@link ChannelKey} — a
|
|
68
|
+
* ref on the message will then surface as {@link AshAttachmentError}
|
|
69
|
+
* with `kind: "missing-adapter"`.
|
|
42
70
|
*
|
|
43
71
|
* This module imports Node built-ins (`node:crypto`, `node:path`) and
|
|
44
72
|
* is only safe to call from step-running code.
|
|
@@ -77,7 +105,7 @@ export async function stageAttachmentsForAdapter(content, sandbox, adapterCtx) {
|
|
|
77
105
|
* message into the model history. Exposed here so integration tests can
|
|
78
106
|
* exercise the same handoff without driving the full harness.
|
|
79
107
|
*/
|
|
80
|
-
export async function
|
|
108
|
+
export async function stageAttachmentsToSandbox(message) {
|
|
81
109
|
if (typeof message === "string") {
|
|
82
110
|
return message;
|
|
83
111
|
}
|
|
@@ -108,6 +136,74 @@ export async function stageAttachmentsFromContext(message) {
|
|
|
108
136
|
: { ctx: container, state: {} };
|
|
109
137
|
return stageAttachmentsForAdapter(message, sandbox, adapterCtx);
|
|
110
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Hydrates `ash-sandbox:` ref `FilePart`s in a message list into the
|
|
141
|
+
* shape expected at the AI SDK model call site.
|
|
142
|
+
*
|
|
143
|
+
* Walks every message's content. For each `FilePart` whose `data` is
|
|
144
|
+
* an `ash-sandbox:` URL, branches on the ref's `mediaType` and `size`:
|
|
145
|
+
*
|
|
146
|
+
* - Images (`image/*`) with `size <= 3 MiB` are hydrated as inline
|
|
147
|
+
* bytes — the provider consumes them multimodally.
|
|
148
|
+
* - PDFs (`application/pdf`) with `size <= 20 MiB` are hydrated as
|
|
149
|
+
* inline bytes — most document-aware providers ingest PDFs natively
|
|
150
|
+
* at these sizes.
|
|
151
|
+
* - Everything else (oversized images, large PDFs, every non-image /
|
|
152
|
+
* non-PDF media type) is substituted for a {@link TextPart} of the
|
|
153
|
+
* form `Attached file <path> (<mediaType>)`. The path is the
|
|
154
|
+
* backend-native resolved sandbox path recorded on the ref, so the
|
|
155
|
+
* agent can reach the bytes through its normal filesystem tools
|
|
156
|
+
* (`read_file`, `bash`, authored tools) without the model ever
|
|
157
|
+
* receiving the payload inline. This matches the text shape
|
|
158
|
+
* compaction produces when summarizing older file attachments,
|
|
159
|
+
* giving the model one consistent way to reason about staged files.
|
|
160
|
+
*
|
|
161
|
+
* Every other shape (inline `Buffer`, remote `http(s):` URL,
|
|
162
|
+
* already-staged or unrelated `URL`) passes through unchanged, so
|
|
163
|
+
* repeated hydration is idempotent.
|
|
164
|
+
*
|
|
165
|
+
* Non-mutating: when nothing needs rewriting the input array is
|
|
166
|
+
* returned as-is (no allocation), so the common attachment-free turn
|
|
167
|
+
* pays zero overhead. When hydration is needed, a new array with new
|
|
168
|
+
* message objects is returned — the original messages (and the
|
|
169
|
+
* `session.history` that will eventually be persisted from them) are
|
|
170
|
+
* never mutated. This preserves the core invariant: `session.history`
|
|
171
|
+
* stays ref-only across step boundaries regardless of the inlining
|
|
172
|
+
* decision taken here, so every step re-evaluates the decision from
|
|
173
|
+
* the same stable wire format.
|
|
174
|
+
*
|
|
175
|
+
* The hydrated array is intended for one-shot consumption at the
|
|
176
|
+
* model call site; it must never be written back onto `session.history`
|
|
177
|
+
* or `promptMessages`, because that would defeat the whole purpose of
|
|
178
|
+
* the sandbox-ref wire format.
|
|
179
|
+
*
|
|
180
|
+
* Throws when a `SandboxKey` is required (a message contains an
|
|
181
|
+
* `ash-sandbox:` ref that will inline as bytes) but none is bound on
|
|
182
|
+
* the active context, or when the referenced payload is missing from
|
|
183
|
+
* the sandbox — both indicate a programming error elsewhere in the
|
|
184
|
+
* pipeline rather than a recoverable condition.
|
|
185
|
+
*/
|
|
186
|
+
export async function hydrateSandboxAttachments(messages) {
|
|
187
|
+
if (!messagesContainSandboxRef(messages)) {
|
|
188
|
+
return messages;
|
|
189
|
+
}
|
|
190
|
+
const sandboxAccess = loadContext().get(SandboxKey);
|
|
191
|
+
if (sandboxAccess === undefined) {
|
|
192
|
+
throw new Error("Cannot hydrate sandbox-ref FilePart: no SandboxKey is bound on the active Ash context. " +
|
|
193
|
+
"Hydration must run inside a step scope with the framework sandbox provider installed.");
|
|
194
|
+
}
|
|
195
|
+
const sandbox = await sandboxAccess.get();
|
|
196
|
+
if (sandbox === null) {
|
|
197
|
+
throw new Error("Cannot hydrate sandbox-ref FilePart: SandboxKey is bound but no active sandbox session is available.");
|
|
198
|
+
}
|
|
199
|
+
return Promise.all(messages.map(async (message) => {
|
|
200
|
+
if (!messageContainsSandboxRef(message)) {
|
|
201
|
+
return message;
|
|
202
|
+
}
|
|
203
|
+
const content = await hydrateMessageContent(message.content, sandbox);
|
|
204
|
+
return { ...message, content };
|
|
205
|
+
}));
|
|
206
|
+
}
|
|
111
207
|
function hasFileParts(content) {
|
|
112
208
|
for (const part of content) {
|
|
113
209
|
if (part.type === "file") {
|
|
@@ -116,7 +212,102 @@ function hasFileParts(content) {
|
|
|
116
212
|
}
|
|
117
213
|
return false;
|
|
118
214
|
}
|
|
215
|
+
function messagesContainSandboxRef(messages) {
|
|
216
|
+
for (const message of messages) {
|
|
217
|
+
if (messageContainsSandboxRef(message)) {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
function messageContainsSandboxRef(message) {
|
|
224
|
+
const content = message.content;
|
|
225
|
+
if (!Array.isArray(content)) {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
for (const part of content) {
|
|
229
|
+
if (isSandboxRefFilePart(part)) {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Narrows a `UserContent` / `ModelMessage.content` element to a
|
|
237
|
+
* {@link FilePart} whose `data` is an `ash-sandbox:` ref URL.
|
|
238
|
+
*
|
|
239
|
+
* Safe on arbitrary input shapes — returns `false` for strings,
|
|
240
|
+
* `null`, non-object values, non-file parts, and file parts whose
|
|
241
|
+
* `data` is not a sandbox ref. Centralises the structural check used
|
|
242
|
+
* by the staging and hydration passes so the two stay in lockstep.
|
|
243
|
+
*/
|
|
244
|
+
function isSandboxRefFilePart(part) {
|
|
245
|
+
return (part !== null &&
|
|
246
|
+
typeof part === "object" &&
|
|
247
|
+
part.type === "file" &&
|
|
248
|
+
isSandboxRefUrl(part.data));
|
|
249
|
+
}
|
|
250
|
+
async function hydrateMessageContent(content, sandbox) {
|
|
251
|
+
if (!Array.isArray(content)) {
|
|
252
|
+
return content;
|
|
253
|
+
}
|
|
254
|
+
return Promise.all(content.map(async (part) => {
|
|
255
|
+
if (!isSandboxRefFilePart(part)) {
|
|
256
|
+
return part;
|
|
257
|
+
}
|
|
258
|
+
const filePart = part;
|
|
259
|
+
const ref = decodeSandboxRef(filePart.data);
|
|
260
|
+
if (!shouldInlineSandboxRefAsBytes(ref)) {
|
|
261
|
+
return renderSandboxRefAsTextPart(ref);
|
|
262
|
+
}
|
|
263
|
+
const bytes = await sandbox.readFileBytes(ref.path);
|
|
264
|
+
if (bytes === null) {
|
|
265
|
+
throw new Error(`Sandbox-ref FilePart references missing file: "${ref.path}". ` +
|
|
266
|
+
"The staging pipeline invariant (every ash-sandbox: ref has bytes on disk) was violated.");
|
|
267
|
+
}
|
|
268
|
+
return { ...filePart, data: bytes, mediaType: ref.mediaType };
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Decides whether a sandbox-resident attachment should flow to the
|
|
273
|
+
* model as inline bytes at the hydration step, or be substituted for a
|
|
274
|
+
* text reference pointing at the staged sandbox path.
|
|
275
|
+
*
|
|
276
|
+
* Keep this decision narrow: only the shapes every major provider
|
|
277
|
+
* supports natively qualify for byte inlining. Everything else — raw
|
|
278
|
+
* documents, archives, source code, oversized images/PDFs — reaches
|
|
279
|
+
* the model as a text reference so the agent's filesystem tools do
|
|
280
|
+
* the reading.
|
|
281
|
+
*/
|
|
282
|
+
function shouldInlineSandboxRefAsBytes(ref) {
|
|
283
|
+
if (ref.mediaType.startsWith(IMAGE_MEDIA_TYPE_PREFIX)) {
|
|
284
|
+
return ref.size <= HYDRATE_IMAGE_INLINE_MAX_BYTES;
|
|
285
|
+
}
|
|
286
|
+
if (ref.mediaType === PDF_MEDIA_TYPE) {
|
|
287
|
+
return ref.size <= HYDRATE_PDF_INLINE_MAX_BYTES;
|
|
288
|
+
}
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Renders a sandbox-resident attachment as a {@link TextPart} the model
|
|
293
|
+
* can use to reach the payload through filesystem tools.
|
|
294
|
+
*
|
|
295
|
+
* Matches the text shape produced by the compaction summarizer for
|
|
296
|
+
* `FilePart`s so the model sees one consistent surface for "there is a
|
|
297
|
+
* file at this path" regardless of whether the reference came from the
|
|
298
|
+
* current turn's hydration or a summarized older turn.
|
|
299
|
+
*/
|
|
300
|
+
function renderSandboxRefAsTextPart(ref) {
|
|
301
|
+
return { text: `Attached file ${ref.path} (${ref.mediaType})`, type: "text" };
|
|
302
|
+
}
|
|
119
303
|
async function stageFilePart(part, sandbox, adapterCtx) {
|
|
304
|
+
// Already-staged parts carry an `ash-sandbox:` URL. Pass them
|
|
305
|
+
// through unchanged so repeated staging is a no-op — important
|
|
306
|
+
// when a message re-enters the pipeline (for example, a message
|
|
307
|
+
// coalesced across multiple deliver calls).
|
|
308
|
+
if (isSandboxRefUrl(part.data)) {
|
|
309
|
+
return part;
|
|
310
|
+
}
|
|
120
311
|
const resolved = isAttachmentRefUrl(part.data)
|
|
121
312
|
? await resolveAttachmentRefViaActiveChannel(part.data, adapterCtx)
|
|
122
313
|
: null;
|
|
@@ -128,13 +319,16 @@ async function stageFilePart(part, sandbox, adapterCtx) {
|
|
|
128
319
|
const name = safeFilename(resolved?.filename ?? part.filename, sha);
|
|
129
320
|
const authored = `${ATTACHMENTS_ROOT}/${sha}/${name}`;
|
|
130
321
|
await sandbox.writeFile(authored, bytes);
|
|
131
|
-
|
|
132
|
-
|
|
322
|
+
const resolvedPath = sandbox.resolvePath(authored);
|
|
323
|
+
const mediaType = resolved?.mediaType ?? part.mediaType ?? DEFAULT_MEDIA_TYPE;
|
|
324
|
+
// `data` becomes a compact `ash-sandbox:` URL so no bytes flow into
|
|
325
|
+
// `session.history`. Bytes are rehydrated at the model call site via
|
|
326
|
+
// `hydrateSandboxAttachments`.
|
|
133
327
|
return {
|
|
134
328
|
...part,
|
|
135
|
-
data: bytes,
|
|
136
|
-
filename:
|
|
137
|
-
mediaType
|
|
329
|
+
data: encodeSandboxRef({ mediaType, path: resolvedPath, size: bytes.byteLength }),
|
|
330
|
+
filename: resolvedPath,
|
|
331
|
+
mediaType,
|
|
138
332
|
};
|
|
139
333
|
}
|
|
140
334
|
/**
|
|
@@ -146,7 +340,7 @@ async function stageFilePart(part, sandbox, adapterCtx) {
|
|
|
146
340
|
* self-documenting: this is the one place in the staging pipeline that
|
|
147
341
|
* looks up the active adapter and calls its resolver. No
|
|
148
342
|
* `AsyncLocalStorage` reads happen here — the caller (which is always
|
|
149
|
-
* {@link
|
|
343
|
+
* {@link stageAttachmentsToSandbox}) owns the ambient lookup.
|
|
150
344
|
*
|
|
151
345
|
* Always returns a normalized {@link ResolvedAttachment}. Resolvers
|
|
152
346
|
* that return a bare `Buffer` are wrapped automatically.
|