@post-print/agent-harness 2.0.10 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/agent-error.d.ts +13 -0
- package/dist/agent-error.d.ts.map +1 -1
- package/dist/agent-error.js +15 -0
- package/dist/agent-error.js.map +1 -1
- package/dist/agent-session.d.ts +2 -0
- package/dist/agent-session.d.ts.map +1 -1
- package/dist/agent-session.js +7 -2
- package/dist/agent-session.js.map +1 -1
- package/dist/agent-worker.js +5 -5
- package/dist/agent-worker.js.map +1 -1
- package/dist/capture.d.ts +2 -0
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +11 -5
- package/dist/capture.js.map +1 -1
- package/dist/claude-capture.d.ts.map +1 -1
- package/dist/claude-capture.js +5 -5
- package/dist/claude-capture.js.map +1 -1
- package/dist/claude-run.d.ts +14 -0
- package/dist/claude-run.d.ts.map +1 -1
- package/dist/claude-run.js +9 -1
- package/dist/claude-run.js.map +1 -1
- package/dist/conversation-history.d.ts +8 -0
- package/dist/conversation-history.d.ts.map +1 -0
- package/dist/conversation-history.js +14 -0
- package/dist/conversation-history.js.map +1 -0
- package/dist/host-isolation.d.ts +26 -0
- package/dist/host-isolation.d.ts.map +1 -0
- package/dist/host-isolation.js +68 -0
- package/dist/host-isolation.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/openai-capture.d.ts.map +1 -1
- package/dist/openai-capture.js +2 -2
- package/dist/openai-capture.js.map +1 -1
- package/dist/openai-run.d.ts +5 -2
- package/dist/openai-run.d.ts.map +1 -1
- package/dist/openai-run.js +13 -11
- package/dist/openai-run.js.map +1 -1
- package/dist/sealed-storage.d.ts +2 -1
- package/dist/sealed-storage.d.ts.map +1 -1
- package/dist/sealed-storage.js +3 -3
- package/dist/sealed-storage.js.map +1 -1
- package/dist/sealed-workspace.d.ts +12 -1
- package/dist/sealed-workspace.d.ts.map +1 -1
- package/dist/sealed-workspace.js +89 -45
- package/dist/sealed-workspace.js.map +1 -1
- package/dist/shell-paths.d.ts +13 -0
- package/dist/shell-paths.d.ts.map +1 -0
- package/dist/shell-paths.js +31 -0
- package/dist/shell-paths.js.map +1 -0
- package/dist/tool-images.d.ts +14 -0
- package/dist/tool-images.d.ts.map +1 -0
- package/dist/tool-images.js +58 -0
- package/dist/tool-images.js.map +1 -0
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/sealed-workspace.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
2
3
|
import { cp, mkdir, rm } from "node:fs/promises";
|
|
4
|
+
import { homedir } from "node:os";
|
|
3
5
|
import { dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
4
6
|
import { promisify } from "node:util";
|
|
7
|
+
import { WorkspaceEscapeError } from "./agent-error.js";
|
|
8
|
+
import { shellSegments } from "./shell-paths.js";
|
|
5
9
|
import { SKILL_ROOTS, skillOverlayRelPath } from "./skills-context.js";
|
|
6
10
|
import { isPathUnderRoot } from "./working-tree-guard.js";
|
|
7
11
|
const BACKSLASH = /\\/g;
|
|
@@ -119,7 +123,7 @@ export async function createSealedWorkspace(options) {
|
|
|
119
123
|
const parsed = parseScenarioWorkspace(options.workspace);
|
|
120
124
|
if (!parsed.ok)
|
|
121
125
|
throw new Error(parsed.message);
|
|
122
|
-
const sealed = await allocateSealedWorkspace(
|
|
126
|
+
const sealed = await allocateSealedWorkspace();
|
|
123
127
|
try {
|
|
124
128
|
await materializeSealedWorkspace(options, parsed.rel, sealed.path);
|
|
125
129
|
await initNestedGit(sealed.path);
|
|
@@ -130,6 +134,21 @@ export async function createSealedWorkspace(options) {
|
|
|
130
134
|
throw error;
|
|
131
135
|
}
|
|
132
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* An empty sealed workspace for read-only reviewers. It lives in the OS temp folder with
|
|
139
|
+
* its own Git root, so hosts discover no caller AGENTS.md/CLAUDE.md and no run evidence.
|
|
140
|
+
*/
|
|
141
|
+
export async function createEmptySealedWorkspace() {
|
|
142
|
+
const sealed = await allocateSealedWorkspace();
|
|
143
|
+
try {
|
|
144
|
+
await initNestedGit(sealed.path);
|
|
145
|
+
return sealed;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
await sealed.cleanup();
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
133
152
|
async function materializeSealedWorkspace(options, workspaceRel, dest) {
|
|
134
153
|
if (workspaceRel) {
|
|
135
154
|
await materializeWorkspaceFolder(options.callerCwd, workspaceRel, dest);
|
|
@@ -139,59 +158,84 @@ async function materializeSealedWorkspace(options, workspaceRel, dest) {
|
|
|
139
158
|
for (const rel of options.overlayPaths ?? [])
|
|
140
159
|
await overlayPath(options.callerCwd, dest, rel);
|
|
141
160
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const value = args[key];
|
|
149
|
-
if (typeof value === "string") {
|
|
150
|
-
paths.push(value.replace(FILE_PROTOCOL, ""));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
paths.push(...contextPathsFromCommand(args.command));
|
|
154
|
-
return paths;
|
|
161
|
+
/** Read-only toolchain roots a shell command may name without leaving the task. */
|
|
162
|
+
const SYSTEM_READ_ROOTS = ["/bin", "/usr", "/sbin", "/System", "/Library", "/opt", "/dev"];
|
|
163
|
+
const HOME_PREFIX = /^(?:~|\$HOME|\$\{HOME\})(?=\/|$)/;
|
|
164
|
+
const PATH_ARG_KEYS = ["path", "file_path", "filePath", "target_file", "uri", "cwd"];
|
|
165
|
+
function isSystemPath(absolute) {
|
|
166
|
+
return SYSTEM_READ_ROOTS.some((root) => isPathUnderRoot(absolute, root));
|
|
155
167
|
}
|
|
156
|
-
function
|
|
168
|
+
function isCursorToolOutput(path) {
|
|
169
|
+
return path.includes("/.cursor/projects/") && path.includes("/agent-tools/");
|
|
170
|
+
}
|
|
171
|
+
function expandHome(token) {
|
|
172
|
+
return token.replace(HOME_PREFIX, homedir());
|
|
173
|
+
}
|
|
174
|
+
function namedPath(raw, from) {
|
|
175
|
+
const value = expandHome(raw.replace(FILE_PROTOCOL, ""));
|
|
176
|
+
return { raw, absolute: isAbsolute(value) ? resolve(value) : resolve(from, value) };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* A shell token that names a filesystem location rather than a pattern or flag.
|
|
180
|
+
* Absolute tokens count only when their top-level directory exists, so `awk '/x/'`
|
|
181
|
+
* is not mistaken for a path.
|
|
182
|
+
*/
|
|
183
|
+
function isShellPathToken(token) {
|
|
184
|
+
const value = token.replace(TRAILING_PUNCTUATION, "");
|
|
185
|
+
if (HOME_PREFIX.test(value) || value.split("/").includes(".."))
|
|
186
|
+
return true;
|
|
187
|
+
if (!value.startsWith("/") || value.startsWith("//"))
|
|
188
|
+
return false;
|
|
189
|
+
const topLevel = `/${value.split("/")[1] ?? ""}`;
|
|
190
|
+
return topLevel !== "/" && existsSync(topLevel);
|
|
191
|
+
}
|
|
192
|
+
/** Paths named in a shell command, following `cd` so relative paths resolve correctly. */
|
|
193
|
+
function shellCommandPaths(command, cwd) {
|
|
157
194
|
const paths = [];
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
// arguments still use the complete escape check below.
|
|
165
|
-
if (path && !ignoredExecutables.has(path) && isAgentContextPath(path)) {
|
|
166
|
-
paths.push(path);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
195
|
+
let current = cwd;
|
|
196
|
+
for (const { tokens } of shellSegments(command)) {
|
|
197
|
+
const named = tokens.filter(isShellPathToken).map((token) => namedPath(token, current));
|
|
198
|
+
paths.push(...named);
|
|
199
|
+
if (tokens[0] === "cd" && tokens[1])
|
|
200
|
+
current = namedPath(tokens[1], current).absolute;
|
|
169
201
|
}
|
|
170
202
|
return paths;
|
|
171
203
|
}
|
|
172
|
-
function
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
204
|
+
function toolCallPaths(args, root) {
|
|
205
|
+
if (!args)
|
|
206
|
+
return [];
|
|
207
|
+
const cwd = typeof args.cwd === "string" ? namedPath(args.cwd, root).absolute : root;
|
|
208
|
+
const paths = PATH_ARG_KEYS.map((key) => args[key])
|
|
209
|
+
.filter((value) => typeof value === "string")
|
|
210
|
+
.map((value) => namedPath(value, root));
|
|
211
|
+
if (typeof args.pattern === "string" && isAbsolute(args.pattern))
|
|
212
|
+
paths.push(namedPath(args.pattern, root));
|
|
213
|
+
if (typeof args.command === "string")
|
|
214
|
+
paths.push(...shellCommandPaths(args.command, cwd));
|
|
215
|
+
return paths;
|
|
177
216
|
}
|
|
178
|
-
function
|
|
179
|
-
|
|
217
|
+
function escapesWorkspace(path, root) {
|
|
218
|
+
if (isCursorToolOutput(path.absolute.replaceAll("\\", "/")))
|
|
219
|
+
return false;
|
|
220
|
+
return !isPathUnderRoot(path.absolute, root) && !isSystemPath(path.absolute);
|
|
180
221
|
}
|
|
181
|
-
/**
|
|
222
|
+
/**
|
|
223
|
+
* Paths a tool call named outside the sealed workspace. Shell commands are unwrapped
|
|
224
|
+
* and scanned for absolute, home-relative, and parent-relative tokens; only read-only
|
|
225
|
+
* system toolchain roots are allowed.
|
|
226
|
+
*/
|
|
182
227
|
export function toolPathsOutsideWorkspace(trace, workspaceRoot) {
|
|
183
228
|
const root = resolve(workspaceRoot);
|
|
184
|
-
const escaped =
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (isCursorToolOutput(normalized)) {
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
if (!isPathUnderRoot(abs, root)) {
|
|
192
|
-
escaped.push(raw);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
229
|
+
const escaped = trace.toolCalls
|
|
230
|
+
.flatMap((call) => toolCallPaths(call.args, root))
|
|
231
|
+
.filter((path) => escapesWorkspace(path, root))
|
|
232
|
+
.map((path) => path.raw);
|
|
195
233
|
return [...new Set(escaped)];
|
|
196
234
|
}
|
|
235
|
+
/** Reject a trace whose tool calls named paths outside the sealed workspace. */
|
|
236
|
+
export function assertInsideWorkspace(trace, workspaceRoot) {
|
|
237
|
+
const escaped = toolPathsOutsideWorkspace(trace, workspaceRoot);
|
|
238
|
+
if (escaped.length)
|
|
239
|
+
throw new WorkspaceEscapeError(escaped, trace);
|
|
240
|
+
}
|
|
197
241
|
//# sourceMappingURL=sealed-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sealed-workspace.js","sourceRoot":"","sources":["../src/sealed-workspace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sealed-workspace.js","sourceRoot":"","sources":["../src/sealed-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** One simple command inside a shell payload, with the operator that follows it. */
|
|
2
|
+
export interface ShellSegment {
|
|
3
|
+
tokens: string[];
|
|
4
|
+
/** Operator after this segment, or undefined for the final segment. */
|
|
5
|
+
next?: "&&" | "||" | ";" | "|";
|
|
6
|
+
}
|
|
7
|
+
/** The script inside `/bin/zsh -lc "…"`, or the command itself when unwrapped. */
|
|
8
|
+
export declare function shellPayload(command: string): string;
|
|
9
|
+
/** Split a payload into simple commands, keeping the operator between them. */
|
|
10
|
+
export declare function shellSegments(command: string): ShellSegment[];
|
|
11
|
+
/** Whitespace/quote tokens with redirection prefixes and `--opt=` prefixes removed. */
|
|
12
|
+
export declare function shellTokens(segment: string): string[];
|
|
13
|
+
//# sourceMappingURL=shell-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-paths.d.ts","sourceRoot":"","sources":["../src/shell-paths.ts"],"names":[],"mappings":"AAMA,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uEAAuE;IACvE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;CAC/B;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAS7D;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAOrD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const SHELL_WRAPPER = /\s-(?:lc|c)\s+(["'])([\s\S]*)\1\s*$/;
|
|
2
|
+
const SEGMENT_SEPARATOR = /(&&|\|\||[;|])/;
|
|
3
|
+
const TOKEN_SEPARATORS = /[\s"']+/;
|
|
4
|
+
const REDIRECTION_PREFIX = /^\d*[<>]+&?/;
|
|
5
|
+
const OPTION_VALUE = /^--?[\w-]+=(.+)$/;
|
|
6
|
+
/** The script inside `/bin/zsh -lc "…"`, or the command itself when unwrapped. */
|
|
7
|
+
export function shellPayload(command) {
|
|
8
|
+
return command.match(SHELL_WRAPPER)?.[2] ?? command;
|
|
9
|
+
}
|
|
10
|
+
/** Split a payload into simple commands, keeping the operator between them. */
|
|
11
|
+
export function shellSegments(command) {
|
|
12
|
+
const parts = shellPayload(command).split(SEGMENT_SEPARATOR);
|
|
13
|
+
const segments = [];
|
|
14
|
+
for (let index = 0; index < parts.length; index += 2) {
|
|
15
|
+
const tokens = shellTokens(parts[index] ?? "");
|
|
16
|
+
const next = parts[index + 1];
|
|
17
|
+
if (tokens.length)
|
|
18
|
+
segments.push({ tokens, next });
|
|
19
|
+
}
|
|
20
|
+
return segments;
|
|
21
|
+
}
|
|
22
|
+
/** Whitespace/quote tokens with redirection prefixes and `--opt=` prefixes removed. */
|
|
23
|
+
export function shellTokens(segment) {
|
|
24
|
+
return segment
|
|
25
|
+
.trim()
|
|
26
|
+
.split(TOKEN_SEPARATORS)
|
|
27
|
+
.map((token) => token.replace(REDIRECTION_PREFIX, ""))
|
|
28
|
+
.map((token) => token.match(OPTION_VALUE)?.[1] ?? token)
|
|
29
|
+
.filter(Boolean);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=shell-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-paths.js","sourceRoot":"","sources":["../src/shell-paths.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAC5D,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAC3C,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AASxC,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AACrD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,OAAe;IAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAyB,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,WAAW,CAAC,OAAe;IAC1C,OAAO,OAAO;SACZ,IAAI,EAAE;SACN,KAAK,CAAC,gBAAgB,CAAC;SACvB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;SACrD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;SACvD,MAAM,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AgentToolImage } from "./types.js";
|
|
2
|
+
/** Largest decoded image kept inline on a tool call. Larger images keep only their metadata. */
|
|
3
|
+
export declare const MAX_INLINE_IMAGE_BYTES: number;
|
|
4
|
+
/** Images kept inline per tool call; later images keep only their metadata. */
|
|
5
|
+
export declare const MAX_INLINE_IMAGES_PER_TOOL_CALL = 4;
|
|
6
|
+
/**
|
|
7
|
+
* Split a host tool result into text and images. Image blocks become a short
|
|
8
|
+
* `[image: …]` marker in the text so traces, assertions, and judges never carry base64.
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractToolImages(result: unknown): {
|
|
11
|
+
value: unknown;
|
|
12
|
+
images: AgentToolImage[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=tool-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-images.d.ts","sourceRoot":"","sources":["../src/tool-images.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,gGAAgG;AAChG,eAAO,MAAM,sBAAsB,QAAa,CAAC;AACjD,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAKjD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,cAAc,EAAE,CAAA;CAAE,CAI/F"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** Largest decoded image kept inline on a tool call. Larger images keep only their metadata. */
|
|
2
|
+
export const MAX_INLINE_IMAGE_BYTES = 256 * 1024;
|
|
3
|
+
/** Images kept inline per tool call; later images keep only their metadata. */
|
|
4
|
+
export const MAX_INLINE_IMAGES_PER_TOOL_CALL = 4;
|
|
5
|
+
const MAX_RESULT_DEPTH = 8;
|
|
6
|
+
/**
|
|
7
|
+
* Split a host tool result into text and images. Image blocks become a short
|
|
8
|
+
* `[image: …]` marker in the text so traces, assertions, and judges never carry base64.
|
|
9
|
+
*/
|
|
10
|
+
export function extractToolImages(result) {
|
|
11
|
+
const images = [];
|
|
12
|
+
const value = replaceImageBlocks(result, images, 0);
|
|
13
|
+
return { value, images };
|
|
14
|
+
}
|
|
15
|
+
function replaceImageBlocks(value, images, depth) {
|
|
16
|
+
if (depth > MAX_RESULT_DEPTH || value === null || typeof value !== "object")
|
|
17
|
+
return value;
|
|
18
|
+
if (Array.isArray(value))
|
|
19
|
+
return value.map((item) => replaceImageBlocks(item, images, depth + 1));
|
|
20
|
+
const block = imageBlock(value);
|
|
21
|
+
if (block)
|
|
22
|
+
return imageMarker(keepImage(block, images));
|
|
23
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, replaceImageBlocks(item, images, depth + 1)]));
|
|
24
|
+
}
|
|
25
|
+
/** Claude `{ source: { type: "base64" } }` and MCP `{ data, mimeType }` image content blocks. */
|
|
26
|
+
function imageBlock(record) {
|
|
27
|
+
if (record.type !== "image")
|
|
28
|
+
return undefined;
|
|
29
|
+
const source = record.source;
|
|
30
|
+
if (source?.type === "base64" && typeof source.data === "string")
|
|
31
|
+
return { mediaType: String(source.media_type ?? "image/*"), data: source.data };
|
|
32
|
+
if (typeof record.data === "string" && typeof record.mimeType === "string")
|
|
33
|
+
return { mediaType: record.mimeType, data: record.data };
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
function keepImage(block, images) {
|
|
37
|
+
const bytes = decodedBase64Bytes(block.data);
|
|
38
|
+
const inline = bytes <= MAX_INLINE_IMAGE_BYTES &&
|
|
39
|
+
images.filter((image) => image.data).length < MAX_INLINE_IMAGES_PER_TOOL_CALL;
|
|
40
|
+
const image = {
|
|
41
|
+
mediaType: block.mediaType,
|
|
42
|
+
bytes,
|
|
43
|
+
...(inline ? { data: block.data } : {}),
|
|
44
|
+
};
|
|
45
|
+
images.push(image);
|
|
46
|
+
return image;
|
|
47
|
+
}
|
|
48
|
+
function imageMarker(image) {
|
|
49
|
+
const size = `${Math.max(1, Math.round(image.bytes / 1024))} KB`;
|
|
50
|
+
return image.data
|
|
51
|
+
? `[image: ${image.mediaType}, ${size}]`
|
|
52
|
+
: `[image omitted: ${image.mediaType}, ${size}]`;
|
|
53
|
+
}
|
|
54
|
+
function decodedBase64Bytes(data) {
|
|
55
|
+
const padding = data.endsWith("==") ? 2 : data.endsWith("=") ? 1 : 0;
|
|
56
|
+
return Math.max(0, Math.floor((data.length * 3) / 4) - padding);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=tool-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-images.js","sourceRoot":"","sources":["../src/tool-images.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -23,8 +23,10 @@ export interface AgentMessage {
|
|
|
23
23
|
export interface AgentToolCall {
|
|
24
24
|
name: string;
|
|
25
25
|
args?: Record<string, unknown>;
|
|
26
|
-
/** Tool output when the SDK stream includes it (including MCP tools). */
|
|
26
|
+
/** Tool output when the SDK stream includes it (including MCP tools). Images appear as `[image: …]` markers. */
|
|
27
27
|
result?: string;
|
|
28
|
+
/** Images the tool returned, with inline base64 only when within the size budget. */
|
|
29
|
+
images?: AgentToolImage[];
|
|
28
30
|
/** Structured execution outcome when the host reports one. */
|
|
29
31
|
succeeded?: boolean;
|
|
30
32
|
/** Exact process exit code when the host reports one. */
|
|
@@ -32,6 +34,12 @@ export interface AgentToolCall {
|
|
|
32
34
|
/** Monotonic emission order shared with messages, for chronological interleaving. Absent on legacy traces. */
|
|
33
35
|
seq?: number;
|
|
34
36
|
}
|
|
37
|
+
/** An image a tool returned. `data` is base64 and absent when the image exceeded the inline budget. */
|
|
38
|
+
export interface AgentToolImage {
|
|
39
|
+
mediaType: string;
|
|
40
|
+
bytes: number;
|
|
41
|
+
data?: string;
|
|
42
|
+
}
|
|
35
43
|
/** Provider-reported token usage when the host SDK surfaces it. */
|
|
36
44
|
export interface AgentUsage {
|
|
37
45
|
inputTokens?: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,YAAI,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AACjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAIzD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAE3E;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D;AAED,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,8DAA8D;AAC9D,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,kBAAkB,CAAC;AAE7D,YAAY,EACX,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,oEAAoE;AACpE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,+GAA+G;IAC/G,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|