@ellipsis-dev/sdk 0.22.0 → 0.27.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/dist/index.d.ts +64 -31
- package/dist/index.js +55 -19
- package/dist/store/index.d.ts +33 -4
- package/dist/store/index.js +238 -65
- package/dist/stream/index.d.ts +1 -1
- package/dist/{types-BKAbWcLN.d.ts → types-ClEF_IA9.d.ts} +1349 -938
- package/package.json +1 -1
- package/schema/frames.schema.json +1334 -1298
- package/schema/openapi.v1.json +1820 -1358
|
@@ -280,6 +280,32 @@ interface paths {
|
|
|
280
280
|
patch?: never;
|
|
281
281
|
trace?: never;
|
|
282
282
|
};
|
|
283
|
+
'/v1/automations/{automation_id}/metrics': {
|
|
284
|
+
parameters: {
|
|
285
|
+
query?: never;
|
|
286
|
+
header?: never;
|
|
287
|
+
path?: never;
|
|
288
|
+
cookie?: never;
|
|
289
|
+
};
|
|
290
|
+
/**
|
|
291
|
+
* Get Automation Metrics
|
|
292
|
+
* @description Return an automation's session distribution and trailing spend,
|
|
293
|
+
* by id or by name.
|
|
294
|
+
*
|
|
295
|
+
* `samples` carries one entry per finished session (duration, cost,
|
|
296
|
+
* tokens) for distributions; `spend_windows` carries what the
|
|
297
|
+
* automation's sessions cost over the last 1, 7, and 28 days against
|
|
298
|
+
* its budget for each window.
|
|
299
|
+
*/
|
|
300
|
+
get: operations['get_automation_metrics'];
|
|
301
|
+
put?: never;
|
|
302
|
+
post?: never;
|
|
303
|
+
delete?: never;
|
|
304
|
+
options?: never;
|
|
305
|
+
head?: never;
|
|
306
|
+
patch?: never;
|
|
307
|
+
trace?: never;
|
|
308
|
+
};
|
|
283
309
|
'/v1/automations/{automation_id}/sessions': {
|
|
284
310
|
parameters: {
|
|
285
311
|
query?: never;
|
|
@@ -780,7 +806,10 @@ interface paths {
|
|
|
780
806
|
* List Reviews
|
|
781
807
|
* @description List code reviews, newest first.
|
|
782
808
|
*
|
|
783
|
-
* `findings`
|
|
809
|
+
* `findings` and `configuration` are omitted (counters only). Each
|
|
810
|
+
* filter is a set: repeat `repository`, `pull_request_number`, or
|
|
811
|
+
* `status` to match any of several values. `start` and `end` bound
|
|
812
|
+
* the review's creation time.
|
|
784
813
|
*
|
|
785
814
|
* Webhook-created reviews appear here too, so this answers "show
|
|
786
815
|
* me every review on this PR".
|
|
@@ -791,9 +820,10 @@ interface paths {
|
|
|
791
820
|
* Create Review
|
|
792
821
|
* @description Run a code review on demand.
|
|
793
822
|
*
|
|
794
|
-
* Reviews an
|
|
795
|
-
*
|
|
796
|
-
*
|
|
823
|
+
* Reviews an open pull request. Which pipeline runs is not a
|
|
824
|
+
* parameter: it resolves from the repository's files exactly as
|
|
825
|
+
* it does for a push, so an on-demand review never disagrees with
|
|
826
|
+
* the automatic one.
|
|
797
827
|
*
|
|
798
828
|
* A review is one pipeline run over one commit range, with one
|
|
799
829
|
* agent session per stage: `review.id` is the run id, and
|
|
@@ -912,9 +942,10 @@ interface paths {
|
|
|
912
942
|
* @description Start a cloud agent session.
|
|
913
943
|
*
|
|
914
944
|
* The daily driver: a prompt, optionally where to run it
|
|
915
|
-
* (`environment`) and the run's own settings, in the
|
|
916
|
-
* vocabulary.
|
|
917
|
-
*
|
|
945
|
+
* (`environment`) and the run's own settings, in the AutomationConfig
|
|
946
|
+
* vocabulary. What you send is what runs: omit `environment` and the
|
|
947
|
+
* session runs in the built-in basic sandbox. A missing model or
|
|
948
|
+
* budget comes from the organization's settings, so
|
|
918
949
|
* `{"prompt": "..."}` alone is a complete request. `prompt` is the
|
|
919
950
|
* first message; omit it and the session starts idle, waiting for
|
|
920
951
|
* one. 400 when `interactive` is false and there is no prompt, or
|
|
@@ -955,6 +986,32 @@ interface paths {
|
|
|
955
986
|
patch?: never;
|
|
956
987
|
trace?: never;
|
|
957
988
|
};
|
|
989
|
+
'/v1/sessions/{session_id}/diff': {
|
|
990
|
+
parameters: {
|
|
991
|
+
query?: never;
|
|
992
|
+
header?: never;
|
|
993
|
+
path?: never;
|
|
994
|
+
cookie?: never;
|
|
995
|
+
};
|
|
996
|
+
/**
|
|
997
|
+
* Get Agent Session Diff
|
|
998
|
+
* @description Return the session's uncommitted changes as a patch.
|
|
999
|
+
*
|
|
1000
|
+
* One unified-diff section per changed file, captured from the
|
|
1001
|
+
* sandbox's working tree when the session ended. The per-file
|
|
1002
|
+
* counts ride on the session itself (`git.repos[].files`); this
|
|
1003
|
+
* is the text behind them. Empty when the tree was clean. A
|
|
1004
|
+
* sandbox token may read only its own session's diff.
|
|
1005
|
+
*/
|
|
1006
|
+
get: operations['get_agent_session_diff'];
|
|
1007
|
+
put?: never;
|
|
1008
|
+
post?: never;
|
|
1009
|
+
delete?: never;
|
|
1010
|
+
options?: never;
|
|
1011
|
+
head?: never;
|
|
1012
|
+
patch?: never;
|
|
1013
|
+
trace?: never;
|
|
1014
|
+
};
|
|
958
1015
|
'/v1/sessions/{session_id}/export': {
|
|
959
1016
|
parameters: {
|
|
960
1017
|
query?: never;
|
|
@@ -1120,19 +1177,18 @@ interface paths {
|
|
|
1120
1177
|
* Get Organization Settings
|
|
1121
1178
|
* @description Get the organization settings.
|
|
1122
1179
|
*
|
|
1123
|
-
* The default model
|
|
1124
|
-
*
|
|
1125
|
-
*
|
|
1180
|
+
* The default model every session falls back to when neither its
|
|
1181
|
+
* request nor its automation names one, and the per-session budget
|
|
1182
|
+
* ceiling no session may exceed.
|
|
1126
1183
|
*/
|
|
1127
1184
|
get: operations['get_organization_settings'];
|
|
1128
1185
|
/**
|
|
1129
1186
|
* Set Organization Settings
|
|
1130
1187
|
* @description Set the organization settings.
|
|
1131
1188
|
*
|
|
1132
|
-
* Replaces
|
|
1133
|
-
*
|
|
1134
|
-
*
|
|
1135
|
-
* in US dollars, at most the platform ceiling. Null clears each.
|
|
1189
|
+
* Replaces both: `default_model` accepts an alias or canonical id
|
|
1190
|
+
* and is stored canonical; `budget_ceiling.session` is in US
|
|
1191
|
+
* dollars, at most the platform ceiling. Null clears each.
|
|
1136
1192
|
* Refused for sandbox tokens (potentially prompt-injected code must
|
|
1137
1193
|
* not repoint the organization's defaults).
|
|
1138
1194
|
*/
|
|
@@ -1145,666 +1201,71 @@ interface paths {
|
|
|
1145
1201
|
trace?: never;
|
|
1146
1202
|
};
|
|
1147
1203
|
'/v1/templates': {
|
|
1148
|
-
parameters: {
|
|
1149
|
-
query?: never;
|
|
1150
|
-
header?: never;
|
|
1151
|
-
path?: never;
|
|
1152
|
-
cookie?: never;
|
|
1153
|
-
};
|
|
1154
|
-
/**
|
|
1155
|
-
* List Agent Templates
|
|
1156
|
-
* @description List the built-in starter agent templates.
|
|
1157
|
-
*
|
|
1158
|
-
* Behind auth but not account-scoped — the data is static
|
|
1159
|
-
* product content shared by the dashboard, landing site, and CLI.
|
|
1160
|
-
*/
|
|
1161
|
-
get: operations['list_agent_templates'];
|
|
1162
|
-
put?: never;
|
|
1163
|
-
post?: never;
|
|
1164
|
-
delete?: never;
|
|
1165
|
-
options?: never;
|
|
1166
|
-
head?: never;
|
|
1167
|
-
patch?: never;
|
|
1168
|
-
trace?: never;
|
|
1169
|
-
};
|
|
1170
|
-
'/v1/templates/{template_id}': {
|
|
1171
|
-
parameters: {
|
|
1172
|
-
query?: never;
|
|
1173
|
-
header?: never;
|
|
1174
|
-
path?: never;
|
|
1175
|
-
cookie?: never;
|
|
1176
|
-
};
|
|
1177
|
-
/**
|
|
1178
|
-
* Get Agent Template
|
|
1179
|
-
* @description Return one built-in agent template by slug.
|
|
1180
|
-
*/
|
|
1181
|
-
get: operations['get_agent_template'];
|
|
1182
|
-
put?: never;
|
|
1183
|
-
post?: never;
|
|
1184
|
-
delete?: never;
|
|
1185
|
-
options?: never;
|
|
1186
|
-
head?: never;
|
|
1187
|
-
patch?: never;
|
|
1188
|
-
trace?: never;
|
|
1189
|
-
};
|
|
1190
|
-
'/v1/usage': {
|
|
1191
|
-
parameters: {
|
|
1192
|
-
query?: never;
|
|
1193
|
-
header?: never;
|
|
1194
|
-
path?: never;
|
|
1195
|
-
cookie?: never;
|
|
1196
|
-
};
|
|
1197
|
-
/**
|
|
1198
|
-
* Get Usage
|
|
1199
|
-
* @description Return the caller's usage dashboard data.
|
|
1200
|
-
*/
|
|
1201
|
-
get: operations['get_usage_endpoint'];
|
|
1202
|
-
put?: never;
|
|
1203
|
-
post?: never;
|
|
1204
|
-
delete?: never;
|
|
1205
|
-
options?: never;
|
|
1206
|
-
head?: never;
|
|
1207
|
-
patch?: never;
|
|
1208
|
-
trace?: never;
|
|
1209
|
-
};
|
|
1210
|
-
}
|
|
1211
|
-
interface components {
|
|
1212
|
-
schemas: {
|
|
1213
|
-
/** AgentConfig */
|
|
1214
|
-
AgentConfig: {
|
|
1215
|
-
/** @default {} */
|
|
1216
|
-
budget: components['schemas']['AgentConfigBudget'];
|
|
1217
|
-
/**
|
|
1218
|
-
* @default {
|
|
1219
|
-
* "system": ""
|
|
1220
|
-
* }
|
|
1221
|
-
*/
|
|
1222
|
-
claude: components['schemas']['AgentConfigClaude'];
|
|
1223
|
-
codex?: components['schemas']['AgentConfigCodex'] | null;
|
|
1224
|
-
/**
|
|
1225
|
-
* @default {
|
|
1226
|
-
* "enabled": true,
|
|
1227
|
-
* "metadata": {
|
|
1228
|
-
* "annotations": {},
|
|
1229
|
-
* "labels": []
|
|
1230
|
-
* },
|
|
1231
|
-
* "version": "v1"
|
|
1232
|
-
* }
|
|
1233
|
-
*/
|
|
1234
|
-
ellipsis: components['schemas']['AgentConfigEllipsis'];
|
|
1235
|
-
/**
|
|
1236
|
-
* Environment
|
|
1237
|
-
* @default {
|
|
1238
|
-
* "compute": {},
|
|
1239
|
-
* "hooks": {},
|
|
1240
|
-
* "image": {},
|
|
1241
|
-
* "mcp_servers": [],
|
|
1242
|
-
* "repositories": [],
|
|
1243
|
-
* "variables": []
|
|
1244
|
-
* }
|
|
1245
|
-
*/
|
|
1246
|
-
environment: string | components['schemas']['AgentConfigEnvironment'];
|
|
1247
|
-
input?: components['schemas']['AgentConfigInput'] | null;
|
|
1248
|
-
output?: components['schemas']['AgentConfigOutput'] | null;
|
|
1249
|
-
/**
|
|
1250
|
-
* @default {
|
|
1251
|
-
* "ellipsis": true,
|
|
1252
|
-
* "github": {}
|
|
1253
|
-
* }
|
|
1254
|
-
*/
|
|
1255
|
-
permissions: components['schemas']['AgentConfigPermissions'];
|
|
1256
|
-
/**
|
|
1257
|
-
* Skills
|
|
1258
|
-
* @default []
|
|
1259
|
-
*/
|
|
1260
|
-
skills: components['schemas']['AgentConfigSkill'][];
|
|
1261
|
-
/** Trigger */
|
|
1262
|
-
trigger?: (components['schemas']['AgentConfigCronTrigger'] | components['schemas']['AgentConfigReactTrigger'] | components['schemas']['AgentConfigMentionTrigger']) | null;
|
|
1263
|
-
};
|
|
1264
|
-
/** AgentConfigBudget */
|
|
1265
|
-
AgentConfigBudget: {
|
|
1266
|
-
/** Day */
|
|
1267
|
-
day?: number | null;
|
|
1268
|
-
/** Month */
|
|
1269
|
-
month?: number | null;
|
|
1270
|
-
/** Session */
|
|
1271
|
-
session?: number | null;
|
|
1272
|
-
/** Week */
|
|
1273
|
-
week?: number | null;
|
|
1274
|
-
};
|
|
1275
|
-
/** AgentConfigClaude */
|
|
1276
|
-
AgentConfigClaude: {
|
|
1277
|
-
effort?: components['schemas']['EffortLevel'] | null;
|
|
1278
|
-
/** Fallback Model */
|
|
1279
|
-
fallback_model?: string | null;
|
|
1280
|
-
/** Max Turns */
|
|
1281
|
-
max_turns?: number | null;
|
|
1282
|
-
/** Model */
|
|
1283
|
-
model?: string | null;
|
|
1284
|
-
settings?: components['schemas']['AgentConfigSettingsRef'] | null;
|
|
1285
|
-
/**
|
|
1286
|
-
* System
|
|
1287
|
-
* @default
|
|
1288
|
-
*/
|
|
1289
|
-
system: string | components['schemas']['AgentConfigSystemFileRef'] | (string | components['schemas']['AgentConfigSystemFileRef'])[];
|
|
1290
|
-
};
|
|
1291
|
-
/**
|
|
1292
|
-
* AgentConfigCodex
|
|
1293
|
-
* @description The `codex:` block — run this agent on OpenAI's Codex CLI instead of
|
|
1294
|
-
* Claude Code. Declaring the block at all is what selects the harness
|
|
1295
|
-
* (`AgentConfig.harness`).
|
|
1296
|
-
*
|
|
1297
|
-
* Deliberately a small subset of `AgentConfigClaude`: the fields omitted here
|
|
1298
|
-
* are ones Codex has no equivalent for (`effort`, `fallback_model`,
|
|
1299
|
-
* `settings`) or that the platform does not yet wire through for this harness
|
|
1300
|
-
* (`max_turns`, `skills`, MCP servers). They are omitted rather than
|
|
1301
|
-
* accepted-and-ignored, because `StrictConfigModel` forbids extra keys — so a
|
|
1302
|
-
* config that sets one fails loudly at parse time instead of silently not doing
|
|
1303
|
-
* it. The budget still bounds a run regardless.
|
|
1304
|
-
*/
|
|
1305
|
-
AgentConfigCodex: {
|
|
1306
|
-
/**
|
|
1307
|
-
* Model
|
|
1308
|
-
* @default gpt-5.6-terra
|
|
1309
|
-
*/
|
|
1310
|
-
model: string;
|
|
1311
|
-
/**
|
|
1312
|
-
* System
|
|
1313
|
-
* @default
|
|
1314
|
-
*/
|
|
1315
|
-
system: string | components['schemas']['AgentConfigSystemFileRef'] | (string | components['schemas']['AgentConfigSystemFileRef'])[];
|
|
1316
|
-
};
|
|
1317
|
-
/**
|
|
1318
|
-
* AgentConfigCompute
|
|
1319
|
-
* @description Sandbox compute sizing. Every field is optional; None inherits the
|
|
1320
|
-
* platform default (1 vCPU / 4096 MiB / 3600s — see DEFAULT_MODAL_* in
|
|
1321
|
-
* models/ellipsis/sandboxes/sandbox.py). A resolved value outside the platform
|
|
1322
|
-
* bounds fails validation loudly (a sync error on the config) rather than
|
|
1323
|
-
* being clamped silently.
|
|
1324
|
-
*
|
|
1325
|
-
* `memory` and `timeout` each accept a shorthand string ("8GB", "30m") or an
|
|
1326
|
-
* explicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /
|
|
1327
|
-
* `timeout_seconds` properties resolve either form to the canonical integer
|
|
1328
|
-
* the sandbox driver consumes.
|
|
1329
|
-
*
|
|
1330
|
-
* `timeout` is the max wall-clock the agent may run before the sandbox is
|
|
1331
|
-
* killed, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS — equal to the default, so
|
|
1332
|
-
* today the knob only shortens a session; the cap matches the 1-hour validity
|
|
1333
|
-
* of the sandbox's GitHub token). The worker's lease/visibility heartbeat
|
|
1334
|
-
* ceiling is derived from that cap, so a run at the max stays owned by its
|
|
1335
|
-
* worker for its whole life.
|
|
1336
|
-
*
|
|
1337
|
-
* Compute is billed on the requested allocation over the sandbox's
|
|
1338
|
-
* wall-clock lifetime, so a bigger/longer box costs proportionally more.
|
|
1339
|
-
*/
|
|
1340
|
-
AgentConfigCompute: {
|
|
1341
|
-
/** Cpu */
|
|
1342
|
-
cpu?: number | null;
|
|
1343
|
-
/** Memory */
|
|
1344
|
-
memory?: string | components['schemas']['AgentConfigMemorySize'] | null;
|
|
1345
|
-
/** Timeout */
|
|
1346
|
-
timeout?: string | components['schemas']['AgentConfigDuration'] | null;
|
|
1347
|
-
};
|
|
1348
|
-
/** AgentConfigCronTrigger */
|
|
1349
|
-
AgentConfigCronTrigger: {
|
|
1350
|
-
/** Schedule */
|
|
1351
|
-
schedule: string;
|
|
1352
|
-
/**
|
|
1353
|
-
* @description discriminator enum property added by openapi-typescript
|
|
1354
|
-
* @enum {string}
|
|
1355
|
-
*/
|
|
1356
|
-
type: 'cron';
|
|
1357
|
-
};
|
|
1358
|
-
/**
|
|
1359
|
-
* AgentConfigDuration
|
|
1360
|
-
* @description A duration as explicit units, summed. Set any of `hours`/`minutes`/
|
|
1361
|
-
* `seconds` (at least one). The alternative to the `30m`-style shorthand
|
|
1362
|
-
* string wherever a duration is accepted.
|
|
1363
|
-
*/
|
|
1364
|
-
AgentConfigDuration: {
|
|
1365
|
-
/** Hours */
|
|
1366
|
-
hours?: number | null;
|
|
1367
|
-
/** Minutes */
|
|
1368
|
-
minutes?: number | null;
|
|
1369
|
-
/** Seconds */
|
|
1370
|
-
seconds?: number | null;
|
|
1371
|
-
};
|
|
1372
|
-
/**
|
|
1373
|
-
* AgentConfigEllipsis
|
|
1374
|
-
* @description The Ellipsis product namespace for a config file: which schema this is
|
|
1375
|
-
* (`version`), the human-facing identity (`name`/`description`), freeform
|
|
1376
|
-
* organizational `metadata`, and whether the agent is `enabled`. The
|
|
1377
|
-
* presence of a top-level `ellipsis:` mapping is what marks a YAML file as
|
|
1378
|
-
* an Ellipsis agent config (vs arbitrary YAML that merely lives under a
|
|
1379
|
-
* config directory) — see `yaml_is_ellipsis_config`.
|
|
1380
|
-
*
|
|
1381
|
-
* `enabled` is agent behavior, not freeform metadata, so it stays inside
|
|
1382
|
-
* the config `sha` (only `metadata` is sha-excluded). Whether a session
|
|
1383
|
-
* accepts messages is a per-run choice (POST /v1/sessions `interactive`),
|
|
1384
|
-
* not a config one.
|
|
1385
|
-
*/
|
|
1386
|
-
AgentConfigEllipsis: {
|
|
1387
|
-
/** Description */
|
|
1388
|
-
description?: string | null;
|
|
1389
|
-
/**
|
|
1390
|
-
* Enabled
|
|
1391
|
-
* @default true
|
|
1392
|
-
*/
|
|
1393
|
-
enabled: boolean;
|
|
1394
|
-
/**
|
|
1395
|
-
* @default {
|
|
1396
|
-
* "annotations": {},
|
|
1397
|
-
* "labels": []
|
|
1398
|
-
* }
|
|
1399
|
-
*/
|
|
1400
|
-
metadata: components['schemas']['AgentConfigMetadata'];
|
|
1401
|
-
/** Name */
|
|
1402
|
-
name?: string | null;
|
|
1403
|
-
/**
|
|
1404
|
-
* Version
|
|
1405
|
-
* @default v1
|
|
1406
|
-
*/
|
|
1407
|
-
version: string;
|
|
1408
|
-
};
|
|
1409
|
-
/**
|
|
1410
|
-
* AgentConfigEllipsisPermissions
|
|
1411
|
-
* @description `permissions.ellipsis` as a map: resource → level | grant | list of
|
|
1412
|
-
* grants. Levels are hierarchical (read < write < delete), so `write`
|
|
1413
|
-
* includes `read`. An unlisted resource is denied. The whole block is
|
|
1414
|
-
* intersected with the platform's sandbox ceiling at token mint — it can
|
|
1415
|
-
* narrow what a sandbox token may do, never exceed it.
|
|
1416
|
-
*/
|
|
1417
|
-
AgentConfigEllipsisPermissions: {
|
|
1418
|
-
[key: string]: components['schemas']['Level'] | components['schemas']['EllipsisGrant'] | (components['schemas']['Level'] | components['schemas']['EllipsisGrant'])[];
|
|
1419
|
-
};
|
|
1420
|
-
/**
|
|
1421
|
-
* AgentConfigEnvironment
|
|
1422
|
-
* @description Everything about the environment (the sandbox) the agent runs in: which
|
|
1423
|
-
* `repositories` are cloned into it, which environment `variables` it gets,
|
|
1424
|
-
* its `compute` sizing, how its `image` is customized, and lifecycle `hooks`.
|
|
1425
|
-
* What the agent may *do* from that environment is the top-level
|
|
1426
|
-
* `permissions:` block, not this one.
|
|
1427
|
-
*
|
|
1428
|
-
* Each `variables` entry names a variable to inject; with an inline `value` it
|
|
1429
|
-
* is hardcoded, without one it is resolved from the account's sandbox-secrets
|
|
1430
|
-
* store. Only the named variables reach this agent; the rest of the account's
|
|
1431
|
-
* stored variables never do. This is how a config brings in the config and
|
|
1432
|
-
* credentials a custom CLI needs.
|
|
1433
|
-
*/
|
|
1434
|
-
AgentConfigEnvironment: {
|
|
1435
|
-
/** @default {} */
|
|
1436
|
-
compute: components['schemas']['AgentConfigCompute'];
|
|
1437
|
-
/** @default {} */
|
|
1438
|
-
hooks: components['schemas']['AgentConfigEnvironmentHooks'];
|
|
1439
|
-
/** @default {} */
|
|
1440
|
-
image: components['schemas']['AgentConfigEnvironmentImage'];
|
|
1441
|
-
/**
|
|
1442
|
-
* Mcp Servers
|
|
1443
|
-
* @default []
|
|
1444
|
-
*/
|
|
1445
|
-
mcp_servers: (string | components['schemas']['AgentConfigMcpServer'] | components['schemas']['AgentConfigMcpStdioServer'] | components['schemas']['AgentConfigMcpRemoteServer'])[];
|
|
1446
|
-
/**
|
|
1447
|
-
* Repositories
|
|
1448
|
-
* @default []
|
|
1449
|
-
*/
|
|
1450
|
-
repositories: components['schemas']['AgentConfigRepository'][];
|
|
1451
|
-
/**
|
|
1452
|
-
* Variables
|
|
1453
|
-
* @default []
|
|
1454
|
-
*/
|
|
1455
|
-
variables: components['schemas']['AgentConfigEnvironmentVariable'][];
|
|
1456
|
-
};
|
|
1457
|
-
/**
|
|
1458
|
-
* AgentConfigEnvironmentHooks
|
|
1459
|
-
* @description Shell scripts run at points in the sandbox lifecycle, each as the sandbox
|
|
1460
|
-
* user with the sandbox's environment variables available. A non-zero exit
|
|
1461
|
-
* fails the run (exit_status = LIFECYCLE_HOOK_FAILED) and is not retried.
|
|
1462
|
-
*
|
|
1463
|
-
* `post_start` runs after the container starts, before any repo is cloned —
|
|
1464
|
-
* repo-independent setup (authenticate a CLI, e.g. `doppler setup`). On Modal
|
|
1465
|
-
* the repo is baked into the image so it is incidentally present, but
|
|
1466
|
-
* `post_start` must not depend on repo contents (that's `post_clone`).
|
|
1467
|
-
*
|
|
1468
|
-
* `post_clone` runs after all repos are cloned/checked out, before the agent —
|
|
1469
|
-
* repo-dependent setup (`pip install -r requirements.txt`, codegen).
|
|
1470
|
-
*
|
|
1471
|
-
* Hooks run on every run and their output is never cached. A dependency
|
|
1472
|
-
* install whose result should be reused across runs belongs in `image.setup`
|
|
1473
|
-
* (baked into the cached image) instead; keep hooks for per-run work — e.g.
|
|
1474
|
-
* anything that touches run-scoped credentials.
|
|
1475
|
-
*/
|
|
1476
|
-
AgentConfigEnvironmentHooks: {
|
|
1477
|
-
/** Post Clone */
|
|
1478
|
-
post_clone?: string | null;
|
|
1479
|
-
/** Post Start */
|
|
1480
|
-
post_start?: string | null;
|
|
1481
|
-
};
|
|
1482
|
-
/**
|
|
1483
|
-
* AgentConfigEnvironmentImage
|
|
1484
|
-
* @description How to customize the container image the agent runs in. You
|
|
1485
|
-
* contribute appended layers (`dockerfile_append`) and a build-time script
|
|
1486
|
-
* (`setup`) only — Ellipsis owns FROM / base tooling / entrypoint / user.
|
|
1487
|
-
* Today only inline bodies are supported; a file reference (resolved at the
|
|
1488
|
-
* run's SHA) will come later.
|
|
1489
|
-
*
|
|
1490
|
-
* The split: `dockerfile_append` runs when the image is assembled, before any
|
|
1491
|
-
* repo exists — toolchain installs (a package manager binary, apt packages).
|
|
1492
|
-
* `setup` runs at image-build time *after* the configured repositories are
|
|
1493
|
-
* checked out, and its output is captured by the filesystem snapshot that
|
|
1494
|
-
* becomes the cached image — dependency installs (`poetry install`,
|
|
1495
|
-
* `npm install`), so later runs start with deps already on disk. Neither runs
|
|
1496
|
-
* per run; that's `hooks.post_start` / `hooks.post_clone`.
|
|
1497
|
-
*/
|
|
1498
|
-
AgentConfigEnvironmentImage: {
|
|
1499
|
-
/** Dockerfile Append */
|
|
1500
|
-
dockerfile_append?: string | null;
|
|
1501
|
-
/** Setup */
|
|
1502
|
-
setup?: string | null;
|
|
1503
|
-
};
|
|
1504
|
-
/**
|
|
1505
|
-
* AgentConfigEnvironmentVariable
|
|
1506
|
-
* @description One environment variable injected into the agent's sandbox.
|
|
1507
|
-
*
|
|
1508
|
-
* `value`, when set, is a literal injected as-is — use it for non-secret
|
|
1509
|
-
* config (LOG_LEVEL, an API base URL). When `value` is omitted the value is
|
|
1510
|
-
* resolved at run time from the account's sandbox-secrets store (dashboard
|
|
1511
|
-
* / `PUT /v1/secrets`) by `name`, so a secret can be injected without
|
|
1512
|
-
* ever putting it in the config file. Either way the variable only reaches
|
|
1513
|
-
* agents that name it.
|
|
1514
|
-
*/
|
|
1515
|
-
AgentConfigEnvironmentVariable: {
|
|
1516
|
-
/** Name */
|
|
1517
|
-
name: string;
|
|
1518
|
-
/** Value */
|
|
1519
|
-
value?: string | null;
|
|
1520
|
-
};
|
|
1521
|
-
/**
|
|
1522
|
-
* AgentConfigGithubPermissions
|
|
1523
|
-
* @description The agent's GitHub access: the scope of the installation token minted for
|
|
1524
|
-
* its sandbox — the credential `git`, `gh`, and the GitHub MCP server
|
|
1525
|
-
* authenticate with.
|
|
1526
|
-
*
|
|
1527
|
-
* By default the token carries the installation's full permissions on all of
|
|
1528
|
-
* the installation's repositories. `permissions` narrows what it may do:
|
|
1529
|
-
* the string `read_only` grants read access to contents, issues, metadata and
|
|
1530
|
-
* pull requests; a map requests explicit levels per GitHub App permission
|
|
1531
|
-
* scope (e.g. `{contents: read, pull_requests: write}`) and may never exceed
|
|
1532
|
-
* what the installation granted. `repositories` scopes the token to exactly
|
|
1533
|
-
* the listed repos, by name (they must belong to the installation).
|
|
1534
|
-
*
|
|
1535
|
-
* Restriction is enforced by GitHub, not by Ellipsis: the token itself is
|
|
1536
|
-
* minted with the reduced scope, so nothing running in the sandbox can
|
|
1537
|
-
* exceed it.
|
|
1538
|
-
*/
|
|
1539
|
-
AgentConfigGithubPermissions: {
|
|
1540
|
-
/** Permissions */
|
|
1541
|
-
permissions?: 'read_only' | {
|
|
1542
|
-
[key: string]: string;
|
|
1543
|
-
} | null;
|
|
1544
|
-
/** Repositories */
|
|
1545
|
-
repositories?: string[] | null;
|
|
1546
|
-
};
|
|
1547
|
-
/**
|
|
1548
|
-
* AgentConfigInput
|
|
1549
|
-
* @description The typed input contract: what goes INTO a session (the trigger is
|
|
1550
|
-
* when it happens; this is what goes in).
|
|
1551
|
-
*
|
|
1552
|
-
* `json_schema` types the payload a caller-started session takes
|
|
1553
|
-
* (`POST /v1/sessions` `input`, validated at the door; required when
|
|
1554
|
-
* declared). It is illegal on a react-triggered agent — react payloads are
|
|
1555
|
-
* platform-shaped (the published surface field sets), not caller-shaped.
|
|
1556
|
-
*
|
|
1557
|
-
* `message` is the initial-message template: exact `{{path}}` substitution
|
|
1558
|
-
* over the caller payload (or, on a react agent, over the surface's
|
|
1559
|
-
* published fields), no conditionals/loops/filters. Refs are validated at
|
|
1560
|
-
* deploy time against the governing field set (see AgentConfig's
|
|
1561
|
-
* `_check_input`).
|
|
1562
|
-
*/
|
|
1563
|
-
AgentConfigInput: {
|
|
1564
|
-
/** Json Schema */
|
|
1565
|
-
json_schema?: {
|
|
1566
|
-
[key: string]: unknown;
|
|
1567
|
-
} | null;
|
|
1568
|
-
/** Message */
|
|
1569
|
-
message?: string | null;
|
|
1570
|
-
};
|
|
1571
|
-
/**
|
|
1572
|
-
* AgentConfigMcpRemoteServer
|
|
1573
|
-
* @description A bring-your-own remote MCP server: the harness talks HTTP to `url`.
|
|
1574
|
-
* Nothing runs in the sandbox image. `headers` carry static auth (e.g.
|
|
1575
|
-
* `Authorization: Bearer ${TOKEN}`); values may embed `${NAME}` secret
|
|
1576
|
-
* references, resolved at run time from the account's secrets store.
|
|
1577
|
-
*/
|
|
1578
|
-
AgentConfigMcpRemoteServer: {
|
|
1579
|
-
/**
|
|
1580
|
-
* Headers
|
|
1581
|
-
* @default {}
|
|
1582
|
-
*/
|
|
1583
|
-
headers: {
|
|
1584
|
-
[key: string]: string;
|
|
1585
|
-
};
|
|
1586
|
-
/** Name */
|
|
1587
|
-
name: string;
|
|
1588
|
-
/** Url */
|
|
1589
|
-
url: string;
|
|
1590
|
-
};
|
|
1591
|
-
/**
|
|
1592
|
-
* AgentConfigMcpServer
|
|
1593
|
-
* @description One built-in MCP server this agent opts into by name (`linear`/`slack`).
|
|
1594
|
-
* A name reference over the connected built-in set — the platform manages the
|
|
1595
|
-
* server's transport and credentials. It only matters when the named
|
|
1596
|
-
* integration is set to `opt_in` inclusion; an integration in the default
|
|
1597
|
-
* `all_sessions` mode is added regardless. For a server the platform does not
|
|
1598
|
-
* provide, define it instead (`AgentConfigMcpStdioServer` /
|
|
1599
|
-
* `AgentConfigMcpRemoteServer`).
|
|
1600
|
-
*/
|
|
1601
|
-
AgentConfigMcpServer: {
|
|
1602
|
-
/** Name */
|
|
1603
|
-
name: string;
|
|
1604
|
-
};
|
|
1605
|
-
/**
|
|
1606
|
-
* AgentConfigMcpStdioServer
|
|
1607
|
-
* @description A bring-your-own stdio MCP server: the harness spawns `command` inside
|
|
1608
|
-
* the sandbox and speaks JSON-RPC over its stdin/stdout. The command must be
|
|
1609
|
-
* runnable in the sandbox image — install its runtime via `image.setup` /
|
|
1610
|
-
* `image.dockerfile_append` if the base image lacks it.
|
|
1611
|
-
*
|
|
1612
|
-
* `env` values may embed `${NAME}` references, resolved at run time from the
|
|
1613
|
-
* account's secrets store (see `mcp_secret_refs`); everything else is passed
|
|
1614
|
-
* literally.
|
|
1615
|
-
*/
|
|
1616
|
-
AgentConfigMcpStdioServer: {
|
|
1617
|
-
/**
|
|
1618
|
-
* Args
|
|
1619
|
-
* @default []
|
|
1620
|
-
*/
|
|
1621
|
-
args: string[];
|
|
1622
|
-
/** Command */
|
|
1623
|
-
command: string;
|
|
1624
|
-
/**
|
|
1625
|
-
* Env
|
|
1626
|
-
* @default {}
|
|
1627
|
-
*/
|
|
1628
|
-
env: {
|
|
1629
|
-
[key: string]: string;
|
|
1630
|
-
};
|
|
1631
|
-
/** Name */
|
|
1632
|
-
name: string;
|
|
1633
|
-
};
|
|
1634
|
-
/**
|
|
1635
|
-
* AgentConfigMemorySize
|
|
1636
|
-
* @description A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).
|
|
1637
|
-
* Set any of `gb`/`mb` (at least one). The alternative to the `8GB`-style
|
|
1638
|
-
* shorthand string.
|
|
1639
|
-
*/
|
|
1640
|
-
AgentConfigMemorySize: {
|
|
1641
|
-
/** Gb */
|
|
1642
|
-
gb?: number | null;
|
|
1643
|
-
/** Mb */
|
|
1644
|
-
mb?: number | null;
|
|
1645
|
-
};
|
|
1646
|
-
/**
|
|
1647
|
-
* AgentConfigMentionPlatform
|
|
1648
|
-
* @description The surface an @ellipsis mention can come from.
|
|
1649
|
-
*
|
|
1650
|
-
* No SLACK member: Slack routing is not a trigger on an agent config, it is the
|
|
1651
|
-
* `slack.yaml` routing file (`SlackConfig`), which answers the questions a
|
|
1652
|
-
* platform list cannot — which channel, and whose DM. A mention trigger listing
|
|
1653
|
-
* `slack` is therefore a config error, not a silently-never-fires config.
|
|
1654
|
-
* @enum {string}
|
|
1655
|
-
*/
|
|
1656
|
-
AgentConfigMentionPlatform: 'github' | 'linear';
|
|
1657
|
-
/** AgentConfigMentionTrigger */
|
|
1658
|
-
AgentConfigMentionTrigger: {
|
|
1659
|
-
/**
|
|
1660
|
-
* Platforms
|
|
1661
|
-
* @default []
|
|
1662
|
-
*/
|
|
1663
|
-
platforms: components['schemas']['AgentConfigMentionPlatform'][];
|
|
1664
|
-
/**
|
|
1665
|
-
* @description discriminator enum property added by openapi-typescript
|
|
1666
|
-
* @enum {string}
|
|
1667
|
-
*/
|
|
1668
|
-
type: 'mention';
|
|
1669
|
-
};
|
|
1670
|
-
/** AgentConfigMetadata */
|
|
1671
|
-
AgentConfigMetadata: {
|
|
1672
|
-
/**
|
|
1673
|
-
* Annotations
|
|
1674
|
-
* @default {}
|
|
1675
|
-
*/
|
|
1676
|
-
annotations: {
|
|
1677
|
-
[key: string]: string;
|
|
1678
|
-
};
|
|
1679
|
-
/**
|
|
1680
|
-
* Labels
|
|
1681
|
-
* @default []
|
|
1682
|
-
*/
|
|
1683
|
-
labels: string[];
|
|
1684
|
-
};
|
|
1685
|
-
/**
|
|
1686
|
-
* AgentConfigOutput
|
|
1687
|
-
* @description The typed output contract: the JSON Schema the agent must exit through
|
|
1688
|
-
* (the StructuredOutput exit tool). Read back via
|
|
1689
|
-
* GET /v1/sessions/{id}/output.
|
|
1690
|
-
*/
|
|
1691
|
-
AgentConfigOutput: {
|
|
1692
|
-
/** Json Schema */
|
|
1693
|
-
json_schema: {
|
|
1694
|
-
[key: string]: unknown;
|
|
1695
|
-
};
|
|
1696
|
-
};
|
|
1697
|
-
/**
|
|
1698
|
-
* AgentConfigPermissions
|
|
1699
|
-
* @description What the agent is allowed to touch, per credential the platform mints
|
|
1700
|
-
* into its sandbox. Distinct from `environment:`, which is where the agent
|
|
1701
|
-
* runs; this is what it may do from there.
|
|
1702
|
-
*
|
|
1703
|
-
* `ellipsis` scopes the sandbox's Ellipsis API token
|
|
1704
|
-
* (`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates
|
|
1705
|
-
* with). `true` / the string `all` (the default) grant the full sandbox
|
|
1706
|
-
* ceiling — everything a sandbox token can ever do. A map narrows it per
|
|
1707
|
-
* resource (see `AgentConfigEllipsisPermissions`); the minted token carries
|
|
1708
|
-
* the intersection, so a config can only ever reduce access. `false` fails
|
|
1709
|
-
* validation — an agent with no API token cannot report its own progress.
|
|
1710
|
-
*
|
|
1711
|
-
* `github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) —
|
|
1712
|
-
* see `AgentConfigGithubPermissions`. GitHub enforces it at mint time.
|
|
1713
|
-
*/
|
|
1714
|
-
AgentConfigPermissions: {
|
|
1715
|
-
/**
|
|
1716
|
-
* Ellipsis
|
|
1717
|
-
* @default true
|
|
1718
|
-
*/
|
|
1719
|
-
ellipsis: (true | 'all') | components['schemas']['AgentConfigEllipsisPermissions'];
|
|
1720
|
-
/** @default {} */
|
|
1721
|
-
github: components['schemas']['AgentConfigGithubPermissions'];
|
|
1722
|
-
};
|
|
1723
|
-
/** AgentConfigReactTrigger */
|
|
1724
|
-
AgentConfigReactTrigger: {
|
|
1725
|
-
issue?: components['schemas']['ReactIssue'] | null;
|
|
1726
|
-
linear_issue?: components['schemas']['ReactLinearIssue'] | null;
|
|
1727
|
-
pull_request?: components['schemas']['ReactPullRequest'] | null;
|
|
1728
|
-
push?: components['schemas']['ReactPush'] | null;
|
|
1729
|
-
sentry?: components['schemas']['ReactSentry'] | null;
|
|
1730
|
-
slack_channel?: components['schemas']['ReactSlackChannel'] | null;
|
|
1731
|
-
/**
|
|
1732
|
-
* @description discriminator enum property added by openapi-typescript
|
|
1733
|
-
* @enum {string}
|
|
1734
|
-
*/
|
|
1735
|
-
type: 'react';
|
|
1736
|
-
};
|
|
1737
|
-
/** AgentConfigRepository */
|
|
1738
|
-
AgentConfigRepository: {
|
|
1739
|
-
/** Name */
|
|
1740
|
-
name: string;
|
|
1741
|
-
/** Owner */
|
|
1742
|
-
owner?: string | null;
|
|
1743
|
-
/** Ref */
|
|
1744
|
-
ref?: string | null;
|
|
1745
|
-
};
|
|
1746
|
-
/**
|
|
1747
|
-
* AgentConfigSettingsRef
|
|
1748
|
-
* @description A config-declared Claude Code settings.json, resolved at run start and
|
|
1749
|
-
* passed to `claude --settings <path>`. That is the CLI settings tier — BELOW
|
|
1750
|
-
* Ellipsis's managed-settings.json floor — so it customizes behavior (model
|
|
1751
|
-
* permissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a
|
|
1752
|
-
* security setting. Lets a team point the cloud agent at the same settings file
|
|
1753
|
-
* they already use with Claude Code locally instead of re-encoding it as YAML.
|
|
1754
|
-
*/
|
|
1755
|
-
AgentConfigSettingsRef: {
|
|
1756
|
-
/** Path */
|
|
1757
|
-
path: string;
|
|
1758
|
-
repository?: components['schemas']['AgentConfigRepository'] | null;
|
|
1204
|
+
parameters: {
|
|
1205
|
+
query?: never;
|
|
1206
|
+
header?: never;
|
|
1207
|
+
path?: never;
|
|
1208
|
+
cookie?: never;
|
|
1759
1209
|
};
|
|
1760
1210
|
/**
|
|
1761
|
-
*
|
|
1762
|
-
* @description
|
|
1763
|
-
*
|
|
1764
|
-
*
|
|
1765
|
-
*
|
|
1766
|
-
* (an org-wide skills repo), public third-party repos, and repo-less runs.
|
|
1767
|
-
* Skills under a cloned repo's own `.claude/skills/` load by themselves and
|
|
1768
|
-
* don't need an entry here.
|
|
1211
|
+
* List Agent Templates
|
|
1212
|
+
* @description List the built-in starter agent templates.
|
|
1213
|
+
*
|
|
1214
|
+
* Behind auth but not account-scoped — the data is static
|
|
1215
|
+
* product content shared by the dashboard, landing site, and CLI.
|
|
1769
1216
|
*/
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1217
|
+
get: operations['list_agent_templates'];
|
|
1218
|
+
put?: never;
|
|
1219
|
+
post?: never;
|
|
1220
|
+
delete?: never;
|
|
1221
|
+
options?: never;
|
|
1222
|
+
head?: never;
|
|
1223
|
+
patch?: never;
|
|
1224
|
+
trace?: never;
|
|
1225
|
+
};
|
|
1226
|
+
'/v1/templates/{template_id}': {
|
|
1227
|
+
parameters: {
|
|
1228
|
+
query?: never;
|
|
1229
|
+
header?: never;
|
|
1230
|
+
path?: never;
|
|
1231
|
+
cookie?: never;
|
|
1774
1232
|
};
|
|
1775
1233
|
/**
|
|
1776
|
-
*
|
|
1777
|
-
* @description
|
|
1778
|
-
* source, including the ones that never touch defaults resolution.
|
|
1779
|
-
*
|
|
1780
|
-
* Not derivable from the row — `agent_config_id` says WHICH saved config, not
|
|
1781
|
-
* how it was chosen, and is null for inline, platform-default, and built-in
|
|
1782
|
-
* configs alike — so it is persisted for audit and the published wire.
|
|
1783
|
-
* @enum {string}
|
|
1234
|
+
* Get Agent Template
|
|
1235
|
+
* @description Return one built-in agent template by slug.
|
|
1784
1236
|
*/
|
|
1785
|
-
|
|
1237
|
+
get: operations['get_agent_template'];
|
|
1238
|
+
put?: never;
|
|
1239
|
+
post?: never;
|
|
1240
|
+
delete?: never;
|
|
1241
|
+
options?: never;
|
|
1242
|
+
head?: never;
|
|
1243
|
+
patch?: never;
|
|
1244
|
+
trace?: never;
|
|
1245
|
+
};
|
|
1246
|
+
'/v1/usage': {
|
|
1247
|
+
parameters: {
|
|
1248
|
+
query?: never;
|
|
1249
|
+
header?: never;
|
|
1250
|
+
path?: never;
|
|
1251
|
+
cookie?: never;
|
|
1252
|
+
};
|
|
1786
1253
|
/**
|
|
1787
|
-
*
|
|
1788
|
-
* @description
|
|
1789
|
-
*
|
|
1790
|
-
* Keyed on the repository ID (not owner/name) so repository and org renames
|
|
1791
|
-
* don't orphan the config; resolve display names from gh_repositories at
|
|
1792
|
-
* read time.
|
|
1254
|
+
* Get Usage
|
|
1255
|
+
* @description Return the caller's usage dashboard data.
|
|
1793
1256
|
*/
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
|
|
1806
|
-
repository?: components['schemas']['AgentConfigRepository'] | null;
|
|
1807
|
-
};
|
|
1257
|
+
get: operations['get_usage_endpoint'];
|
|
1258
|
+
put?: never;
|
|
1259
|
+
post?: never;
|
|
1260
|
+
delete?: never;
|
|
1261
|
+
options?: never;
|
|
1262
|
+
head?: never;
|
|
1263
|
+
patch?: never;
|
|
1264
|
+
trace?: never;
|
|
1265
|
+
};
|
|
1266
|
+
}
|
|
1267
|
+
interface components {
|
|
1268
|
+
schemas: {
|
|
1808
1269
|
/**
|
|
1809
1270
|
* AgentTemplate
|
|
1810
1271
|
* @description A built-in agent template: a ready-to-use agent config plus the
|
|
@@ -2204,10 +1665,8 @@ interface components {
|
|
|
2204
1665
|
* when invoked, plus where it syncs from and the state of that sync.
|
|
2205
1666
|
*/
|
|
2206
1667
|
Automation: {
|
|
2207
|
-
/** @description The
|
|
2208
|
-
|
|
2209
|
-
/** @description The repository, path, and branch the automation syncs from. Null only transiently, before the creating pull request's file lands on the branch. */
|
|
2210
|
-
agent_config_source_details?: components['schemas']['AgentConfigSourceGithub'] | null;
|
|
1668
|
+
/** @description The automation definition itself, in the same schema as its YAML file: identity, trigger, input contract, and the session block. */
|
|
1669
|
+
config: components['schemas']['AutomationConfig'];
|
|
2211
1670
|
/**
|
|
2212
1671
|
* Created At
|
|
2213
1672
|
* Format: date-time
|
|
@@ -2263,6 +1722,8 @@ interface components {
|
|
|
2263
1722
|
* @description The definition's content identity: the version fingerprint frozen onto each session that runs it.
|
|
2264
1723
|
*/
|
|
2265
1724
|
sha: string;
|
|
1725
|
+
/** @description The repository, path, and branch the automation syncs from. Null only transiently, before the creating pull request's file lands on the branch. */
|
|
1726
|
+
source_details?: components['schemas']['GithubSourceDetails'] | null;
|
|
2266
1727
|
/**
|
|
2267
1728
|
* Updated At
|
|
2268
1729
|
* Format: date-time
|
|
@@ -2270,6 +1731,104 @@ interface components {
|
|
|
2270
1731
|
*/
|
|
2271
1732
|
updated_at: string;
|
|
2272
1733
|
};
|
|
1734
|
+
/**
|
|
1735
|
+
* AutomationConfig
|
|
1736
|
+
* @description A saved automation, as written in its YAML file: identity
|
|
1737
|
+
* (`ellipsis`), when it runs (`trigger`), what goes in (`input`), and the
|
|
1738
|
+
* `session:` block every session it starts is frozen from. Field order is
|
|
1739
|
+
* the canonical key order for files and `to_yaml` exports.
|
|
1740
|
+
*/
|
|
1741
|
+
AutomationConfig: {
|
|
1742
|
+
/**
|
|
1743
|
+
* @default {
|
|
1744
|
+
* "enabled": true,
|
|
1745
|
+
* "metadata": {
|
|
1746
|
+
* "annotations": {},
|
|
1747
|
+
* "labels": []
|
|
1748
|
+
* },
|
|
1749
|
+
* "version": "v1"
|
|
1750
|
+
* }
|
|
1751
|
+
*/
|
|
1752
|
+
ellipsis: components['schemas']['AutomationIdentity'];
|
|
1753
|
+
input?: components['schemas']['InputContract'] | null;
|
|
1754
|
+
/**
|
|
1755
|
+
* @default {
|
|
1756
|
+
* "budget": {},
|
|
1757
|
+
* "claude": {
|
|
1758
|
+
* "system": ""
|
|
1759
|
+
* },
|
|
1760
|
+
* "environment": {
|
|
1761
|
+
* "compute": {},
|
|
1762
|
+
* "hooks": {},
|
|
1763
|
+
* "image": {},
|
|
1764
|
+
* "mcp_servers": [],
|
|
1765
|
+
* "repositories": [],
|
|
1766
|
+
* "variables": []
|
|
1767
|
+
* },
|
|
1768
|
+
* "permissions": {
|
|
1769
|
+
* "ellipsis": true,
|
|
1770
|
+
* "github": {}
|
|
1771
|
+
* },
|
|
1772
|
+
* "skills": []
|
|
1773
|
+
* }
|
|
1774
|
+
*/
|
|
1775
|
+
session: components['schemas']['SessionConfig'];
|
|
1776
|
+
/** Trigger */
|
|
1777
|
+
trigger?: (components['schemas']['CronTrigger'] | components['schemas']['ReactTrigger']) | null;
|
|
1778
|
+
};
|
|
1779
|
+
/**
|
|
1780
|
+
* AutomationIdentity
|
|
1781
|
+
* @description The Ellipsis product namespace for a config file: which schema this is
|
|
1782
|
+
* (`version`), the human-facing identity (`name`/`description`), freeform
|
|
1783
|
+
* organizational `metadata`, and whether the agent is `enabled`. The
|
|
1784
|
+
* presence of a top-level `ellipsis:` mapping is what marks a YAML file as
|
|
1785
|
+
* an Ellipsis agent config (vs arbitrary YAML that merely lives under a
|
|
1786
|
+
* config directory) — see `yaml_is_ellipsis_config`.
|
|
1787
|
+
*
|
|
1788
|
+
* `enabled` is agent behavior, not freeform metadata, so it stays inside
|
|
1789
|
+
* the config `sha` (only `metadata` is sha-excluded). Whether a session
|
|
1790
|
+
* accepts messages is a per-run choice (POST /v1/sessions `interactive`),
|
|
1791
|
+
* not a config one.
|
|
1792
|
+
*/
|
|
1793
|
+
AutomationIdentity: {
|
|
1794
|
+
/** Description */
|
|
1795
|
+
description?: string | null;
|
|
1796
|
+
/**
|
|
1797
|
+
* Enabled
|
|
1798
|
+
* @default true
|
|
1799
|
+
*/
|
|
1800
|
+
enabled: boolean;
|
|
1801
|
+
/**
|
|
1802
|
+
* @default {
|
|
1803
|
+
* "annotations": {},
|
|
1804
|
+
* "labels": []
|
|
1805
|
+
* }
|
|
1806
|
+
*/
|
|
1807
|
+
metadata: components['schemas']['ConfigMetadata'];
|
|
1808
|
+
/** Name */
|
|
1809
|
+
name?: string | null;
|
|
1810
|
+
/**
|
|
1811
|
+
* Version
|
|
1812
|
+
* @default v1
|
|
1813
|
+
*/
|
|
1814
|
+
version: string;
|
|
1815
|
+
};
|
|
1816
|
+
/**
|
|
1817
|
+
* AutomationMetricsResponse
|
|
1818
|
+
* @description An automation's session distribution and trailing spend.
|
|
1819
|
+
*/
|
|
1820
|
+
AutomationMetricsResponse: {
|
|
1821
|
+
/**
|
|
1822
|
+
* Samples
|
|
1823
|
+
* @description One entry per finished session, unordered.
|
|
1824
|
+
*/
|
|
1825
|
+
samples: components['schemas']['AutomationSessionSample'][];
|
|
1826
|
+
/**
|
|
1827
|
+
* Spend Windows
|
|
1828
|
+
* @description Trailing spend versus the budget, one entry per window (1, 7, and 28 days).
|
|
1829
|
+
*/
|
|
1830
|
+
spend_windows: components['schemas']['AutomationSpendWindow'][];
|
|
1831
|
+
};
|
|
2273
1832
|
/**
|
|
2274
1833
|
* AutomationResponse
|
|
2275
1834
|
* @description One automation.
|
|
@@ -2278,6 +1837,54 @@ interface components {
|
|
|
2278
1837
|
/** @description The automation. */
|
|
2279
1838
|
automation: components['schemas']['Automation'];
|
|
2280
1839
|
};
|
|
1840
|
+
/**
|
|
1841
|
+
* AutomationSessionSample
|
|
1842
|
+
* @description One finished session of the automation, reduced to the three figures
|
|
1843
|
+
* the distributions are drawn from.
|
|
1844
|
+
*/
|
|
1845
|
+
AutomationSessionSample: {
|
|
1846
|
+
/**
|
|
1847
|
+
* Cost
|
|
1848
|
+
* @description What the session cost, in millicents.
|
|
1849
|
+
*/
|
|
1850
|
+
cost: number;
|
|
1851
|
+
/**
|
|
1852
|
+
* Duration Seconds
|
|
1853
|
+
* @description Wall-clock seconds from the session's creation to its last update.
|
|
1854
|
+
*/
|
|
1855
|
+
duration_seconds: number;
|
|
1856
|
+
/**
|
|
1857
|
+
* Tokens Total
|
|
1858
|
+
* @description Tokens the session consumed across every lane, including prompt-cache reads and writes.
|
|
1859
|
+
*/
|
|
1860
|
+
tokens_total: number;
|
|
1861
|
+
};
|
|
1862
|
+
/**
|
|
1863
|
+
* AutomationSpendWindow
|
|
1864
|
+
* @description The automation's trailing spend against its budget over one window.
|
|
1865
|
+
*/
|
|
1866
|
+
AutomationSpendWindow: {
|
|
1867
|
+
/**
|
|
1868
|
+
* Limit Usd
|
|
1869
|
+
* @description The enforced cap for the window, in US dollars: the automation's own budget clamped to the platform maximum, or the maximum itself when the budget is unset.
|
|
1870
|
+
*/
|
|
1871
|
+
limit_usd: number;
|
|
1872
|
+
/**
|
|
1873
|
+
* Platform Max Usd
|
|
1874
|
+
* @description The platform ceiling for the window, in US dollars; a budget above it is clamped to it.
|
|
1875
|
+
*/
|
|
1876
|
+
platform_max_usd: number;
|
|
1877
|
+
/**
|
|
1878
|
+
* Spent Usd
|
|
1879
|
+
* @description What the automation's sessions cost over the window, in US dollars.
|
|
1880
|
+
*/
|
|
1881
|
+
spent_usd: number;
|
|
1882
|
+
/**
|
|
1883
|
+
* Window Days
|
|
1884
|
+
* @description The trailing window, in days: 1, 7, or 28.
|
|
1885
|
+
*/
|
|
1886
|
+
window_days: number;
|
|
1887
|
+
};
|
|
2281
1888
|
/**
|
|
2282
1889
|
* AutomationsListResponse
|
|
2283
1890
|
* @description The caller's automations.
|
|
@@ -2300,6 +1907,17 @@ interface components {
|
|
|
2300
1907
|
*/
|
|
2301
1908
|
session?: number | null;
|
|
2302
1909
|
};
|
|
1910
|
+
/** BudgetConfig */
|
|
1911
|
+
BudgetConfig: {
|
|
1912
|
+
/** Day */
|
|
1913
|
+
day?: number | null;
|
|
1914
|
+
/** Month */
|
|
1915
|
+
month?: number | null;
|
|
1916
|
+
/** Session */
|
|
1917
|
+
session?: number | null;
|
|
1918
|
+
/** Week */
|
|
1919
|
+
week?: number | null;
|
|
1920
|
+
};
|
|
2303
1921
|
/**
|
|
2304
1922
|
* BudgetSource
|
|
2305
1923
|
* @description Which layer actually determined the enforced budget.
|
|
@@ -2364,6 +1982,22 @@ interface components {
|
|
|
2364
1982
|
*/
|
|
2365
1983
|
start: string | null;
|
|
2366
1984
|
};
|
|
1985
|
+
/** ClaudeConfig */
|
|
1986
|
+
ClaudeConfig: {
|
|
1987
|
+
effort?: components['schemas']['EffortLevel'] | null;
|
|
1988
|
+
/** Fallback Model */
|
|
1989
|
+
fallback_model?: string | null;
|
|
1990
|
+
/** Max Turns */
|
|
1991
|
+
max_turns?: number | null;
|
|
1992
|
+
/** Model */
|
|
1993
|
+
model?: string | null;
|
|
1994
|
+
settings?: components['schemas']['SettingsRef'] | null;
|
|
1995
|
+
/**
|
|
1996
|
+
* System
|
|
1997
|
+
* @default
|
|
1998
|
+
*/
|
|
1999
|
+
system: string | components['schemas']['SystemFileRef'] | (string | components['schemas']['SystemFileRef'])[];
|
|
2000
|
+
};
|
|
2367
2001
|
/**
|
|
2368
2002
|
* ClaudeSessionRecord
|
|
2369
2003
|
* @description A native transcript record of a Claude session (source=claude_code).
|
|
@@ -2506,6 +2140,32 @@ interface components {
|
|
|
2506
2140
|
} & {
|
|
2507
2141
|
[key: string]: unknown;
|
|
2508
2142
|
};
|
|
2143
|
+
/**
|
|
2144
|
+
* CodexConfig
|
|
2145
|
+
* @description The `codex:` block — run this agent on OpenAI's Codex CLI instead of
|
|
2146
|
+
* Claude Code. Declaring the block at all is what selects the harness
|
|
2147
|
+
* (`AutomationConfig.harness`).
|
|
2148
|
+
*
|
|
2149
|
+
* Deliberately a small subset of `ClaudeConfig`: the fields omitted here
|
|
2150
|
+
* are ones Codex has no equivalent for (`effort`, `fallback_model`,
|
|
2151
|
+
* `settings`) or that the platform does not yet wire through for this harness
|
|
2152
|
+
* (`max_turns`, `skills`, MCP servers). They are omitted rather than
|
|
2153
|
+
* accepted-and-ignored, because `StrictConfigModel` forbids extra keys — so a
|
|
2154
|
+
* config that sets one fails loudly at parse time instead of silently not doing
|
|
2155
|
+
* it. The budget still bounds a run regardless.
|
|
2156
|
+
*/
|
|
2157
|
+
CodexConfig: {
|
|
2158
|
+
/**
|
|
2159
|
+
* Model
|
|
2160
|
+
* @default gpt-5.6-terra
|
|
2161
|
+
*/
|
|
2162
|
+
model: string;
|
|
2163
|
+
/**
|
|
2164
|
+
* System
|
|
2165
|
+
* @default
|
|
2166
|
+
*/
|
|
2167
|
+
system: string | components['schemas']['SystemFileRef'] | (string | components['schemas']['SystemFileRef'])[];
|
|
2168
|
+
};
|
|
2509
2169
|
/** CodexErrorEvent */
|
|
2510
2170
|
CodexErrorEvent: {
|
|
2511
2171
|
/** Message */
|
|
@@ -2852,6 +2512,37 @@ interface components {
|
|
|
2852
2512
|
} & {
|
|
2853
2513
|
[key: string]: unknown;
|
|
2854
2514
|
};
|
|
2515
|
+
/**
|
|
2516
|
+
* ComputeConfig
|
|
2517
|
+
* @description Sandbox compute sizing. Every field is optional; None inherits the
|
|
2518
|
+
* platform default (1 vCPU / 4096 MiB / 3600s — see DEFAULT_MODAL_* in
|
|
2519
|
+
* models/ellipsis/sandboxes/sandbox.py). A resolved value outside the platform
|
|
2520
|
+
* bounds fails validation loudly (a sync error on the config) rather than
|
|
2521
|
+
* being clamped silently.
|
|
2522
|
+
*
|
|
2523
|
+
* `memory` and `timeout` each accept a shorthand string ("8GB", "30m") or an
|
|
2524
|
+
* explicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /
|
|
2525
|
+
* `timeout_seconds` properties resolve either form to the canonical integer
|
|
2526
|
+
* the sandbox driver consumes.
|
|
2527
|
+
*
|
|
2528
|
+
* `timeout` is the max wall-clock the agent may run before the sandbox is
|
|
2529
|
+
* killed, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS — equal to the default, so
|
|
2530
|
+
* today the knob only shortens a session; the cap matches the 1-hour validity
|
|
2531
|
+
* of the sandbox's GitHub token). The worker's lease/visibility heartbeat
|
|
2532
|
+
* ceiling is derived from that cap, so a run at the max stays owned by its
|
|
2533
|
+
* worker for its whole life.
|
|
2534
|
+
*
|
|
2535
|
+
* Compute is billed on the requested allocation over the sandbox's
|
|
2536
|
+
* wall-clock lifetime, so a bigger/longer box costs proportionally more.
|
|
2537
|
+
*/
|
|
2538
|
+
ComputeConfig: {
|
|
2539
|
+
/** Cpu */
|
|
2540
|
+
cpu?: number | null;
|
|
2541
|
+
/** Memory */
|
|
2542
|
+
memory?: string | components['schemas']['MemorySize'] | null;
|
|
2543
|
+
/** Timeout */
|
|
2544
|
+
timeout?: string | components['schemas']['Duration'] | null;
|
|
2545
|
+
};
|
|
2855
2546
|
/**
|
|
2856
2547
|
* ConfigManagedBy
|
|
2857
2548
|
* @description Which writer owns an agent: the repository file it is defined in, or
|
|
@@ -2860,6 +2551,21 @@ interface components {
|
|
|
2860
2551
|
* @enum {string}
|
|
2861
2552
|
*/
|
|
2862
2553
|
ConfigManagedBy: 'github' | 'api';
|
|
2554
|
+
/** ConfigMetadata */
|
|
2555
|
+
ConfigMetadata: {
|
|
2556
|
+
/**
|
|
2557
|
+
* Annotations
|
|
2558
|
+
* @default {}
|
|
2559
|
+
*/
|
|
2560
|
+
annotations: {
|
|
2561
|
+
[key: string]: string;
|
|
2562
|
+
};
|
|
2563
|
+
/**
|
|
2564
|
+
* Labels
|
|
2565
|
+
* @default []
|
|
2566
|
+
*/
|
|
2567
|
+
labels: string[];
|
|
2568
|
+
};
|
|
2863
2569
|
/**
|
|
2864
2570
|
* ContributorUsage
|
|
2865
2571
|
* @description An author who merged a pull request in the window. The pull-request and
|
|
@@ -2908,8 +2614,8 @@ interface components {
|
|
|
2908
2614
|
* @description Parameters for creating an automation.
|
|
2909
2615
|
*/
|
|
2910
2616
|
CreateAutomationRequest: {
|
|
2911
|
-
/** @description The automation's definition, in the same schema as a YAML file under
|
|
2912
|
-
automation: components['schemas']['
|
|
2617
|
+
/** @description The automation's definition, in the same schema as a YAML file under .ellipsis/. */
|
|
2618
|
+
automation: components['schemas']['AutomationConfig'];
|
|
2913
2619
|
};
|
|
2914
2620
|
/**
|
|
2915
2621
|
* CreateEnvironmentRequest
|
|
@@ -2917,7 +2623,7 @@ interface components {
|
|
|
2917
2623
|
*/
|
|
2918
2624
|
CreateEnvironmentRequest: {
|
|
2919
2625
|
/** @description The environment's definition. */
|
|
2920
|
-
environment: components['schemas']['
|
|
2626
|
+
environment: components['schemas']['EnvironmentDocument'];
|
|
2921
2627
|
};
|
|
2922
2628
|
/**
|
|
2923
2629
|
* CreateFileRequest
|
|
@@ -3011,7 +2717,31 @@ interface components {
|
|
|
3011
2717
|
* "kind": "incremental"
|
|
3012
2718
|
* }
|
|
3013
2719
|
*/
|
|
3014
|
-
scope: components['schemas']['ReviewScope'];
|
|
2720
|
+
scope: components['schemas']['ReviewScope'];
|
|
2721
|
+
};
|
|
2722
|
+
/** CronTrigger */
|
|
2723
|
+
CronTrigger: {
|
|
2724
|
+
/** Schedule */
|
|
2725
|
+
schedule: string;
|
|
2726
|
+
/**
|
|
2727
|
+
* @description discriminator enum property added by openapi-typescript
|
|
2728
|
+
* @enum {string}
|
|
2729
|
+
*/
|
|
2730
|
+
type: 'cron';
|
|
2731
|
+
};
|
|
2732
|
+
/**
|
|
2733
|
+
* Duration
|
|
2734
|
+
* @description A duration as explicit units, summed. Set any of `hours`/`minutes`/
|
|
2735
|
+
* `seconds` (at least one). The alternative to the `30m`-style shorthand
|
|
2736
|
+
* string wherever a duration is accepted.
|
|
2737
|
+
*/
|
|
2738
|
+
Duration: {
|
|
2739
|
+
/** Hours */
|
|
2740
|
+
hours?: number | null;
|
|
2741
|
+
/** Minutes */
|
|
2742
|
+
minutes?: number | null;
|
|
2743
|
+
/** Seconds */
|
|
2744
|
+
seconds?: number | null;
|
|
3015
2745
|
};
|
|
3016
2746
|
/**
|
|
3017
2747
|
* DurationPercentiles
|
|
@@ -3083,6 +2813,17 @@ interface components {
|
|
|
3083
2813
|
/** Match */
|
|
3084
2814
|
match?: string[] | null;
|
|
3085
2815
|
};
|
|
2816
|
+
/**
|
|
2817
|
+
* EllipsisPermissions
|
|
2818
|
+
* @description `permissions.ellipsis` as a map: resource → level | grant | list of
|
|
2819
|
+
* grants. Levels are hierarchical (read < write < delete), so `write`
|
|
2820
|
+
* includes `read`. An unlisted resource is denied. The whole block is
|
|
2821
|
+
* intersected with the platform's sandbox ceiling at token mint — it can
|
|
2822
|
+
* narrow what a sandbox token may do, never exceed it.
|
|
2823
|
+
*/
|
|
2824
|
+
EllipsisPermissions: {
|
|
2825
|
+
[key: string]: components['schemas']['Level'] | components['schemas']['EllipsisGrant'] | (components['schemas']['Level'] | components['schemas']['EllipsisGrant'])[];
|
|
2826
|
+
};
|
|
3086
2827
|
/**
|
|
3087
2828
|
* Environment
|
|
3088
2829
|
* @description A saved environment: the machine agents run in (repositories,
|
|
@@ -3099,7 +2840,7 @@ interface components {
|
|
|
3099
2840
|
/** @description The GitHub account that last edited the environment, when known. */
|
|
3100
2841
|
edited_by?: components['schemas']['GithubAccountSnippet'] | null;
|
|
3101
2842
|
/** @description The environment definition itself, as parsed from its YAML. */
|
|
3102
|
-
environment: components['schemas']['
|
|
2843
|
+
environment: components['schemas']['EnvironmentDocument'];
|
|
3103
2844
|
/**
|
|
3104
2845
|
* Id
|
|
3105
2846
|
* @description Unique identifier of the environment.
|
|
@@ -3128,7 +2869,7 @@ interface components {
|
|
|
3128
2869
|
*/
|
|
3129
2870
|
sha: string;
|
|
3130
2871
|
/** @description The repository, path, and branch the environment syncs from. Null for environments managed through the API. */
|
|
3131
|
-
source_details?: components['schemas']['
|
|
2872
|
+
source_details?: components['schemas']['GithubSourceDetails'] | null;
|
|
3132
2873
|
/**
|
|
3133
2874
|
* Updated At
|
|
3134
2875
|
* Format: date-time
|
|
@@ -3138,6 +2879,43 @@ interface components {
|
|
|
3138
2879
|
};
|
|
3139
2880
|
/**
|
|
3140
2881
|
* EnvironmentConfig
|
|
2882
|
+
* @description Everything about the environment (the sandbox) the agent runs in: which
|
|
2883
|
+
* `repositories` are cloned into it, which environment `variables` it gets,
|
|
2884
|
+
* its `compute` sizing, how its `image` is customized, and lifecycle `hooks`.
|
|
2885
|
+
* What the agent may *do* from that environment is the top-level
|
|
2886
|
+
* `permissions:` block, not this one.
|
|
2887
|
+
*
|
|
2888
|
+
* Each `variables` entry names a variable to inject; with an inline `value` it
|
|
2889
|
+
* is hardcoded, without one it is resolved from the account's sandbox-secrets
|
|
2890
|
+
* store. Only the named variables reach this agent; the rest of the account's
|
|
2891
|
+
* stored variables never do. This is how a config brings in the config and
|
|
2892
|
+
* credentials a custom CLI needs.
|
|
2893
|
+
*/
|
|
2894
|
+
EnvironmentConfig: {
|
|
2895
|
+
/** @default {} */
|
|
2896
|
+
compute: components['schemas']['ComputeConfig'];
|
|
2897
|
+
/** @default {} */
|
|
2898
|
+
hooks: components['schemas']['EnvironmentHooks'];
|
|
2899
|
+
/** @default {} */
|
|
2900
|
+
image: components['schemas']['EnvironmentImage'];
|
|
2901
|
+
/**
|
|
2902
|
+
* Mcp Servers
|
|
2903
|
+
* @default []
|
|
2904
|
+
*/
|
|
2905
|
+
mcp_servers: (string | components['schemas']['McpServerRef'] | components['schemas']['McpStdioServer'] | components['schemas']['McpRemoteServer'])[];
|
|
2906
|
+
/**
|
|
2907
|
+
* Repositories
|
|
2908
|
+
* @default []
|
|
2909
|
+
*/
|
|
2910
|
+
repositories: components['schemas']['RepositoryRef'][];
|
|
2911
|
+
/**
|
|
2912
|
+
* Variables
|
|
2913
|
+
* @default []
|
|
2914
|
+
*/
|
|
2915
|
+
variables: components['schemas']['EnvironmentVariable'][];
|
|
2916
|
+
};
|
|
2917
|
+
/**
|
|
2918
|
+
* EnvironmentDocument
|
|
3141
2919
|
* @description A parsed environment document: identity plus the environment body.
|
|
3142
2920
|
*
|
|
3143
2921
|
* The body fields are flattened to the top level of the file (not nested
|
|
@@ -3145,38 +2923,63 @@ interface components {
|
|
|
3145
2923
|
* would be ceremony. `to_environment()` projects the body for substitution
|
|
3146
2924
|
* into an agent config.
|
|
3147
2925
|
*/
|
|
3148
|
-
|
|
2926
|
+
EnvironmentDocument: {
|
|
3149
2927
|
/** @default {} */
|
|
3150
|
-
compute: components['schemas']['
|
|
3151
|
-
ellipsis: components['schemas']['
|
|
2928
|
+
compute: components['schemas']['ComputeConfig'];
|
|
2929
|
+
ellipsis: components['schemas']['EnvironmentIdentity'];
|
|
3152
2930
|
/** @default {} */
|
|
3153
|
-
hooks: components['schemas']['
|
|
2931
|
+
hooks: components['schemas']['EnvironmentHooks'];
|
|
3154
2932
|
/** @default {} */
|
|
3155
|
-
image: components['schemas']['
|
|
2933
|
+
image: components['schemas']['EnvironmentImage'];
|
|
3156
2934
|
/**
|
|
3157
2935
|
* Mcp Servers
|
|
3158
2936
|
* @default []
|
|
3159
2937
|
*/
|
|
3160
|
-
mcp_servers: (string | components['schemas']['
|
|
2938
|
+
mcp_servers: (string | components['schemas']['McpServerRef'] | components['schemas']['McpStdioServer'] | components['schemas']['McpRemoteServer'])[];
|
|
3161
2939
|
/**
|
|
3162
2940
|
* Repositories
|
|
3163
2941
|
* @default []
|
|
3164
2942
|
*/
|
|
3165
|
-
repositories: components['schemas']['
|
|
2943
|
+
repositories: components['schemas']['RepositoryRef'][];
|
|
3166
2944
|
/**
|
|
3167
2945
|
* Variables
|
|
3168
2946
|
* @default []
|
|
3169
2947
|
*/
|
|
3170
|
-
variables: components['schemas']['
|
|
2948
|
+
variables: components['schemas']['EnvironmentVariable'][];
|
|
2949
|
+
};
|
|
2950
|
+
/**
|
|
2951
|
+
* EnvironmentHooks
|
|
2952
|
+
* @description Shell scripts run at points in the sandbox lifecycle, each as the sandbox
|
|
2953
|
+
* user with the sandbox's environment variables available. A non-zero exit
|
|
2954
|
+
* fails the run (exit_status = LIFECYCLE_HOOK_FAILED) and is not retried.
|
|
2955
|
+
*
|
|
2956
|
+
* `post_start` runs after the container starts, before any repo is cloned —
|
|
2957
|
+
* repo-independent setup (authenticate a CLI, e.g. `doppler setup`). On Modal
|
|
2958
|
+
* the repo is baked into the image so it is incidentally present, but
|
|
2959
|
+
* `post_start` must not depend on repo contents (that's `post_clone`).
|
|
2960
|
+
*
|
|
2961
|
+
* `post_clone` runs after all repos are cloned/checked out, before the agent —
|
|
2962
|
+
* repo-dependent setup (`pip install -r requirements.txt`, codegen).
|
|
2963
|
+
*
|
|
2964
|
+
* Hooks run on every run and their output is never cached. A dependency
|
|
2965
|
+
* install whose result should be reused across runs belongs in `image.setup`
|
|
2966
|
+
* (baked into the cached image) instead; keep hooks for per-run work — e.g.
|
|
2967
|
+
* anything that touches run-scoped credentials.
|
|
2968
|
+
*/
|
|
2969
|
+
EnvironmentHooks: {
|
|
2970
|
+
/** Post Clone */
|
|
2971
|
+
post_clone?: string | null;
|
|
2972
|
+
/** Post Start */
|
|
2973
|
+
post_start?: string | null;
|
|
3171
2974
|
};
|
|
3172
2975
|
/**
|
|
3173
|
-
*
|
|
2976
|
+
* EnvironmentIdentity
|
|
3174
2977
|
* @description The Ellipsis namespace of an environment file. `kind: environment` is
|
|
3175
2978
|
* what routes a synced YAML here instead of to the agent-config parser —
|
|
3176
2979
|
* an agent config carries no `kind` (or `kind: agent`, tolerated nowhere:
|
|
3177
2980
|
* absence is the agent marker).
|
|
3178
2981
|
*/
|
|
3179
|
-
|
|
2982
|
+
EnvironmentIdentity: {
|
|
3180
2983
|
/** Description */
|
|
3181
2984
|
description?: string | null;
|
|
3182
2985
|
/**
|
|
@@ -3190,10 +2993,32 @@ interface components {
|
|
|
3190
2993
|
* "labels": []
|
|
3191
2994
|
* }
|
|
3192
2995
|
*/
|
|
3193
|
-
metadata: components['schemas']['
|
|
2996
|
+
metadata: components['schemas']['ConfigMetadata'];
|
|
3194
2997
|
/** Name */
|
|
3195
2998
|
name?: string | null;
|
|
3196
2999
|
};
|
|
3000
|
+
/**
|
|
3001
|
+
* EnvironmentImage
|
|
3002
|
+
* @description How to customize the container image the agent runs in. You
|
|
3003
|
+
* contribute appended layers (`dockerfile_append`) and a build-time script
|
|
3004
|
+
* (`setup`) only — Ellipsis owns FROM / base tooling / entrypoint / user.
|
|
3005
|
+
* Today only inline bodies are supported; a file reference (resolved at the
|
|
3006
|
+
* run's SHA) will come later.
|
|
3007
|
+
*
|
|
3008
|
+
* The split: `dockerfile_append` runs when the image is assembled, before any
|
|
3009
|
+
* repo exists — toolchain installs (a package manager binary, apt packages).
|
|
3010
|
+
* `setup` runs at image-build time *after* the configured repositories are
|
|
3011
|
+
* checked out, and its output is captured by the filesystem snapshot that
|
|
3012
|
+
* becomes the cached image — dependency installs (`poetry install`,
|
|
3013
|
+
* `npm install`), so later runs start with deps already on disk. Neither runs
|
|
3014
|
+
* per run; that's `hooks.post_start` / `hooks.post_clone`.
|
|
3015
|
+
*/
|
|
3016
|
+
EnvironmentImage: {
|
|
3017
|
+
/** Dockerfile Append */
|
|
3018
|
+
dockerfile_append?: string | null;
|
|
3019
|
+
/** Setup */
|
|
3020
|
+
setup?: string | null;
|
|
3021
|
+
};
|
|
3197
3022
|
/**
|
|
3198
3023
|
* EnvironmentResponse
|
|
3199
3024
|
* @description One saved environment.
|
|
@@ -3213,6 +3038,23 @@ interface components {
|
|
|
3213
3038
|
* @enum {string}
|
|
3214
3039
|
*/
|
|
3215
3040
|
EnvironmentSource: 'request' | 'agent_config' | 'repo_default' | 'account_default' | 'platform_default';
|
|
3041
|
+
/**
|
|
3042
|
+
* EnvironmentVariable
|
|
3043
|
+
* @description One environment variable injected into the agent's sandbox.
|
|
3044
|
+
*
|
|
3045
|
+
* `value`, when set, is a literal injected as-is — use it for non-secret
|
|
3046
|
+
* config (LOG_LEVEL, an API base URL). When `value` is omitted the value is
|
|
3047
|
+
* resolved at run time from the account's sandbox-secrets store (dashboard
|
|
3048
|
+
* / `PUT /v1/secrets`) by `name`, so a secret can be injected without
|
|
3049
|
+
* ever putting it in the config file. Either way the variable only reaches
|
|
3050
|
+
* agents that name it.
|
|
3051
|
+
*/
|
|
3052
|
+
EnvironmentVariable: {
|
|
3053
|
+
/** Name */
|
|
3054
|
+
name: string;
|
|
3055
|
+
/** Value */
|
|
3056
|
+
value?: string | null;
|
|
3057
|
+
};
|
|
3216
3058
|
/**
|
|
3217
3059
|
* EnvironmentsListResponse
|
|
3218
3060
|
* @description The caller's saved environments.
|
|
@@ -3663,6 +3505,32 @@ interface components {
|
|
|
3663
3505
|
*/
|
|
3664
3506
|
members: components['schemas']['GithubMember'][];
|
|
3665
3507
|
};
|
|
3508
|
+
/**
|
|
3509
|
+
* GithubPermissions
|
|
3510
|
+
* @description The agent's GitHub access: the scope of the installation token minted for
|
|
3511
|
+
* its sandbox — the credential `git`, `gh`, and the GitHub MCP server
|
|
3512
|
+
* authenticate with.
|
|
3513
|
+
*
|
|
3514
|
+
* By default the token carries the installation's full permissions on all of
|
|
3515
|
+
* the installation's repositories. `permissions` narrows what it may do:
|
|
3516
|
+
* the string `read_only` grants read access to contents, issues, metadata and
|
|
3517
|
+
* pull requests; a map requests explicit levels per GitHub App permission
|
|
3518
|
+
* scope (e.g. `{contents: read, pull_requests: write}`) and may never exceed
|
|
3519
|
+
* what the installation granted. `repositories` scopes the token to exactly
|
|
3520
|
+
* the listed repos, by name (they must belong to the installation).
|
|
3521
|
+
*
|
|
3522
|
+
* Restriction is enforced by GitHub, not by Ellipsis: the token itself is
|
|
3523
|
+
* minted with the reduced scope, so nothing running in the sandbox can
|
|
3524
|
+
* exceed it.
|
|
3525
|
+
*/
|
|
3526
|
+
GithubPermissions: {
|
|
3527
|
+
/** Permissions */
|
|
3528
|
+
permissions?: 'read_only' | {
|
|
3529
|
+
[key: string]: string;
|
|
3530
|
+
} | null;
|
|
3531
|
+
/** Repositories */
|
|
3532
|
+
repositories?: string[] | null;
|
|
3533
|
+
};
|
|
3666
3534
|
/**
|
|
3667
3535
|
* GithubRepositoriesListResponse
|
|
3668
3536
|
* @description The repositories connected to the account's GitHub installation.
|
|
@@ -3712,6 +3580,22 @@ interface components {
|
|
|
3712
3580
|
*/
|
|
3713
3581
|
private: boolean;
|
|
3714
3582
|
};
|
|
3583
|
+
/**
|
|
3584
|
+
* GithubSourceDetails
|
|
3585
|
+
* @description Identifies the file a GitHub-sourced agent config is synced from.
|
|
3586
|
+
*
|
|
3587
|
+
* Keyed on the repository ID (not owner/name) so repository and org renames
|
|
3588
|
+
* don't orphan the config; resolve display names from gh_repositories at
|
|
3589
|
+
* read time.
|
|
3590
|
+
*/
|
|
3591
|
+
GithubSourceDetails: {
|
|
3592
|
+
/** Branch */
|
|
3593
|
+
branch: string;
|
|
3594
|
+
/** Path */
|
|
3595
|
+
path: string;
|
|
3596
|
+
/** Repo Id */
|
|
3597
|
+
repo_id: number;
|
|
3598
|
+
};
|
|
3715
3599
|
/**
|
|
3716
3600
|
* GithubUser
|
|
3717
3601
|
* @description This is a full user account. It's the most amount of info we need to represent a GitHub user.
|
|
@@ -3815,6 +3699,24 @@ interface components {
|
|
|
3815
3699
|
* @enum {string}
|
|
3816
3700
|
*/
|
|
3817
3701
|
Harness: 'claude_code' | 'codex';
|
|
3702
|
+
/**
|
|
3703
|
+
* ImageAttachment
|
|
3704
|
+
* @description One image on a request body, base64 inline (the Claude Code paste
|
|
3705
|
+
* shape). Shared by `POST /v1/sessions` and `POST /v1/sessions/{id}/messages`.
|
|
3706
|
+
*/
|
|
3707
|
+
ImageAttachment: {
|
|
3708
|
+
/**
|
|
3709
|
+
* Data
|
|
3710
|
+
* @description The raw image bytes, base64-encoded. 5 MiB cap.
|
|
3711
|
+
*/
|
|
3712
|
+
data: string;
|
|
3713
|
+
/**
|
|
3714
|
+
* Media Type
|
|
3715
|
+
* @description The image's MIME type: image/png, image/jpeg, image/gif, or image/webp. The bytes must match.
|
|
3716
|
+
* @enum {string}
|
|
3717
|
+
*/
|
|
3718
|
+
media_type: 'image/png' | 'image/jpeg' | 'image/gif' | 'image/webp';
|
|
3719
|
+
};
|
|
3818
3720
|
/**
|
|
3819
3721
|
* IngestTranscriptRequest
|
|
3820
3722
|
* @description A batch of raw transcript lines pushed from inside a session's
|
|
@@ -3833,6 +3735,30 @@ interface components {
|
|
|
3833
3735
|
*/
|
|
3834
3736
|
offset: number;
|
|
3835
3737
|
};
|
|
3738
|
+
/**
|
|
3739
|
+
* InputContract
|
|
3740
|
+
* @description The typed input contract: what goes INTO a session (the trigger is
|
|
3741
|
+
* when it happens; this is what goes in).
|
|
3742
|
+
*
|
|
3743
|
+
* `json_schema` types the payload a caller-started session takes
|
|
3744
|
+
* (`POST /v1/sessions` `input`, validated at the door; required when
|
|
3745
|
+
* declared). It is illegal on a react-triggered agent — react payloads are
|
|
3746
|
+
* platform-shaped (the published surface field sets), not caller-shaped.
|
|
3747
|
+
*
|
|
3748
|
+
* `message` is the initial-message template: exact `{{path}}` substitution
|
|
3749
|
+
* over the caller payload (or, on a react agent, over the surface's
|
|
3750
|
+
* published fields), no conditionals/loops/filters. Refs are validated at
|
|
3751
|
+
* deploy time against the governing field set (see AutomationConfig's
|
|
3752
|
+
* `_check_input`).
|
|
3753
|
+
*/
|
|
3754
|
+
InputContract: {
|
|
3755
|
+
/** Json Schema */
|
|
3756
|
+
json_schema?: {
|
|
3757
|
+
[key: string]: unknown;
|
|
3758
|
+
} | null;
|
|
3759
|
+
/** Message */
|
|
3760
|
+
message?: string | null;
|
|
3761
|
+
};
|
|
3836
3762
|
/**
|
|
3837
3763
|
* IssueAction
|
|
3838
3764
|
* @enum {string}
|
|
@@ -4011,7 +3937,7 @@ interface components {
|
|
|
4011
3937
|
LinkAutomationRequest: {
|
|
4012
3938
|
/**
|
|
4013
3939
|
* Path
|
|
4014
|
-
* @description File path within the repo. Omit for the default
|
|
3940
|
+
* @description File path within the repo. Omit for the default .ellipsis/automations/<slug>.yaml; if set it must be a location the sync scans (a .yaml/.yml file under .ellipsis/ at any depth; in the repository named .ellipsis the repo root is that directory).
|
|
4015
3941
|
*/
|
|
4016
3942
|
path?: string | null;
|
|
4017
3943
|
/**
|
|
@@ -4070,6 +3996,69 @@ interface components {
|
|
|
4070
3996
|
*/
|
|
4071
3997
|
slack_user_id: string;
|
|
4072
3998
|
};
|
|
3999
|
+
/**
|
|
4000
|
+
* McpRemoteServer
|
|
4001
|
+
* @description A bring-your-own remote MCP server: the harness talks HTTP to `url`.
|
|
4002
|
+
* Nothing runs in the sandbox image. `headers` carry static auth (e.g.
|
|
4003
|
+
* `Authorization: Bearer ${TOKEN}`); values may embed `${NAME}` secret
|
|
4004
|
+
* references, resolved at run time from the account's secrets store.
|
|
4005
|
+
*/
|
|
4006
|
+
McpRemoteServer: {
|
|
4007
|
+
/**
|
|
4008
|
+
* Headers
|
|
4009
|
+
* @default {}
|
|
4010
|
+
*/
|
|
4011
|
+
headers: {
|
|
4012
|
+
[key: string]: string;
|
|
4013
|
+
};
|
|
4014
|
+
/** Name */
|
|
4015
|
+
name: string;
|
|
4016
|
+
/** Url */
|
|
4017
|
+
url: string;
|
|
4018
|
+
};
|
|
4019
|
+
/**
|
|
4020
|
+
* McpServerRef
|
|
4021
|
+
* @description One built-in MCP server this agent opts into by name (`linear`/`slack`).
|
|
4022
|
+
* A name reference over the connected built-in set — the platform manages the
|
|
4023
|
+
* server's transport and credentials. It only matters when the named
|
|
4024
|
+
* integration is set to `opt_in` inclusion; an integration in the default
|
|
4025
|
+
* `all_sessions` mode is added regardless. For a server the platform does not
|
|
4026
|
+
* provide, define it instead (`McpStdioServer` /
|
|
4027
|
+
* `McpRemoteServer`).
|
|
4028
|
+
*/
|
|
4029
|
+
McpServerRef: {
|
|
4030
|
+
/** Name */
|
|
4031
|
+
name: string;
|
|
4032
|
+
};
|
|
4033
|
+
/**
|
|
4034
|
+
* McpStdioServer
|
|
4035
|
+
* @description A bring-your-own stdio MCP server: the harness spawns `command` inside
|
|
4036
|
+
* the sandbox and speaks JSON-RPC over its stdin/stdout. The command must be
|
|
4037
|
+
* runnable in the sandbox image — install its runtime via `image.setup` /
|
|
4038
|
+
* `image.dockerfile_append` if the base image lacks it.
|
|
4039
|
+
*
|
|
4040
|
+
* `env` values may embed `${NAME}` references, resolved at run time from the
|
|
4041
|
+
* account's secrets store (see `mcp_secret_refs`); everything else is passed
|
|
4042
|
+
* literally.
|
|
4043
|
+
*/
|
|
4044
|
+
McpStdioServer: {
|
|
4045
|
+
/**
|
|
4046
|
+
* Args
|
|
4047
|
+
* @default []
|
|
4048
|
+
*/
|
|
4049
|
+
args: string[];
|
|
4050
|
+
/** Command */
|
|
4051
|
+
command: string;
|
|
4052
|
+
/**
|
|
4053
|
+
* Env
|
|
4054
|
+
* @default {}
|
|
4055
|
+
*/
|
|
4056
|
+
env: {
|
|
4057
|
+
[key: string]: string;
|
|
4058
|
+
};
|
|
4059
|
+
/** Name */
|
|
4060
|
+
name: string;
|
|
4061
|
+
};
|
|
4073
4062
|
/**
|
|
4074
4063
|
* MemoriesListResponse
|
|
4075
4064
|
* @description The organization's memories: the rendered index a reader scans, plus the
|
|
@@ -4160,6 +4149,18 @@ interface components {
|
|
|
4160
4149
|
/** @description The memory. */
|
|
4161
4150
|
memory: components['schemas']['Memory'];
|
|
4162
4151
|
};
|
|
4152
|
+
/**
|
|
4153
|
+
* MemorySize
|
|
4154
|
+
* @description A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).
|
|
4155
|
+
* Set any of `gb`/`mb` (at least one). The alternative to the `8GB`-style
|
|
4156
|
+
* shorthand string.
|
|
4157
|
+
*/
|
|
4158
|
+
MemorySize: {
|
|
4159
|
+
/** Gb */
|
|
4160
|
+
gb?: number | null;
|
|
4161
|
+
/** Mb */
|
|
4162
|
+
mb?: number | null;
|
|
4163
|
+
};
|
|
4163
4164
|
/**
|
|
4164
4165
|
* MemorySummary
|
|
4165
4166
|
* @description One entry in the index: a memory with every field except `content`.
|
|
@@ -4305,17 +4306,24 @@ interface components {
|
|
|
4305
4306
|
OrganizationSettings: {
|
|
4306
4307
|
/** @description The organization's spend ceilings. */
|
|
4307
4308
|
budget_ceiling?: components['schemas']['BudgetCeiling'];
|
|
4308
|
-
/**
|
|
4309
|
-
* Default Environment
|
|
4310
|
-
* @description The saved environment sessions run in when neither their request nor their automation names one: an `env_...` id or the environment's name on write, always the id on read. Null means the built-in basic sandbox.
|
|
4311
|
-
*/
|
|
4312
|
-
default_environment?: string | null;
|
|
4313
4309
|
/**
|
|
4314
4310
|
* Default Model
|
|
4315
4311
|
* @description Canonical model id every session falls back to when neither its request nor its automation names one, or null when unset (sessions then run the platform default).
|
|
4316
4312
|
*/
|
|
4317
4313
|
default_model?: string | null;
|
|
4318
4314
|
};
|
|
4315
|
+
/**
|
|
4316
|
+
* OutputConfig
|
|
4317
|
+
* @description The typed output contract: the JSON Schema the agent must exit through
|
|
4318
|
+
* (the StructuredOutput exit tool). Read back via
|
|
4319
|
+
* GET /v1/sessions/{id}/output.
|
|
4320
|
+
*/
|
|
4321
|
+
OutputConfig: {
|
|
4322
|
+
/** Json Schema */
|
|
4323
|
+
json_schema: {
|
|
4324
|
+
[key: string]: unknown;
|
|
4325
|
+
};
|
|
4326
|
+
};
|
|
4319
4327
|
/**
|
|
4320
4328
|
* ParentKind
|
|
4321
4329
|
* @description How a session relates to its predecessor (parent_agent_session_id) —
|
|
@@ -4329,6 +4337,32 @@ interface components {
|
|
|
4329
4337
|
* @enum {string}
|
|
4330
4338
|
*/
|
|
4331
4339
|
ParentKind: 'continuation' | 'resume';
|
|
4340
|
+
/**
|
|
4341
|
+
* PermissionsConfig
|
|
4342
|
+
* @description What the agent is allowed to touch, per credential the platform mints
|
|
4343
|
+
* into its sandbox. Distinct from `environment:`, which is where the agent
|
|
4344
|
+
* runs; this is what it may do from there.
|
|
4345
|
+
*
|
|
4346
|
+
* `ellipsis` scopes the sandbox's Ellipsis API token
|
|
4347
|
+
* (`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates
|
|
4348
|
+
* with). `true` / the string `all` (the default) grant the full sandbox
|
|
4349
|
+
* ceiling — everything a sandbox token can ever do. A map narrows it per
|
|
4350
|
+
* resource (see `EllipsisPermissions`); the minted token carries
|
|
4351
|
+
* the intersection, so a config can only ever reduce access. `false` fails
|
|
4352
|
+
* validation — an agent with no API token cannot report its own progress.
|
|
4353
|
+
*
|
|
4354
|
+
* `github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) —
|
|
4355
|
+
* see `GithubPermissions`. GitHub enforces it at mint time.
|
|
4356
|
+
*/
|
|
4357
|
+
PermissionsConfig: {
|
|
4358
|
+
/**
|
|
4359
|
+
* Ellipsis
|
|
4360
|
+
* @default true
|
|
4361
|
+
*/
|
|
4362
|
+
ellipsis: (true | 'all') | components['schemas']['EllipsisPermissions'];
|
|
4363
|
+
/** @default {} */
|
|
4364
|
+
github: components['schemas']['GithubPermissions'];
|
|
4365
|
+
};
|
|
4332
4366
|
/**
|
|
4333
4367
|
* PollCliAuthResponse
|
|
4334
4368
|
* @description The state of a device-code flow. Poll until `status` leaves `pending`.
|
|
@@ -4647,6 +4681,20 @@ interface components {
|
|
|
4647
4681
|
};
|
|
4648
4682
|
/** ReactSlackChannel */
|
|
4649
4683
|
ReactSlackChannel: Record<string, never>;
|
|
4684
|
+
/** ReactTrigger */
|
|
4685
|
+
ReactTrigger: {
|
|
4686
|
+
issue?: components['schemas']['ReactIssue'] | null;
|
|
4687
|
+
linear_issue?: components['schemas']['ReactLinearIssue'] | null;
|
|
4688
|
+
pull_request?: components['schemas']['ReactPullRequest'] | null;
|
|
4689
|
+
push?: components['schemas']['ReactPush'] | null;
|
|
4690
|
+
sentry?: components['schemas']['ReactSentry'] | null;
|
|
4691
|
+
slack_channel?: components['schemas']['ReactSlackChannel'] | null;
|
|
4692
|
+
/**
|
|
4693
|
+
* @description discriminator enum property added by openapi-typescript
|
|
4694
|
+
* @enum {string}
|
|
4695
|
+
*/
|
|
4696
|
+
type: 'react';
|
|
4697
|
+
};
|
|
4650
4698
|
/**
|
|
4651
4699
|
* RecentPullRequest
|
|
4652
4700
|
* @description One pull request in the recent-activity table.
|
|
@@ -4771,6 +4819,15 @@ interface components {
|
|
|
4771
4819
|
*/
|
|
4772
4820
|
include: string[];
|
|
4773
4821
|
} | string[];
|
|
4822
|
+
/** RepositoryRef */
|
|
4823
|
+
RepositoryRef: {
|
|
4824
|
+
/** Name */
|
|
4825
|
+
name: string;
|
|
4826
|
+
/** Owner */
|
|
4827
|
+
owner?: string | null;
|
|
4828
|
+
/** Ref */
|
|
4829
|
+
ref?: string | null;
|
|
4830
|
+
};
|
|
4774
4831
|
/**
|
|
4775
4832
|
* RepositorySelection
|
|
4776
4833
|
* @enum {string}
|
|
@@ -5302,17 +5359,60 @@ interface components {
|
|
|
5302
5359
|
* @description The pull request a review ran on.
|
|
5303
5360
|
*/
|
|
5304
5361
|
ReviewPullRequest: {
|
|
5362
|
+
/** @description Who opened the pull request, or null when Ellipsis has not ingested the pull request yet. */
|
|
5363
|
+
author?: components['schemas']['ReviewPullRequestAuthor'] | null;
|
|
5364
|
+
/**
|
|
5365
|
+
* Base Sha
|
|
5366
|
+
* @description The pull request's base commit when the review was created.
|
|
5367
|
+
*/
|
|
5368
|
+
base_sha: string;
|
|
5369
|
+
/**
|
|
5370
|
+
* Head Sha
|
|
5371
|
+
* @description The pull request's head commit the review ran against (the same as `scope.head`).
|
|
5372
|
+
*/
|
|
5373
|
+
head_sha: string;
|
|
5305
5374
|
/**
|
|
5306
5375
|
* Number
|
|
5307
5376
|
* @description The pull request number.
|
|
5308
5377
|
*/
|
|
5309
5378
|
number: number;
|
|
5379
|
+
/**
|
|
5380
|
+
* Title
|
|
5381
|
+
* @description The pull request's title, or null when Ellipsis has not ingested the pull request yet.
|
|
5382
|
+
*/
|
|
5383
|
+
title?: string | null;
|
|
5310
5384
|
/**
|
|
5311
5385
|
* Url
|
|
5312
5386
|
* @description The pull request's URL on GitHub.
|
|
5313
5387
|
*/
|
|
5314
5388
|
url: string;
|
|
5315
5389
|
};
|
|
5390
|
+
/**
|
|
5391
|
+
* ReviewPullRequestAuthor
|
|
5392
|
+
* @description The GitHub account that opened the pull request.
|
|
5393
|
+
*/
|
|
5394
|
+
ReviewPullRequestAuthor: {
|
|
5395
|
+
/**
|
|
5396
|
+
* Avatar Url
|
|
5397
|
+
* @description The account's avatar URL.
|
|
5398
|
+
*/
|
|
5399
|
+
avatar_url: string;
|
|
5400
|
+
/**
|
|
5401
|
+
* Id
|
|
5402
|
+
* @description The account's GitHub id.
|
|
5403
|
+
*/
|
|
5404
|
+
id: number;
|
|
5405
|
+
/**
|
|
5406
|
+
* Login
|
|
5407
|
+
* @description The account's GitHub login.
|
|
5408
|
+
*/
|
|
5409
|
+
login: string;
|
|
5410
|
+
/**
|
|
5411
|
+
* Type
|
|
5412
|
+
* @description The account type: "User", "Organization", or "Bot".
|
|
5413
|
+
*/
|
|
5414
|
+
type: string;
|
|
5415
|
+
};
|
|
5316
5416
|
/**
|
|
5317
5417
|
* ReviewRepoFacet
|
|
5318
5418
|
* @description A repository filter option for the reviews view.
|
|
@@ -5955,9 +6055,14 @@ interface components {
|
|
|
5955
6055
|
* @description Optional retry-safety key, unique per (session, key): a retry with the same key returns the original message — no duplicate message, no double turn, no double spend. The SDK auto-generates one per send.
|
|
5956
6056
|
*/
|
|
5957
6057
|
idempotency_key?: string | null;
|
|
6058
|
+
/**
|
|
6059
|
+
* Images
|
|
6060
|
+
* @description Images attached to the message, base64 inline — what a paste into Claude Code sends. Each becomes an `[Image #N]` placeholder in the stored body and an image block the model sees on the turn this message opens. Up to 10, 5 MiB each; PNG, JPEG, GIF, or WebP. Claude harness only.
|
|
6061
|
+
*/
|
|
6062
|
+
images?: components['schemas']['ImageAttachment'][];
|
|
5958
6063
|
/**
|
|
5959
6064
|
* Message
|
|
5960
|
-
* @description The message text.
|
|
6065
|
+
* @description The message text. May be empty when `images` is not.
|
|
5961
6066
|
*/
|
|
5962
6067
|
message: string;
|
|
5963
6068
|
};
|
|
@@ -6001,12 +6106,14 @@ interface components {
|
|
|
6001
6106
|
* disagree about what a session looks like.
|
|
6002
6107
|
*/
|
|
6003
6108
|
Session: {
|
|
6004
|
-
/** @description The agent that ran: the config the session executed, where that config came from, and any override merged into it. */
|
|
6005
|
-
agent: components['schemas']['SessionAgent'];
|
|
6006
6109
|
/** @description The principal this session is attributed to. */
|
|
6007
6110
|
attribution?: components['schemas']['SessionAttribution'];
|
|
6111
|
+
/** @description The automation the session was started from, or null for a raw session started with POST /v1/sessions. */
|
|
6112
|
+
automation?: components['schemas']['SessionAutomation'] | null;
|
|
6008
6113
|
/** @description The spend budget enforced for this session. */
|
|
6009
6114
|
budget?: components['schemas']['SessionBudget'];
|
|
6115
|
+
/** @description What the session ran on, frozen when it was created: the harness block, the resolved environment, permissions, skills, output contract, and budget. */
|
|
6116
|
+
config: components['schemas']['SessionConfig'];
|
|
6010
6117
|
/**
|
|
6011
6118
|
* Context Repository
|
|
6012
6119
|
* @description The "owner/name" repository context the session was started in, if any.
|
|
@@ -6020,7 +6127,7 @@ interface components {
|
|
|
6020
6127
|
* @description When the session was created.
|
|
6021
6128
|
*/
|
|
6022
6129
|
created_at: string;
|
|
6023
|
-
/** @description The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is
|
|
6130
|
+
/** @description The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is `config.environment`. */
|
|
6024
6131
|
environment?: components['schemas']['SessionEnvironment'];
|
|
6025
6132
|
/** @description How the session ended; null until it is terminal. */
|
|
6026
6133
|
exit_status?: components['schemas']['SessionExitStatus'] | null;
|
|
@@ -6062,7 +6169,7 @@ interface components {
|
|
|
6062
6169
|
prompting: components['schemas']['SessionPrompting'];
|
|
6063
6170
|
/** @description Lifecycle state of the durable conversation, or null for sessions without one. */
|
|
6064
6171
|
session_state?: components['schemas']['SessionState'] | null;
|
|
6065
|
-
/** @description Where the session came from (e.g. react,
|
|
6172
|
+
/** @description Where the session came from (e.g. react, web, api, cli, mention, cron). */
|
|
6066
6173
|
source: components['schemas']['SessionSource'];
|
|
6067
6174
|
/** @description Execution status of the session. */
|
|
6068
6175
|
status: components['schemas']['SessionStatus'];
|
|
@@ -6086,35 +6193,6 @@ interface components {
|
|
|
6086
6193
|
*/
|
|
6087
6194
|
updated_at: string;
|
|
6088
6195
|
};
|
|
6089
|
-
/**
|
|
6090
|
-
* SessionAgent
|
|
6091
|
-
* @description The agent this session ran: the definition it actually executed, where
|
|
6092
|
-
* that definition came from, and the diff that was merged in — the same
|
|
6093
|
-
* effective-value-plus-provenance shape `SessionBudget` uses.
|
|
6094
|
-
*
|
|
6095
|
-
* `config` is the snapshot frozen when the session was created;
|
|
6096
|
-
* `automation_id` points at the automation as it exists NOW. They diverge
|
|
6097
|
-
* legitimately: a YAML edit after the session started, or any `override`,
|
|
6098
|
-
* leaves the pointer describing something the session never ran.
|
|
6099
|
-
*/
|
|
6100
|
-
SessionAgent: {
|
|
6101
|
-
/**
|
|
6102
|
-
* Automation Id
|
|
6103
|
-
* @description Identifier of the automation this session's snapshot was taken from. Null for raw sessions (nothing saved behind them), templates, and built-in agents. Points at the automation as it exists now, which may have changed since.
|
|
6104
|
-
*/
|
|
6105
|
-
automation_id?: string | null;
|
|
6106
|
-
/** @description The agent definition the session actually ran, frozen when the session was created. */
|
|
6107
|
-
config: components['schemas']['AgentConfig'];
|
|
6108
|
-
/**
|
|
6109
|
-
* Override
|
|
6110
|
-
* @description The partial-config override merged into `config` for this session, or null when the config ran unmodified. `config` is the merged result; this is the diff.
|
|
6111
|
-
*/
|
|
6112
|
-
override?: {
|
|
6113
|
-
[key: string]: unknown;
|
|
6114
|
-
} | null;
|
|
6115
|
-
/** @description How this session's config was chosen. */
|
|
6116
|
-
source: components['schemas']['AgentConfigSource'];
|
|
6117
|
-
};
|
|
6118
6196
|
/**
|
|
6119
6197
|
* SessionAttribution
|
|
6120
6198
|
* @description The principal a session is attributed to: what kind, its id, and — when
|
|
@@ -6131,6 +6209,22 @@ interface components {
|
|
|
6131
6209
|
/** @description The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user. */
|
|
6132
6210
|
user?: components['schemas']['GithubAccountSnippet'] | null;
|
|
6133
6211
|
};
|
|
6212
|
+
/**
|
|
6213
|
+
* SessionAutomation
|
|
6214
|
+
* @description The automation this session was started from: the definition frozen
|
|
6215
|
+
* when the session was created, and the saved automation it came from as it
|
|
6216
|
+
* exists NOW. They diverge legitimately — a YAML edit after the session
|
|
6217
|
+
* started leaves the pointer describing something the session never ran.
|
|
6218
|
+
*/
|
|
6219
|
+
SessionAutomation: {
|
|
6220
|
+
/** @description The automation definition the session was started from, frozen when the session was created. */
|
|
6221
|
+
config: components['schemas']['AutomationConfig'];
|
|
6222
|
+
/**
|
|
6223
|
+
* Id
|
|
6224
|
+
* @description Identifier of the saved automation this session's snapshot was taken from. Null for a routing-file agent, a code-review stage agent, or the built-in mention agent, which have no saved automation behind them. Points at the automation as it exists now, which may have changed since.
|
|
6225
|
+
*/
|
|
6226
|
+
id?: string | null;
|
|
6227
|
+
};
|
|
6134
6228
|
/**
|
|
6135
6229
|
* SessionBudget
|
|
6136
6230
|
* @description The spend budget actually enforced for this session, and which layer of
|
|
@@ -6149,6 +6243,56 @@ interface components {
|
|
|
6149
6243
|
*/
|
|
6150
6244
|
source: components['schemas']['BudgetSource'];
|
|
6151
6245
|
};
|
|
6246
|
+
/**
|
|
6247
|
+
* SessionConfig
|
|
6248
|
+
* @description What one session runs on: the harness block(s), where it runs, what it
|
|
6249
|
+
* may touch, its skills, its exit contract, and its spend cap. Every session
|
|
6250
|
+
* freezes one of these (`agent_sessions.session_config`); an automation
|
|
6251
|
+
* carries one under `session:` (`AutomationConfig.session`); and
|
|
6252
|
+
* `POST /v1/sessions` is this shape flattened onto the request body, plus the
|
|
6253
|
+
* run settings. Nothing in here is an automation's identity or trigger —
|
|
6254
|
+
* those belong to `AutomationConfig`.
|
|
6255
|
+
*
|
|
6256
|
+
* Field order is the canonical key order for `session:` blocks and YAML
|
|
6257
|
+
* exports: what runs (`claude`/`codex`), where (`environment`), what it may
|
|
6258
|
+
* touch (`permissions`), then the rest.
|
|
6259
|
+
*/
|
|
6260
|
+
SessionConfig: {
|
|
6261
|
+
/** @default {} */
|
|
6262
|
+
budget: components['schemas']['BudgetConfig'];
|
|
6263
|
+
/**
|
|
6264
|
+
* @default {
|
|
6265
|
+
* "system": ""
|
|
6266
|
+
* }
|
|
6267
|
+
*/
|
|
6268
|
+
claude: components['schemas']['ClaudeConfig'];
|
|
6269
|
+
codex?: components['schemas']['CodexConfig'] | null;
|
|
6270
|
+
/**
|
|
6271
|
+
* Environment
|
|
6272
|
+
* @default {
|
|
6273
|
+
* "compute": {},
|
|
6274
|
+
* "hooks": {},
|
|
6275
|
+
* "image": {},
|
|
6276
|
+
* "mcp_servers": [],
|
|
6277
|
+
* "repositories": [],
|
|
6278
|
+
* "variables": []
|
|
6279
|
+
* }
|
|
6280
|
+
*/
|
|
6281
|
+
environment: string | components['schemas']['EnvironmentConfig'];
|
|
6282
|
+
output?: components['schemas']['OutputConfig'] | null;
|
|
6283
|
+
/**
|
|
6284
|
+
* @default {
|
|
6285
|
+
* "ellipsis": true,
|
|
6286
|
+
* "github": {}
|
|
6287
|
+
* }
|
|
6288
|
+
*/
|
|
6289
|
+
permissions: components['schemas']['PermissionsConfig'];
|
|
6290
|
+
/**
|
|
6291
|
+
* Skills
|
|
6292
|
+
* @default []
|
|
6293
|
+
*/
|
|
6294
|
+
skills: components['schemas']['SkillRef'][];
|
|
6295
|
+
};
|
|
6152
6296
|
/**
|
|
6153
6297
|
* SessionCost
|
|
6154
6298
|
* @description What a session (or one turn of it) cost, in millicents.
|
|
@@ -6189,11 +6333,27 @@ interface components {
|
|
|
6189
6333
|
*/
|
|
6190
6334
|
total: number;
|
|
6191
6335
|
};
|
|
6336
|
+
/**
|
|
6337
|
+
* SessionDiffResponse
|
|
6338
|
+
* @description A session's uncommitted working-tree changes, one patch per file.
|
|
6339
|
+
*/
|
|
6340
|
+
SessionDiffResponse: {
|
|
6341
|
+
/**
|
|
6342
|
+
* Files
|
|
6343
|
+
* @description One unified-diff section per changed file, `diff --git` header included, exactly as git emitted it. Join to the per-file counts on `git.repos[].files` by (full_name, path). Empty when the tree was clean or no capture ran.
|
|
6344
|
+
*/
|
|
6345
|
+
files: components['schemas']['SessionGitPatchFile'][];
|
|
6346
|
+
/**
|
|
6347
|
+
* Omitted Paths
|
|
6348
|
+
* @description Paths whose hunks were dropped to fit the storage cap, so a viewer can name what is missing instead of showing a silently partial diff.
|
|
6349
|
+
*/
|
|
6350
|
+
omitted_paths: string[];
|
|
6351
|
+
};
|
|
6192
6352
|
/**
|
|
6193
6353
|
* SessionEnvironment
|
|
6194
6354
|
* @description The environment this session resolved: which saved environment (as it
|
|
6195
6355
|
* exists now) and how it was chosen. The environment's frozen BODY rides
|
|
6196
|
-
* inside `
|
|
6356
|
+
* inside `config.environment` — substitution happens before the config
|
|
6197
6357
|
* snapshot freezes — so this object is provenance, not payload.
|
|
6198
6358
|
*/
|
|
6199
6359
|
SessionEnvironment: {
|
|
@@ -6202,7 +6362,7 @@ interface components {
|
|
|
6202
6362
|
* @description Identifier of the saved environment the session's config resolved. Null for an inline environment block or the built-in basic sandbox.
|
|
6203
6363
|
*/
|
|
6204
6364
|
environment_id?: string | null;
|
|
6205
|
-
/** @description How the environment was chosen (request, agent_config, repo_default
|
|
6365
|
+
/** @description How the environment was chosen (request, agent_config, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment. */
|
|
6206
6366
|
source?: components['schemas']['EnvironmentSource'] | null;
|
|
6207
6367
|
};
|
|
6208
6368
|
/**
|
|
@@ -6263,6 +6423,28 @@ interface components {
|
|
|
6263
6423
|
/** Status */
|
|
6264
6424
|
status: string;
|
|
6265
6425
|
};
|
|
6426
|
+
/**
|
|
6427
|
+
* SessionGitPatchFile
|
|
6428
|
+
* @description One file's patch, split out of `git diff HEAD` at capture time.
|
|
6429
|
+
*
|
|
6430
|
+
* Stored per file rather than as one blob because that is how a viewer reads
|
|
6431
|
+
* it: a row per changed file, opened one at a time. Counts and status are NOT
|
|
6432
|
+
* repeated here — they live on the matching SessionGitFile in
|
|
6433
|
+
* `agent_sessions.output_git`, which rides on every session read, so a surface
|
|
6434
|
+
* lists the changed files (and their +/−) before it fetches a single hunk. The
|
|
6435
|
+
* join key is (full_name, path).
|
|
6436
|
+
*
|
|
6437
|
+
* `patch` is the unified-diff section for this file, `diff --git` header
|
|
6438
|
+
* included, exactly as git emitted it.
|
|
6439
|
+
*/
|
|
6440
|
+
SessionGitPatchFile: {
|
|
6441
|
+
/** Full Name */
|
|
6442
|
+
full_name: string;
|
|
6443
|
+
/** Patch */
|
|
6444
|
+
patch: string;
|
|
6445
|
+
/** Path */
|
|
6446
|
+
path: string;
|
|
6447
|
+
};
|
|
6266
6448
|
/**
|
|
6267
6449
|
* SessionGitPr
|
|
6268
6450
|
* @description A pull request the session opened in this repo, written the moment the
|
|
@@ -6373,7 +6555,7 @@ interface components {
|
|
|
6373
6555
|
author?: string | null;
|
|
6374
6556
|
/**
|
|
6375
6557
|
* Body
|
|
6376
|
-
* @description The message text.
|
|
6558
|
+
* @description The message text, with one `[Image #N]` placeholder per attached image.
|
|
6377
6559
|
*/
|
|
6378
6560
|
body: string;
|
|
6379
6561
|
/**
|
|
@@ -6402,6 +6584,11 @@ interface components {
|
|
|
6402
6584
|
* @description Unique identifier of the message.
|
|
6403
6585
|
*/
|
|
6404
6586
|
id: string;
|
|
6587
|
+
/**
|
|
6588
|
+
* Images
|
|
6589
|
+
* @description Images attached to the message, metadata only: index, media type, size. The bytes go to the model, never over the stream.
|
|
6590
|
+
*/
|
|
6591
|
+
images?: components['schemas']['SessionMessageImage'][];
|
|
6405
6592
|
/**
|
|
6406
6593
|
* Sender Attribution Id
|
|
6407
6594
|
* @description Identifier of the principal that sent the message, if attributed.
|
|
@@ -6417,6 +6604,28 @@ interface components {
|
|
|
6417
6604
|
/** @description Delivery status of the message. */
|
|
6418
6605
|
status: components['schemas']['SessionMessageStatus'];
|
|
6419
6606
|
};
|
|
6607
|
+
/**
|
|
6608
|
+
* SessionMessageImage
|
|
6609
|
+
* @description One image on a message, metadata only. `index` is the N in the
|
|
6610
|
+
* `[Image #N]` placeholder in the message body.
|
|
6611
|
+
*/
|
|
6612
|
+
SessionMessageImage: {
|
|
6613
|
+
/**
|
|
6614
|
+
* Index
|
|
6615
|
+
* @description 1-based position: the N in `[Image #N]`.
|
|
6616
|
+
*/
|
|
6617
|
+
index: number;
|
|
6618
|
+
/**
|
|
6619
|
+
* Media Type
|
|
6620
|
+
* @description The image's MIME type.
|
|
6621
|
+
*/
|
|
6622
|
+
media_type: string;
|
|
6623
|
+
/**
|
|
6624
|
+
* Size Bytes
|
|
6625
|
+
* @description Size of the decoded image, in bytes.
|
|
6626
|
+
*/
|
|
6627
|
+
size_bytes: number;
|
|
6628
|
+
};
|
|
6420
6629
|
/**
|
|
6421
6630
|
* SessionMessageResponse
|
|
6422
6631
|
* @description One inbox message.
|
|
@@ -6510,9 +6719,12 @@ interface components {
|
|
|
6510
6719
|
};
|
|
6511
6720
|
/**
|
|
6512
6721
|
* SessionSource
|
|
6722
|
+
* @description Where a session came from: the credential that started it (web app,
|
|
6723
|
+
* API key, CLI) or the trigger that fired (react, mention, cron). Never
|
|
6724
|
+
* taken from a request body.
|
|
6513
6725
|
* @enum {string}
|
|
6514
6726
|
*/
|
|
6515
|
-
SessionSource: 'react' | '
|
|
6727
|
+
SessionSource: 'react' | 'web' | 'api' | 'cli' | 'mention' | 'cron';
|
|
6516
6728
|
/**
|
|
6517
6729
|
* SessionState
|
|
6518
6730
|
* @description Lifecycle of a keyed (multi-turn) session — the durable conversation.
|
|
@@ -6648,6 +6860,35 @@ interface components {
|
|
|
6648
6860
|
*/
|
|
6649
6861
|
sessions: components['schemas']['Session'][];
|
|
6650
6862
|
};
|
|
6863
|
+
/**
|
|
6864
|
+
* SettingsRef
|
|
6865
|
+
* @description A config-declared Claude Code settings.json, resolved at run start and
|
|
6866
|
+
* passed to `claude --settings <path>`. That is the CLI settings tier — BELOW
|
|
6867
|
+
* Ellipsis's managed-settings.json floor — so it customizes behavior (model
|
|
6868
|
+
* permissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a
|
|
6869
|
+
* security setting. Lets a team point the cloud agent at the same settings file
|
|
6870
|
+
* they already use with Claude Code locally instead of re-encoding it as YAML.
|
|
6871
|
+
*/
|
|
6872
|
+
SettingsRef: {
|
|
6873
|
+
/** Path */
|
|
6874
|
+
path: string;
|
|
6875
|
+
repository?: components['schemas']['RepositoryRef'] | null;
|
|
6876
|
+
};
|
|
6877
|
+
/**
|
|
6878
|
+
* SkillRef
|
|
6879
|
+
* @description One config-declared Claude Code skill: a repository directory containing
|
|
6880
|
+
* a SKILL.md, resolved at run start and installed at the sandbox's personal
|
|
6881
|
+
* skill level (`~/.claude/skills/<basename(path)>/`). This is how a config
|
|
6882
|
+
* brings in skills its cloned repositories don't provide — cross-repo refs
|
|
6883
|
+
* (an org-wide skills repo), public third-party repos, and repo-less runs.
|
|
6884
|
+
* Skills under a cloned repo's own `.claude/skills/` load by themselves and
|
|
6885
|
+
* don't need an entry here.
|
|
6886
|
+
*/
|
|
6887
|
+
SkillRef: {
|
|
6888
|
+
/** Path */
|
|
6889
|
+
path: string;
|
|
6890
|
+
repository?: components['schemas']['RepositoryRef'] | null;
|
|
6891
|
+
};
|
|
6651
6892
|
/**
|
|
6652
6893
|
* SlackChannel
|
|
6653
6894
|
* @description One channel in the connected Slack workspace.
|
|
@@ -6775,7 +7016,7 @@ interface components {
|
|
|
6775
7016
|
/**
|
|
6776
7017
|
* StartAgentSessionRequest
|
|
6777
7018
|
* @description Parameters for starting a raw session: where it runs, its first
|
|
6778
|
-
* message, and the run's own settings. Flat, in the
|
|
7019
|
+
* message, and the run's own settings. Flat, in the AutomationConfig vocabulary
|
|
6779
7020
|
* — a `claude:` or `permissions:` block copied from an agents/ YAML file
|
|
6780
7021
|
* pastes in verbatim. There is no automation behind a raw session; to run a
|
|
6781
7022
|
* saved automation, invoke it with POST /v1/automations/{automation_id}/sessions.
|
|
@@ -6791,20 +7032,25 @@ interface components {
|
|
|
6791
7032
|
*/
|
|
6792
7033
|
budget?: number | null;
|
|
6793
7034
|
/** @description The Claude-harness block: `{"model": ...}` to pick this session's model, plus system/effort/fallback_model/max_turns/settings. Omit the model to run the organization's default. */
|
|
6794
|
-
claude?: components['schemas']['
|
|
7035
|
+
claude?: components['schemas']['ClaudeConfig'] | null;
|
|
6795
7036
|
/** @description The Codex-harness block. Its presence selects the Codex harness, exactly as in a saved automation; a request may not carry both `claude` and `codex`. */
|
|
6796
|
-
codex?: components['schemas']['
|
|
7037
|
+
codex?: components['schemas']['CodexConfig'] | null;
|
|
6797
7038
|
/**
|
|
6798
7039
|
* Environment
|
|
6799
|
-
* @description Where the session runs. A STRING is a saved environment's name or `env_...` id. An OBJECT is
|
|
7040
|
+
* @description Where the session runs. A STRING is a saved environment's name or `env_...` id, substituted wholesale. An OBJECT is the whole environment for this session — `{}` is the bare sandbox. Omitted, the session runs in the built-in basic sandbox — nothing outside the request picks the environment.
|
|
6800
7041
|
*/
|
|
6801
|
-
environment?: string | components['schemas']['
|
|
7042
|
+
environment?: string | components['schemas']['EnvironmentConfig'] | null;
|
|
6802
7043
|
/**
|
|
6803
7044
|
* Force Rebuild
|
|
6804
7045
|
* @description Skip the image cache for this session's initial provision: a fresh full build whose snapshot then refreshes the cache for later runs. The CLI's `--rebuild`.
|
|
6805
7046
|
* @default false
|
|
6806
7047
|
*/
|
|
6807
7048
|
force_rebuild: boolean;
|
|
7049
|
+
/**
|
|
7050
|
+
* Images
|
|
7051
|
+
* @description Images attached to the first message, base64 inline — what a paste into Claude Code sends. Each becomes an `[Image #N]` placeholder in the prompt and an image block the model sees on turn 0. Up to 10, 5 MiB each; PNG, JPEG, GIF, or WebP. Claude harness only.
|
|
7052
|
+
*/
|
|
7053
|
+
images?: components['schemas']['ImageAttachment'][];
|
|
6808
7054
|
/**
|
|
6809
7055
|
* Interactive
|
|
6810
7056
|
* @description Whether the session stays open for messages after its first turn. Set false for a one-shot run that does its job and closes without holding a warm sandbox; a one-shot run must carry a prompt, since nothing can ever be sent to it later. Sessions on the Codex harness are one-shot regardless.
|
|
@@ -6820,19 +7066,24 @@ interface components {
|
|
|
6820
7066
|
[key: string]: string;
|
|
6821
7067
|
};
|
|
6822
7068
|
/** @description The structured-output exit contract for this session. */
|
|
6823
|
-
output?: components['schemas']['
|
|
7069
|
+
output?: components['schemas']['OutputConfig'] | null;
|
|
6824
7070
|
/** @description What the session may touch, per minted credential. */
|
|
6825
|
-
permissions?: components['schemas']['
|
|
7071
|
+
permissions?: components['schemas']['PermissionsConfig'] | null;
|
|
6826
7072
|
/**
|
|
6827
7073
|
* Prompt
|
|
6828
7074
|
* @description The session's first message. Omit it and the session starts idle: the sandbox spins up, the agent waits at the prompt, and the first message you send opens turn 0.
|
|
6829
7075
|
*/
|
|
6830
7076
|
prompt?: string | null;
|
|
7077
|
+
/**
|
|
7078
|
+
* Repositories
|
|
7079
|
+
* @description Repositories to check out in addition to the environment's own, as `owner/name` or a bare `name` (the account's). Each is added only when the resolved environment does not already have it — the CLI sends the repository it is standing in this way, whatever environment the session runs in.
|
|
7080
|
+
*/
|
|
7081
|
+
repositories?: string[] | null;
|
|
6831
7082
|
/**
|
|
6832
7083
|
* Skills
|
|
6833
7084
|
* @description Skills installed for this session.
|
|
6834
7085
|
*/
|
|
6835
|
-
skills?: components['schemas']['
|
|
7086
|
+
skills?: components['schemas']['SkillRef'][] | null;
|
|
6836
7087
|
};
|
|
6837
7088
|
/**
|
|
6838
7089
|
* StartAutomationSessionRequest
|
|
@@ -6901,6 +7152,12 @@ interface components {
|
|
|
6901
7152
|
*/
|
|
6902
7153
|
verification_uri_complete: string;
|
|
6903
7154
|
};
|
|
7155
|
+
/** SystemFileRef */
|
|
7156
|
+
SystemFileRef: {
|
|
7157
|
+
/** File */
|
|
7158
|
+
file: string;
|
|
7159
|
+
repository?: components['schemas']['RepositoryRef'] | null;
|
|
7160
|
+
};
|
|
6904
7161
|
/**
|
|
6905
7162
|
* TokensInfo
|
|
6906
7163
|
* @description Token/cost usage, per record (one API call's counts, aggregate fields at
|
|
@@ -6963,7 +7220,7 @@ interface components {
|
|
|
6963
7220
|
*/
|
|
6964
7221
|
UpdateAutomationRequest: {
|
|
6965
7222
|
/** @description The automation's new definition. Replaces the previous one wholesale — this is not a partial update. */
|
|
6966
|
-
automation: components['schemas']['
|
|
7223
|
+
automation: components['schemas']['AutomationConfig'];
|
|
6967
7224
|
};
|
|
6968
7225
|
/**
|
|
6969
7226
|
* UpdateEnvironmentRequest
|
|
@@ -6971,7 +7228,7 @@ interface components {
|
|
|
6971
7228
|
*/
|
|
6972
7229
|
UpdateEnvironmentRequest: {
|
|
6973
7230
|
/** @description The environment's new definition. Replaces the previous one wholesale — this is not a partial update. */
|
|
6974
|
-
environment: components['schemas']['
|
|
7231
|
+
environment: components['schemas']['EnvironmentDocument'];
|
|
6975
7232
|
};
|
|
6976
7233
|
/**
|
|
6977
7234
|
* UsageDailyPoint
|
|
@@ -7962,7 +8219,76 @@ interface operations {
|
|
|
7962
8219
|
'application/json': components['schemas']['ErrorResponse'];
|
|
7963
8220
|
};
|
|
7964
8221
|
};
|
|
7965
|
-
/** @description The automation or repository was not found in your account. */
|
|
8222
|
+
/** @description The automation or repository was not found in your account. */
|
|
8223
|
+
404: {
|
|
8224
|
+
headers: {
|
|
8225
|
+
[name: string]: unknown;
|
|
8226
|
+
};
|
|
8227
|
+
content: {
|
|
8228
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8229
|
+
};
|
|
8230
|
+
};
|
|
8231
|
+
/** @description The automation is already defined by a file, a link is already open for it, a file already exists at that path, or another automation syncs from it. */
|
|
8232
|
+
409: {
|
|
8233
|
+
headers: {
|
|
8234
|
+
[name: string]: unknown;
|
|
8235
|
+
};
|
|
8236
|
+
content: {
|
|
8237
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8238
|
+
};
|
|
8239
|
+
};
|
|
8240
|
+
/** @description GitHub rejected the pull request. */
|
|
8241
|
+
422: {
|
|
8242
|
+
headers: {
|
|
8243
|
+
[name: string]: unknown;
|
|
8244
|
+
};
|
|
8245
|
+
content: {
|
|
8246
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8247
|
+
};
|
|
8248
|
+
};
|
|
8249
|
+
};
|
|
8250
|
+
};
|
|
8251
|
+
get_automation_metrics: {
|
|
8252
|
+
parameters: {
|
|
8253
|
+
query?: never;
|
|
8254
|
+
header?: {
|
|
8255
|
+
'user-agent'?: string | null;
|
|
8256
|
+
};
|
|
8257
|
+
path: {
|
|
8258
|
+
automation_id: string;
|
|
8259
|
+
};
|
|
8260
|
+
cookie?: never;
|
|
8261
|
+
};
|
|
8262
|
+
requestBody?: never;
|
|
8263
|
+
responses: {
|
|
8264
|
+
/** @description Successful Response */
|
|
8265
|
+
200: {
|
|
8266
|
+
headers: {
|
|
8267
|
+
[name: string]: unknown;
|
|
8268
|
+
};
|
|
8269
|
+
content: {
|
|
8270
|
+
'application/json': components['schemas']['AutomationMetricsResponse'];
|
|
8271
|
+
};
|
|
8272
|
+
};
|
|
8273
|
+
/** @description The bearer token is missing, invalid, or revoked. */
|
|
8274
|
+
401: {
|
|
8275
|
+
headers: {
|
|
8276
|
+
[name: string]: unknown;
|
|
8277
|
+
};
|
|
8278
|
+
content: {
|
|
8279
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8280
|
+
};
|
|
8281
|
+
};
|
|
8282
|
+
/** @description The credential may not perform this action, or the account is blocked. */
|
|
8283
|
+
403: {
|
|
8284
|
+
headers: {
|
|
8285
|
+
[name: string]: unknown;
|
|
8286
|
+
};
|
|
8287
|
+
content: {
|
|
8288
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
8289
|
+
};
|
|
8290
|
+
};
|
|
8291
|
+
/** @description No such automation in your account. */
|
|
7966
8292
|
404: {
|
|
7967
8293
|
headers: {
|
|
7968
8294
|
[name: string]: unknown;
|
|
@@ -7971,22 +8297,13 @@ interface operations {
|
|
|
7971
8297
|
'application/json': components['schemas']['ErrorResponse'];
|
|
7972
8298
|
};
|
|
7973
8299
|
};
|
|
7974
|
-
/** @description
|
|
7975
|
-
409: {
|
|
7976
|
-
headers: {
|
|
7977
|
-
[name: string]: unknown;
|
|
7978
|
-
};
|
|
7979
|
-
content: {
|
|
7980
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
7981
|
-
};
|
|
7982
|
-
};
|
|
7983
|
-
/** @description GitHub rejected the pull request. */
|
|
8300
|
+
/** @description Validation Error */
|
|
7984
8301
|
422: {
|
|
7985
8302
|
headers: {
|
|
7986
8303
|
[name: string]: unknown;
|
|
7987
8304
|
};
|
|
7988
8305
|
content: {
|
|
7989
|
-
'application/json': components['schemas']['
|
|
8306
|
+
'application/json': components['schemas']['HTTPValidationError'];
|
|
7990
8307
|
};
|
|
7991
8308
|
};
|
|
7992
8309
|
};
|
|
@@ -9541,10 +9858,16 @@ interface operations {
|
|
|
9541
9858
|
list_reviews: {
|
|
9542
9859
|
parameters: {
|
|
9543
9860
|
query?: {
|
|
9544
|
-
owner
|
|
9545
|
-
|
|
9546
|
-
|
|
9547
|
-
|
|
9861
|
+
/** @description Only reviews on these repositories, each as owner/name. Repeat the parameter for several. */
|
|
9862
|
+
repository?: string[];
|
|
9863
|
+
/** @description Only reviews on these pull request numbers. Repeat the parameter for several. */
|
|
9864
|
+
pull_request_number?: number[];
|
|
9865
|
+
/** @description Only reviews in these statuses. Repeat the parameter for several. */
|
|
9866
|
+
status?: components['schemas']['CodeReviewRunStatus'][];
|
|
9867
|
+
/** @description Only reviews created at or after this time. */
|
|
9868
|
+
start?: string | null;
|
|
9869
|
+
/** @description Only reviews created at or before this time. */
|
|
9870
|
+
end?: string | null;
|
|
9548
9871
|
limit?: number;
|
|
9549
9872
|
cursor?: string | null;
|
|
9550
9873
|
};
|
|
@@ -9565,7 +9888,7 @@ interface operations {
|
|
|
9565
9888
|
'application/json': components['schemas']['ReviewsListResponse'];
|
|
9566
9889
|
};
|
|
9567
9890
|
};
|
|
9568
|
-
/** @description
|
|
9891
|
+
/** @description A `repository` value is not of the form owner/name. */
|
|
9569
9892
|
400: {
|
|
9570
9893
|
headers: {
|
|
9571
9894
|
[name: string]: unknown;
|
|
@@ -9592,7 +9915,7 @@ interface operations {
|
|
|
9592
9915
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9593
9916
|
};
|
|
9594
9917
|
};
|
|
9595
|
-
/** @description
|
|
9918
|
+
/** @description A `repository` was not found in your account. */
|
|
9596
9919
|
404: {
|
|
9597
9920
|
headers: {
|
|
9598
9921
|
[name: string]: unknown;
|
|
@@ -10000,7 +10323,7 @@ interface operations {
|
|
|
10000
10323
|
'application/json': components['schemas']['SessionResponse'];
|
|
10001
10324
|
};
|
|
10002
10325
|
};
|
|
10003
|
-
/** @description The request is incompatible with itself (a one-shot run with no prompt,
|
|
10326
|
+
/** @description The request is incompatible with itself (a one-shot run with no prompt, both `claude` and `codex`, or images on the Codex harness), an image is invalid or over the limit, its keys produce an invalid config, or `budget` exceeds the organization's per-session ceiling. */
|
|
10004
10327
|
400: {
|
|
10005
10328
|
headers: {
|
|
10006
10329
|
[name: string]: unknown;
|
|
@@ -10107,6 +10430,66 @@ interface operations {
|
|
|
10107
10430
|
};
|
|
10108
10431
|
};
|
|
10109
10432
|
};
|
|
10433
|
+
get_agent_session_diff: {
|
|
10434
|
+
parameters: {
|
|
10435
|
+
query?: never;
|
|
10436
|
+
header?: {
|
|
10437
|
+
'user-agent'?: string | null;
|
|
10438
|
+
};
|
|
10439
|
+
path: {
|
|
10440
|
+
session_id: string;
|
|
10441
|
+
};
|
|
10442
|
+
cookie?: never;
|
|
10443
|
+
};
|
|
10444
|
+
requestBody?: never;
|
|
10445
|
+
responses: {
|
|
10446
|
+
/** @description Successful Response */
|
|
10447
|
+
200: {
|
|
10448
|
+
headers: {
|
|
10449
|
+
[name: string]: unknown;
|
|
10450
|
+
};
|
|
10451
|
+
content: {
|
|
10452
|
+
'application/json': components['schemas']['SessionDiffResponse'];
|
|
10453
|
+
};
|
|
10454
|
+
};
|
|
10455
|
+
/** @description The bearer token is missing, invalid, or revoked. */
|
|
10456
|
+
401: {
|
|
10457
|
+
headers: {
|
|
10458
|
+
[name: string]: unknown;
|
|
10459
|
+
};
|
|
10460
|
+
content: {
|
|
10461
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10462
|
+
};
|
|
10463
|
+
};
|
|
10464
|
+
/** @description The credential may not perform this action, or the account is blocked. */
|
|
10465
|
+
403: {
|
|
10466
|
+
headers: {
|
|
10467
|
+
[name: string]: unknown;
|
|
10468
|
+
};
|
|
10469
|
+
content: {
|
|
10470
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10471
|
+
};
|
|
10472
|
+
};
|
|
10473
|
+
/** @description No such session in your account. */
|
|
10474
|
+
404: {
|
|
10475
|
+
headers: {
|
|
10476
|
+
[name: string]: unknown;
|
|
10477
|
+
};
|
|
10478
|
+
content: {
|
|
10479
|
+
'application/json': components['schemas']['ErrorResponse'];
|
|
10480
|
+
};
|
|
10481
|
+
};
|
|
10482
|
+
/** @description Validation Error */
|
|
10483
|
+
422: {
|
|
10484
|
+
headers: {
|
|
10485
|
+
[name: string]: unknown;
|
|
10486
|
+
};
|
|
10487
|
+
content: {
|
|
10488
|
+
'application/json': components['schemas']['HTTPValidationError'];
|
|
10489
|
+
};
|
|
10490
|
+
};
|
|
10491
|
+
};
|
|
10492
|
+
};
|
|
10110
10493
|
export_agent_session: {
|
|
10111
10494
|
parameters: {
|
|
10112
10495
|
query?: never;
|
|
@@ -10193,7 +10576,7 @@ interface operations {
|
|
|
10193
10576
|
'application/json': components['schemas']['SessionMessageResponse'];
|
|
10194
10577
|
};
|
|
10195
10578
|
};
|
|
10196
|
-
/** @description The message is empty. */
|
|
10579
|
+
/** @description The message is empty (no text and no images), an image is invalid or over the limit, or the session runs on the Codex harness (images are Claude-only). */
|
|
10197
10580
|
400: {
|
|
10198
10581
|
headers: {
|
|
10199
10582
|
[name: string]: unknown;
|
|
@@ -10614,15 +10997,6 @@ interface operations {
|
|
|
10614
10997
|
'application/json': components['schemas']['ErrorResponse'];
|
|
10615
10998
|
};
|
|
10616
10999
|
};
|
|
10617
|
-
/** @description The default environment does not exist in your account. */
|
|
10618
|
-
404: {
|
|
10619
|
-
headers: {
|
|
10620
|
-
[name: string]: unknown;
|
|
10621
|
-
};
|
|
10622
|
-
content: {
|
|
10623
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
10624
|
-
};
|
|
10625
|
-
};
|
|
10626
11000
|
/** @description Validation Error */
|
|
10627
11001
|
422: {
|
|
10628
11002
|
headers: {
|
|
@@ -10803,6 +11177,7 @@ type AttributionType = 'github_user' | 'linear_user' | 'slack_user' | 'api_key';
|
|
|
10803
11177
|
* Delivery status of the message.
|
|
10804
11178
|
*/
|
|
10805
11179
|
type SessionMessageStatus = 'pending' | 'delivered';
|
|
11180
|
+
type GithubAccountType = 'User' | 'Organization' | 'Bot' | 'Mannequin';
|
|
10806
11181
|
type EffortLevel = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
10807
11182
|
/**
|
|
10808
11183
|
* What may be done to a resource. Strictly ordered: a grant at one level
|
|
@@ -10822,20 +11197,6 @@ type RepositoryFilter = {
|
|
|
10822
11197
|
type LinearIssueAction = 'opened';
|
|
10823
11198
|
type PullRequestAction = 'opened' | 'pushed' | 'merged' | 'closed' | 'review_submitted' | 'commented';
|
|
10824
11199
|
type SentryAction = 'issue_alert' | 'metric_alert';
|
|
10825
|
-
/**
|
|
10826
|
-
* The surface an @ellipsis mention can come from.
|
|
10827
|
-
*
|
|
10828
|
-
* No SLACK member: Slack routing is not a trigger on an agent config, it is the
|
|
10829
|
-
* `slack.yaml` routing file (`SlackConfig`), which answers the questions a
|
|
10830
|
-
* platform list cannot — which channel, and whose DM. A mention trigger listing
|
|
10831
|
-
* `slack` is therefore a config error, not a silently-never-fires config.
|
|
10832
|
-
*/
|
|
10833
|
-
type AgentConfigMentionPlatform = 'github' | 'linear';
|
|
10834
|
-
/**
|
|
10835
|
-
* How this session's config was chosen.
|
|
10836
|
-
*/
|
|
10837
|
-
type AgentConfigSource = 'explicit' | 'inline' | 'template' | 'repo_default' | 'account_default' | 'platform_default' | 'trigger' | 'builtin';
|
|
10838
|
-
type GithubAccountType = 'User' | 'Organization' | 'Bot' | 'Mannequin';
|
|
10839
11200
|
/**
|
|
10840
11201
|
* Where the resolved budget came from.
|
|
10841
11202
|
*/
|
|
@@ -10886,9 +11247,9 @@ type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_intera
|
|
|
10886
11247
|
*/
|
|
10887
11248
|
type SessionState = 'idle' | 'running' | 'closed';
|
|
10888
11249
|
/**
|
|
10889
|
-
* Where the session came from (e.g. react,
|
|
11250
|
+
* Where the session came from (e.g. react, web, api, cli, mention, cron).
|
|
10890
11251
|
*/
|
|
10891
|
-
type SessionSource = 'react' | '
|
|
11252
|
+
type SessionSource = 'react' | 'web' | 'api' | 'cli' | 'mention' | 'cron';
|
|
10892
11253
|
/**
|
|
10893
11254
|
* Execution status of the session.
|
|
10894
11255
|
*/
|
|
@@ -10931,7 +11292,7 @@ interface SessionMessage {
|
|
|
10931
11292
|
*/
|
|
10932
11293
|
author: string | null;
|
|
10933
11294
|
/**
|
|
10934
|
-
* The message text.
|
|
11295
|
+
* The message text, with one `[Image #N]` placeholder per attached image.
|
|
10935
11296
|
*/
|
|
10936
11297
|
body: string;
|
|
10937
11298
|
/**
|
|
@@ -10954,6 +11315,10 @@ interface SessionMessage {
|
|
|
10954
11315
|
* Unique identifier of the message.
|
|
10955
11316
|
*/
|
|
10956
11317
|
id: string;
|
|
11318
|
+
/**
|
|
11319
|
+
* Images attached to the message, metadata only: index, media type, size. The bytes go to the model, never over the stream.
|
|
11320
|
+
*/
|
|
11321
|
+
images: SessionMessageImage[];
|
|
10957
11322
|
/**
|
|
10958
11323
|
* Identifier of the principal that sent the message, if attributed.
|
|
10959
11324
|
*/
|
|
@@ -10968,13 +11333,35 @@ interface SessionMessage {
|
|
|
10968
11333
|
session_id: string;
|
|
10969
11334
|
status: SessionMessageStatus;
|
|
10970
11335
|
}
|
|
11336
|
+
/**
|
|
11337
|
+
* One image on a message, metadata only. `index` is the N in the
|
|
11338
|
+
* `[Image #N]` placeholder in the message body.
|
|
11339
|
+
*/
|
|
11340
|
+
interface SessionMessageImage {
|
|
11341
|
+
/**
|
|
11342
|
+
* 1-based position: the N in `[Image #N]`.
|
|
11343
|
+
*/
|
|
11344
|
+
index: number;
|
|
11345
|
+
/**
|
|
11346
|
+
* The image's MIME type.
|
|
11347
|
+
*/
|
|
11348
|
+
media_type: string;
|
|
11349
|
+
/**
|
|
11350
|
+
* Size of the decoded image, in bytes.
|
|
11351
|
+
*/
|
|
11352
|
+
size_bytes: number;
|
|
11353
|
+
}
|
|
10971
11354
|
/**
|
|
10972
11355
|
* The session's current state.
|
|
10973
11356
|
*/
|
|
10974
11357
|
interface Session {
|
|
10975
|
-
agent: SessionAgent;
|
|
10976
11358
|
attribution: SessionAttribution;
|
|
11359
|
+
/**
|
|
11360
|
+
* The automation the session was started from, or null for a raw session started with POST /v1/sessions.
|
|
11361
|
+
*/
|
|
11362
|
+
automation: SessionAutomation | null;
|
|
10977
11363
|
budget: SessionBudget;
|
|
11364
|
+
config: SessionConfig1;
|
|
10978
11365
|
/**
|
|
10979
11366
|
* The "owner/name" repository context the session was started in, if any.
|
|
10980
11367
|
*/
|
|
@@ -11041,50 +11428,139 @@ interface Session {
|
|
|
11041
11428
|
updated_at: string;
|
|
11042
11429
|
}
|
|
11043
11430
|
/**
|
|
11044
|
-
* The
|
|
11431
|
+
* The principal this session is attributed to.
|
|
11045
11432
|
*/
|
|
11046
|
-
interface
|
|
11433
|
+
interface SessionAttribution {
|
|
11434
|
+
/**
|
|
11435
|
+
* Identifier of the principal the session is attributed to.
|
|
11436
|
+
*/
|
|
11437
|
+
id: string | null;
|
|
11438
|
+
/**
|
|
11439
|
+
* Kind of principal the session is attributed to (e.g. a GitHub user or an API key).
|
|
11440
|
+
*/
|
|
11441
|
+
type: AttributionType | null;
|
|
11047
11442
|
/**
|
|
11048
|
-
*
|
|
11443
|
+
* The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user.
|
|
11049
11444
|
*/
|
|
11050
|
-
|
|
11051
|
-
|
|
11445
|
+
user: GithubAccountSnippet | null;
|
|
11446
|
+
}
|
|
11447
|
+
/**
|
|
11448
|
+
* Sometimes the GitHub API returns a user of github (can include bots)
|
|
11449
|
+
* using this snippet instead of the full GithubAccount model. One example,
|
|
11450
|
+
* is when the API returns a pull request.
|
|
11451
|
+
*
|
|
11452
|
+
* This is the least amount of info we need to represent a GitHub account.
|
|
11453
|
+
*/
|
|
11454
|
+
interface GithubAccountSnippet {
|
|
11455
|
+
avatar_url: string;
|
|
11456
|
+
id: number;
|
|
11457
|
+
login: string;
|
|
11458
|
+
type: GithubAccountType;
|
|
11459
|
+
}
|
|
11460
|
+
/**
|
|
11461
|
+
* The automation this session was started from: the definition frozen
|
|
11462
|
+
* when the session was created, and the saved automation it came from as it
|
|
11463
|
+
* exists NOW. They diverge legitimately — a YAML edit after the session
|
|
11464
|
+
* started leaves the pointer describing something the session never ran.
|
|
11465
|
+
*/
|
|
11466
|
+
interface SessionAutomation {
|
|
11467
|
+
config: AutomationConfig;
|
|
11052
11468
|
/**
|
|
11053
|
-
*
|
|
11469
|
+
* Identifier of the saved automation this session's snapshot was taken from. Null for a routing-file agent, a code-review stage agent, or the built-in mention agent, which have no saved automation behind them. Points at the automation as it exists now, which may have changed since.
|
|
11054
11470
|
*/
|
|
11055
|
-
|
|
11471
|
+
id: string | null;
|
|
11472
|
+
}
|
|
11473
|
+
/**
|
|
11474
|
+
* The automation definition the session was started from, frozen when the session was created.
|
|
11475
|
+
*/
|
|
11476
|
+
interface AutomationConfig {
|
|
11477
|
+
ellipsis: AutomationIdentity;
|
|
11478
|
+
input: InputContract | null;
|
|
11479
|
+
session: SessionConfig;
|
|
11480
|
+
trigger: (CronTrigger | ReactTrigger) | null;
|
|
11481
|
+
}
|
|
11482
|
+
/**
|
|
11483
|
+
* The Ellipsis product namespace for a config file: which schema this is
|
|
11484
|
+
* (`version`), the human-facing identity (`name`/`description`), freeform
|
|
11485
|
+
* organizational `metadata`, and whether the agent is `enabled`. The
|
|
11486
|
+
* presence of a top-level `ellipsis:` mapping is what marks a YAML file as
|
|
11487
|
+
* an Ellipsis agent config (vs arbitrary YAML that merely lives under a
|
|
11488
|
+
* config directory) — see `yaml_is_ellipsis_config`.
|
|
11489
|
+
*
|
|
11490
|
+
* `enabled` is agent behavior, not freeform metadata, so it stays inside
|
|
11491
|
+
* the config `sha` (only `metadata` is sha-excluded). Whether a session
|
|
11492
|
+
* accepts messages is a per-run choice (POST /v1/sessions `interactive`),
|
|
11493
|
+
* not a config one.
|
|
11494
|
+
*/
|
|
11495
|
+
interface AutomationIdentity {
|
|
11496
|
+
description: string | null;
|
|
11497
|
+
enabled: boolean;
|
|
11498
|
+
metadata: ConfigMetadata;
|
|
11499
|
+
name: string | null;
|
|
11500
|
+
version: string;
|
|
11501
|
+
}
|
|
11502
|
+
interface ConfigMetadata {
|
|
11503
|
+
annotations: {
|
|
11504
|
+
[k: string]: string;
|
|
11505
|
+
};
|
|
11506
|
+
labels: string[];
|
|
11507
|
+
}
|
|
11508
|
+
/**
|
|
11509
|
+
* The typed input contract: what goes INTO a session (the trigger is
|
|
11510
|
+
* when it happens; this is what goes in).
|
|
11511
|
+
*
|
|
11512
|
+
* `json_schema` types the payload a caller-started session takes
|
|
11513
|
+
* (`POST /v1/sessions` `input`, validated at the door; required when
|
|
11514
|
+
* declared). It is illegal on a react-triggered agent — react payloads are
|
|
11515
|
+
* platform-shaped (the published surface field sets), not caller-shaped.
|
|
11516
|
+
*
|
|
11517
|
+
* `message` is the initial-message template: exact `{{path}}` substitution
|
|
11518
|
+
* over the caller payload (or, on a react agent, over the surface's
|
|
11519
|
+
* published fields), no conditionals/loops/filters. Refs are validated at
|
|
11520
|
+
* deploy time against the governing field set (see AutomationConfig's
|
|
11521
|
+
* `_check_input`).
|
|
11522
|
+
*/
|
|
11523
|
+
interface InputContract {
|
|
11524
|
+
json_schema: {
|
|
11056
11525
|
[k: string]: unknown;
|
|
11057
11526
|
} | null;
|
|
11058
|
-
|
|
11527
|
+
message: string | null;
|
|
11059
11528
|
}
|
|
11060
11529
|
/**
|
|
11061
|
-
*
|
|
11530
|
+
* What one session runs on: the harness block(s), where it runs, what it
|
|
11531
|
+
* may touch, its skills, its exit contract, and its spend cap. Every session
|
|
11532
|
+
* freezes one of these (`agent_sessions.session_config`); an automation
|
|
11533
|
+
* carries one under `session:` (`AutomationConfig.session`); and
|
|
11534
|
+
* `POST /v1/sessions` is this shape flattened onto the request body, plus the
|
|
11535
|
+
* run settings. Nothing in here is an automation's identity or trigger —
|
|
11536
|
+
* those belong to `AutomationConfig`.
|
|
11537
|
+
*
|
|
11538
|
+
* Field order is the canonical key order for `session:` blocks and YAML
|
|
11539
|
+
* exports: what runs (`claude`/`codex`), where (`environment`), what it may
|
|
11540
|
+
* touch (`permissions`), then the rest.
|
|
11062
11541
|
*/
|
|
11063
|
-
interface
|
|
11064
|
-
budget:
|
|
11065
|
-
claude:
|
|
11066
|
-
codex:
|
|
11067
|
-
|
|
11068
|
-
|
|
11069
|
-
|
|
11070
|
-
|
|
11071
|
-
permissions: AgentConfigPermissions;
|
|
11072
|
-
skills: AgentConfigSkill[];
|
|
11073
|
-
trigger: (AgentConfigCronTrigger | AgentConfigReactTrigger | AgentConfigMentionTrigger) | null;
|
|
11542
|
+
interface SessionConfig {
|
|
11543
|
+
budget: BudgetConfig;
|
|
11544
|
+
claude: ClaudeConfig;
|
|
11545
|
+
codex: CodexConfig | null;
|
|
11546
|
+
environment: string | EnvironmentConfig;
|
|
11547
|
+
output: OutputConfig | null;
|
|
11548
|
+
permissions: PermissionsConfig;
|
|
11549
|
+
skills: SkillRef[];
|
|
11074
11550
|
}
|
|
11075
|
-
interface
|
|
11551
|
+
interface BudgetConfig {
|
|
11076
11552
|
day: number | null;
|
|
11077
11553
|
month: number | null;
|
|
11078
11554
|
session: number | null;
|
|
11079
11555
|
week: number | null;
|
|
11080
11556
|
}
|
|
11081
|
-
interface
|
|
11557
|
+
interface ClaudeConfig {
|
|
11082
11558
|
effort: EffortLevel | null;
|
|
11083
11559
|
fallback_model: string | null;
|
|
11084
11560
|
max_turns: number | null;
|
|
11085
11561
|
model: string | null;
|
|
11086
|
-
settings:
|
|
11087
|
-
system: string |
|
|
11562
|
+
settings: SettingsRef | null;
|
|
11563
|
+
system: string | SystemFileRef | (string | SystemFileRef)[];
|
|
11088
11564
|
}
|
|
11089
11565
|
/**
|
|
11090
11566
|
* A config-declared Claude Code settings.json, resolved at run start and
|
|
@@ -11094,25 +11570,25 @@ interface AgentConfigClaude {
|
|
|
11094
11570
|
* security setting. Lets a team point the cloud agent at the same settings file
|
|
11095
11571
|
* they already use with Claude Code locally instead of re-encoding it as YAML.
|
|
11096
11572
|
*/
|
|
11097
|
-
interface
|
|
11573
|
+
interface SettingsRef {
|
|
11098
11574
|
path: string;
|
|
11099
|
-
repository:
|
|
11575
|
+
repository: RepositoryRef | null;
|
|
11100
11576
|
}
|
|
11101
|
-
interface
|
|
11577
|
+
interface RepositoryRef {
|
|
11102
11578
|
name: string;
|
|
11103
11579
|
owner: string | null;
|
|
11104
11580
|
ref: string | null;
|
|
11105
11581
|
}
|
|
11106
|
-
interface
|
|
11582
|
+
interface SystemFileRef {
|
|
11107
11583
|
file: string;
|
|
11108
|
-
repository:
|
|
11584
|
+
repository: RepositoryRef | null;
|
|
11109
11585
|
}
|
|
11110
11586
|
/**
|
|
11111
11587
|
* The `codex:` block — run this agent on OpenAI's Codex CLI instead of
|
|
11112
11588
|
* Claude Code. Declaring the block at all is what selects the harness
|
|
11113
|
-
* (`
|
|
11589
|
+
* (`AutomationConfig.harness`).
|
|
11114
11590
|
*
|
|
11115
|
-
* Deliberately a small subset of `
|
|
11591
|
+
* Deliberately a small subset of `ClaudeConfig`: the fields omitted here
|
|
11116
11592
|
* are ones Codex has no equivalent for (`effort`, `fallback_model`,
|
|
11117
11593
|
* `settings`) or that the platform does not yet wire through for this harness
|
|
11118
11594
|
* (`max_turns`, `skills`, MCP servers). They are omitted rather than
|
|
@@ -11120,35 +11596,9 @@ interface AgentConfigSystemFileRef {
|
|
|
11120
11596
|
* config that sets one fails loudly at parse time instead of silently not doing
|
|
11121
11597
|
* it. The budget still bounds a run regardless.
|
|
11122
11598
|
*/
|
|
11123
|
-
interface
|
|
11599
|
+
interface CodexConfig {
|
|
11124
11600
|
model: string;
|
|
11125
|
-
system: string |
|
|
11126
|
-
}
|
|
11127
|
-
/**
|
|
11128
|
-
* The Ellipsis product namespace for a config file: which schema this is
|
|
11129
|
-
* (`version`), the human-facing identity (`name`/`description`), freeform
|
|
11130
|
-
* organizational `metadata`, and whether the agent is `enabled`. The
|
|
11131
|
-
* presence of a top-level `ellipsis:` mapping is what marks a YAML file as
|
|
11132
|
-
* an Ellipsis agent config (vs arbitrary YAML that merely lives under a
|
|
11133
|
-
* config directory) — see `yaml_is_ellipsis_config`.
|
|
11134
|
-
*
|
|
11135
|
-
* `enabled` is agent behavior, not freeform metadata, so it stays inside
|
|
11136
|
-
* the config `sha` (only `metadata` is sha-excluded). Whether a session
|
|
11137
|
-
* accepts messages is a per-run choice (POST /v1/sessions `interactive`),
|
|
11138
|
-
* not a config one.
|
|
11139
|
-
*/
|
|
11140
|
-
interface AgentConfigEllipsis {
|
|
11141
|
-
description: string | null;
|
|
11142
|
-
enabled: boolean;
|
|
11143
|
-
metadata: AgentConfigMetadata;
|
|
11144
|
-
name: string | null;
|
|
11145
|
-
version: string;
|
|
11146
|
-
}
|
|
11147
|
-
interface AgentConfigMetadata {
|
|
11148
|
-
annotations: {
|
|
11149
|
-
[k: string]: string;
|
|
11150
|
-
};
|
|
11151
|
-
labels: string[];
|
|
11601
|
+
system: string | SystemFileRef | (string | SystemFileRef)[];
|
|
11152
11602
|
}
|
|
11153
11603
|
/**
|
|
11154
11604
|
* Everything about the environment (the sandbox) the agent runs in: which
|
|
@@ -11163,13 +11613,13 @@ interface AgentConfigMetadata {
|
|
|
11163
11613
|
* stored variables never do. This is how a config brings in the config and
|
|
11164
11614
|
* credentials a custom CLI needs.
|
|
11165
11615
|
*/
|
|
11166
|
-
interface
|
|
11167
|
-
compute:
|
|
11168
|
-
hooks:
|
|
11169
|
-
image:
|
|
11170
|
-
mcp_servers: (string |
|
|
11171
|
-
repositories:
|
|
11172
|
-
variables:
|
|
11616
|
+
interface EnvironmentConfig {
|
|
11617
|
+
compute: ComputeConfig;
|
|
11618
|
+
hooks: EnvironmentHooks;
|
|
11619
|
+
image: EnvironmentImage;
|
|
11620
|
+
mcp_servers: (string | McpServerRef | McpStdioServer | McpRemoteServer)[];
|
|
11621
|
+
repositories: RepositoryRef[];
|
|
11622
|
+
variables: EnvironmentVariable[];
|
|
11173
11623
|
}
|
|
11174
11624
|
/**
|
|
11175
11625
|
* Sandbox compute sizing. Every field is optional; None inherits the
|
|
@@ -11193,17 +11643,17 @@ interface AgentConfigEnvironment {
|
|
|
11193
11643
|
* Compute is billed on the requested allocation over the sandbox's
|
|
11194
11644
|
* wall-clock lifetime, so a bigger/longer box costs proportionally more.
|
|
11195
11645
|
*/
|
|
11196
|
-
interface
|
|
11646
|
+
interface ComputeConfig {
|
|
11197
11647
|
cpu: number | null;
|
|
11198
|
-
memory: string |
|
|
11199
|
-
timeout: string |
|
|
11648
|
+
memory: string | MemorySize | null;
|
|
11649
|
+
timeout: string | Duration | null;
|
|
11200
11650
|
}
|
|
11201
11651
|
/**
|
|
11202
11652
|
* A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).
|
|
11203
11653
|
* Set any of `gb`/`mb` (at least one). The alternative to the `8GB`-style
|
|
11204
11654
|
* shorthand string.
|
|
11205
11655
|
*/
|
|
11206
|
-
interface
|
|
11656
|
+
interface MemorySize {
|
|
11207
11657
|
gb: number | null;
|
|
11208
11658
|
mb: number | null;
|
|
11209
11659
|
}
|
|
@@ -11212,7 +11662,7 @@ interface AgentConfigMemorySize {
|
|
|
11212
11662
|
* `seconds` (at least one). The alternative to the `30m`-style shorthand
|
|
11213
11663
|
* string wherever a duration is accepted.
|
|
11214
11664
|
*/
|
|
11215
|
-
interface
|
|
11665
|
+
interface Duration {
|
|
11216
11666
|
hours: number | null;
|
|
11217
11667
|
minutes: number | null;
|
|
11218
11668
|
seconds: number | null;
|
|
@@ -11235,7 +11685,7 @@ interface AgentConfigDuration {
|
|
|
11235
11685
|
* (baked into the cached image) instead; keep hooks for per-run work — e.g.
|
|
11236
11686
|
* anything that touches run-scoped credentials.
|
|
11237
11687
|
*/
|
|
11238
|
-
interface
|
|
11688
|
+
interface EnvironmentHooks {
|
|
11239
11689
|
post_clone: string | null;
|
|
11240
11690
|
post_start: string | null;
|
|
11241
11691
|
}
|
|
@@ -11254,7 +11704,7 @@ interface AgentConfigEnvironmentHooks {
|
|
|
11254
11704
|
* `npm install`), so later runs start with deps already on disk. Neither runs
|
|
11255
11705
|
* per run; that's `hooks.post_start` / `hooks.post_clone`.
|
|
11256
11706
|
*/
|
|
11257
|
-
interface
|
|
11707
|
+
interface EnvironmentImage {
|
|
11258
11708
|
dockerfile_append: string | null;
|
|
11259
11709
|
setup: string | null;
|
|
11260
11710
|
}
|
|
@@ -11264,10 +11714,10 @@ interface AgentConfigEnvironmentImage {
|
|
|
11264
11714
|
* server's transport and credentials. It only matters when the named
|
|
11265
11715
|
* integration is set to `opt_in` inclusion; an integration in the default
|
|
11266
11716
|
* `all_sessions` mode is added regardless. For a server the platform does not
|
|
11267
|
-
* provide, define it instead (`
|
|
11268
|
-
* `
|
|
11717
|
+
* provide, define it instead (`McpStdioServer` /
|
|
11718
|
+
* `McpRemoteServer`).
|
|
11269
11719
|
*/
|
|
11270
|
-
interface
|
|
11720
|
+
interface McpServerRef {
|
|
11271
11721
|
name: string;
|
|
11272
11722
|
}
|
|
11273
11723
|
/**
|
|
@@ -11280,7 +11730,7 @@ interface AgentConfigMcpServer {
|
|
|
11280
11730
|
* account's secrets store (see `mcp_secret_refs`); everything else is passed
|
|
11281
11731
|
* literally.
|
|
11282
11732
|
*/
|
|
11283
|
-
interface
|
|
11733
|
+
interface McpStdioServer {
|
|
11284
11734
|
args: string[];
|
|
11285
11735
|
command: string;
|
|
11286
11736
|
env: {
|
|
@@ -11294,7 +11744,7 @@ interface AgentConfigMcpStdioServer {
|
|
|
11294
11744
|
* `Authorization: Bearer ${TOKEN}`); values may embed `${NAME}` secret
|
|
11295
11745
|
* references, resolved at run time from the account's secrets store.
|
|
11296
11746
|
*/
|
|
11297
|
-
interface
|
|
11747
|
+
interface McpRemoteServer {
|
|
11298
11748
|
headers: {
|
|
11299
11749
|
[k: string]: string;
|
|
11300
11750
|
};
|
|
@@ -11311,37 +11761,16 @@ interface AgentConfigMcpRemoteServer {
|
|
|
11311
11761
|
* ever putting it in the config file. Either way the variable only reaches
|
|
11312
11762
|
* agents that name it.
|
|
11313
11763
|
*/
|
|
11314
|
-
interface
|
|
11764
|
+
interface EnvironmentVariable {
|
|
11315
11765
|
name: string;
|
|
11316
11766
|
value: string | null;
|
|
11317
11767
|
}
|
|
11318
|
-
/**
|
|
11319
|
-
* The typed input contract: what goes INTO a session (the trigger is
|
|
11320
|
-
* when it happens; this is what goes in).
|
|
11321
|
-
*
|
|
11322
|
-
* `json_schema` types the payload a caller-started session takes
|
|
11323
|
-
* (`POST /v1/sessions` `input`, validated at the door; required when
|
|
11324
|
-
* declared). It is illegal on a react-triggered agent — react payloads are
|
|
11325
|
-
* platform-shaped (the published surface field sets), not caller-shaped.
|
|
11326
|
-
*
|
|
11327
|
-
* `message` is the initial-message template: exact `{{path}}` substitution
|
|
11328
|
-
* over the caller payload (or, on a react agent, over the surface's
|
|
11329
|
-
* published fields), no conditionals/loops/filters. Refs are validated at
|
|
11330
|
-
* deploy time against the governing field set (see AgentConfig's
|
|
11331
|
-
* `_check_input`).
|
|
11332
|
-
*/
|
|
11333
|
-
interface AgentConfigInput {
|
|
11334
|
-
json_schema: {
|
|
11335
|
-
[k: string]: unknown;
|
|
11336
|
-
} | null;
|
|
11337
|
-
message: string | null;
|
|
11338
|
-
}
|
|
11339
11768
|
/**
|
|
11340
11769
|
* The typed output contract: the JSON Schema the agent must exit through
|
|
11341
11770
|
* (the StructuredOutput exit tool). Read back via
|
|
11342
11771
|
* GET /v1/sessions/{id}/output.
|
|
11343
11772
|
*/
|
|
11344
|
-
interface
|
|
11773
|
+
interface OutputConfig {
|
|
11345
11774
|
json_schema: {
|
|
11346
11775
|
[k: string]: unknown;
|
|
11347
11776
|
};
|
|
@@ -11355,16 +11784,16 @@ interface AgentConfigOutput {
|
|
|
11355
11784
|
* (`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates
|
|
11356
11785
|
* with). `true` / the string `all` (the default) grant the full sandbox
|
|
11357
11786
|
* ceiling — everything a sandbox token can ever do. A map narrows it per
|
|
11358
|
-
* resource (see `
|
|
11787
|
+
* resource (see `EllipsisPermissions`); the minted token carries
|
|
11359
11788
|
* the intersection, so a config can only ever reduce access. `false` fails
|
|
11360
11789
|
* validation — an agent with no API token cannot report its own progress.
|
|
11361
11790
|
*
|
|
11362
11791
|
* `github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) —
|
|
11363
|
-
* see `
|
|
11792
|
+
* see `GithubPermissions`. GitHub enforces it at mint time.
|
|
11364
11793
|
*/
|
|
11365
|
-
interface
|
|
11366
|
-
ellipsis: (true | 'all') |
|
|
11367
|
-
github:
|
|
11794
|
+
interface PermissionsConfig {
|
|
11795
|
+
ellipsis: (true | 'all') | EllipsisPermissions;
|
|
11796
|
+
github: GithubPermissions;
|
|
11368
11797
|
}
|
|
11369
11798
|
/**
|
|
11370
11799
|
* `permissions.ellipsis` as a map: resource → level | grant | list of
|
|
@@ -11373,7 +11802,7 @@ interface AgentConfigPermissions {
|
|
|
11373
11802
|
* intersected with the platform's sandbox ceiling at token mint — it can
|
|
11374
11803
|
* narrow what a sandbox token may do, never exceed it.
|
|
11375
11804
|
*/
|
|
11376
|
-
interface
|
|
11805
|
+
interface EllipsisPermissions {
|
|
11377
11806
|
[k: string]: Level | EllipsisGrant | (Level | EllipsisGrant)[];
|
|
11378
11807
|
}
|
|
11379
11808
|
/**
|
|
@@ -11402,7 +11831,7 @@ interface EllipsisGrant {
|
|
|
11402
11831
|
* minted with the reduced scope, so nothing running in the sandbox can
|
|
11403
11832
|
* exceed it.
|
|
11404
11833
|
*/
|
|
11405
|
-
interface
|
|
11834
|
+
interface GithubPermissions {
|
|
11406
11835
|
permissions: 'read_only' | {
|
|
11407
11836
|
[k: string]: string;
|
|
11408
11837
|
} | null;
|
|
@@ -11417,15 +11846,15 @@ interface AgentConfigGithubPermissions {
|
|
|
11417
11846
|
* Skills under a cloned repo's own `.claude/skills/` load by themselves and
|
|
11418
11847
|
* don't need an entry here.
|
|
11419
11848
|
*/
|
|
11420
|
-
interface
|
|
11849
|
+
interface SkillRef {
|
|
11421
11850
|
path: string;
|
|
11422
|
-
repository:
|
|
11851
|
+
repository: RepositoryRef | null;
|
|
11423
11852
|
}
|
|
11424
|
-
interface
|
|
11853
|
+
interface CronTrigger {
|
|
11425
11854
|
schedule: string;
|
|
11426
11855
|
type: 'cron';
|
|
11427
11856
|
}
|
|
11428
|
-
interface
|
|
11857
|
+
interface ReactTrigger {
|
|
11429
11858
|
issue: ReactIssue | null;
|
|
11430
11859
|
linear_issue: ReactLinearIssue | null;
|
|
11431
11860
|
pull_request: ReactPullRequest | null;
|
|
@@ -11477,40 +11906,6 @@ interface ReactSentry {
|
|
|
11477
11906
|
}
|
|
11478
11907
|
interface ReactSlackChannel {
|
|
11479
11908
|
}
|
|
11480
|
-
interface AgentConfigMentionTrigger {
|
|
11481
|
-
platforms: AgentConfigMentionPlatform[];
|
|
11482
|
-
type: 'mention';
|
|
11483
|
-
}
|
|
11484
|
-
/**
|
|
11485
|
-
* The principal this session is attributed to.
|
|
11486
|
-
*/
|
|
11487
|
-
interface SessionAttribution {
|
|
11488
|
-
/**
|
|
11489
|
-
* Identifier of the principal the session is attributed to.
|
|
11490
|
-
*/
|
|
11491
|
-
id: string | null;
|
|
11492
|
-
/**
|
|
11493
|
-
* Kind of principal the session is attributed to (e.g. a GitHub user or an API key).
|
|
11494
|
-
*/
|
|
11495
|
-
type: AttributionType | null;
|
|
11496
|
-
/**
|
|
11497
|
-
* The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user.
|
|
11498
|
-
*/
|
|
11499
|
-
user: GithubAccountSnippet | null;
|
|
11500
|
-
}
|
|
11501
|
-
/**
|
|
11502
|
-
* Sometimes the GitHub API returns a user of github (can include bots)
|
|
11503
|
-
* using this snippet instead of the full GithubAccount model. One example,
|
|
11504
|
-
* is when the API returns a pull request.
|
|
11505
|
-
*
|
|
11506
|
-
* This is the least amount of info we need to represent a GitHub account.
|
|
11507
|
-
*/
|
|
11508
|
-
interface GithubAccountSnippet {
|
|
11509
|
-
avatar_url: string;
|
|
11510
|
-
id: number;
|
|
11511
|
-
login: string;
|
|
11512
|
-
type: GithubAccountType;
|
|
11513
|
-
}
|
|
11514
11909
|
/**
|
|
11515
11910
|
* The spend budget enforced for this session.
|
|
11516
11911
|
*/
|
|
@@ -11521,6 +11916,18 @@ interface SessionBudget {
|
|
|
11521
11916
|
cents: number;
|
|
11522
11917
|
source: BudgetSource;
|
|
11523
11918
|
}
|
|
11919
|
+
/**
|
|
11920
|
+
* What the session ran on, frozen when it was created: the harness block, the resolved environment, permissions, skills, output contract, and budget.
|
|
11921
|
+
*/
|
|
11922
|
+
interface SessionConfig1 {
|
|
11923
|
+
budget: BudgetConfig;
|
|
11924
|
+
claude: ClaudeConfig;
|
|
11925
|
+
codex: CodexConfig | null;
|
|
11926
|
+
environment: string | EnvironmentConfig;
|
|
11927
|
+
output: OutputConfig | null;
|
|
11928
|
+
permissions: PermissionsConfig;
|
|
11929
|
+
skills: SkillRef[];
|
|
11930
|
+
}
|
|
11524
11931
|
/**
|
|
11525
11932
|
* What the session cost, in millicents, broken down by leg and carrying its own total.
|
|
11526
11933
|
*/
|
|
@@ -11547,7 +11954,7 @@ interface SessionCost {
|
|
|
11547
11954
|
total: number;
|
|
11548
11955
|
}
|
|
11549
11956
|
/**
|
|
11550
|
-
* The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is
|
|
11957
|
+
* The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is `config.environment`.
|
|
11551
11958
|
*/
|
|
11552
11959
|
interface SessionEnvironment {
|
|
11553
11960
|
/**
|
|
@@ -11555,7 +11962,7 @@ interface SessionEnvironment {
|
|
|
11555
11962
|
*/
|
|
11556
11963
|
environment_id: string | null;
|
|
11557
11964
|
/**
|
|
11558
|
-
* How the environment was chosen (request, agent_config, repo_default
|
|
11965
|
+
* How the environment was chosen (request, agent_config, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment.
|
|
11559
11966
|
*/
|
|
11560
11967
|
source: EnvironmentSource | null;
|
|
11561
11968
|
}
|
|
@@ -12208,9 +12615,13 @@ interface SessionFrame {
|
|
|
12208
12615
|
* The session's current state.
|
|
12209
12616
|
*/
|
|
12210
12617
|
interface Session1 {
|
|
12211
|
-
agent: SessionAgent;
|
|
12212
12618
|
attribution: SessionAttribution;
|
|
12619
|
+
/**
|
|
12620
|
+
* The automation the session was started from, or null for a raw session started with POST /v1/sessions.
|
|
12621
|
+
*/
|
|
12622
|
+
automation: SessionAutomation | null;
|
|
12213
12623
|
budget: SessionBudget;
|
|
12624
|
+
config: SessionConfig1;
|
|
12214
12625
|
/**
|
|
12215
12626
|
* The "owner/name" repository context the session was started in, if any.
|
|
12216
12627
|
*/
|
|
@@ -12375,4 +12786,4 @@ type ReviewRequester = components['schemas']['ReviewRequester'];
|
|
|
12375
12786
|
type ReviewFinding = components['schemas']['ReviewFinding'];
|
|
12376
12787
|
type Finding = ReviewFinding;
|
|
12377
12788
|
|
|
12378
|
-
export type {
|
|
12789
|
+
export type { SessionStatus as $, AttributionType as A, BudgetSource as B, ClaudeSessionRecord as C, DeltaFrame as D, ErrorFrame as E, Finding as F, GithubAccountSnippet as G, Harness as H, SendSessionMessageRequest as I, Session as J, SessionExitStatus as K, LifecycleSessionRecord as L, SessionFrame as M, SessionGit as N, SessionLiveness as O, ParentKind as P, SessionMessage as Q, RecordsAppendFrame as R, SdkAssistantRecord as S, SessionMessageResponse as T, SessionMessageStatus as U, SessionPrompting as V, SessionRecord as W, SessionRecordsListResponse as X, SessionResponse as Y, SessionSource as Z, SessionState as _, CodexEvent as a, SessionStreamFrame as a0, SessionSurface as a1, SessionsListResponse as a2, SnapshotFrame as a3, StreamFrame as a4, TokensInfo as a5, paths as a6, CodexFileChangeItem as a7, CodexMcpToolCallItem as a8, CodexItem as b, components as c, CodexSessionRecord as d, CreateReviewRequest as e, DoneFrame as f, GithubAccountType as g, HeartbeatFrame as h, PromptBlockedReason as i, ResolvedReviewScope as j, Review as k, ReviewConfiguration as l, ReviewCounters as m, ReviewFinding as n, ReviewRequester as o, ReviewScope as p, ReviewScopeKind as q, ReviewStage as r, ReviewedCommit as s, ReviewsListResponse as t, SdkContentBlock as u, SdkRateLimitRecord as v, SdkRecord as w, SdkResultRecord as x, SdkSystemRecord as y, SdkUserRecord as z };
|