@aexhq/sdk 0.46.4-canary → 0.50.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/LICENSE +201 -0
- package/NOTICE +38 -0
- package/README.md +23 -31
- package/dist/client/aex.d.ts +33 -0
- package/dist/client/aex.js +98 -0
- package/dist/client/aex.js.map +1 -0
- package/dist/client/credentials.d.ts +25 -0
- package/dist/client/credentials.js +97 -0
- package/dist/client/credentials.js.map +1 -0
- package/dist/client/routing.d.ts +7 -0
- package/dist/client/routing.js +29 -0
- package/dist/client/routing.js.map +1 -0
- package/dist/downloads/download.d.ts +25 -0
- package/dist/downloads/download.js +53 -0
- package/dist/downloads/download.js.map +1 -0
- package/dist/generated/errors.d.ts +12 -0
- package/dist/generated/errors.js +81 -0
- package/dist/generated/errors.js.map +1 -0
- package/dist/generated/resources.d.ts +730 -0
- package/dist/generated/resources.js +606 -0
- package/dist/generated/resources.js.map +1 -0
- package/dist/generated/routes.d.ts +42 -0
- package/dist/generated/routes.js +2101 -0
- package/dist/generated/routes.js.map +1 -0
- package/dist/index.d.ts +20 -50
- package/dist/index.js +11 -62
- package/dist/index.js.map +1 -1
- package/dist/observations/stream.d.ts +1 -0
- package/dist/observations/stream.js +18 -0
- package/dist/observations/stream.js.map +1 -0
- package/dist/transport/errors.d.ts +60 -0
- package/dist/transport/errors.js +107 -0
- package/dist/transport/errors.js.map +1 -0
- package/dist/transport/pagination.d.ts +8 -0
- package/dist/transport/pagination.js +34 -0
- package/dist/transport/pagination.js.map +1 -0
- package/dist/transport/retry.d.ts +21 -0
- package/dist/transport/retry.js +37 -0
- package/dist/transport/retry.js.map +1 -0
- package/dist/transport/transport.d.ts +25 -0
- package/dist/transport/transport.js +28 -0
- package/dist/transport/transport.js.map +1 -0
- package/package.json +63 -30
- package/dist/_contracts/account-operations.d.ts +0 -101
- package/dist/_contracts/account-operations.js +0 -242
- package/dist/_contracts/account-types.d.ts +0 -461
- package/dist/_contracts/account-types.js +0 -1
- package/dist/_contracts/api-key.d.ts +0 -61
- package/dist/_contracts/api-key.js +0 -101
- package/dist/_contracts/api-routes.d.ts +0 -20
- package/dist/_contracts/api-routes.js +0 -109
- package/dist/_contracts/archive-limits.d.ts +0 -3
- package/dist/_contracts/archive-limits.js +0 -23
- package/dist/_contracts/asset-authoring.d.ts +0 -22
- package/dist/_contracts/asset-authoring.js +0 -106
- package/dist/_contracts/asset-bundle.d.ts +0 -64
- package/dist/_contracts/asset-bundle.js +0 -263
- package/dist/_contracts/asset-upload-helper.d.ts +0 -31
- package/dist/_contracts/asset-upload-helper.js +0 -84
- package/dist/_contracts/billing-admission.d.ts +0 -29
- package/dist/_contracts/billing-admission.js +0 -28
- package/dist/_contracts/bundle-manifest.d.ts +0 -89
- package/dist/_contracts/bundle-manifest.js +0 -158
- package/dist/_contracts/canonical-sha256.d.ts +0 -8
- package/dist/_contracts/canonical-sha256.js +0 -8
- package/dist/_contracts/connection-ticket.d.ts +0 -22
- package/dist/_contracts/connection-ticket.js +0 -54
- package/dist/_contracts/continuation-event.d.ts +0 -31
- package/dist/_contracts/continuation-event.js +0 -6
- package/dist/_contracts/contract-parse-error.d.ts +0 -12
- package/dist/_contracts/contract-parse-error.js +0 -51
- package/dist/_contracts/error-codes.d.ts +0 -26
- package/dist/_contracts/error-codes.js +0 -116
- package/dist/_contracts/error-factory.d.ts +0 -32
- package/dist/_contracts/error-factory.js +0 -174
- package/dist/_contracts/event-envelope.d.ts +0 -471
- package/dist/_contracts/event-envelope.js +0 -501
- package/dist/_contracts/event-stream-client.d.ts +0 -122
- package/dist/_contracts/event-stream-client.js +0 -445
- package/dist/_contracts/event-view.d.ts +0 -44
- package/dist/_contracts/event-view.js +0 -69
- package/dist/_contracts/failure-class.d.ts +0 -29
- package/dist/_contracts/failure-class.js +0 -73
- package/dist/_contracts/http.d.ts +0 -135
- package/dist/_contracts/http.js +0 -434
- package/dist/_contracts/ids.d.ts +0 -66
- package/dist/_contracts/ids.js +0 -119
- package/dist/_contracts/index.d.ts +0 -42
- package/dist/_contracts/index.js +0 -52
- package/dist/_contracts/internal.d.ts +0 -55
- package/dist/_contracts/internal.js +0 -113
- package/dist/_contracts/models.d.ts +0 -30
- package/dist/_contracts/models.js +0 -28
- package/dist/_contracts/operation-core.d.ts +0 -36
- package/dist/_contracts/operation-core.js +0 -70
- package/dist/_contracts/operations.d.ts +0 -218
- package/dist/_contracts/operations.js +0 -1496
- package/dist/_contracts/otlp-projection.d.ts +0 -78
- package/dist/_contracts/otlp-projection.js +0 -171
- package/dist/_contracts/post-hook.d.ts +0 -31
- package/dist/_contracts/post-hook.js +0 -61
- package/dist/_contracts/provider-fault.d.ts +0 -34
- package/dist/_contracts/provider-fault.js +0 -68
- package/dist/_contracts/retry-core.d.ts +0 -29
- package/dist/_contracts/retry-core.js +0 -79
- package/dist/_contracts/runner-event.d.ts +0 -117
- package/dist/_contracts/runner-event.js +0 -172
- package/dist/_contracts/runtime-kind.d.ts +0 -60
- package/dist/_contracts/runtime-kind.js +0 -70
- package/dist/_contracts/runtime-manifest.d.ts +0 -121
- package/dist/_contracts/runtime-manifest.js +0 -83
- package/dist/_contracts/runtime-security-profile.d.ts +0 -26
- package/dist/_contracts/runtime-security-profile.js +0 -73
- package/dist/_contracts/runtime-sizes.d.ts +0 -104
- package/dist/_contracts/runtime-sizes.js +0 -111
- package/dist/_contracts/runtime-types.d.ts +0 -618
- package/dist/_contracts/runtime-types.js +0 -58
- package/dist/_contracts/schemas/asset-bundle.d.ts +0 -70
- package/dist/_contracts/schemas/asset-bundle.js +0 -107
- package/dist/_contracts/schemas/asset-ref.d.ts +0 -61
- package/dist/_contracts/schemas/asset-ref.js +0 -118
- package/dist/_contracts/schemas/bundle-manifest.d.ts +0 -66
- package/dist/_contracts/schemas/bundle-manifest.js +0 -77
- package/dist/_contracts/schemas/index.d.ts +0 -32
- package/dist/_contracts/schemas/index.js +0 -30
- package/dist/_contracts/schemas/mcp-server.d.ts +0 -99
- package/dist/_contracts/schemas/mcp-server.js +0 -209
- package/dist/_contracts/schemas/models.d.ts +0 -29
- package/dist/_contracts/schemas/models.js +0 -51
- package/dist/_contracts/schemas/numeric.d.ts +0 -18
- package/dist/_contracts/schemas/numeric.js +0 -28
- package/dist/_contracts/schemas/post-hook.d.ts +0 -45
- package/dist/_contracts/schemas/post-hook.js +0 -68
- package/dist/_contracts/schemas/response-assets.d.ts +0 -75
- package/dist/_contracts/schemas/response-assets.js +0 -81
- package/dist/_contracts/schemas/response-billing.d.ts +0 -208
- package/dist/_contracts/schemas/response-billing.js +0 -139
- package/dist/_contracts/schemas/response-common.d.ts +0 -132
- package/dist/_contracts/schemas/response-common.js +0 -162
- package/dist/_contracts/schemas/response-identity.d.ts +0 -648
- package/dist/_contracts/schemas/response-identity.js +0 -131
- package/dist/_contracts/schemas/response-mcp-servers.d.ts +0 -51
- package/dist/_contracts/schemas/response-mcp-servers.js +0 -32
- package/dist/_contracts/schemas/response-secrets.d.ts +0 -50
- package/dist/_contracts/schemas/response-secrets.js +0 -32
- package/dist/_contracts/schemas/response-sessions-internal.d.ts +0 -200
- package/dist/_contracts/schemas/response-sessions-internal.js +0 -142
- package/dist/_contracts/schemas/response-sessions.d.ts +0 -1598
- package/dist/_contracts/schemas/response-sessions.js +0 -377
- package/dist/_contracts/schemas/response-webhooks.d.ts +0 -76
- package/dist/_contracts/schemas/response-webhooks.js +0 -42
- package/dist/_contracts/schemas/response-workspace.d.ts +0 -225
- package/dist/_contracts/schemas/response-workspace.js +0 -99
- package/dist/_contracts/schemas/runtime-kind.d.ts +0 -31
- package/dist/_contracts/schemas/runtime-kind.js +0 -29
- package/dist/_contracts/schemas/runtime-security-profile.d.ts +0 -28
- package/dist/_contracts/schemas/runtime-security-profile.js +0 -26
- package/dist/_contracts/schemas/runtime-sizes.d.ts +0 -70
- package/dist/_contracts/schemas/runtime-sizes.js +0 -127
- package/dist/_contracts/schemas/session-limits.d.ts +0 -34
- package/dist/_contracts/schemas/session-limits.js +0 -39
- package/dist/_contracts/schemas/session-machine.d.ts +0 -23
- package/dist/_contracts/schemas/session-machine.js +0 -24
- package/dist/_contracts/schemas/session-request-config.d.ts +0 -58
- package/dist/_contracts/schemas/session-request-config.js +0 -134
- package/dist/_contracts/schemas/session-webhook.d.ts +0 -11
- package/dist/_contracts/schemas/session-webhook.js +0 -38
- package/dist/_contracts/schemas/side-effect-audit.d.ts +0 -98
- package/dist/_contracts/schemas/side-effect-audit.js +0 -102
- package/dist/_contracts/schemas/submission-assets.d.ts +0 -117
- package/dist/_contracts/schemas/submission-assets.js +0 -147
- package/dist/_contracts/schemas/submission-body.d.ts +0 -251
- package/dist/_contracts/schemas/submission-body.js +0 -378
- package/dist/_contracts/schemas/submission-environment.d.ts +0 -79
- package/dist/_contracts/schemas/submission-environment.js +0 -179
- package/dist/_contracts/schemas/submission-request.d.ts +0 -158
- package/dist/_contracts/schemas/submission-request.js +0 -49
- package/dist/_contracts/schemas/submission-secrets.d.ts +0 -47
- package/dist/_contracts/schemas/submission-secrets.js +0 -108
- package/dist/_contracts/schemas/wire.d.ts +0 -118
- package/dist/_contracts/schemas/wire.js +0 -171
- package/dist/_contracts/schemas/workspace-resources.d.ts +0 -50
- package/dist/_contracts/schemas/workspace-resources.js +0 -87
- package/dist/_contracts/sdk-errors.d.ts +0 -212
- package/dist/_contracts/sdk-errors.js +0 -313
- package/dist/_contracts/sdk-secrets.d.ts +0 -67
- package/dist/_contracts/sdk-secrets.js +0 -427
- package/dist/_contracts/session-archive.d.ts +0 -16
- package/dist/_contracts/session-archive.js +0 -92
- package/dist/_contracts/session-artifacts.d.ts +0 -189
- package/dist/_contracts/session-artifacts.js +0 -264
- package/dist/_contracts/session-config.d.ts +0 -373
- package/dist/_contracts/session-config.js +0 -562
- package/dist/_contracts/session-cost-types.d.ts +0 -211
- package/dist/_contracts/session-cost-types.js +0 -69
- package/dist/_contracts/session-cost.d.ts +0 -8
- package/dist/_contracts/session-cost.js +0 -582
- package/dist/_contracts/session-custody.d.ts +0 -165
- package/dist/_contracts/session-custody.js +0 -345
- package/dist/_contracts/session-file-query.d.ts +0 -14
- package/dist/_contracts/session-file-query.js +0 -178
- package/dist/_contracts/session-record.d.ts +0 -112
- package/dist/_contracts/session-record.js +0 -165
- package/dist/_contracts/session-retention.d.ts +0 -201
- package/dist/_contracts/session-retention.js +0 -450
- package/dist/_contracts/side-effect-audit.d.ts +0 -126
- package/dist/_contracts/side-effect-audit.js +0 -520
- package/dist/_contracts/sse.d.ts +0 -74
- package/dist/_contracts/sse.js +0 -227
- package/dist/_contracts/stable.d.ts +0 -45
- package/dist/_contracts/stable.js +0 -62
- package/dist/_contracts/status.d.ts +0 -25
- package/dist/_contracts/status.js +0 -57
- package/dist/_contracts/submission-limits.d.ts +0 -61
- package/dist/_contracts/submission-limits.js +0 -60
- package/dist/_contracts/submission.d.ts +0 -547
- package/dist/_contracts/submission.js +0 -812
- package/dist/_contracts/suggest.d.ts +0 -15
- package/dist/_contracts/suggest.js +0 -53
- package/dist/_contracts/testing/response-bindings.d.ts +0 -45
- package/dist/_contracts/testing/response-bindings.js +0 -256
- package/dist/_contracts/testing/wire-conformance-entry.d.ts +0 -10
- package/dist/_contracts/testing/wire-conformance-entry.js +0 -8
- package/dist/_contracts/testing/wire-conformance.d.ts +0 -169
- package/dist/_contracts/testing/wire-conformance.js +0 -276
- package/dist/_contracts/turn-trace.d.ts +0 -28
- package/dist/_contracts/turn-trace.js +0 -1
- package/dist/_contracts/unknown-field-error.d.ts +0 -13
- package/dist/_contracts/unknown-field-error.js +0 -21
- package/dist/_contracts/value-guards.d.ts +0 -20
- package/dist/_contracts/value-guards.js +0 -34
- package/dist/_contracts/webhook-verify.d.ts +0 -34
- package/dist/_contracts/webhook-verify.js +0 -93
- package/dist/_contracts/wire-observer.d.ts +0 -49
- package/dist/_contracts/wire-observer.js +0 -34
- package/dist/_contracts/workflow-status.d.ts +0 -7
- package/dist/_contracts/workflow-status.js +0 -43
- package/dist/_contracts/workspace-resources.d.ts +0 -98
- package/dist/_contracts/workspace-resources.js +0 -39
- package/dist/archive-limits.d.ts +0 -1
- package/dist/archive-limits.js +0 -2
- package/dist/archive-limits.js.map +0 -1
- package/dist/asset-upload.d.ts +0 -47
- package/dist/asset-upload.js +0 -269
- package/dist/asset-upload.js.map +0 -1
- package/dist/bundle.d.ts +0 -9
- package/dist/bundle.js +0 -20
- package/dist/bundle.js.map +0 -1
- package/dist/canonical-zip.d.ts +0 -68
- package/dist/canonical-zip.js +0 -355
- package/dist/canonical-zip.js.map +0 -1
- package/dist/cli.mjs +0 -12048
- package/dist/cli.mjs.sha256 +0 -1
- package/dist/client-types.d.ts +0 -192
- package/dist/client-types.js +0 -2
- package/dist/client-types.js.map +0 -1
- package/dist/client.d.ts +0 -464
- package/dist/client.js +0 -1207
- package/dist/client.js.map +0 -1
- package/dist/event-projection.d.ts +0 -22
- package/dist/event-projection.js +0 -380
- package/dist/event-projection.js.map +0 -1
- package/dist/fetch-archive.d.ts +0 -16
- package/dist/fetch-archive.js +0 -252
- package/dist/fetch-archive.js.map +0 -1
- package/dist/file.d.ts +0 -96
- package/dist/file.js +0 -272
- package/dist/file.js.map +0 -1
- package/dist/instructions.d.ts +0 -20
- package/dist/instructions.js +0 -40
- package/dist/instructions.js.map +0 -1
- package/dist/legacy-session-provider-fault.d.ts +0 -7
- package/dist/legacy-session-provider-fault.js +0 -38
- package/dist/legacy-session-provider-fault.js.map +0 -1
- package/dist/mcp-server.d.ts +0 -84
- package/dist/mcp-server.js +0 -117
- package/dist/mcp-server.js.map +0 -1
- package/dist/node-fs.d.ts +0 -29
- package/dist/node-fs.js +0 -19
- package/dist/node-fs.js.map +0 -1
- package/dist/node-walk.d.ts +0 -69
- package/dist/node-walk.js +0 -151
- package/dist/node-walk.js.map +0 -1
- package/dist/path-basename.d.ts +0 -5
- package/dist/path-basename.js +0 -9
- package/dist/path-basename.js.map +0 -1
- package/dist/retry.d.ts +0 -70
- package/dist/retry.js +0 -155
- package/dist/retry.js.map +0 -1
- package/dist/secret.d.ts +0 -65
- package/dist/secret.js +0 -110
- package/dist/secret.js.map +0 -1
- package/dist/session-validate.d.ts +0 -100
- package/dist/session-validate.js +0 -303
- package/dist/session-validate.js.map +0 -1
- package/dist/skill.d.ts +0 -99
- package/dist/skill.js +0 -169
- package/dist/skill.js.map +0 -1
- package/dist/submission-wire.d.ts +0 -13
- package/dist/submission-wire.js +0 -69
- package/dist/submission-wire.js.map +0 -1
- package/dist/tool.d.ts +0 -41
- package/dist/tool.js +0 -76
- package/dist/tool.js.map +0 -1
- package/dist/version.d.ts +0 -9
- package/dist/version.js +0 -10
- package/dist/version.js.map +0 -1
- package/docs/authentication.md +0 -125
- package/docs/billing.md +0 -164
- package/docs/cleanup.md +0 -27
- package/docs/concepts/agent-tools.md +0 -47
- package/docs/concepts/composition.md +0 -60
- package/docs/concepts/providers-and-runtimes.md +0 -121
- package/docs/concepts/sessions.md +0 -51
- package/docs/concepts/subagents.md +0 -35
- package/docs/credentials.md +0 -116
- package/docs/defaults.md +0 -51
- package/docs/errors.md +0 -258
- package/docs/events.md +0 -143
- package/docs/files.md +0 -130
- package/docs/limits-and-quotas.md +0 -114
- package/docs/limits.md +0 -51
- package/docs/mcp.md +0 -47
- package/docs/networking.md +0 -114
- package/docs/provider-runtime-capabilities.md +0 -32
- package/docs/public-surface.json +0 -73
- package/docs/quickstart.md +0 -135
- package/docs/release.md +0 -44
- package/docs/retries.md +0 -108
- package/docs/secrets.md +0 -141
- package/docs/session-config.md +0 -51
- package/docs/session-record.md +0 -58
- package/docs/skills.md +0 -65
- package/docs/telemetry.md +0 -66
- package/docs/testing.md +0 -35
- package/docs/vision-skills.md +0 -94
- package/docs/webhooks.md +0 -143
package/docs/events.md
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Events
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Events
|
|
6
|
-
|
|
7
|
-
Durable event reads use one `AexEventView` shape with CloudEvents identity,
|
|
8
|
-
monotonic `sequence`, real AG-UI `threadId`, and real `runId`.
|
|
9
|
-
The `AEX_EVENT_TYPES` and `AEX_EVENT_SOURCES` arrays list the events authored by
|
|
10
|
-
the current SDK, but the raw envelope accepts future type and source strings.
|
|
11
|
-
Unknown events are yielded with their original fields and data intact; `toAGUI`
|
|
12
|
-
projects an unknown type through AG-UI's `CUSTOM` carrier without changing the
|
|
13
|
-
raw event.
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
const session = await aex.sessions.open(sessionId);
|
|
17
|
-
for await (const event of session.events.iterate()) {
|
|
18
|
-
if (event.isTextMessage()) console.log(event.data.text);
|
|
19
|
-
if (event.isToolCallStart()) console.log(event.data.name);
|
|
20
|
-
}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
`iterate()` follows cursor pages lazily and retains at most one API page. Use
|
|
24
|
-
`list()` only when the full history is known to fit comfortably in memory.
|
|
25
|
-
|
|
26
|
-
## Run lifecycle
|
|
27
|
-
|
|
28
|
-
The public lifecycle is:
|
|
29
|
-
|
|
30
|
-
- `RUN_STARTED`: the accepted run began.
|
|
31
|
-
- `RUN_FINISHED`: all run state is committed, including the checkpoint.
|
|
32
|
-
- `RUN_ERROR`: the run failed. It may have no checkpoint when failure happened
|
|
33
|
-
before a checkpoint could be created.
|
|
34
|
-
|
|
35
|
-
Runtime execution ending is internal and is not emitted as a public lifecycle
|
|
36
|
-
event. Consumers observe only the committed `RUN_FINISHED` or `RUN_ERROR`
|
|
37
|
-
terminal boundary.
|
|
38
|
-
|
|
39
|
-
```ts
|
|
40
|
-
const run = session.messages.send("Continue the task.");
|
|
41
|
-
|
|
42
|
-
for await (const event of run) {
|
|
43
|
-
if (event.isRunFinished()) {
|
|
44
|
-
console.log(event.data.checkpoint);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const result = await run.finished();
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Message sends do not accept a historical `from` cursor. Their stream and
|
|
52
|
-
finished result are scoped to the run accepted by that send, so events from an
|
|
53
|
-
earlier run cannot be replayed into the current result. Use
|
|
54
|
-
`session.events.iterate()`, `.list()`, `.stream({ from })`, or
|
|
55
|
-
`.streamEnvelopes({ from })`
|
|
56
|
-
when intentionally reading session history.
|
|
57
|
-
|
|
58
|
-
`finished()` and `aex.start()` return the same run outcome vocabulary:
|
|
59
|
-
`succeeded`, `failed`, `timed_out`, `cancelled`, or `interrupted`. A run held by
|
|
60
|
-
suspension or approval is `interrupted`; the session lifecycle separately says
|
|
61
|
-
`suspended` or `awaiting_approval`. Only `succeeded` sets `result.ok` to true.
|
|
62
|
-
|
|
63
|
-
## Live stream
|
|
64
|
-
|
|
65
|
-
```ts
|
|
66
|
-
for await (const event of session.events.streamEnvelopes({ from: 0 })) {
|
|
67
|
-
if (event.replayable === false) {
|
|
68
|
-
console.log("live", event.liveSequence, event.type);
|
|
69
|
-
} else {
|
|
70
|
-
console.log("durable", event.sequence, event.type);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
`session.messages.send(...)` and `session.events.streamEnvelopes(...)` yield
|
|
76
|
-
`AexStreamEventView`, a discriminated union:
|
|
77
|
-
|
|
78
|
-
- Durable events have `sequence` and are replayable. They are the only events
|
|
79
|
-
returned by `events.iterate()`, `events.list()`, polling streams, archives,
|
|
80
|
-
and finished results.
|
|
81
|
-
- Provisional live events have `replayable: false`, a per-run `liveSequence`,
|
|
82
|
-
`ephemeral: true`, the coordinator `receivedAt` time, and no durable
|
|
83
|
-
`sequence`. They are not replayed from storage.
|
|
84
|
-
|
|
85
|
-
The SDK mints a short-lived coordinator ticket, reconnects durable events from
|
|
86
|
-
the last sequence after transient transport loss, deduplicates repeated live
|
|
87
|
-
frames by event id, and stops on a durable run terminal. The caller can tune
|
|
88
|
-
transport watchdogs with `idleTimeoutMs`, `pingIntervalMs`, and
|
|
89
|
-
`eventQuietRecheckMs`; these reconnect the event transport and never retry an
|
|
90
|
-
application run.
|
|
91
|
-
|
|
92
|
-
For a polling snapshot stream, use `session.events.stream()`. At invocation it
|
|
93
|
-
targets the session's current run, or its last completed run when idle. Older
|
|
94
|
-
run terminals cannot end that poll. The inclusive `from` cursor
|
|
95
|
-
(`sequence >= from`) filters yielded history without hiding the target run's
|
|
96
|
-
completion boundary:
|
|
97
|
-
|
|
98
|
-
```ts
|
|
99
|
-
for await (const event of session.events.stream({ from: 1024 })) {
|
|
100
|
-
console.log(event.sequence, event.type);
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
The cursor must be a non-negative safe integer. A session with no runs returns
|
|
105
|
-
one bounded snapshot instead of waiting for a terminal that cannot exist. For
|
|
106
|
-
an explicitly bounded read, use `session.events.list()`.
|
|
107
|
-
|
|
108
|
-
## Assistant messages
|
|
109
|
-
|
|
110
|
-
Messages are a separate resource from raw events:
|
|
111
|
-
|
|
112
|
-
```ts
|
|
113
|
-
const messages = await session.messages.list();
|
|
114
|
-
console.log(messages.at(-1)?.text);
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Messages come directly from the messages endpoint. A missing or broken route is
|
|
118
|
-
surfaced as an API failure rather than projected from another resource.
|
|
119
|
-
|
|
120
|
-
## Output granularity
|
|
121
|
-
|
|
122
|
-
`outputMode: "buffered"` emits coalesced assistant text. `"stream"` first emits
|
|
123
|
-
provisional live token deltas, then exactly one durable coalesced
|
|
124
|
-
`TEXT_MESSAGE_CONTENT` before the run terminal. Final `result.text`,
|
|
125
|
-
`result.messages`, and `result.events` use the durable coalesced event and do
|
|
126
|
-
not duplicate provisional deltas. Stream mode is rejected before submission
|
|
127
|
-
for providers that do not support it; it is never silently downgraded.
|
|
128
|
-
|
|
129
|
-
## Archives
|
|
130
|
-
|
|
131
|
-
```ts
|
|
132
|
-
const link = await session.events.archiveLink({ expiresIn: "1h" });
|
|
133
|
-
const archive = await session.events.download();
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
The event archive contains the same public events the SDK returns, byte-identical.
|
|
137
|
-
`archiveLink()` is a bounded convenience export. A session that exceeds the
|
|
138
|
-
bulk-export limits returns a typed `413` API error; an export that cannot finish
|
|
139
|
-
inside the server's request budget returns a typed `503` API error. The SDK does
|
|
140
|
-
not retry either response automatically. Traverse large histories with
|
|
141
|
-
`for await (const event of session.events.iterate())`; iteration follows bounded
|
|
142
|
-
cursor pages without retaining the whole history. `events.list()` and
|
|
143
|
-
`events.download()` are materializing convenience methods.
|
package/docs/files.md
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Files
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Files
|
|
6
|
-
|
|
7
|
-
There are two different file concepts:
|
|
8
|
-
|
|
9
|
-
- `aex.workspace.files`: reusable, versioned input resources.
|
|
10
|
-
- `session.files`: files captured from one session checkpoint.
|
|
11
|
-
|
|
12
|
-
Raw uploaded bytes are assets. A workspace file is a typed resource that pins
|
|
13
|
-
an asset, logical resource ID, version, hash, name, and mount path.
|
|
14
|
-
|
|
15
|
-
`mountPath` is always a destination directory. The runtime preserves each
|
|
16
|
-
source/archive filename inside that directory, so an `input.csv` published
|
|
17
|
-
with `mountPath: "/workspace/input"` appears at
|
|
18
|
-
`/workspace/input/input.csv`. `File.fromBytes({ name })` accepts the filename
|
|
19
|
-
stored in the archive; the optional `File.fromPath(path, { name })` override is
|
|
20
|
-
a filename-shaped label used only for resource identity while the source
|
|
21
|
-
basename remains in the archive. The SDK derives a lowercase, hyphenated 2–64
|
|
22
|
-
character value from either input. The result is the resource's storage slug; it never renames the mounted file.
|
|
23
|
-
This compatibility slug is distinct from the
|
|
24
|
-
directly supplied persisted name used by instructions. Multiple files can
|
|
25
|
-
intentionally share one mount directory as long as their resulting paths do not
|
|
26
|
-
collide.
|
|
27
|
-
|
|
28
|
-
## Reusable workspace files
|
|
29
|
-
|
|
30
|
-
```ts
|
|
31
|
-
import { File } from "@aexhq/sdk";
|
|
32
|
-
|
|
33
|
-
const source = await aex.workspace.files.publish(
|
|
34
|
-
await File.fromPath("./data/input.csv", { mountPath: "/workspace/input" })
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
const session = await aex.sessions.create({
|
|
38
|
-
model: "anthropic/claude-haiku-4-5",
|
|
39
|
-
assets: { files: [source] },
|
|
40
|
-
});
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
`publish()` uploads immutable bytes, then creates or versions the workspace
|
|
44
|
-
resource. `list()`, `get(resourceId, version?)`, and `delete(resourceId)` manage
|
|
45
|
-
the catalog. Runs always receive pinned refs; they never resolve a mutable
|
|
46
|
-
"latest" version during execution.
|
|
47
|
-
|
|
48
|
-
As a run boots, each attached input archive is checked against a separate
|
|
49
|
-
runtime materialization envelope: at most 16 MiB compressed, 128 MiB expanded,
|
|
50
|
-
and 1,000 materialized files or safe symlinks. The runtime may overlap bulk skill extraction with
|
|
51
|
-
the first model call, but it blocks the first tool, any post-run hook, and run
|
|
52
|
-
completion until every promised input is ready. These execution-safety bounds
|
|
53
|
-
are distinct from the broader raw-asset storage quota. The SDK and workspace
|
|
54
|
-
publisher reject known violations before a resource can be pinned, and the
|
|
55
|
-
runtime revalidates the immutable archive before use. An invalid input fails explicitly;
|
|
56
|
-
tools and terminal results never observe a silently partial input tree.
|
|
57
|
-
|
|
58
|
-
## Session file snapshots
|
|
59
|
-
|
|
60
|
-
```ts
|
|
61
|
-
const result = await session.messages.send("Create reports/summary.md").finished();
|
|
62
|
-
const snapshot = await session.files.list({
|
|
63
|
-
checkpointId: result.checkpoint?.checkpointId
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
console.log(snapshot.revision);
|
|
67
|
-
console.log(snapshot.files);
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
`SessionFilesSnapshot` contains both `revision` and `files`. Every file carries
|
|
71
|
-
the same `checkpointId` as the revision, plus its exact `sizeBytes` and
|
|
72
|
-
lowercase `sha256` digest. After `RUN_FINISHED`, this is the final committed
|
|
73
|
-
state for that run. During an active run, an older complete checkpoint may
|
|
74
|
-
still be visible.
|
|
75
|
-
|
|
76
|
-
## Find and read
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
const report = await session.files.findOne({
|
|
80
|
-
filename: "summary.md",
|
|
81
|
-
extension: "md"
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
if (report) {
|
|
85
|
-
const preview = await session.files.read(report, { maxBytes: 50_000 });
|
|
86
|
-
console.log(preview.text, preview.truncated);
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Use `list(query?)`, `find(query)`, or `findOne(query)`. Cross-session file
|
|
91
|
-
search is not part of the public SDK. Open the owning session and query its
|
|
92
|
-
checkpoint instead.
|
|
93
|
-
|
|
94
|
-
## Download and links
|
|
95
|
-
|
|
96
|
-
```ts
|
|
97
|
-
const file = snapshot.files[0];
|
|
98
|
-
if (file) {
|
|
99
|
-
const bytes = await session.files.download(file);
|
|
100
|
-
const link = await session.files.link(file, { expiresIn: "15m" });
|
|
101
|
-
const response = await session.files.fetch(file);
|
|
102
|
-
}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
ID selectors must include their checkpoint:
|
|
106
|
-
|
|
107
|
-
```ts
|
|
108
|
-
await session.files.download({ id: "file_123", checkpointId: "cp_123" });
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
A string ID alone is intentionally rejected because an ID without a revision
|
|
112
|
-
can resolve inconsistently after a later run.
|
|
113
|
-
|
|
114
|
-
`download()` resolves the selector against that checkpoint and verifies both
|
|
115
|
-
the byte length and SHA-256 digest before returning. An integrity mismatch
|
|
116
|
-
fails immediately and is not retried. `read()` remains a bounded prefix read
|
|
117
|
-
for large files and verifies integrity when it consumes the complete file.
|
|
118
|
-
`link()` returns the resolved file metadata alongside the direct storage URL;
|
|
119
|
-
`fetch()` returns only the raw one-shot storage `Response`, so retain metadata
|
|
120
|
-
from `list()`, `findOne()`, or `link()` when independently verifying that stream.
|
|
121
|
-
|
|
122
|
-
Omit the selector from `session.files.download()` to download the files
|
|
123
|
-
namespace archive. `session.download()` returns the complete public session
|
|
124
|
-
archive containing metadata, events, and files.
|
|
125
|
-
|
|
126
|
-
## Failed runs
|
|
127
|
-
|
|
128
|
-
A `RUN_ERROR` can occur before any checkpoint exists. In that case the result
|
|
129
|
-
has `files: []` and `checkpoint === undefined`. A `RUN_FINISHED` without a
|
|
130
|
-
checkpoint is a contract error and the SDK fails loudly.
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Limits & quotas
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Limits & quotas
|
|
6
|
-
|
|
7
|
-
These public ceilings bound a session, workspace, or request. Defaults that
|
|
8
|
-
apply when you omit an option are also summarized in [Defaults](defaults.md).
|
|
9
|
-
Your workspace's effective adjustable limits are available from `aex.whoami()`
|
|
10
|
-
(CLI: `aex whoami`); contact support when a documented limit is adjustable but
|
|
11
|
-
your workspace needs a higher value.
|
|
12
|
-
|
|
13
|
-
## Session scope
|
|
14
|
-
|
|
15
|
-
| Limit | Value | Adjustable? |
|
|
16
|
-
| --- | --- | --- |
|
|
17
|
-
| Session timeout | 1 minute minimum; 8 hours maximum and default | Per session with `overrides.timeout` |
|
|
18
|
-
| Per-call exec timeout | 30 minutes by default | Per tool call with `timeoutMs` |
|
|
19
|
-
| MCP connect timeout | 30 seconds by default | Per MCP server with `connectTimeoutMs` |
|
|
20
|
-
| MCP call timeout | 30 minutes by default | Per MCP server with `callTimeoutMs` |
|
|
21
|
-
| Per-session spend cap | None by default | Per session with `overrides.maxSpendUsd` |
|
|
22
|
-
| Agent iterations | 20 by default; 200 maximum | Per session with `overrides.maxTurns` |
|
|
23
|
-
|
|
24
|
-
### SessionFile capture
|
|
25
|
-
|
|
26
|
-
When a capture cap is reached, remaining files are dropped and counted in the
|
|
27
|
-
capture summary.
|
|
28
|
-
|
|
29
|
-
| Limit | Value |
|
|
30
|
-
| --- | --- |
|
|
31
|
-
| Capture wall-clock budget | 1 hour |
|
|
32
|
-
| Files captured | 50,000 maximum |
|
|
33
|
-
| Bytes per captured file | 500 GB (decimal) maximum |
|
|
34
|
-
| Total captured bytes | 500 GB (decimal) maximum |
|
|
35
|
-
|
|
36
|
-
These two bound a single session's capture. They are not a workspace storage
|
|
37
|
-
cap — see [Workspace scope](#workspace-scope) for what actually bounds stored
|
|
38
|
-
bytes.
|
|
39
|
-
|
|
40
|
-
### Tool output
|
|
41
|
-
|
|
42
|
-
| Limit | Value | Adjustable? |
|
|
43
|
-
| --- | --- | --- |
|
|
44
|
-
| `web_fetch` returned body | 500 KB (UTF-8) by default | Per call with `max_bytes` |
|
|
45
|
-
| `bash_output` per-read body | 1 MB (UTF-8) | No |
|
|
46
|
-
| `grep` maximum file size | 25 MB; use `bash grep` for larger files | No |
|
|
47
|
-
| `head`/`tail` maximum file size | 100 MB; use the equivalent shell commands for larger files | No |
|
|
48
|
-
| `grep`/`glob` files visited per recursive walk | 100,000, then the result is truncated with a notice | No |
|
|
49
|
-
|
|
50
|
-
### Attached archives
|
|
51
|
-
|
|
52
|
-
An archive that exceeds any of these bounds is rejected before its contents are
|
|
53
|
-
available to session code; a partial archive is never exposed.
|
|
54
|
-
|
|
55
|
-
| Limit | Value |
|
|
56
|
-
| --- | --- |
|
|
57
|
-
| Compressed archive bytes | 16 MiB maximum |
|
|
58
|
-
| Expanded archive bytes | 128 MiB maximum |
|
|
59
|
-
| Materialized files and safe symlinks | 1,000 maximum per archive |
|
|
60
|
-
| Fidelity metadata | 8 MiB maximum |
|
|
61
|
-
| Planned entries across attached workspace-file archives | 10,000 maximum |
|
|
62
|
-
|
|
63
|
-
### Subagents
|
|
64
|
-
|
|
65
|
-
Subagent breadth and depth use managed budgets rather than fixed numeric
|
|
66
|
-
entitlements. The service supports high recursive depth and workloads ranging
|
|
67
|
-
to hundreds or thousands of live child agents, subject to admission at spawn
|
|
68
|
-
time. Contact support before relying on unusually large fan-out.
|
|
69
|
-
|
|
70
|
-
## Managed runtime
|
|
71
|
-
|
|
72
|
-
- Only `/workspace` persists across turns of the same session. Everything else
|
|
73
|
-
is reset between turns and removed when the session ends.
|
|
74
|
-
- Declare OS and language packages with `environment.packages`. Packages
|
|
75
|
-
installed ad hoc during a turn are best-effort and do not persist to the next
|
|
76
|
-
turn. Python environments may enforce PEP 668; prefer declared packages or a
|
|
77
|
-
virtual environment under `/workspace`.
|
|
78
|
-
- The selected runtime preset's `memoryMb` is the memory ceiling. See the public
|
|
79
|
-
[`runtime-sizes.ts`](https://github.com/aexhq/aex/blob/main/packages/contracts/src/runtime-sizes.ts)
|
|
80
|
-
definitions and [Defaults](defaults.md).
|
|
81
|
-
- `overrides.maxTurns` controls the agent-loop limit (20 by default, 200
|
|
82
|
-
maximum).
|
|
83
|
-
|
|
84
|
-
## Workspace scope
|
|
85
|
-
|
|
86
|
-
Stored bytes are bounded by your plan's monthly storage grant, not by a fixed
|
|
87
|
-
per-workspace number. The Free plan includes 5 GB. An upload that cannot be
|
|
88
|
-
paid for is refused at admission with `quota_exhausted` (HTTP 409) and a
|
|
89
|
-
remedy telling you which of the two options applies: upgrade the plan, or add
|
|
90
|
-
a payment method and enable overage. Paid plans with overage enabled are not
|
|
91
|
-
refused; the usage is billed.
|
|
92
|
-
|
|
93
|
-
Use `aex.whoami()` to read the effective concurrency and submission limits
|
|
94
|
-
attached to the current workspace. Stable admission errors include
|
|
95
|
-
`quota_exhausted`, `workspace_concurrency_exceeded` and
|
|
96
|
-
`workspace_submit_rate_exceeded`.
|
|
97
|
-
|
|
98
|
-
| Limit | Value | Adjustable? |
|
|
99
|
-
| --- | --- | --- |
|
|
100
|
-
| Runtime asset archive | 16 MiB compressed, 128 MiB expanded, 1,000 materialized entries | No |
|
|
101
|
-
| Skill bundle directory depth | 16 | Contact support |
|
|
102
|
-
| Skill bundle entry path | 512 characters | No |
|
|
103
|
-
| `File.mountPath` | 512 characters | No |
|
|
104
|
-
|
|
105
|
-
`File.mountPath` names a directory, not a destination filename. The attached
|
|
106
|
-
file retains its source/archive filename below that directory; see
|
|
107
|
-
[Files](files.md).
|
|
108
|
-
|
|
109
|
-
## Request scope
|
|
110
|
-
|
|
111
|
-
| Limit | Value | Adjustable? |
|
|
112
|
-
| --- | --- | --- |
|
|
113
|
-
| Signed file URL TTL | 300 seconds at the API layer | Per call with `expiresSeconds` |
|
|
114
|
-
| Event-stream connection ticket TTL | 60 seconds | Per mint with `ttlMs` |
|
package/docs/limits.md
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Limits
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Limits
|
|
6
|
-
|
|
7
|
-
aex sessions autonomous agents on the hosted managed runtime. The SDK opens durable
|
|
8
|
-
sessions, sends turns, streams events, captures files, and exposes auth-gated
|
|
9
|
-
reads and downloads.
|
|
10
|
-
|
|
11
|
-
For what the product supports, see [Features](https://aex.dev/docs/features/).
|
|
12
|
-
For the current provider/model set, see the generated
|
|
13
|
-
[provider/runtime capability matrix](provider-runtime-capabilities.md).
|
|
14
|
-
|
|
15
|
-
## Current Defaults
|
|
16
|
-
|
|
17
|
-
| Area | Default |
|
|
18
|
-
| --- | --- |
|
|
19
|
-
| Workspace storage | Bounded by the plan's monthly storage grant (Free: 5 GB); paid plans bill beyond the allowance once overage is enabled. |
|
|
20
|
-
|
|
21
|
-
## Product Boundaries
|
|
22
|
-
|
|
23
|
-
| Area | Boundary |
|
|
24
|
-
| --- | --- |
|
|
25
|
-
| Runtime | New submissions run on a managed runtime. `runtime.kind` selects `spot_container` (the default), `container`, or `lambda`; `runtime.size` selects a managed machine-size preset (`Sizes.*`). Both fields are optional. Runtimes differ in capability and delivery semantics, not only in price — each publishes a profile at `whoami().runtimeCapabilities.profilesByRuntimeKind`, and a submission exceeding the selected profile is refused before execution. See [Models & runtimes](../concepts/providers-and-runtimes.md). |
|
|
26
|
-
| Single effect | One atomic LLM call or tool call runs for at most 14 minutes on every runtime (`profile.limits.maxSingleEffectMs`). On `lambda` the live budget may be shorter, bounded by the remaining invocation time. An overrun fails that call with a typed error. |
|
|
27
|
-
| Provider policy | Provider retention, training exclusion, HIPAA/BAA, data residency, abuse policy, and pricing belong to the selected provider account, endpoint, and contract. |
|
|
28
|
-
| Secrets | Provider keys, MCP credentials, and environment secrets are caller-owned. aex excludes secret values from idempotency and uses the explicit secret surfaces described in [Secrets](secrets.md). |
|
|
29
|
-
| MCP servers | Remote MCP servers are customer-trusted systems. aex validates declarations and routes credentials; it does not make an untrusted MCP server safe. |
|
|
30
|
-
| Files | Captured files, events, and metadata are stored under the session record and downloaded through auth-gated routes. SessionFile content is customer content. |
|
|
31
|
-
| Human review | Sessions execute after submission. Cancellation is available, but aex does not pause a session for platform-mediated approval or interactive clarification. |
|
|
32
|
-
| Sessions | The durable product primitive is the session record. Sessions can be resumed by id and auto-suspend after the configured idle window; persistent named agent profiles and saved agent definitions are out of scope. |
|
|
33
|
-
| Hosting | The SDK and CLI connect to the hosted aex API. `baseUrl` may also target the localhost development stack; self-hosting is not supported. |
|
|
34
|
-
| Model cost | Model tokens are served through the platform's managed gateway and billed by aex as a usage dimension on the run. Finished results report the cost and provider usage recorded for that run. |
|
|
35
|
-
|
|
36
|
-
## Provider Policy Links
|
|
37
|
-
|
|
38
|
-
These links are starting points for provider-owned policy areas; they do not
|
|
39
|
-
create aex guarantees.
|
|
40
|
-
|
|
41
|
-
- Anthropic API data retention policy: <https://platform.claude.com/docs/en/manage-claude/api-and-data-retention>
|
|
42
|
-
- OpenAI API data controls: <https://platform.openai.com/docs/guides/your-data>
|
|
43
|
-
- Mistral privacy and API data handling: <https://docs.mistral.ai/admin/security-access/privacy>
|
|
44
|
-
- Gemini API data handling: <https://ai.google.dev/gemini-api/docs/logs-policy>
|
|
45
|
-
|
|
46
|
-
## Unsupported Claims
|
|
47
|
-
|
|
48
|
-
Do not describe aex as providing self-hosting, provider-wide retention,
|
|
49
|
-
HIPAA/BAA or data-residency guarantees, a general-purpose sandbox for every
|
|
50
|
-
downstream service, human-in-the-loop approval checkpoints, or persistent agent
|
|
51
|
-
identity.
|
package/docs/mcp.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: MCP
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# MCP
|
|
6
|
-
|
|
7
|
-
MCP support is remote HTTPS/SSE only. Stdio MCP servers are rejected because aex is a remote session dispatcher, not a local process supervisor.
|
|
8
|
-
|
|
9
|
-
Rules:
|
|
10
|
-
|
|
11
|
-
- MCP servers are declared in the session request config (`mcpServers`).
|
|
12
|
-
- Runtime HITL is disabled.
|
|
13
|
-
- Tool policy must be configured before session start.
|
|
14
|
-
- Enabled MCP tools use `always_allow` provider permissions.
|
|
15
|
-
- `always_ask` is not used by aex MVP.
|
|
16
|
-
- Bearer/OAuth-style auth is carried by the `McpServer` instance (its `headers`); the SDK splits it into the vaulted secrets channel server-side.
|
|
17
|
-
|
|
18
|
-
Use allowlists for sensitive servers whenever possible.
|
|
19
|
-
|
|
20
|
-
## Large-payload responses
|
|
21
|
-
|
|
22
|
-
aex is a session dispatcher, not an MCP runtime. We intentionally do
|
|
23
|
-
**not** interpose on the transport between the model and an upstream MCP
|
|
24
|
-
server, so we cannot elide MCP responses or write them to the session
|
|
25
|
-
filesystem on the user's behalf. Anything an MCP tool returns lands
|
|
26
|
-
directly in the model's context.
|
|
27
|
-
|
|
28
|
-
For ingestion-style MCP servers that return large JSON blobs (search results,
|
|
29
|
-
catalogue dumps, bulk reads), prefer a skill that writes files instead of
|
|
30
|
-
putting the whole response in model context:
|
|
31
|
-
|
|
32
|
-
1. Package the upstream helper as a Skill (`Skill.fromDir` / `Skill.fromUrl`)
|
|
33
|
-
and pass it via the top-level `skills` option. The skill can include a CLI
|
|
34
|
-
binary or script that the agent invokes with its bash tool.
|
|
35
|
-
2. Keep any upstream HTTPS credentials in `environment.secrets`.
|
|
36
|
-
3. Have the CLI write the full payload to the session filesystem. By default,
|
|
37
|
-
files it creates or modifies are captured automatically; pass
|
|
38
|
-
`fileCapture.allowedDirs` only when you want to narrow capture to specific roots.
|
|
39
|
-
Return only a small handle (path, item count, summary) to the model.
|
|
40
|
-
|
|
41
|
-
The agent sees the handle in context; the bytes ride out through
|
|
42
|
-
`download()` as normal captured files.
|
|
43
|
-
|
|
44
|
-
If you genuinely want everything in context (small responses, code
|
|
45
|
-
search, etc.), use MCP. If the payload would blow your context budget,
|
|
46
|
-
the CLI-as-skill pattern is the supported answer — there is no platform
|
|
47
|
-
flag to elide MCP responses.
|
package/docs/networking.md
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Networking
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Networking
|
|
6
|
-
|
|
7
|
-
Session networking is managed by aex. Your code can make ordinary outbound HTTP
|
|
8
|
-
requests, subject to the session's `environment.networking` policy and the
|
|
9
|
-
service-wide safety boundary. Private, loopback, link-local, and otherwise
|
|
10
|
-
unsafe destinations remain blocked.
|
|
11
|
-
|
|
12
|
-
`environment.networking` has two modes:
|
|
13
|
-
|
|
14
|
-
- `open` is the default and does not require a per-session allowlist.
|
|
15
|
-
- `limited` restricts supported outbound HTTP clients to the hosts you list in
|
|
16
|
-
`allowedHosts`.
|
|
17
|
-
|
|
18
|
-
`allowedHosts` is a useful least-privilege control and an auditable statement of
|
|
19
|
-
intent. It is not a security boundary against adversarial code executing inside
|
|
20
|
-
the session; low-level networking that bypasses supported HTTP client behavior
|
|
21
|
-
may fail and remains subject to the service-wide egress policy.
|
|
22
|
-
|
|
23
|
-
## Paths that always work
|
|
24
|
-
|
|
25
|
-
These managed capabilities are not subject to `environment.networking`, so you
|
|
26
|
-
do not list their hosts:
|
|
27
|
-
|
|
28
|
-
- The model/provider call for the session and its subagents.
|
|
29
|
-
- The built-in `web_search` and `web_fetch` tools.
|
|
30
|
-
- Remote MCP servers declared in `mcpServers`; see [MCP](mcp.md).
|
|
31
|
-
- Package registries used by packages declared in `environment.packages`.
|
|
32
|
-
|
|
33
|
-
`environment.networking` governs other outbound requests made by your code,
|
|
34
|
-
such as `curl` in the `bash` tool, Python `requests`, Node `fetch`, or a
|
|
35
|
-
third-party SDK.
|
|
36
|
-
|
|
37
|
-
## Restrict a session to an allowlist
|
|
38
|
-
|
|
39
|
-
Set `mode: "limited"` and list the hosts your code needs. A supported HTTP
|
|
40
|
-
client is refused when it requests a host that is neither listed nor covered by
|
|
41
|
-
one of the managed capabilities above. Package registries implied by
|
|
42
|
-
`environment.packages` are allowed automatically.
|
|
43
|
-
|
|
44
|
-
### TypeScript
|
|
45
|
-
|
|
46
|
-
```ts
|
|
47
|
-
import { Aex } from "@aexhq/sdk";
|
|
48
|
-
|
|
49
|
-
const aex = new Aex({ apiKey: process.env.AEX_API_KEY! });
|
|
50
|
-
|
|
51
|
-
await aex.start({
|
|
52
|
-
model: "anthropic/claude-haiku-4-5",
|
|
53
|
-
message: "Fetch the public status page and summarize it.",
|
|
54
|
-
environment: {
|
|
55
|
-
networking: {
|
|
56
|
-
mode: "limited",
|
|
57
|
-
allowedHosts: ["api.example.com", "status.example.com"]
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
`allowedHosts` entries are lowercased host names such as `api.example.com`.
|
|
64
|
-
Include a non-default port when needed (`api.example.com:8443`); a bare host
|
|
65
|
-
covers HTTPS on port 443. Matching is exact, not wildcard or suffix based, so
|
|
66
|
-
list each required host.
|
|
67
|
-
|
|
68
|
-
Keep the allowlist in your session options so the network policy stays next to
|
|
69
|
-
the code that needs it.
|
|
70
|
-
|
|
71
|
-
## Open mode
|
|
72
|
-
|
|
73
|
-
A session that omits `environment.networking` uses `open` mode. Set
|
|
74
|
-
`mode: "open"` explicitly when you want that choice visible in configuration.
|
|
75
|
-
Open mode removes the per-session allowlist, but the service-wide safety
|
|
76
|
-
boundary still applies.
|
|
77
|
-
|
|
78
|
-
```ts
|
|
79
|
-
await aex.start({
|
|
80
|
-
model: "anthropic/claude-haiku-4-5",
|
|
81
|
-
message: "Research the topic across the open web.",
|
|
82
|
-
environment: { networking: { mode: "open" } },
|
|
83
|
-
});
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
Built-in web research uses the managed `web_search` and `web_fetch` tools and
|
|
87
|
-
does not require an allowlist entry.
|
|
88
|
-
|
|
89
|
-
## Ordinary HTTP clients work without extra setup
|
|
90
|
-
|
|
91
|
-
Use normal HTTP clients without configuring a per-request proxy or installing a
|
|
92
|
-
custom certificate. For example, in a limited session that allows
|
|
93
|
-
`api.example.com`:
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
curl -sS https://api.example.com/v1/status # works
|
|
97
|
-
curl -sS https://other-host.example # refused (not in allowlist)
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Clients that override standard network or certificate behavior, or use a
|
|
101
|
-
non-HTTP protocol, may fail even for a listed host. Let the client use its
|
|
102
|
-
normal defaults whenever possible.
|
|
103
|
-
|
|
104
|
-
## Limitations
|
|
105
|
-
|
|
106
|
-
- `allowedHosts` applies only in `limited` mode.
|
|
107
|
-
- A listed host can still be unavailable under the service-wide safety policy.
|
|
108
|
-
- Exact host matching means subdomains must be listed separately.
|
|
109
|
-
- Contact support when a required public host is unavailable.
|
|
110
|
-
|
|
111
|
-
For credentialed HTTP calls, pass the credential through
|
|
112
|
-
`environment.secrets` and let your code use its normal HTTP client. For remote
|
|
113
|
-
tool servers, see [MCP](mcp.md). For all session configuration fields, see
|
|
114
|
-
[Session configuration](session-config.md).
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Model access
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Model access
|
|
6
|
-
|
|
7
|
-
Generated from `packages/contracts/src/models.ts`.
|
|
8
|
-
|
|
9
|
-
Regenerate with `bun run capabilities:generate`; check with `bun run capabilities:check`.
|
|
10
|
-
|
|
11
|
-
Aex routes every model through the managed Vercel AI Gateway. You name a model
|
|
12
|
-
by its gateway `creator/model` **slug** and the platform's single managed key
|
|
13
|
-
handles the upstream provider relationship — you never supply a provider API
|
|
14
|
-
key, and there is no `provider` field.
|
|
15
|
-
|
|
16
|
-
## Model ids are gateway slugs
|
|
17
|
-
|
|
18
|
-
- A model id is a `creator/model` slug string, validated at the boundary by `parseModelSlug` against `^[a-z0-9-]+\/[A-Za-z0-9._:-]+$` (lowercase creator, then `/`, then the model segment).
|
|
19
|
-
- Examples: `anthropic/claude-haiku-4-5`, `anthropic/claude-sonnet-4-6`, `deepseek/deepseek-v4-flash`, `openai/gpt-4.1`, `google/gemini-2.5-flash`.
|
|
20
|
-
- The catalog is OPEN: adding a model the gateway serves needs zero code — a well-formed slug just works. A slug this SDK does not recognize is still accepted at the boundary and arbitrated by the gateway at submit time; a truly unknown model fails there.
|
|
21
|
-
|
|
22
|
-
## Streaming
|
|
23
|
-
|
|
24
|
-
`outputMode: "stream"` is honored for ALL models — every model streams through the gateway. There is no per-model streaming-capability gate.
|
|
25
|
-
|
|
26
|
-
## Skills
|
|
27
|
-
|
|
28
|
-
Skills are supplied through the top-level `skills` option. Build one with `Skill.fromDir`, `Skill.fromUrl`, `Skill.fromFiles`, `Skill.fromContent`, or `Skill.fromBytes`; each normalizes to a named workspace skill that the platform snapshots into durable session asset storage.
|
|
29
|
-
|
|
30
|
-
## Runtime selection is independent of model
|
|
31
|
-
|
|
32
|
-
Runtime selection is independent of the model: `runtime.kind` accepts `container`, `spot_container`, or `lambda`; `runtime.size` accepts the managed size presets.
|