@aexhq/sdk 0.21.0 → 0.22.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.
@@ -10,6 +10,7 @@ export * from "./event-envelope.js";
10
10
  export * from "./connection-ticket.js";
11
11
  export * from "./event-stream-client.js";
12
12
  export * from "./run-unit.js";
13
+ export * from "./run-trace.js";
13
14
  export * from "./runtime-manifest.js";
14
15
  export * from "./runtime-security-profile.js";
15
16
  export * from "./run-record.js";
@@ -10,6 +10,7 @@ export * from "./event-envelope.js";
10
10
  export * from "./connection-ticket.js";
11
11
  export * from "./event-stream-client.js";
12
12
  export * from "./run-unit.js";
13
+ export * from "./run-trace.js";
13
14
  export * from "./runtime-manifest.js";
14
15
  export * from "./runtime-security-profile.js";
15
16
  export * from "./run-record.js";
@@ -106,6 +106,29 @@ export type AgentsMdRef = AssetRef;
106
106
  export declare function isAgentsMdAssetRef(ref: AgentsMdRef): ref is AssetRef;
107
107
  export type FileRef = AssetRef;
108
108
  export declare function isFileAssetRef(ref: FileRef): ref is AssetRef;
109
+ /**
110
+ * The default mount DIRECTORY a `File` unzips into when the caller does not set
111
+ * `mountPath`. `/workspace` is also the agent's default working directory, so a
112
+ * file handed with no `mountPath` lands directly in the agent's cwd (e.g.
113
+ * `/workspace/source-video-subtitles.srt`).
114
+ */
115
+ export declare const DEFAULT_FILE_MOUNT_PATH = "/workspace";
116
+ /**
117
+ * A `mountPath` is an ABSOLUTE container directory under the workspace. It must
118
+ * start with `/`, contain no `..`/`.` traversal or NUL/backslash, and stay
119
+ * within {@link MOUNT_PATH_MAX_LENGTH}. The managed runtime rebases it under the
120
+ * workspace root, so a path outside `/workspace` is clamped there — the pattern
121
+ * just rejects obviously-malformed input at the SDK/BFF boundary. A trailing
122
+ * slash is allowed (it is a directory) but not required.
123
+ */
124
+ export declare const MOUNT_PATH_PATTERN: RegExp;
125
+ export declare const MOUNT_PATH_MAX_LENGTH = 512;
126
+ /**
127
+ * Validate a `File.mountPath` (an absolute container directory). Shared by the
128
+ * SDK `File` builders and the BFF asset-ref parser so both reject the same
129
+ * malformed input. Throws with `field` context on failure.
130
+ */
131
+ export declare function assertValidMountPath(value: string, field: string): void;
109
132
  /**
110
133
  * Parse a `SkillRef` from untrusted input. Used by the BFF run parser
111
134
  * and by the operations module when deserialising API responses. Only
@@ -99,6 +99,45 @@ export function isAgentsMdAssetRef(ref) {
99
99
  export function isFileAssetRef(ref) {
100
100
  return ref.kind === "asset";
101
101
  }
102
+ /**
103
+ * The default mount DIRECTORY a `File` unzips into when the caller does not set
104
+ * `mountPath`. `/workspace` is also the agent's default working directory, so a
105
+ * file handed with no `mountPath` lands directly in the agent's cwd (e.g.
106
+ * `/workspace/source-video-subtitles.srt`).
107
+ */
108
+ export const DEFAULT_FILE_MOUNT_PATH = "/workspace";
109
+ /**
110
+ * A `mountPath` is an ABSOLUTE container directory under the workspace. It must
111
+ * start with `/`, contain no `..`/`.` traversal or NUL/backslash, and stay
112
+ * within {@link MOUNT_PATH_MAX_LENGTH}. The managed runtime rebases it under the
113
+ * workspace root, so a path outside `/workspace` is clamped there — the pattern
114
+ * just rejects obviously-malformed input at the SDK/BFF boundary. A trailing
115
+ * slash is allowed (it is a directory) but not required.
116
+ */
117
+ export const MOUNT_PATH_PATTERN = /^\/(?:[^/\0\\]+\/?)*$/;
118
+ export const MOUNT_PATH_MAX_LENGTH = 512;
119
+ /**
120
+ * Validate a `File.mountPath` (an absolute container directory). Shared by the
121
+ * SDK `File` builders and the BFF asset-ref parser so both reject the same
122
+ * malformed input. Throws with `field` context on failure.
123
+ */
124
+ export function assertValidMountPath(value, field) {
125
+ if (value.length === 0 || value.length > MOUNT_PATH_MAX_LENGTH) {
126
+ throw new Error(`${field} must be 1..${MOUNT_PATH_MAX_LENGTH} chars`);
127
+ }
128
+ if (!value.startsWith("/")) {
129
+ throw new Error(`${field} must be an absolute path starting with '/'`);
130
+ }
131
+ if (value.includes("\0") || value.includes("\\")) {
132
+ throw new Error(`${field} must not contain NUL or backslash`);
133
+ }
134
+ if (value.split("/").some((seg) => seg === "..")) {
135
+ throw new Error(`${field} must not contain '..' traversal segments`);
136
+ }
137
+ if (!MOUNT_PATH_PATTERN.test(value)) {
138
+ throw new Error(`${field} must match ${MOUNT_PATH_PATTERN.source}`);
139
+ }
140
+ }
102
141
  /**
103
142
  * Parse a `SkillRef` from untrusted input. Used by the BFF run parser
104
143
  * and by the operations module when deserialising API responses. Only
@@ -162,8 +201,11 @@ export function parseAssetRefFields(record, path) {
162
201
  throw new Error(`${path}.name must be a non-empty string (<= 128 chars)`);
163
202
  }
164
203
  const mountPath = record.mountPath;
165
- if (mountPath !== undefined && (typeof mountPath !== "string" || mountPath.length === 0)) {
166
- throw new Error(`${path}.mountPath, when provided, must be a non-empty string`);
204
+ if (mountPath !== undefined) {
205
+ if (typeof mountPath !== "string") {
206
+ throw new Error(`${path}.mountPath, when provided, must be a string`);
207
+ }
208
+ assertValidMountPath(mountPath, `${path}.mountPath`);
167
209
  }
168
210
  return {
169
211
  kind: "asset",
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Typed decoders for a `listEvents(runId)` stream.
3
+ *
4
+ * `listEvents` returns the loose {@link RunEvent} wire shape: `type` at the top
5
+ * level, but the tool name at `data.name`, the call args at `data.arguments`,
6
+ * assistant text at `data.text`, and — the awkward part — a `TOOL_CALL_RESULT`
7
+ * carries no name, so a consumer must correlate each result back to its
8
+ * `TOOL_CALL_START` by `data.id` (the tool-call id). Every consumer ended up
9
+ * re-implementing that correlation; these helpers do it once, typed and pure.
10
+ *
11
+ * They are total and side-effect-free: pass the array `listEvents` returns and
12
+ * get back structured traces. Unknown event types are ignored (forward-compat),
13
+ * a result with no matching start surfaces as an orphan (never dropped silently),
14
+ * and timing falls back gracefully when a `recordedAt` is absent.
15
+ *
16
+ * Pairs with {@link Run.usage}: while a run executes `Run.usage` is empty — the
17
+ * per-turn token counts live ONLY in the `aex.usage` CUSTOM events — so
18
+ * {@link summarizeRunUsage} reconstructs the running total from the same stream.
19
+ */
20
+ import type { UsageSummary } from "./runtime-types.js";
21
+ /**
22
+ * One decoded tool call: the `TOOL_CALL_START` and its correlated
23
+ * `TOOL_CALL_RESULT` (when present), with timing. `result` is undefined while a
24
+ * call is still in flight (the start has arrived but not the result), so a
25
+ * mid-run decode shows in-progress calls honestly rather than dropping them.
26
+ */
27
+ export interface ToolCallTrace {
28
+ /** The tool-call id (`data.id`) that pairs the start with its result. */
29
+ readonly id: string;
30
+ /** The tool name (from the `TOOL_CALL_START`). */
31
+ readonly name: string;
32
+ /** The call arguments (`data.arguments`), or `{}` when absent. */
33
+ readonly args: Readonly<Record<string, unknown>>;
34
+ /** The id of the assistant message that issued the call, when present. */
35
+ readonly messageId?: string;
36
+ /** Event sequence of the `TOOL_CALL_START` (ordering within the run). */
37
+ readonly startSeq?: number;
38
+ /** ISO-8601 time of the `TOOL_CALL_START`, when the event carried one. */
39
+ readonly startedAt?: string;
40
+ /** The correlated result; undefined while the call is still in flight. */
41
+ readonly result?: ToolCallResult;
42
+ /** Result wall-clock minus start wall-clock (ms); undefined if either time is missing. */
43
+ readonly durationMs?: number;
44
+ }
45
+ /** The result half of a {@link ToolCallTrace}, decoded from `TOOL_CALL_RESULT`. */
46
+ export interface ToolCallResult {
47
+ /** True when the tool reported an error (`data.isError`). */
48
+ readonly isError: boolean;
49
+ /** The tool's result content, passed through verbatim (`data.content`). */
50
+ readonly content: unknown;
51
+ /** Event sequence of the `TOOL_CALL_RESULT`. */
52
+ readonly seq?: number;
53
+ /** ISO-8601 time of the `TOOL_CALL_RESULT`, when the event carried one. */
54
+ readonly recordedAt?: string;
55
+ }
56
+ /** One assistant text block, decoded from a `TEXT_MESSAGE_CONTENT` event. */
57
+ export interface AssistantTextEntry {
58
+ readonly text: string;
59
+ readonly messageId?: string;
60
+ readonly seq?: number;
61
+ readonly recordedAt?: string;
62
+ }
63
+ /**
64
+ * A decoded view of a run's event stream: the correlated tool calls, the
65
+ * aggregate token usage, and the assistant text — everything a consumer
66
+ * previously hand-decoded from `listEvents`.
67
+ */
68
+ export interface RunTrace {
69
+ readonly toolCalls: readonly ToolCallTrace[];
70
+ readonly usage: UsageSummary;
71
+ readonly text: readonly AssistantTextEntry[];
72
+ }
73
+ /** The loose event shape these decoders read — the {@link RunEvent} subset they touch. */
74
+ interface TraceEvent {
75
+ readonly type: string;
76
+ readonly seq?: number;
77
+ readonly recordedAt?: string;
78
+ readonly data?: unknown;
79
+ readonly [key: string]: unknown;
80
+ }
81
+ /**
82
+ * Decode a `listEvents` stream into correlated tool-call traces, in start order.
83
+ *
84
+ * Each `TOOL_CALL_START` opens a trace keyed by `data.id`; the matching
85
+ * `TOOL_CALL_RESULT` (same `data.id`) fills in `result` + `durationMs`. A result
86
+ * whose id never had a start is surfaced as an orphan trace (empty `name`, no
87
+ * `args`) rather than dropped, so a partial/mis-ordered stream never hides a
88
+ * result. Pure — no I/O, input is not mutated.
89
+ */
90
+ export declare function decodeToolCalls(events: readonly TraceEvent[]): readonly ToolCallTrace[];
91
+ /**
92
+ * Sum the per-turn `aex.usage` CUSTOM events into one {@link UsageSummary} —
93
+ * the running token total a customer otherwise hand-sums while watching a run.
94
+ * `totalTokens` is the sum of input + output tokens. Pure.
95
+ */
96
+ export declare function summarizeRunUsage(events: readonly TraceEvent[]): UsageSummary;
97
+ /** Decode the assistant text blocks (`TEXT_MESSAGE_CONTENT`) in stream order. Pure. */
98
+ export declare function decodeAssistantText(events: readonly TraceEvent[]): readonly AssistantTextEntry[];
99
+ /**
100
+ * Decode a whole `listEvents` stream in one pass: correlated tool calls,
101
+ * aggregate {@link UsageSummary}, and assistant text. Convenience over the three
102
+ * focused decoders; pure.
103
+ */
104
+ export declare function summarizeRunTrace(events: readonly TraceEvent[]): RunTrace;
105
+ export {};
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Typed decoders for a `listEvents(runId)` stream.
3
+ *
4
+ * `listEvents` returns the loose {@link RunEvent} wire shape: `type` at the top
5
+ * level, but the tool name at `data.name`, the call args at `data.arguments`,
6
+ * assistant text at `data.text`, and — the awkward part — a `TOOL_CALL_RESULT`
7
+ * carries no name, so a consumer must correlate each result back to its
8
+ * `TOOL_CALL_START` by `data.id` (the tool-call id). Every consumer ended up
9
+ * re-implementing that correlation; these helpers do it once, typed and pure.
10
+ *
11
+ * They are total and side-effect-free: pass the array `listEvents` returns and
12
+ * get back structured traces. Unknown event types are ignored (forward-compat),
13
+ * a result with no matching start surfaces as an orphan (never dropped silently),
14
+ * and timing falls back gracefully when a `recordedAt` is absent.
15
+ *
16
+ * Pairs with {@link Run.usage}: while a run executes `Run.usage` is empty — the
17
+ * per-turn token counts live ONLY in the `aex.usage` CUSTOM events — so
18
+ * {@link summarizeRunUsage} reconstructs the running total from the same stream.
19
+ */
20
+ const CUSTOM_USAGE_NAME = "aex.usage";
21
+ /** snake_case `aex.usage` field → the camelCase {@link UsageSummary} field. */
22
+ const USAGE_FIELD_MAP = {
23
+ input_tokens: "inputTokens",
24
+ output_tokens: "outputTokens",
25
+ cache_read_input_tokens: "cacheReadInputTokens",
26
+ cache_creation_input_tokens: "cacheCreationInputTokens"
27
+ };
28
+ /**
29
+ * Decode a `listEvents` stream into correlated tool-call traces, in start order.
30
+ *
31
+ * Each `TOOL_CALL_START` opens a trace keyed by `data.id`; the matching
32
+ * `TOOL_CALL_RESULT` (same `data.id`) fills in `result` + `durationMs`. A result
33
+ * whose id never had a start is surfaced as an orphan trace (empty `name`, no
34
+ * `args`) rather than dropped, so a partial/mis-ordered stream never hides a
35
+ * result. Pure — no I/O, input is not mutated.
36
+ */
37
+ export function decodeToolCalls(events) {
38
+ const order = [];
39
+ const byId = new Map();
40
+ for (const event of events) {
41
+ const data = asRecord(event.data);
42
+ if (event.type === "TOOL_CALL_START") {
43
+ const id = asString(data.id);
44
+ if (id === undefined)
45
+ continue;
46
+ const trace = {
47
+ id,
48
+ name: asString(data.name) ?? "",
49
+ args: asRecord(data.arguments)
50
+ };
51
+ const messageId = asString(data.messageId);
52
+ if (messageId !== undefined)
53
+ trace.messageId = messageId;
54
+ if (typeof event.seq === "number")
55
+ trace.startSeq = event.seq;
56
+ if (typeof event.recordedAt === "string")
57
+ trace.startedAt = event.recordedAt;
58
+ if (!byId.has(id))
59
+ order.push(id);
60
+ byId.set(id, trace);
61
+ continue;
62
+ }
63
+ if (event.type === "TOOL_CALL_RESULT") {
64
+ const id = asString(data.id);
65
+ if (id === undefined)
66
+ continue;
67
+ const result = {
68
+ isError: data.isError === true,
69
+ content: data.content ?? null
70
+ };
71
+ if (typeof event.seq === "number")
72
+ result.seq = event.seq;
73
+ if (typeof event.recordedAt === "string")
74
+ result.recordedAt = event.recordedAt;
75
+ let trace = byId.get(id);
76
+ if (trace === undefined) {
77
+ // Orphan result (no matching start) — surface it, never drop it.
78
+ trace = { id, name: "", args: {} };
79
+ order.push(id);
80
+ byId.set(id, trace);
81
+ }
82
+ trace.result = result;
83
+ const duration = durationMs(trace.startedAt, result.recordedAt);
84
+ if (duration !== undefined)
85
+ trace.durationMs = duration;
86
+ continue;
87
+ }
88
+ }
89
+ return order.map((id) => byId.get(id));
90
+ }
91
+ /**
92
+ * Sum the per-turn `aex.usage` CUSTOM events into one {@link UsageSummary} —
93
+ * the running token total a customer otherwise hand-sums while watching a run.
94
+ * `totalTokens` is the sum of input + output tokens. Pure.
95
+ */
96
+ export function summarizeRunUsage(events) {
97
+ const totals = { inputTokens: 0, outputTokens: 0, cacheReadInputTokens: 0, cacheCreationInputTokens: 0 };
98
+ let seen = false;
99
+ for (const event of events) {
100
+ if (event.type !== "CUSTOM")
101
+ continue;
102
+ const data = asRecord(event.data);
103
+ if (asString(data.name) !== CUSTOM_USAGE_NAME)
104
+ continue;
105
+ const value = asRecord(data.value);
106
+ for (const [snake, camel] of Object.entries(USAGE_FIELD_MAP)) {
107
+ const n = value[snake];
108
+ if (typeof n === "number" && Number.isFinite(n)) {
109
+ totals[camel] += n;
110
+ seen = true;
111
+ }
112
+ }
113
+ }
114
+ if (!seen)
115
+ return {};
116
+ return {
117
+ inputTokens: totals.inputTokens,
118
+ outputTokens: totals.outputTokens,
119
+ cacheReadInputTokens: totals.cacheReadInputTokens,
120
+ cacheCreationInputTokens: totals.cacheCreationInputTokens,
121
+ totalTokens: totals.inputTokens + totals.outputTokens
122
+ };
123
+ }
124
+ /** Decode the assistant text blocks (`TEXT_MESSAGE_CONTENT`) in stream order. Pure. */
125
+ export function decodeAssistantText(events) {
126
+ const out = [];
127
+ for (const event of events) {
128
+ if (event.type !== "TEXT_MESSAGE_CONTENT")
129
+ continue;
130
+ const data = asRecord(event.data);
131
+ const text = asString(data.text);
132
+ if (text === undefined)
133
+ continue;
134
+ const entry = { text };
135
+ const messageId = asString(data.messageId);
136
+ if (messageId !== undefined)
137
+ entry.messageId = messageId;
138
+ if (typeof event.seq === "number")
139
+ entry.seq = event.seq;
140
+ if (typeof event.recordedAt === "string")
141
+ entry.recordedAt = event.recordedAt;
142
+ out.push(entry);
143
+ }
144
+ return out;
145
+ }
146
+ /**
147
+ * Decode a whole `listEvents` stream in one pass: correlated tool calls,
148
+ * aggregate {@link UsageSummary}, and assistant text. Convenience over the three
149
+ * focused decoders; pure.
150
+ */
151
+ export function summarizeRunTrace(events) {
152
+ return {
153
+ toolCalls: decodeToolCalls(events),
154
+ usage: summarizeRunUsage(events),
155
+ text: decodeAssistantText(events)
156
+ };
157
+ }
158
+ function asRecord(value) {
159
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
160
+ }
161
+ function asString(value) {
162
+ return typeof value === "string" ? value : undefined;
163
+ }
164
+ function durationMs(start, end) {
165
+ if (start === undefined || end === undefined)
166
+ return undefined;
167
+ const a = Date.parse(start);
168
+ const b = Date.parse(end);
169
+ if (!Number.isFinite(a) || !Number.isFinite(b))
170
+ return undefined;
171
+ const delta = b - a;
172
+ return delta >= 0 ? delta : undefined;
173
+ }
174
+ //# sourceMappingURL=run-trace.js.map
@@ -62,6 +62,21 @@ export interface RuntimeManifest {
62
62
  * resolves against this exact map.
63
63
  */
64
64
  readonly envVars: Readonly<Record<string, string>>;
65
+ /**
66
+ * The resolved in-container mount DIRECTORY of each submitted `File`, so the
67
+ * caller can learn where a handed file landed. `mountPath` is the validated
68
+ * directory the archive unzipped into (the SDK default is `/workspace`); a
69
+ * single file lands at `<mountPath>/<realFilename>`, a folder lands its entries
70
+ * under `<mountPath>/`. Empty when the run carried no files.
71
+ */
72
+ readonly mountedFiles: readonly MountedFileManifest[];
73
+ }
74
+ /** One submitted `File`'s resolved mount directory (surfaced on the Run record). */
75
+ export interface MountedFileManifest {
76
+ /** The file's storage slug (`FileRef.name`). */
77
+ readonly name: string;
78
+ /** Absolute container directory the file unzipped into (defaults to `/workspace`). */
79
+ readonly mountPath: string;
65
80
  }
66
81
  /**
67
82
  * Managed-runner container paths. Kept here so the BFF, worker, and
@@ -96,6 +111,15 @@ export interface BuildRuntimeManifestInput {
96
111
  * (or a future bypass) can't poison the manifest.
97
112
  */
98
113
  readonly customerEnvVars?: Readonly<Record<string, string>> | undefined;
114
+ /**
115
+ * The validated submission's `files` refs. Each resolves to one
116
+ * {@link MountedFileManifest} entry surfacing the resolved mount directory
117
+ * (the SDK default is `/workspace`). Absent / non-array ⇒ no mounted files.
118
+ */
119
+ readonly files?: readonly {
120
+ readonly name?: unknown;
121
+ readonly mountPath?: unknown;
122
+ }[] | undefined;
99
123
  }
100
124
  /**
101
125
  * Build the runtime manifest for a single submission. Pure function:
@@ -53,6 +53,13 @@ export function runtimePathsFor(provider) {
53
53
  * need the submission parser.
54
54
  */
55
55
  const AEX_PREFIX = "AEX_";
56
+ /**
57
+ * Default mount DIRECTORY for a `File` with no explicit `mountPath`. Mirrors
58
+ * `DEFAULT_FILE_MOUNT_PATH` in `run-config.ts`; duplicated here so this module
59
+ * stays self-contained (tree-shakeable) — the same reason {@link AEX_PREFIX}
60
+ * is inlined rather than imported from the submission parser.
61
+ */
62
+ const DEFAULT_FILE_MOUNT_PATH = "/workspace";
56
63
  /**
57
64
  * Build the runtime manifest for a single submission. Pure function:
58
65
  * same input → same output → safe to call from the BFF response path
@@ -82,6 +89,13 @@ export function buildRuntimeManifest(input) {
82
89
  customerEnvVars[key] = value;
83
90
  }
84
91
  const envVars = Object.freeze({ ...aexEnvVars, ...customerEnvVars });
92
+ const mountedFiles = [];
93
+ for (const f of Array.isArray(input.files) ? input.files : []) {
94
+ if (typeof f.name !== "string" || f.name.length === 0)
95
+ continue;
96
+ const mountPath = typeof f.mountPath === "string" && f.mountPath.length > 0 ? f.mountPath : DEFAULT_FILE_MOUNT_PATH;
97
+ mountedFiles.push(Object.freeze({ name: f.name, mountPath }));
98
+ }
85
99
  return Object.freeze({
86
100
  provider: input.provider,
87
101
  skillsRoot: paths.skillsRoot,
@@ -92,7 +106,8 @@ export function buildRuntimeManifest(input) {
92
106
  readme: paths.readme,
93
107
  runtimeJson: paths.runtimeJson,
94
108
  runtimeEnv: paths.runtimeEnv,
95
- envVars
109
+ envVars,
110
+ mountedFiles: Object.freeze(mountedFiles)
96
111
  });
97
112
  }
98
113
  //# sourceMappingURL=runtime-manifest.js.map
@@ -16,7 +16,24 @@ export interface Run {
16
16
  readonly createdAt?: string;
17
17
  readonly updatedAt?: string;
18
18
  readonly terminalAt?: string | null;
19
+ /**
20
+ * The run's EXECUTION start (ISO-8601) — when the agent actually began
21
+ * running, distinct from {@link createdAt} (submission/accept time). Present
22
+ * from the moment the run starts executing and throughout its live duration;
23
+ * absent before it starts and after the run's live object is torn down (a
24
+ * terminal run also carries {@link terminalAt} and {@link costTelemetry}
25
+ * durations).
26
+ */
27
+ readonly startedAt?: string;
19
28
  readonly errorMessage?: string | null;
29
+ /**
30
+ * Aggregate token usage. NOTE: mid-run this is NOT populated — detailed
31
+ * token counts live ONLY in the per-turn `aex.usage` CUSTOM events on the
32
+ * event stream until the run settles. To follow token/cost progress while a
33
+ * run executes, decode the event stream with `summarizeRunTrace(events)`
34
+ * (its `usage` totals the `aex.usage` events). Settled cost/usage rides
35
+ * {@link costTelemetry}.
36
+ */
20
37
  readonly usage?: UsageSummary;
21
38
  readonly costTelemetry?: import("./run-cost.js").RunCostTelemetry;
22
39
  readonly runtimeManifest?: import("./runtime-manifest.js").RuntimeManifest;
@@ -1526,9 +1526,8 @@ function parseFiles(input) {
1526
1526
  throw new Error(`submission.files duplicate assetId: ${fields.assetId}`);
1527
1527
  }
1528
1528
  seenAssetId.add(fields.assetId);
1529
- if (fields.mountPath !== undefined && !fields.mountPath.startsWith("/")) {
1530
- throw new Error(`${path}.mountPath must start with '/' if provided`);
1531
- }
1529
+ // mountPath is validated as an absolute container directory by
1530
+ // parseAssetRefFields → assertValidMountPath (above), so no extra check here.
1532
1531
  return fields.mountPath !== undefined
1533
1532
  ? { kind: "asset", assetId: fields.assetId, name: fields.name, mountPath: fields.mountPath }
1534
1533
  : { kind: "asset", assetId: fields.assetId, name: fields.name };
package/dist/cli.mjs CHANGED
@@ -350,6 +350,25 @@ var SKILL_BUNDLE_LIMITS = {
350
350
  defaultDirMode: 493
351
351
  };
352
352
  var ASSET_ID_PATTERN = /^asset_[A-Za-z0-9_-]{8,128}$/;
353
+ var MOUNT_PATH_PATTERN = /^\/(?:[^/\0\\]+\/?)*$/;
354
+ var MOUNT_PATH_MAX_LENGTH = 512;
355
+ function assertValidMountPath(value, field) {
356
+ if (value.length === 0 || value.length > MOUNT_PATH_MAX_LENGTH) {
357
+ throw new Error(`${field} must be 1..${MOUNT_PATH_MAX_LENGTH} chars`);
358
+ }
359
+ if (!value.startsWith("/")) {
360
+ throw new Error(`${field} must be an absolute path starting with '/'`);
361
+ }
362
+ if (value.includes("\0") || value.includes("\\")) {
363
+ throw new Error(`${field} must not contain NUL or backslash`);
364
+ }
365
+ if (value.split("/").some((seg) => seg === "..")) {
366
+ throw new Error(`${field} must not contain '..' traversal segments`);
367
+ }
368
+ if (!MOUNT_PATH_PATTERN.test(value)) {
369
+ throw new Error(`${field} must match ${MOUNT_PATH_PATTERN.source}`);
370
+ }
371
+ }
353
372
  function parseSkillRef(input, path) {
354
373
  if (input === null || typeof input !== "object" || Array.isArray(input)) {
355
374
  throw new Error(`${path} must be a SkillRef object`);
@@ -401,8 +420,11 @@ function parseAssetRefFields(record, path) {
401
420
  throw new Error(`${path}.name must be a non-empty string (<= 128 chars)`);
402
421
  }
403
422
  const mountPath = record.mountPath;
404
- if (mountPath !== void 0 && (typeof mountPath !== "string" || mountPath.length === 0)) {
405
- throw new Error(`${path}.mountPath, when provided, must be a non-empty string`);
423
+ if (mountPath !== void 0) {
424
+ if (typeof mountPath !== "string") {
425
+ throw new Error(`${path}.mountPath, when provided, must be a string`);
426
+ }
427
+ assertValidMountPath(mountPath, `${path}.mountPath`);
406
428
  }
407
429
  return {
408
430
  kind: "asset",
@@ -1 +1 @@
1
- d05e5e074b577553d20fa3680f834b7941fe0cb7692c0a743975fcf36c4ec9b5 cli.mjs
1
+ bfd0fb573fa113fe08d69fc50f246c821bfc9e0acd9bddd6e92775d38120e201 cli.mjs
package/dist/client.js CHANGED
@@ -820,18 +820,12 @@ async function prepareFiles(files, uploader) {
820
820
  hash: bundle.contentHash,
821
821
  contentType: "application/zip"
822
822
  });
823
- refs.push(bundle.mountPath !== undefined
824
- ? {
825
- kind: "asset",
826
- assetId: uploaded.assetId,
827
- name: bundle.name,
828
- mountPath: bundle.mountPath
829
- }
830
- : {
831
- kind: "asset",
832
- assetId: uploaded.assetId,
833
- name: bundle.name
834
- });
823
+ refs.push({
824
+ kind: "asset",
825
+ assetId: uploaded.assetId,
826
+ name: bundle.name,
827
+ mountPath: bundle.mountPath
828
+ });
835
829
  continue;
836
830
  }
837
831
  refs.push(ref);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/file.d.ts CHANGED
@@ -1,13 +1,20 @@
1
1
  import type { FileRef } from "./_contracts/index.js";
2
2
  /**
3
3
  * File — arbitrary bytes (single file or zipped folder) delivered to
4
- * the agent as a mounted runtime resource. The managed runtime receives the
5
- * snapshotted bytes during workspace materialization.
4
+ * the agent as a mounted runtime resource. The managed runtime UNZIPS the
5
+ * snapshotted bytes into the `mountPath` DIRECTORY during workspace
6
+ * materialization, preserving the real filename + extension.
6
7
  *
7
8
  * const settings = await File.fromPath("./settings.json");
8
9
  * const dataset = await File.fromPath("./data/");
9
10
  * await client.submit({ files: [settings, dataset], ... });
10
11
  *
12
+ * `mountPath` is the absolute container directory the file unzips into; it
13
+ * defaults to `/workspace` (the agent's default working directory), so a file
14
+ * handed with no `mountPath` lands directly in the agent's cwd — a single file
15
+ * `subtitles.srt` becomes `/workspace/subtitles.srt`, a folder lands its entries
16
+ * under `/workspace/`. The resolved path is surfaced back on the Run record.
17
+ *
11
18
  * `client.submit` materializes the bytes to the hosted asset store before
12
19
  * the run lands; the wire ref becomes `kind:"asset"`. Repeat uploads of the
13
20
  * same bytes are deduped.
@@ -19,9 +26,12 @@ export declare class File {
19
26
  get isDraft(): boolean;
20
27
  get isConsumed(): boolean;
21
28
  /**
22
- * Build a draft File from raw bytes. The bytes are wrapped in a
23
- * single-entry canonical zip so storage stays uniform across all
24
- * file uploads.
29
+ * Build a draft File from raw bytes. `name` is the REAL filename (with its
30
+ * extension, e.g. `"subtitles.srt"`) it is preserved as the single zip
31
+ * entry so the agent finds it at `<mountPath>/<name>` after unzip. The bytes
32
+ * are wrapped in a single-entry canonical zip so storage stays uniform across
33
+ * all file uploads. `mountPath` is the absolute container directory the file
34
+ * unzips into; it defaults to `/workspace`.
25
35
  */
26
36
  static fromBytes(args: {
27
37
  readonly name: string;
@@ -29,9 +39,13 @@ export declare class File {
29
39
  readonly mountPath?: string;
30
40
  }): Promise<File>;
31
41
  /**
32
- * Read a local file or directory and build a draft File. Directories
33
- * walk recursively into a canonical zip (sorted paths, deterministic
34
- * mtime). Name is inferred from the basename when not supplied.
42
+ * Read a local file or directory and build a draft File. A single file
43
+ * preserves its real basename (with extension) as the sole zip entry, so the
44
+ * agent finds it at `<mountPath>/<basename>` after unzip. Directories walk
45
+ * recursively into a canonical zip (sorted relative paths, deterministic
46
+ * mtime), landing each entry under `<mountPath>/`. `mountPath` defaults to
47
+ * `/workspace`. The optional `name` is only the storage slug (dedup label);
48
+ * it never affects the on-disk filename.
35
49
  */
36
50
  static fromPath(path: string, args?: {
37
51
  readonly name?: string;
@@ -45,7 +59,7 @@ export declare class File {
45
59
  name: string;
46
60
  contentHash: string;
47
61
  bytes: Uint8Array;
48
- mountPath?: string;
62
+ mountPath: string;
49
63
  } | undefined;
50
64
  toJSON(): FileRef;
51
65
  }
@@ -53,5 +67,6 @@ export interface DraftFileRef {
53
67
  readonly kind: "draft";
54
68
  readonly name: string;
55
69
  readonly contentHash: string;
56
- readonly mountPath?: string;
70
+ /** Absolute container directory the file unzips into (always set; defaults to /workspace). */
71
+ readonly mountPath: string;
57
72
  }
package/dist/file.js CHANGED
@@ -1,16 +1,24 @@
1
1
  import { readdir, readFile, stat } from "node:fs/promises";
2
2
  import { join, relative } from "node:path";
3
+ import { DEFAULT_FILE_MOUNT_PATH, assertValidMountPath } from "./_contracts/index.js";
3
4
  import { hashSkillBundle } from "./bundle.js";
4
5
  import { zipSync } from "fflate";
5
6
  /**
6
7
  * File — arbitrary bytes (single file or zipped folder) delivered to
7
- * the agent as a mounted runtime resource. The managed runtime receives the
8
- * snapshotted bytes during workspace materialization.
8
+ * the agent as a mounted runtime resource. The managed runtime UNZIPS the
9
+ * snapshotted bytes into the `mountPath` DIRECTORY during workspace
10
+ * materialization, preserving the real filename + extension.
9
11
  *
10
12
  * const settings = await File.fromPath("./settings.json");
11
13
  * const dataset = await File.fromPath("./data/");
12
14
  * await client.submit({ files: [settings, dataset], ... });
13
15
  *
16
+ * `mountPath` is the absolute container directory the file unzips into; it
17
+ * defaults to `/workspace` (the agent's default working directory), so a file
18
+ * handed with no `mountPath` lands directly in the agent's cwd — a single file
19
+ * `subtitles.srt` becomes `/workspace/subtitles.srt`, a folder lands its entries
20
+ * under `/workspace/`. The resolved path is surfaced back on the Run record.
21
+ *
14
22
  * `client.submit` materializes the bytes to the hosted asset store before
15
23
  * the run lands; the wire ref becomes `kind:"asset"`. Repeat uploads of the
16
24
  * same bytes are deduped.
@@ -33,54 +41,68 @@ export class File {
33
41
  return this.#consumed;
34
42
  }
35
43
  /**
36
- * Build a draft File from raw bytes. The bytes are wrapped in a
37
- * single-entry canonical zip so storage stays uniform across all
38
- * file uploads.
44
+ * Build a draft File from raw bytes. `name` is the REAL filename (with its
45
+ * extension, e.g. `"subtitles.srt"`) it is preserved as the single zip
46
+ * entry so the agent finds it at `<mountPath>/<name>` after unzip. The bytes
47
+ * are wrapped in a single-entry canonical zip so storage stays uniform across
48
+ * all file uploads. `mountPath` is the absolute container directory the file
49
+ * unzips into; it defaults to `/workspace`.
39
50
  */
40
51
  static async fromBytes(args) {
41
- if (!args || typeof args.name !== "string" || !WORKSPACE_NAME_RE.test(args.name)) {
42
- throw new Error(`File.fromBytes: name must match ${WORKSPACE_NAME_RE.source}`);
52
+ if (!args || typeof args.name !== "string") {
53
+ throw new Error("File.fromBytes: name must be a string");
54
+ }
55
+ const filename = sanitiseFilename(args.name);
56
+ if (filename === undefined) {
57
+ throw new Error(`File.fromBytes: name ${JSON.stringify(args.name)} is not a valid filename ` +
58
+ "(no '/', '\\\\', NUL, or path traversal; 1..255 chars)");
43
59
  }
44
60
  if (!(args.bytes instanceof Uint8Array) || args.bytes.byteLength === 0) {
45
61
  throw new Error("File.fromBytes: bytes must be a non-empty Uint8Array");
46
62
  }
47
- const zip = zipSync({ [args.name]: [args.bytes, { mtime: ZIP_EPOCH }] }, { level: 6 });
63
+ const mountPath = resolveMountPath(args.mountPath, "File.fromBytes");
64
+ const zip = zipSync({ [filename]: [args.bytes, { mtime: ZIP_EPOCH }] }, { level: 6 });
48
65
  const contentHash = await hashSkillBundle(zip);
49
66
  const ref = {
50
67
  kind: "draft",
51
- name: args.name,
68
+ name: slugFromFilename(filename),
52
69
  contentHash,
53
- ...(args.mountPath ? { mountPath: args.mountPath } : {})
70
+ mountPath
54
71
  };
55
72
  return new File(ref, zip);
56
73
  }
57
74
  /**
58
- * Read a local file or directory and build a draft File. Directories
59
- * walk recursively into a canonical zip (sorted paths, deterministic
60
- * mtime). Name is inferred from the basename when not supplied.
75
+ * Read a local file or directory and build a draft File. A single file
76
+ * preserves its real basename (with extension) as the sole zip entry, so the
77
+ * agent finds it at `<mountPath>/<basename>` after unzip. Directories walk
78
+ * recursively into a canonical zip (sorted relative paths, deterministic
79
+ * mtime), landing each entry under `<mountPath>/`. `mountPath` defaults to
80
+ * `/workspace`. The optional `name` is only the storage slug (dedup label);
81
+ * it never affects the on-disk filename.
61
82
  */
62
83
  static async fromPath(path, args) {
63
84
  const stats = await stat(path);
64
- const inferredName = args?.name ?? inferNameFromPath(path);
65
- if (!WORKSPACE_NAME_RE.test(inferredName)) {
66
- throw new Error(`File.fromPath: inferred name ${JSON.stringify(inferredName)} does not match ${WORKSPACE_NAME_RE.source}; ` +
67
- `pass an explicit name via args.name`);
68
- }
85
+ const mountPath = resolveMountPath(args?.mountPath, "File.fromPath");
86
+ // `name` is only the storage slug (dedup label), never the on-disk filename.
87
+ // Slugify a provided name so the stored slug stays DNS-clean; derive from the
88
+ // basename when omitted.
89
+ const slug = args?.name !== undefined ? slugFromFilename(args.name) : inferNameFromPath(path);
69
90
  let zip;
70
91
  if (stats.isDirectory()) {
71
92
  zip = await buildDirZip(path);
72
93
  }
73
94
  else {
74
95
  const bytes = await readFile(path);
75
- const filename = path.replace(/\\/g, "/").split("/").at(-1) ?? inferredName;
96
+ const basename = path.replace(/\\/g, "/").replace(/\/+$/, "").split("/").at(-1) ?? "";
97
+ const filename = sanitiseFilename(basename) ?? `${slug}`;
76
98
  zip = zipSync({ [filename]: [bytes, { mtime: ZIP_EPOCH }] }, { level: 6 });
77
99
  }
78
100
  const contentHash = await hashSkillBundle(zip);
79
101
  const ref = {
80
102
  kind: "draft",
81
- name: inferredName,
103
+ name: slug,
82
104
  contentHash,
83
- ...(args?.mountPath ? { mountPath: args.mountPath } : {})
105
+ mountPath
84
106
  };
85
107
  return new File(ref, zip);
86
108
  }
@@ -101,7 +123,7 @@ export class File {
101
123
  name: this.#ref.name,
102
124
  contentHash: this.#ref.contentHash,
103
125
  bytes: this.#bytes,
104
- ...(this.#ref.mountPath ? { mountPath: this.#ref.mountPath } : {})
126
+ mountPath: this.#ref.mountPath
105
127
  };
106
128
  }
107
129
  toJSON() {
@@ -114,15 +136,54 @@ export class File {
114
136
  }
115
137
  const ZIP_EPOCH = new Date(Date.UTC(1980, 0, 1));
116
138
  const WORKSPACE_NAME_RE = /^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$/;
117
- function inferNameFromPath(path) {
118
- const normalised = path.replace(/\\/g, "/").replace(/\/+$/, "");
119
- const base = normalised.split("/").at(-1) ?? "";
120
- const stem = base.replace(/\.[^.]+$/, "").toLowerCase();
139
+ /**
140
+ * Resolve + validate a caller-supplied `mountPath`, defaulting to `/workspace`.
141
+ * Shares {@link assertValidMountPath} with the contracts parser so the SDK and
142
+ * the BFF reject the same malformed paths.
143
+ */
144
+ function resolveMountPath(mountPath, fn) {
145
+ if (mountPath === undefined)
146
+ return DEFAULT_FILE_MOUNT_PATH;
147
+ if (typeof mountPath !== "string") {
148
+ throw new Error(`${fn}: mountPath must be a string`);
149
+ }
150
+ assertValidMountPath(mountPath, `${fn}: mountPath`);
151
+ return mountPath;
152
+ }
153
+ /**
154
+ * Validate a real on-disk filename (a single path SEGMENT — no separators,
155
+ * traversal, NUL, or control chars; 1..255 bytes). Returns the trimmed name, or
156
+ * `undefined` when it cannot be a filename. Used to preserve the real filename +
157
+ * extension inside the single-entry zip.
158
+ */
159
+ function sanitiseFilename(name) {
160
+ const trimmed = name.trim();
161
+ if (trimmed.length === 0 || trimmed.length > 255)
162
+ return undefined;
163
+ if (trimmed === "." || trimmed === "..")
164
+ return undefined;
165
+ if (/[/\\]/.test(trimmed))
166
+ return undefined;
167
+ // Reject NUL + C0/C1/DEL control chars (filename must stay a printable segment).
168
+ // eslint-disable-next-line no-control-regex
169
+ if (/[\u0000-\u001f\u007f]/.test(trimmed))
170
+ return undefined;
171
+ return trimmed;
172
+ }
173
+ function slugFromFilename(filename) {
174
+ const stem = filename.replace(/\.[^.]+$/, "").toLowerCase();
121
175
  const slug = stem.replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
122
176
  if (slug.length >= 2 && WORKSPACE_NAME_RE.test(slug))
123
177
  return slug;
178
+ if (slug.length === 1)
179
+ return `f-${slug}`;
124
180
  return `file-${Date.now().toString(36)}`;
125
181
  }
182
+ function inferNameFromPath(path) {
183
+ const normalised = path.replace(/\\/g, "/").replace(/\/+$/, "");
184
+ const base = normalised.split("/").at(-1) ?? "";
185
+ return slugFromFilename(base);
186
+ }
126
187
  async function buildDirZip(dirPath) {
127
188
  const files = [];
128
189
  await walkDir(dirPath, dirPath, files);
package/dist/file.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,IAAI;IACN,IAAI,CAAyB;IAC7B,MAAM,CAAyB;IACxC,SAAS,GAAG,KAAK,CAAC;IAElB,YAAY,GAA2B,EAAE,KAAkB;QACzD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAItB;QACC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B;gBAC1E,wDAAwD,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,OAAO,CACjB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,EAClD,EAAE,KAAK,EAAE,CAAC,EAAE,CACb,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAiB;YACxB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC;YAChC,WAAW;YACX,SAAS;SACV,CAAC;QACF,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnB,IAAY,EACZ,IAA8D;QAE9D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACrE,6EAA6E;QAC7E,8EAA8E;QAC9E,yBAAyB;QACzB,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9F,IAAI,GAAe,CAAC;QACpB,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;YACzD,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAiB;YACxB,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAI;YACV,WAAW;YACX,SAAS;SACV,CAAC;QACF,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,gBAAgB;QAMd,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,uEAAuE;gBACrE,2DAA2D,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAClC,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC/B,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,gFAAgF;gBAChF,8CAA8C,CAC/C,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAUD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAE9D;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,SAA6B,EAAE,EAAU;IACjE,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,uBAAuB,CAAC;IAC5D,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;IACvD,CAAC;IACD,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,SAAS,CAAC;IACnE,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,iFAAiF;IACjF,4CAA4C;IAC5C,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IAC1C,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe;IACxC,MAAM,KAAK,GAA8C,EAAE,CAAC;IAC5D,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACrG,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAkD,EAAE,CAAC;IACnE,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;QACnC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,OAAe,EACf,MAAiD;IAEjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -31,4 +31,6 @@ export type { Builtin } from "./_contracts/index.js";
31
31
  export { CREDENTIAL_MODES, DEFAULT_CREDENTIAL_MODE, collectManagedUnsupportedFeatures, DEFAULT_RUN_PROVIDER, RUN_MODELS, RUN_MODELS_BY_PROVIDER, MODEL_PROVIDER_IDS, Models, RunModels, providerForModel, providersForModel, resolveProviderModelId, isRunModel, parseRunModel, Providers, RUN_PROVIDERS, RUNTIME_KINDS, RUNTIME_VALIDATION_CODES, RuntimeValidationError, selectRuntime } from "./_contracts/index.js";
32
32
  export type { CredentialMode, RunModel, RunProvider, RuntimeKind, RuntimeValidationCode } from "./_contracts/index.js";
33
33
  export { AEX_RUN_SETTLED_NAME, isCustom, isEventChannel, isFromSource, isLog, isRunError, isRunFinished, isRunSettled, isRunStarted, isRunTerminal, isTextMessage, isToolCallResult, isToolCallStart } from "./_contracts/index.js";
34
+ export { decodeAssistantText, decodeToolCalls, summarizeRunTrace, summarizeRunUsage } from "./_contracts/index.js";
35
+ export type { AssistantTextEntry, RunTrace, ToolCallResult, ToolCallTrace } from "./_contracts/index.js";
34
36
  export { SecretString, redactSecrets } from "./_contracts/index.js";
package/dist/index.js CHANGED
@@ -35,6 +35,10 @@ export { BUILTINS, Builtins } from "./_contracts/index.js";
35
35
  export { CREDENTIAL_MODES, DEFAULT_CREDENTIAL_MODE, collectManagedUnsupportedFeatures, DEFAULT_RUN_PROVIDER, RUN_MODELS, RUN_MODELS_BY_PROVIDER, MODEL_PROVIDER_IDS, Models, RunModels, providerForModel, providersForModel, resolveProviderModelId, isRunModel, parseRunModel, Providers, RUN_PROVIDERS, RUNTIME_KINDS, RUNTIME_VALIDATION_CODES, RuntimeValidationError, selectRuntime } from "./_contracts/index.js";
36
36
  // Normalized coordinator event guards
37
37
  export { AEX_RUN_SETTLED_NAME, isCustom, isEventChannel, isFromSource, isLog, isRunError, isRunFinished, isRunSettled, isRunStarted, isRunTerminal, isTextMessage, isToolCallResult, isToolCallStart } from "./_contracts/index.js";
38
+ // Typed `listEvents` decoders — correlate TOOL_CALL_START/RESULT into tool-call
39
+ // traces, sum the per-turn `aex.usage` events into a UsageSummary, and decode
40
+ // assistant text, so consumers don't hand-roll the `data.id` correlation.
41
+ export { decodeAssistantText, decodeToolCalls, summarizeRunTrace, summarizeRunUsage } from "./_contracts/index.js";
38
42
  // Secret utilities
39
43
  export { SecretString, redactSecrets } from "./_contracts/index.js";
40
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAatG,yBAAyB;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE,SAAS;AACT,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,yBAAyB;AACzB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AA4D1B,oEAAoE;AACpE,6EAA6E;AAC7E,6DAA6D;AAC7D,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,kBAAkB,CAAC;AAG1B,+DAA+D;AAC/D,2CAA2C;AAC3C,mEAAmE;AACnE,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGtD,gEAAgE;AAChE,mEAAmE;AACnE,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,oBAAoB,EACpB,UAAU,EACV,sBAAsB,EACtB,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAS1B,sCAAsC;AACtC,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAatG,yBAAyB;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGhE,SAAS;AACT,OAAO,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,yBAAyB,EACzB,aAAa,EACb,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,yBAAyB;AACzB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AA4D1B,oEAAoE;AACpE,6EAA6E;AAC7E,6DAA6D;AAC7D,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACb,MAAM,kBAAkB,CAAC;AAG1B,+DAA+D;AAC/D,2CAA2C;AAC3C,mEAAmE;AACnE,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGtD,gEAAgE;AAChE,mEAAmE;AACnE,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,iCAAiC,EACjC,oBAAoB,EACpB,UAAU,EACV,sBAAsB,EACtB,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAS1B,sCAAsC;AACtC,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAE1B,gFAAgF;AAChF,8EAA8E;AAC9E,0EAA0E;AAC1E,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAQ1B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/version.d.ts CHANGED
@@ -6,4 +6,4 @@
6
6
  *
7
7
  * Used by the (future) User-Agent header on outbound SDK requests.
8
8
  */
9
- export declare const SDK_VERSION = "0.21.0";
9
+ export declare const SDK_VERSION = "0.22.0";
package/dist/version.js CHANGED
@@ -6,5 +6,5 @@
6
6
  *
7
7
  * Used by the (future) User-Agent header on outbound SDK requests.
8
8
  */
9
- export const SDK_VERSION = "0.21.0";
9
+ export const SDK_VERSION = "0.22.0";
10
10
  //# sourceMappingURL=version.js.map
@@ -76,12 +76,29 @@ Every kind of thing you want to ship at run time has exactly one right primitive
76
76
  | Upstream HTTPS API keys (TMDB, Brave, Tavily, …) | `ProxyEndpoint` | Credentials live server-side; aex proxy injects them on outbound calls. The key never enters the container. |
77
77
  | MCP server credentials | `secrets.mcpServers` | Held in run-scoped custody, attached per run |
78
78
  | Provider API key | `secrets.apiKey` | Required on every `submit`; held in run-scoped custody. Carries the BYOK key for the selected `provider` |
79
- | Non-secret reference data folders (transcripts, persona docs, PDFs) | `File.fromPath('./customer-folder/')` | Materialized under `files/<f_id>/<name>` in the run workspace by default and described in the agent-facing instructions |
79
+ | Non-secret reference data files or folders (transcripts, persona docs, PDFs) | `File.fromPath('./subtitles.srt')` / `File.fromPath('./customer-folder/')` | Unzipped into the `mountPath` directory (default `/workspace`, the agent's cwd), preserving the real filename + extension — e.g. `/workspace/subtitles.srt`. See [Files: where they land](#files-where-they-land). |
80
80
  | Executable skill code (a `.pyz` wrapper, scripts, prompts) | `Skill.fromPath('./skills/my-skill/')` | Mounted under `skills/<name>/`; the bundle's `SKILL.md` is composed into the agent's instructions |
81
81
  | Agent instructions file | `AgentsMd.fromPath('./AGENTS.md')` | Prepended as the first user turn |
82
82
 
83
83
  `Skill`, `AgentsMd`, and `File` values are materialized for the run before the first agent turn. `environment.envVars` values surface in runtime metadata and can be referenced by `__KEY__` placeholders in agent-facing markdown.
84
84
 
85
+ ### Files: where they land
86
+
87
+ A `File` is uploaded as a content-addressed archive and **unzipped on the runtime into a directory**, preserving the real filename + extension — the agent sees the actual file, never a `.zip` to unpack.
88
+
89
+ - **`mountPath` is the directory the archive unzips into.** It must be an absolute container path (`/...`, no `..` traversal). It defaults to **`/workspace`**, which is also the agent's default working directory — so a file handed with no `mountPath` lands directly in the agent's cwd.
90
+ - **A single file keeps its real basename.** `File.fromPath('./source-video-subtitles.srt')` lands at `/workspace/source-video-subtitles.srt` (not a slug, not a `.zip`). `File.fromBytes({ name: 'data.csv', bytes })` lands at `/workspace/data.csv` — `name` is the real filename here.
91
+ - **A folder lands its entries under the mount directory.** `File.fromPath('./repo/', { mountPath: '/workspace/repo' })` puts each file at `/workspace/repo/<relative-path>`.
92
+ - **The resolved mount directory is surfaced back on the run.** Read `run.runtimeManifest.mountedFiles` (an array of `{ name, mountPath }`) to learn where each handed file landed.
93
+
94
+ ```ts
95
+ const subtitles = await File.fromPath('./source-video-subtitles.srt'); // → /workspace/source-video-subtitles.srt
96
+ const dataset = await File.fromPath('./data/', { mountPath: '/workspace/input' }); // → /workspace/input/<files>
97
+ const run = await client.submit({ model, prompt, files: [subtitles, dataset], secrets: { apiKey } });
98
+ const resolved = (await client.getRun(run.id)).runtimeManifest?.mountedFiles;
99
+ // [{ name: 'source-video-subtitles', mountPath: '/workspace' }, { name: 'data', mountPath: '/workspace/input' }]
100
+ ```
101
+
85
102
  ## Safe retries with `idempotencyKey`
86
103
 
87
104
  Every `submit` call carries an `idempotencyKey`. When omitted the SDK auto-generates a UUID per call. Supplying your own key makes retries deterministic:
@@ -0,0 +1,159 @@
1
+ ---
2
+ title: Call a vision (or any model) API from a skill
3
+ ---
4
+
5
+ # Call a vision (or any model) API from a skill
6
+
7
+ aex has no built-in vision tool. The agent's `provider`/`model` selects the
8
+ *reasoning* model — it is not an endpoint a skill can POST an image to mid-run.
9
+ To give a run image understanding (or to call any other model/HTTP API), ship a
10
+ **skill** that POSTs to the provider's OpenAI-compatible endpoint **through the
11
+ managed proxy**, with the key supplied via `secrets.proxyEndpointAuth`. The raw
12
+ key never enters the container.
13
+
14
+ This is the same proxy described in `credentials.md` — this page is the worked
15
+ recipe for the model-API case, which has two wrinkles a plain JSON call does not:
16
+ the image rides as a **base64 data URL** in the request body, and that body is
17
+ large enough to need a raised `maxRequestBytes`.
18
+
19
+ The canonical, runnable example lives in the repo at
20
+ [`examples/vision-skill/`](../../../examples/vision-skill) (`SKILL.md`,
21
+ `caption_frame.py`, `verify_frame.py`, `submit_with_vision_skill.mjs`). It
22
+ captions a frame with ByteDance Doubao Seed Vision (Ark) and returns a per-noun
23
+ "does the frame depict X?" verdict. Everything below is taken from it.
24
+
25
+ ## 1. Declare the model endpoint as a proxy endpoint
26
+
27
+ The vision provider's API is just an HTTPS host. Declare it as a `bearer` proxy
28
+ endpoint and supply the key in `secrets.proxyEndpointAuth`. The two model-specific
29
+ settings are `responseMode: "full"` (so the skill gets the upstream JSON back) and
30
+ a raised `maxRequestBytes` (so the base64 image fits):
31
+
32
+ ```ts
33
+ import { AgentExecutor, RunModels, Skill, ProxyEndpoint, validateProxyAuth } from "@aexhq/sdk";
34
+
35
+ const aex = new AgentExecutor({ apiToken: process.env.AEX_WORKSPACE_TOKEN! });
36
+
37
+ const proxyEndpoints = [
38
+ ProxyEndpoint.bearer({
39
+ name: "doubao-ark",
40
+ baseUrl: "https://ark.ap-southeast.bytepluses.com", // intl BytePlus gateway
41
+ allowMethods: ["POST"],
42
+ allowPathPrefixes: ["/api/v3/chat/completions"],
43
+ maxRequestBytes: 2_000_000, // base64 image POSTs — see note below
44
+ responseMode: "full",
45
+ timeoutMs: 60_000
46
+ })
47
+ ];
48
+
49
+ const proxyEndpointAuth = [
50
+ { name: "doubao-ark", value: { type: "bearer", token: process.env.DOUBAO_API_KEY! } }
51
+ ];
52
+
53
+ validateProxyAuth(proxyEndpoints, proxyEndpointAuth); // fail fast at submit time
54
+
55
+ const runId = await aex.submit({
56
+ model: RunModels.CLAUDE_HAIKU_4_5,
57
+ prompt: "…read skills/frame-vision-gate/SKILL.md, then caption + verify the frame…",
58
+ skills: [await Skill.fromPath("./vision-skill", { name: "frame-vision-gate" })],
59
+ proxyEndpoints,
60
+ secrets: {
61
+ apiKey: process.env.ANTHROPIC_API_KEY!,
62
+ proxyEndpointAuth
63
+ }
64
+ });
65
+ ```
66
+
67
+ `Skill.fromPath("./vision-skill", …)` is resolved relative to the process CWD, so
68
+ run the submit script from the directory that *contains* `vision-skill/` (in the
69
+ repo, that is `examples/`). The same pattern works for OpenAI, Gemini's
70
+ OpenAI-compatible endpoint, or any other OpenAI-chat-shaped vision API — only
71
+ `baseUrl` and the path prefix change.
72
+
73
+ ## 2. POST the image as a base64 data URL through the proxy
74
+
75
+ Inside the run, the skill builds the OpenAI-compatible chat-completions body. The
76
+ image is **base64-inlined as a data URL** in an `image_url` content part — it is
77
+ not uploaded:
78
+
79
+ ```python
80
+ import base64, json
81
+ b64 = base64.b64encode(open("/workspace/files/frame.jpg", "rb").read()).decode()
82
+ request_body = {
83
+ "model": "doubao-seed-1-6-vision-250815",
84
+ "temperature": 0,
85
+ "response_format": {"type": "json_object"},
86
+ "messages": [
87
+ {"role": "system", "content": "Describe only what the pixels show."},
88
+ {"role": "user", "content": [
89
+ {"type": "text", "text": "Does this frame depict an owlbear? Answer as JSON."},
90
+ {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{b64}"}}
91
+ ]}
92
+ ]
93
+ }
94
+ ```
95
+
96
+ Write the body to a file and hand it to the mounted CLI with `--data @<file>`
97
+ (the mount has no execute bit, so invoke through `node`; see `credentials.md`):
98
+
99
+ ```python
100
+ import subprocess
101
+ body_path = "/workspace/.aex/_ark_request.json"
102
+ open(body_path, "w").write(json.dumps(request_body))
103
+
104
+ result = subprocess.run(
105
+ ["node", "/mnt/session/uploads/aex/aex", "proxy", "doubao-ark",
106
+ "--method", "POST",
107
+ "--path", "/api/v3/chat/completions",
108
+ "--header", "content-type=application/json",
109
+ "--data", f"@{body_path}",
110
+ "--response-mode", "full"],
111
+ capture_output=True, text=True, timeout=90,
112
+ )
113
+ ```
114
+
115
+ In `--response-mode full` the CLI prints a `ProxyResponseEnvelope` on stdout. The
116
+ upstream JSON is **base64-encoded** in `upstreamBodyBase64`; an error instead
117
+ carries an `error` field. Unwrap it:
118
+
119
+ ```python
120
+ envelope = json.loads(result.stdout)
121
+ if "error" in envelope:
122
+ raise RuntimeError(f"proxy error: {envelope['error']}: {envelope['message']}")
123
+ upstream = json.loads(base64.b64decode(envelope["upstreamBodyBase64"]).decode())
124
+ content = upstream["choices"][0]["message"]["content"] # the model's JSON answer
125
+ ```
126
+
127
+ The key is injected by the BFF on the outbound call; it never appears on disk in
128
+ the container or in the model's context.
129
+
130
+ ## `maxRequestBytes` is required for image POSTs
131
+
132
+ The per-endpoint `maxRequestBytes` default is **1 MiB**. A base64 data-URL image
133
+ is ~1.33x the raw bytes, so a ~480px JPEG (~40-150 KB raw) becomes ~55-200 KB in
134
+ the request — within the default, but only just. **Set `maxRequestBytes`
135
+ explicitly** (a couple of MB) whenever you POST images so a higher-res frame or a
136
+ larger prompt does not trip the cap. If a body does exceed the cap, the proxy
137
+ rejects it before any upstream call with an explicit error naming the observed
138
+ size, the configured cap, and how to raise it:
139
+
140
+ > request body is 2400000 bytes, which exceeds this endpoint's maxRequestBytes
141
+ > (1048576). Raise the per-endpoint maxRequestBytes in the proxy endpoint policy …
142
+
143
+ Two ways to stay under the cap: raise `maxRequestBytes`, and/or scale frames to
144
+ ~480px wide before captioning (`ffmpeg -i source.mp4 -vf fps=1,scale=480:-1
145
+ frame_%03d.jpg`) — full-res adds payload and cost, not signal.
146
+
147
+ ## Notes
148
+
149
+ - **Egress.** The named proxy reaches any HTTPS host you declare as `baseUrl`
150
+ (no upstream allow-list; only a literal-IP SSRF deny-list). The international
151
+ BytePlus host (`ark.ap-southeast.bytepluses.com`) is a normal public host. The
152
+ China host (`ark.cn-beijing.volces.com`) is reachable in principle but the
153
+ platform's egress to Beijing is currently unverified — prefer the BytePlus host.
154
+ - **Keyless model hosts.** If the upstream takes no credential, declare the
155
+ endpoint with `authShape: { type: "none" }` and omit the `proxyEndpointAuth`
156
+ entry (see `credentials.md`).
157
+ - **Response size.** `responseMode: "full"` is required to read the model's reply
158
+ back. Leave `maxResponseBytes` at its default (`0` = unlimited, streamed) unless
159
+ you want a truncation cap.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aexhq/sdk",
3
- "version": "0.21.0",
3
+ "version": "0.22.0",
4
4
  "description": "TypeScript SDK for running autonomous agent sessions across providers (Anthropic, OpenAI, DeepSeek, Gemini, Mistral) behind one interface.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "examples"
27
27
  ],
28
28
  "devDependencies": {
29
- "@aexhq/contracts": "0.21.0"
29
+ "@aexhq/contracts": "0.22.0"
30
30
  },
31
31
  "engines": {
32
32
  "node": ">=20"