@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
package/schema/openapi.v1.json
CHANGED
|
@@ -1,1136 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"components": {
|
|
3
3
|
"schemas": {
|
|
4
|
-
"AgentConfig": {
|
|
5
|
-
"additionalProperties": false,
|
|
6
|
-
"properties": {
|
|
7
|
-
"budget": {
|
|
8
|
-
"$ref": "#/components/schemas/AgentConfigBudget",
|
|
9
|
-
"default": {}
|
|
10
|
-
},
|
|
11
|
-
"claude": {
|
|
12
|
-
"$ref": "#/components/schemas/AgentConfigClaude",
|
|
13
|
-
"default": {
|
|
14
|
-
"system": ""
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"codex": {
|
|
18
|
-
"anyOf": [
|
|
19
|
-
{
|
|
20
|
-
"$ref": "#/components/schemas/AgentConfigCodex"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"type": "null"
|
|
24
|
-
}
|
|
25
|
-
]
|
|
26
|
-
},
|
|
27
|
-
"ellipsis": {
|
|
28
|
-
"$ref": "#/components/schemas/AgentConfigEllipsis",
|
|
29
|
-
"default": {
|
|
30
|
-
"enabled": true,
|
|
31
|
-
"metadata": {
|
|
32
|
-
"annotations": {},
|
|
33
|
-
"labels": []
|
|
34
|
-
},
|
|
35
|
-
"version": "v1"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"environment": {
|
|
39
|
-
"anyOf": [
|
|
40
|
-
{
|
|
41
|
-
"type": "string"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"$ref": "#/components/schemas/AgentConfigEnvironment"
|
|
45
|
-
}
|
|
46
|
-
],
|
|
47
|
-
"default": {
|
|
48
|
-
"compute": {},
|
|
49
|
-
"hooks": {},
|
|
50
|
-
"image": {},
|
|
51
|
-
"mcp_servers": [],
|
|
52
|
-
"repositories": [],
|
|
53
|
-
"variables": []
|
|
54
|
-
},
|
|
55
|
-
"title": "Environment"
|
|
56
|
-
},
|
|
57
|
-
"input": {
|
|
58
|
-
"anyOf": [
|
|
59
|
-
{
|
|
60
|
-
"$ref": "#/components/schemas/AgentConfigInput"
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"type": "null"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
|
-
"output": {
|
|
68
|
-
"anyOf": [
|
|
69
|
-
{
|
|
70
|
-
"$ref": "#/components/schemas/AgentConfigOutput"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"type": "null"
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
|
-
"permissions": {
|
|
78
|
-
"$ref": "#/components/schemas/AgentConfigPermissions",
|
|
79
|
-
"default": {
|
|
80
|
-
"ellipsis": true,
|
|
81
|
-
"github": {}
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
"skills": {
|
|
85
|
-
"default": [],
|
|
86
|
-
"items": {
|
|
87
|
-
"$ref": "#/components/schemas/AgentConfigSkill"
|
|
88
|
-
},
|
|
89
|
-
"title": "Skills",
|
|
90
|
-
"type": "array"
|
|
91
|
-
},
|
|
92
|
-
"trigger": {
|
|
93
|
-
"anyOf": [
|
|
94
|
-
{
|
|
95
|
-
"discriminator": {
|
|
96
|
-
"mapping": {
|
|
97
|
-
"cron": "#/components/schemas/AgentConfigCronTrigger",
|
|
98
|
-
"mention": "#/components/schemas/AgentConfigMentionTrigger",
|
|
99
|
-
"react": "#/components/schemas/AgentConfigReactTrigger"
|
|
100
|
-
},
|
|
101
|
-
"propertyName": "type"
|
|
102
|
-
},
|
|
103
|
-
"oneOf": [
|
|
104
|
-
{
|
|
105
|
-
"$ref": "#/components/schemas/AgentConfigCronTrigger"
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"$ref": "#/components/schemas/AgentConfigReactTrigger"
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
"$ref": "#/components/schemas/AgentConfigMentionTrigger"
|
|
112
|
-
}
|
|
113
|
-
]
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"type": "null"
|
|
117
|
-
}
|
|
118
|
-
],
|
|
119
|
-
"title": "Trigger"
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
"title": "AgentConfig",
|
|
123
|
-
"type": "object"
|
|
124
|
-
},
|
|
125
|
-
"AgentConfigBudget": {
|
|
126
|
-
"additionalProperties": false,
|
|
127
|
-
"properties": {
|
|
128
|
-
"day": {
|
|
129
|
-
"anyOf": [
|
|
130
|
-
{
|
|
131
|
-
"type": "number"
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"type": "null"
|
|
135
|
-
}
|
|
136
|
-
],
|
|
137
|
-
"title": "Day"
|
|
138
|
-
},
|
|
139
|
-
"month": {
|
|
140
|
-
"anyOf": [
|
|
141
|
-
{
|
|
142
|
-
"type": "number"
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"type": "null"
|
|
146
|
-
}
|
|
147
|
-
],
|
|
148
|
-
"title": "Month"
|
|
149
|
-
},
|
|
150
|
-
"session": {
|
|
151
|
-
"anyOf": [
|
|
152
|
-
{
|
|
153
|
-
"type": "number"
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"type": "null"
|
|
157
|
-
}
|
|
158
|
-
],
|
|
159
|
-
"title": "Session"
|
|
160
|
-
},
|
|
161
|
-
"week": {
|
|
162
|
-
"anyOf": [
|
|
163
|
-
{
|
|
164
|
-
"type": "number"
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"type": "null"
|
|
168
|
-
}
|
|
169
|
-
],
|
|
170
|
-
"title": "Week"
|
|
171
|
-
}
|
|
172
|
-
},
|
|
173
|
-
"title": "AgentConfigBudget",
|
|
174
|
-
"type": "object"
|
|
175
|
-
},
|
|
176
|
-
"AgentConfigClaude": {
|
|
177
|
-
"additionalProperties": false,
|
|
178
|
-
"properties": {
|
|
179
|
-
"effort": {
|
|
180
|
-
"anyOf": [
|
|
181
|
-
{
|
|
182
|
-
"$ref": "#/components/schemas/EffortLevel"
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
"type": "null"
|
|
186
|
-
}
|
|
187
|
-
]
|
|
188
|
-
},
|
|
189
|
-
"fallback_model": {
|
|
190
|
-
"anyOf": [
|
|
191
|
-
{
|
|
192
|
-
"type": "string"
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"type": "null"
|
|
196
|
-
}
|
|
197
|
-
],
|
|
198
|
-
"title": "Fallback Model"
|
|
199
|
-
},
|
|
200
|
-
"max_turns": {
|
|
201
|
-
"anyOf": [
|
|
202
|
-
{
|
|
203
|
-
"exclusiveMinimum": 0.0,
|
|
204
|
-
"type": "integer"
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
"type": "null"
|
|
208
|
-
}
|
|
209
|
-
],
|
|
210
|
-
"title": "Max Turns"
|
|
211
|
-
},
|
|
212
|
-
"model": {
|
|
213
|
-
"anyOf": [
|
|
214
|
-
{
|
|
215
|
-
"type": "string"
|
|
216
|
-
},
|
|
217
|
-
{
|
|
218
|
-
"type": "null"
|
|
219
|
-
}
|
|
220
|
-
],
|
|
221
|
-
"title": "Model"
|
|
222
|
-
},
|
|
223
|
-
"settings": {
|
|
224
|
-
"anyOf": [
|
|
225
|
-
{
|
|
226
|
-
"$ref": "#/components/schemas/AgentConfigSettingsRef"
|
|
227
|
-
},
|
|
228
|
-
{
|
|
229
|
-
"type": "null"
|
|
230
|
-
}
|
|
231
|
-
]
|
|
232
|
-
},
|
|
233
|
-
"system": {
|
|
234
|
-
"anyOf": [
|
|
235
|
-
{
|
|
236
|
-
"type": "string"
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
"$ref": "#/components/schemas/AgentConfigSystemFileRef"
|
|
240
|
-
},
|
|
241
|
-
{
|
|
242
|
-
"items": {
|
|
243
|
-
"anyOf": [
|
|
244
|
-
{
|
|
245
|
-
"type": "string"
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
"$ref": "#/components/schemas/AgentConfigSystemFileRef"
|
|
249
|
-
}
|
|
250
|
-
]
|
|
251
|
-
},
|
|
252
|
-
"type": "array"
|
|
253
|
-
}
|
|
254
|
-
],
|
|
255
|
-
"default": "",
|
|
256
|
-
"title": "System"
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
"title": "AgentConfigClaude",
|
|
260
|
-
"type": "object"
|
|
261
|
-
},
|
|
262
|
-
"AgentConfigCodex": {
|
|
263
|
-
"additionalProperties": false,
|
|
264
|
-
"description": "The `codex:` block \u2014 run this agent on OpenAI's Codex CLI instead of\nClaude Code. Declaring the block at all is what selects the harness\n(`AgentConfig.harness`).\n\nDeliberately a small subset of `AgentConfigClaude`: the fields omitted here\nare ones Codex has no equivalent for (`effort`, `fallback_model`,\n`settings`) or that the platform does not yet wire through for this harness\n(`max_turns`, `skills`, MCP servers). They are omitted rather than\naccepted-and-ignored, because `StrictConfigModel` forbids extra keys \u2014 so a\nconfig that sets one fails loudly at parse time instead of silently not doing\nit. The budget still bounds a run regardless.",
|
|
265
|
-
"properties": {
|
|
266
|
-
"model": {
|
|
267
|
-
"default": "gpt-5.6-terra",
|
|
268
|
-
"title": "Model",
|
|
269
|
-
"type": "string"
|
|
270
|
-
},
|
|
271
|
-
"system": {
|
|
272
|
-
"anyOf": [
|
|
273
|
-
{
|
|
274
|
-
"type": "string"
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"$ref": "#/components/schemas/AgentConfigSystemFileRef"
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
"items": {
|
|
281
|
-
"anyOf": [
|
|
282
|
-
{
|
|
283
|
-
"type": "string"
|
|
284
|
-
},
|
|
285
|
-
{
|
|
286
|
-
"$ref": "#/components/schemas/AgentConfigSystemFileRef"
|
|
287
|
-
}
|
|
288
|
-
]
|
|
289
|
-
},
|
|
290
|
-
"type": "array"
|
|
291
|
-
}
|
|
292
|
-
],
|
|
293
|
-
"default": "",
|
|
294
|
-
"title": "System"
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
"title": "AgentConfigCodex",
|
|
298
|
-
"type": "object"
|
|
299
|
-
},
|
|
300
|
-
"AgentConfigCompute": {
|
|
301
|
-
"additionalProperties": false,
|
|
302
|
-
"description": "Sandbox compute sizing. Every field is optional; None inherits the\nplatform default (1 vCPU / 4096 MiB / 3600s \u2014 see DEFAULT_MODAL_* in\nmodels/ellipsis/sandboxes/sandbox.py). A resolved value outside the platform\nbounds fails validation loudly (a sync error on the config) rather than\nbeing clamped silently.\n\n`memory` and `timeout` each accept a shorthand string (\"8GB\", \"30m\") or an\nexplicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /\n`timeout_seconds` properties resolve either form to the canonical integer\nthe sandbox driver consumes.\n\n`timeout` is the max wall-clock the agent may run before the sandbox is\nkilled, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS \u2014 equal to the default, so\ntoday the knob only shortens a session; the cap matches the 1-hour validity\nof the sandbox's GitHub token). The worker's lease/visibility heartbeat\nceiling is derived from that cap, so a run at the max stays owned by its\nworker for its whole life.\n\nCompute is billed on the requested allocation over the sandbox's\nwall-clock lifetime, so a bigger/longer box costs proportionally more.",
|
|
303
|
-
"properties": {
|
|
304
|
-
"cpu": {
|
|
305
|
-
"anyOf": [
|
|
306
|
-
{
|
|
307
|
-
"maximum": 16.0,
|
|
308
|
-
"minimum": 0.125,
|
|
309
|
-
"type": "number"
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
"type": "null"
|
|
313
|
-
}
|
|
314
|
-
],
|
|
315
|
-
"title": "Cpu"
|
|
316
|
-
},
|
|
317
|
-
"memory": {
|
|
318
|
-
"anyOf": [
|
|
319
|
-
{
|
|
320
|
-
"type": "string"
|
|
321
|
-
},
|
|
322
|
-
{
|
|
323
|
-
"$ref": "#/components/schemas/AgentConfigMemorySize"
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
"type": "null"
|
|
327
|
-
}
|
|
328
|
-
],
|
|
329
|
-
"title": "Memory"
|
|
330
|
-
},
|
|
331
|
-
"timeout": {
|
|
332
|
-
"anyOf": [
|
|
333
|
-
{
|
|
334
|
-
"type": "string"
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
"$ref": "#/components/schemas/AgentConfigDuration"
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
"type": "null"
|
|
341
|
-
}
|
|
342
|
-
],
|
|
343
|
-
"title": "Timeout"
|
|
344
|
-
}
|
|
345
|
-
},
|
|
346
|
-
"title": "AgentConfigCompute",
|
|
347
|
-
"type": "object"
|
|
348
|
-
},
|
|
349
|
-
"AgentConfigCronTrigger": {
|
|
350
|
-
"additionalProperties": false,
|
|
351
|
-
"properties": {
|
|
352
|
-
"schedule": {
|
|
353
|
-
"title": "Schedule",
|
|
354
|
-
"type": "string"
|
|
355
|
-
},
|
|
356
|
-
"type": {
|
|
357
|
-
"const": "cron",
|
|
358
|
-
"default": "cron",
|
|
359
|
-
"title": "Type",
|
|
360
|
-
"type": "string"
|
|
361
|
-
}
|
|
362
|
-
},
|
|
363
|
-
"required": [
|
|
364
|
-
"schedule"
|
|
365
|
-
],
|
|
366
|
-
"title": "AgentConfigCronTrigger",
|
|
367
|
-
"type": "object"
|
|
368
|
-
},
|
|
369
|
-
"AgentConfigDuration": {
|
|
370
|
-
"additionalProperties": false,
|
|
371
|
-
"description": "A duration as explicit units, summed. Set any of `hours`/`minutes`/\n`seconds` (at least one). The alternative to the `30m`-style shorthand\nstring wherever a duration is accepted.",
|
|
372
|
-
"properties": {
|
|
373
|
-
"hours": {
|
|
374
|
-
"anyOf": [
|
|
375
|
-
{
|
|
376
|
-
"minimum": 0.0,
|
|
377
|
-
"type": "integer"
|
|
378
|
-
},
|
|
379
|
-
{
|
|
380
|
-
"type": "null"
|
|
381
|
-
}
|
|
382
|
-
],
|
|
383
|
-
"title": "Hours"
|
|
384
|
-
},
|
|
385
|
-
"minutes": {
|
|
386
|
-
"anyOf": [
|
|
387
|
-
{
|
|
388
|
-
"minimum": 0.0,
|
|
389
|
-
"type": "integer"
|
|
390
|
-
},
|
|
391
|
-
{
|
|
392
|
-
"type": "null"
|
|
393
|
-
}
|
|
394
|
-
],
|
|
395
|
-
"title": "Minutes"
|
|
396
|
-
},
|
|
397
|
-
"seconds": {
|
|
398
|
-
"anyOf": [
|
|
399
|
-
{
|
|
400
|
-
"minimum": 0.0,
|
|
401
|
-
"type": "integer"
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
"type": "null"
|
|
405
|
-
}
|
|
406
|
-
],
|
|
407
|
-
"title": "Seconds"
|
|
408
|
-
}
|
|
409
|
-
},
|
|
410
|
-
"title": "AgentConfigDuration",
|
|
411
|
-
"type": "object"
|
|
412
|
-
},
|
|
413
|
-
"AgentConfigEllipsis": {
|
|
414
|
-
"additionalProperties": false,
|
|
415
|
-
"description": "The Ellipsis product namespace for a config file: which schema this is\n(`version`), the human-facing identity (`name`/`description`), freeform\norganizational `metadata`, and whether the agent is `enabled`. The\npresence of a top-level `ellipsis:` mapping is what marks a YAML file as\nan Ellipsis agent config (vs arbitrary YAML that merely lives under a\nconfig directory) \u2014 see `yaml_is_ellipsis_config`.\n\n`enabled` is agent behavior, not freeform metadata, so it stays inside\nthe config `sha` (only `metadata` is sha-excluded). Whether a session\naccepts messages is a per-run choice (POST /v1/sessions `interactive`),\nnot a config one.",
|
|
416
|
-
"properties": {
|
|
417
|
-
"description": {
|
|
418
|
-
"anyOf": [
|
|
419
|
-
{
|
|
420
|
-
"type": "string"
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
"type": "null"
|
|
424
|
-
}
|
|
425
|
-
],
|
|
426
|
-
"title": "Description"
|
|
427
|
-
},
|
|
428
|
-
"enabled": {
|
|
429
|
-
"default": true,
|
|
430
|
-
"title": "Enabled",
|
|
431
|
-
"type": "boolean"
|
|
432
|
-
},
|
|
433
|
-
"metadata": {
|
|
434
|
-
"$ref": "#/components/schemas/AgentConfigMetadata",
|
|
435
|
-
"default": {
|
|
436
|
-
"annotations": {},
|
|
437
|
-
"labels": []
|
|
438
|
-
}
|
|
439
|
-
},
|
|
440
|
-
"name": {
|
|
441
|
-
"anyOf": [
|
|
442
|
-
{
|
|
443
|
-
"type": "string"
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
"type": "null"
|
|
447
|
-
}
|
|
448
|
-
],
|
|
449
|
-
"title": "Name"
|
|
450
|
-
},
|
|
451
|
-
"version": {
|
|
452
|
-
"default": "v1",
|
|
453
|
-
"title": "Version",
|
|
454
|
-
"type": "string"
|
|
455
|
-
}
|
|
456
|
-
},
|
|
457
|
-
"title": "AgentConfigEllipsis",
|
|
458
|
-
"type": "object"
|
|
459
|
-
},
|
|
460
|
-
"AgentConfigEllipsisPermissions": {
|
|
461
|
-
"additionalProperties": {
|
|
462
|
-
"anyOf": [
|
|
463
|
-
{
|
|
464
|
-
"$ref": "#/components/schemas/Level"
|
|
465
|
-
},
|
|
466
|
-
{
|
|
467
|
-
"$ref": "#/components/schemas/EllipsisGrant"
|
|
468
|
-
},
|
|
469
|
-
{
|
|
470
|
-
"items": {
|
|
471
|
-
"anyOf": [
|
|
472
|
-
{
|
|
473
|
-
"$ref": "#/components/schemas/Level"
|
|
474
|
-
},
|
|
475
|
-
{
|
|
476
|
-
"$ref": "#/components/schemas/EllipsisGrant"
|
|
477
|
-
}
|
|
478
|
-
]
|
|
479
|
-
},
|
|
480
|
-
"type": "array"
|
|
481
|
-
}
|
|
482
|
-
]
|
|
483
|
-
},
|
|
484
|
-
"description": "`permissions.ellipsis` as a map: resource \u2192 level | grant | list of\ngrants. Levels are hierarchical (read < write < delete), so `write`\nincludes `read`. An unlisted resource is denied. The whole block is\nintersected with the platform's sandbox ceiling at token mint \u2014 it can\nnarrow what a sandbox token may do, never exceed it.",
|
|
485
|
-
"propertyNames": {
|
|
486
|
-
"$ref": "#/components/schemas/Resource"
|
|
487
|
-
},
|
|
488
|
-
"title": "AgentConfigEllipsisPermissions",
|
|
489
|
-
"type": "object"
|
|
490
|
-
},
|
|
491
|
-
"AgentConfigEnvironment": {
|
|
492
|
-
"additionalProperties": false,
|
|
493
|
-
"description": "Everything about the environment (the sandbox) the agent runs in: which\n`repositories` are cloned into it, which environment `variables` it gets,\nits `compute` sizing, how its `image` is customized, and lifecycle `hooks`.\nWhat the agent may *do* from that environment is the top-level\n`permissions:` block, not this one.\n\nEach `variables` entry names a variable to inject; with an inline `value` it\nis hardcoded, without one it is resolved from the account's sandbox-secrets\nstore. Only the named variables reach this agent; the rest of the account's\nstored variables never do. This is how a config brings in the config and\ncredentials a custom CLI needs.",
|
|
494
|
-
"properties": {
|
|
495
|
-
"compute": {
|
|
496
|
-
"$ref": "#/components/schemas/AgentConfigCompute",
|
|
497
|
-
"default": {}
|
|
498
|
-
},
|
|
499
|
-
"hooks": {
|
|
500
|
-
"$ref": "#/components/schemas/AgentConfigEnvironmentHooks",
|
|
501
|
-
"default": {}
|
|
502
|
-
},
|
|
503
|
-
"image": {
|
|
504
|
-
"$ref": "#/components/schemas/AgentConfigEnvironmentImage",
|
|
505
|
-
"default": {}
|
|
506
|
-
},
|
|
507
|
-
"mcp_servers": {
|
|
508
|
-
"default": [],
|
|
509
|
-
"items": {
|
|
510
|
-
"anyOf": [
|
|
511
|
-
{
|
|
512
|
-
"type": "string"
|
|
513
|
-
},
|
|
514
|
-
{
|
|
515
|
-
"$ref": "#/components/schemas/AgentConfigMcpServer"
|
|
516
|
-
},
|
|
517
|
-
{
|
|
518
|
-
"$ref": "#/components/schemas/AgentConfigMcpStdioServer"
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
"$ref": "#/components/schemas/AgentConfigMcpRemoteServer"
|
|
522
|
-
}
|
|
523
|
-
]
|
|
524
|
-
},
|
|
525
|
-
"title": "Mcp Servers",
|
|
526
|
-
"type": "array"
|
|
527
|
-
},
|
|
528
|
-
"repositories": {
|
|
529
|
-
"default": [],
|
|
530
|
-
"items": {
|
|
531
|
-
"$ref": "#/components/schemas/AgentConfigRepository"
|
|
532
|
-
},
|
|
533
|
-
"title": "Repositories",
|
|
534
|
-
"type": "array"
|
|
535
|
-
},
|
|
536
|
-
"variables": {
|
|
537
|
-
"default": [],
|
|
538
|
-
"items": {
|
|
539
|
-
"$ref": "#/components/schemas/AgentConfigEnvironmentVariable"
|
|
540
|
-
},
|
|
541
|
-
"title": "Variables",
|
|
542
|
-
"type": "array"
|
|
543
|
-
}
|
|
544
|
-
},
|
|
545
|
-
"title": "AgentConfigEnvironment",
|
|
546
|
-
"type": "object"
|
|
547
|
-
},
|
|
548
|
-
"AgentConfigEnvironmentHooks": {
|
|
549
|
-
"additionalProperties": false,
|
|
550
|
-
"description": "Shell scripts run at points in the sandbox lifecycle, each as the sandbox\nuser with the sandbox's environment variables available. A non-zero exit\nfails the run (exit_status = LIFECYCLE_HOOK_FAILED) and is not retried.\n\n`post_start` runs after the container starts, before any repo is cloned \u2014\nrepo-independent setup (authenticate a CLI, e.g. `doppler setup`). On Modal\nthe repo is baked into the image so it is incidentally present, but\n`post_start` must not depend on repo contents (that's `post_clone`).\n\n`post_clone` runs after all repos are cloned/checked out, before the agent \u2014\nrepo-dependent setup (`pip install -r requirements.txt`, codegen).\n\nHooks run on every run and their output is never cached. A dependency\ninstall whose result should be reused across runs belongs in `image.setup`\n(baked into the cached image) instead; keep hooks for per-run work \u2014 e.g.\nanything that touches run-scoped credentials.",
|
|
551
|
-
"properties": {
|
|
552
|
-
"post_clone": {
|
|
553
|
-
"anyOf": [
|
|
554
|
-
{
|
|
555
|
-
"type": "string"
|
|
556
|
-
},
|
|
557
|
-
{
|
|
558
|
-
"type": "null"
|
|
559
|
-
}
|
|
560
|
-
],
|
|
561
|
-
"title": "Post Clone"
|
|
562
|
-
},
|
|
563
|
-
"post_start": {
|
|
564
|
-
"anyOf": [
|
|
565
|
-
{
|
|
566
|
-
"type": "string"
|
|
567
|
-
},
|
|
568
|
-
{
|
|
569
|
-
"type": "null"
|
|
570
|
-
}
|
|
571
|
-
],
|
|
572
|
-
"title": "Post Start"
|
|
573
|
-
}
|
|
574
|
-
},
|
|
575
|
-
"title": "AgentConfigEnvironmentHooks",
|
|
576
|
-
"type": "object"
|
|
577
|
-
},
|
|
578
|
-
"AgentConfigEnvironmentImage": {
|
|
579
|
-
"additionalProperties": false,
|
|
580
|
-
"description": "How to customize the container image the agent runs in. You\ncontribute appended layers (`dockerfile_append`) and a build-time script\n(`setup`) only \u2014 Ellipsis owns FROM / base tooling / entrypoint / user.\nToday only inline bodies are supported; a file reference (resolved at the\nrun's SHA) will come later.\n\nThe split: `dockerfile_append` runs when the image is assembled, before any\nrepo exists \u2014 toolchain installs (a package manager binary, apt packages).\n`setup` runs at image-build time *after* the configured repositories are\nchecked out, and its output is captured by the filesystem snapshot that\nbecomes the cached image \u2014 dependency installs (`poetry install`,\n`npm install`), so later runs start with deps already on disk. Neither runs\nper run; that's `hooks.post_start` / `hooks.post_clone`.",
|
|
581
|
-
"properties": {
|
|
582
|
-
"dockerfile_append": {
|
|
583
|
-
"anyOf": [
|
|
584
|
-
{
|
|
585
|
-
"type": "string"
|
|
586
|
-
},
|
|
587
|
-
{
|
|
588
|
-
"type": "null"
|
|
589
|
-
}
|
|
590
|
-
],
|
|
591
|
-
"title": "Dockerfile Append"
|
|
592
|
-
},
|
|
593
|
-
"setup": {
|
|
594
|
-
"anyOf": [
|
|
595
|
-
{
|
|
596
|
-
"type": "string"
|
|
597
|
-
},
|
|
598
|
-
{
|
|
599
|
-
"type": "null"
|
|
600
|
-
}
|
|
601
|
-
],
|
|
602
|
-
"title": "Setup"
|
|
603
|
-
}
|
|
604
|
-
},
|
|
605
|
-
"title": "AgentConfigEnvironmentImage",
|
|
606
|
-
"type": "object"
|
|
607
|
-
},
|
|
608
|
-
"AgentConfigEnvironmentVariable": {
|
|
609
|
-
"additionalProperties": false,
|
|
610
|
-
"description": "One environment variable injected into the agent's sandbox.\n\n`value`, when set, is a literal injected as-is \u2014 use it for non-secret\nconfig (LOG_LEVEL, an API base URL). When `value` is omitted the value is\nresolved at run time from the account's sandbox-secrets store (dashboard\n/ `PUT /v1/secrets`) by `name`, so a secret can be injected without\never putting it in the config file. Either way the variable only reaches\nagents that name it.",
|
|
611
|
-
"properties": {
|
|
612
|
-
"name": {
|
|
613
|
-
"title": "Name",
|
|
614
|
-
"type": "string"
|
|
615
|
-
},
|
|
616
|
-
"value": {
|
|
617
|
-
"anyOf": [
|
|
618
|
-
{
|
|
619
|
-
"type": "string"
|
|
620
|
-
},
|
|
621
|
-
{
|
|
622
|
-
"type": "null"
|
|
623
|
-
}
|
|
624
|
-
],
|
|
625
|
-
"title": "Value"
|
|
626
|
-
}
|
|
627
|
-
},
|
|
628
|
-
"required": [
|
|
629
|
-
"name"
|
|
630
|
-
],
|
|
631
|
-
"title": "AgentConfigEnvironmentVariable",
|
|
632
|
-
"type": "object"
|
|
633
|
-
},
|
|
634
|
-
"AgentConfigGithubPermissions": {
|
|
635
|
-
"additionalProperties": false,
|
|
636
|
-
"description": "The agent's GitHub access: the scope of the installation token minted for\nits sandbox \u2014 the credential `git`, `gh`, and the GitHub MCP server\nauthenticate with.\n\nBy default the token carries the installation's full permissions on all of\nthe installation's repositories. `permissions` narrows what it may do:\nthe string `read_only` grants read access to contents, issues, metadata and\npull requests; a map requests explicit levels per GitHub App permission\nscope (e.g. `{contents: read, pull_requests: write}`) and may never exceed\nwhat the installation granted. `repositories` scopes the token to exactly\nthe listed repos, by name (they must belong to the installation).\n\nRestriction is enforced by GitHub, not by Ellipsis: the token itself is\nminted with the reduced scope, so nothing running in the sandbox can\nexceed it.",
|
|
637
|
-
"properties": {
|
|
638
|
-
"permissions": {
|
|
639
|
-
"anyOf": [
|
|
640
|
-
{
|
|
641
|
-
"const": "read_only",
|
|
642
|
-
"type": "string"
|
|
643
|
-
},
|
|
644
|
-
{
|
|
645
|
-
"additionalProperties": {
|
|
646
|
-
"type": "string"
|
|
647
|
-
},
|
|
648
|
-
"type": "object"
|
|
649
|
-
},
|
|
650
|
-
{
|
|
651
|
-
"type": "null"
|
|
652
|
-
}
|
|
653
|
-
],
|
|
654
|
-
"title": "Permissions"
|
|
655
|
-
},
|
|
656
|
-
"repositories": {
|
|
657
|
-
"anyOf": [
|
|
658
|
-
{
|
|
659
|
-
"items": {
|
|
660
|
-
"type": "string"
|
|
661
|
-
},
|
|
662
|
-
"type": "array"
|
|
663
|
-
},
|
|
664
|
-
{
|
|
665
|
-
"type": "null"
|
|
666
|
-
}
|
|
667
|
-
],
|
|
668
|
-
"title": "Repositories"
|
|
669
|
-
}
|
|
670
|
-
},
|
|
671
|
-
"title": "AgentConfigGithubPermissions",
|
|
672
|
-
"type": "object"
|
|
673
|
-
},
|
|
674
|
-
"AgentConfigInput": {
|
|
675
|
-
"additionalProperties": false,
|
|
676
|
-
"description": "The typed input contract: what goes INTO a session (the trigger is\nwhen it happens; this is what goes in).\n\n`json_schema` types the payload a caller-started session takes\n(`POST /v1/sessions` `input`, validated at the door; required when\ndeclared). It is illegal on a react-triggered agent \u2014 react payloads are\nplatform-shaped (the published surface field sets), not caller-shaped.\n\n`message` is the initial-message template: exact `{{path}}` substitution\nover the caller payload (or, on a react agent, over the surface's\npublished fields), no conditionals/loops/filters. Refs are validated at\ndeploy time against the governing field set (see AgentConfig's\n`_check_input`).",
|
|
677
|
-
"properties": {
|
|
678
|
-
"json_schema": {
|
|
679
|
-
"anyOf": [
|
|
680
|
-
{
|
|
681
|
-
"additionalProperties": true,
|
|
682
|
-
"type": "object"
|
|
683
|
-
},
|
|
684
|
-
{
|
|
685
|
-
"type": "null"
|
|
686
|
-
}
|
|
687
|
-
],
|
|
688
|
-
"title": "Json Schema"
|
|
689
|
-
},
|
|
690
|
-
"message": {
|
|
691
|
-
"anyOf": [
|
|
692
|
-
{
|
|
693
|
-
"type": "string"
|
|
694
|
-
},
|
|
695
|
-
{
|
|
696
|
-
"type": "null"
|
|
697
|
-
}
|
|
698
|
-
],
|
|
699
|
-
"title": "Message"
|
|
700
|
-
}
|
|
701
|
-
},
|
|
702
|
-
"title": "AgentConfigInput",
|
|
703
|
-
"type": "object"
|
|
704
|
-
},
|
|
705
|
-
"AgentConfigMcpRemoteServer": {
|
|
706
|
-
"additionalProperties": false,
|
|
707
|
-
"description": "A bring-your-own remote MCP server: the harness talks HTTP to `url`.\nNothing runs in the sandbox image. `headers` carry static auth (e.g.\n`Authorization: Bearer ${TOKEN}`); values may embed `${NAME}` secret\nreferences, resolved at run time from the account's secrets store.",
|
|
708
|
-
"properties": {
|
|
709
|
-
"headers": {
|
|
710
|
-
"additionalProperties": {
|
|
711
|
-
"type": "string"
|
|
712
|
-
},
|
|
713
|
-
"default": {},
|
|
714
|
-
"title": "Headers",
|
|
715
|
-
"type": "object"
|
|
716
|
-
},
|
|
717
|
-
"name": {
|
|
718
|
-
"title": "Name",
|
|
719
|
-
"type": "string"
|
|
720
|
-
},
|
|
721
|
-
"url": {
|
|
722
|
-
"title": "Url",
|
|
723
|
-
"type": "string"
|
|
724
|
-
}
|
|
725
|
-
},
|
|
726
|
-
"required": [
|
|
727
|
-
"name",
|
|
728
|
-
"url"
|
|
729
|
-
],
|
|
730
|
-
"title": "AgentConfigMcpRemoteServer",
|
|
731
|
-
"type": "object"
|
|
732
|
-
},
|
|
733
|
-
"AgentConfigMcpServer": {
|
|
734
|
-
"additionalProperties": false,
|
|
735
|
-
"description": "One built-in MCP server this agent opts into by name (`linear`/`slack`).\nA name reference over the connected built-in set \u2014 the platform manages the\nserver's transport and credentials. It only matters when the named\nintegration is set to `opt_in` inclusion; an integration in the default\n`all_sessions` mode is added regardless. For a server the platform does not\nprovide, define it instead (`AgentConfigMcpStdioServer` /\n`AgentConfigMcpRemoteServer`).",
|
|
736
|
-
"properties": {
|
|
737
|
-
"name": {
|
|
738
|
-
"title": "Name",
|
|
739
|
-
"type": "string"
|
|
740
|
-
}
|
|
741
|
-
},
|
|
742
|
-
"required": [
|
|
743
|
-
"name"
|
|
744
|
-
],
|
|
745
|
-
"title": "AgentConfigMcpServer",
|
|
746
|
-
"type": "object"
|
|
747
|
-
},
|
|
748
|
-
"AgentConfigMcpStdioServer": {
|
|
749
|
-
"additionalProperties": false,
|
|
750
|
-
"description": "A bring-your-own stdio MCP server: the harness spawns `command` inside\nthe sandbox and speaks JSON-RPC over its stdin/stdout. The command must be\nrunnable in the sandbox image \u2014 install its runtime via `image.setup` /\n`image.dockerfile_append` if the base image lacks it.\n\n`env` values may embed `${NAME}` references, resolved at run time from the\naccount's secrets store (see `mcp_secret_refs`); everything else is passed\nliterally.",
|
|
751
|
-
"properties": {
|
|
752
|
-
"args": {
|
|
753
|
-
"default": [],
|
|
754
|
-
"items": {
|
|
755
|
-
"type": "string"
|
|
756
|
-
},
|
|
757
|
-
"title": "Args",
|
|
758
|
-
"type": "array"
|
|
759
|
-
},
|
|
760
|
-
"command": {
|
|
761
|
-
"title": "Command",
|
|
762
|
-
"type": "string"
|
|
763
|
-
},
|
|
764
|
-
"env": {
|
|
765
|
-
"additionalProperties": {
|
|
766
|
-
"type": "string"
|
|
767
|
-
},
|
|
768
|
-
"default": {},
|
|
769
|
-
"title": "Env",
|
|
770
|
-
"type": "object"
|
|
771
|
-
},
|
|
772
|
-
"name": {
|
|
773
|
-
"title": "Name",
|
|
774
|
-
"type": "string"
|
|
775
|
-
}
|
|
776
|
-
},
|
|
777
|
-
"required": [
|
|
778
|
-
"name",
|
|
779
|
-
"command"
|
|
780
|
-
],
|
|
781
|
-
"title": "AgentConfigMcpStdioServer",
|
|
782
|
-
"type": "object"
|
|
783
|
-
},
|
|
784
|
-
"AgentConfigMemorySize": {
|
|
785
|
-
"additionalProperties": false,
|
|
786
|
-
"description": "A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).\nSet any of `gb`/`mb` (at least one). The alternative to the `8GB`-style\nshorthand string.",
|
|
787
|
-
"properties": {
|
|
788
|
-
"gb": {
|
|
789
|
-
"anyOf": [
|
|
790
|
-
{
|
|
791
|
-
"minimum": 0.0,
|
|
792
|
-
"type": "integer"
|
|
793
|
-
},
|
|
794
|
-
{
|
|
795
|
-
"type": "null"
|
|
796
|
-
}
|
|
797
|
-
],
|
|
798
|
-
"title": "Gb"
|
|
799
|
-
},
|
|
800
|
-
"mb": {
|
|
801
|
-
"anyOf": [
|
|
802
|
-
{
|
|
803
|
-
"minimum": 0.0,
|
|
804
|
-
"type": "integer"
|
|
805
|
-
},
|
|
806
|
-
{
|
|
807
|
-
"type": "null"
|
|
808
|
-
}
|
|
809
|
-
],
|
|
810
|
-
"title": "Mb"
|
|
811
|
-
}
|
|
812
|
-
},
|
|
813
|
-
"title": "AgentConfigMemorySize",
|
|
814
|
-
"type": "object"
|
|
815
|
-
},
|
|
816
|
-
"AgentConfigMentionPlatform": {
|
|
817
|
-
"description": "The surface an @ellipsis mention can come from.\n\nNo SLACK member: Slack routing is not a trigger on an agent config, it is the\n`slack.yaml` routing file (`SlackConfig`), which answers the questions a\nplatform list cannot \u2014 which channel, and whose DM. A mention trigger listing\n`slack` is therefore a config error, not a silently-never-fires config.",
|
|
818
|
-
"enum": [
|
|
819
|
-
"github",
|
|
820
|
-
"linear"
|
|
821
|
-
],
|
|
822
|
-
"title": "AgentConfigMentionPlatform",
|
|
823
|
-
"type": "string"
|
|
824
|
-
},
|
|
825
|
-
"AgentConfigMentionTrigger": {
|
|
826
|
-
"additionalProperties": false,
|
|
827
|
-
"properties": {
|
|
828
|
-
"platforms": {
|
|
829
|
-
"default": [],
|
|
830
|
-
"items": {
|
|
831
|
-
"$ref": "#/components/schemas/AgentConfigMentionPlatform"
|
|
832
|
-
},
|
|
833
|
-
"title": "Platforms",
|
|
834
|
-
"type": "array"
|
|
835
|
-
},
|
|
836
|
-
"type": {
|
|
837
|
-
"const": "mention",
|
|
838
|
-
"default": "mention",
|
|
839
|
-
"title": "Type",
|
|
840
|
-
"type": "string"
|
|
841
|
-
}
|
|
842
|
-
},
|
|
843
|
-
"title": "AgentConfigMentionTrigger",
|
|
844
|
-
"type": "object"
|
|
845
|
-
},
|
|
846
|
-
"AgentConfigMetadata": {
|
|
847
|
-
"additionalProperties": false,
|
|
848
|
-
"properties": {
|
|
849
|
-
"annotations": {
|
|
850
|
-
"additionalProperties": {
|
|
851
|
-
"type": "string"
|
|
852
|
-
},
|
|
853
|
-
"default": {},
|
|
854
|
-
"title": "Annotations",
|
|
855
|
-
"type": "object"
|
|
856
|
-
},
|
|
857
|
-
"labels": {
|
|
858
|
-
"default": [],
|
|
859
|
-
"items": {
|
|
860
|
-
"type": "string"
|
|
861
|
-
},
|
|
862
|
-
"title": "Labels",
|
|
863
|
-
"type": "array"
|
|
864
|
-
}
|
|
865
|
-
},
|
|
866
|
-
"title": "AgentConfigMetadata",
|
|
867
|
-
"type": "object"
|
|
868
|
-
},
|
|
869
|
-
"AgentConfigOutput": {
|
|
870
|
-
"additionalProperties": false,
|
|
871
|
-
"description": "The typed output contract: the JSON Schema the agent must exit through\n(the StructuredOutput exit tool). Read back via\nGET /v1/sessions/{id}/output.",
|
|
872
|
-
"properties": {
|
|
873
|
-
"json_schema": {
|
|
874
|
-
"additionalProperties": true,
|
|
875
|
-
"title": "Json Schema",
|
|
876
|
-
"type": "object"
|
|
877
|
-
}
|
|
878
|
-
},
|
|
879
|
-
"required": [
|
|
880
|
-
"json_schema"
|
|
881
|
-
],
|
|
882
|
-
"title": "AgentConfigOutput",
|
|
883
|
-
"type": "object"
|
|
884
|
-
},
|
|
885
|
-
"AgentConfigPermissions": {
|
|
886
|
-
"additionalProperties": false,
|
|
887
|
-
"description": "What the agent is allowed to touch, per credential the platform mints\ninto its sandbox. Distinct from `environment:`, which is where the agent\nruns; this is what it may do from there.\n\n`ellipsis` scopes the sandbox's Ellipsis API token\n(`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates\nwith). `true` / the string `all` (the default) grant the full sandbox\nceiling \u2014 everything a sandbox token can ever do. A map narrows it per\nresource (see `AgentConfigEllipsisPermissions`); the minted token carries\nthe intersection, so a config can only ever reduce access. `false` fails\nvalidation \u2014 an agent with no API token cannot report its own progress.\n\n`github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) \u2014\nsee `AgentConfigGithubPermissions`. GitHub enforces it at mint time.",
|
|
888
|
-
"properties": {
|
|
889
|
-
"ellipsis": {
|
|
890
|
-
"anyOf": [
|
|
891
|
-
{
|
|
892
|
-
"enum": [
|
|
893
|
-
true,
|
|
894
|
-
"all"
|
|
895
|
-
]
|
|
896
|
-
},
|
|
897
|
-
{
|
|
898
|
-
"$ref": "#/components/schemas/AgentConfigEllipsisPermissions"
|
|
899
|
-
}
|
|
900
|
-
],
|
|
901
|
-
"default": true,
|
|
902
|
-
"title": "Ellipsis"
|
|
903
|
-
},
|
|
904
|
-
"github": {
|
|
905
|
-
"$ref": "#/components/schemas/AgentConfigGithubPermissions",
|
|
906
|
-
"default": {}
|
|
907
|
-
}
|
|
908
|
-
},
|
|
909
|
-
"title": "AgentConfigPermissions",
|
|
910
|
-
"type": "object"
|
|
911
|
-
},
|
|
912
|
-
"AgentConfigReactTrigger": {
|
|
913
|
-
"additionalProperties": false,
|
|
914
|
-
"properties": {
|
|
915
|
-
"issue": {
|
|
916
|
-
"anyOf": [
|
|
917
|
-
{
|
|
918
|
-
"$ref": "#/components/schemas/ReactIssue"
|
|
919
|
-
},
|
|
920
|
-
{
|
|
921
|
-
"type": "null"
|
|
922
|
-
}
|
|
923
|
-
]
|
|
924
|
-
},
|
|
925
|
-
"linear_issue": {
|
|
926
|
-
"anyOf": [
|
|
927
|
-
{
|
|
928
|
-
"$ref": "#/components/schemas/ReactLinearIssue"
|
|
929
|
-
},
|
|
930
|
-
{
|
|
931
|
-
"type": "null"
|
|
932
|
-
}
|
|
933
|
-
]
|
|
934
|
-
},
|
|
935
|
-
"pull_request": {
|
|
936
|
-
"anyOf": [
|
|
937
|
-
{
|
|
938
|
-
"$ref": "#/components/schemas/ReactPullRequest"
|
|
939
|
-
},
|
|
940
|
-
{
|
|
941
|
-
"type": "null"
|
|
942
|
-
}
|
|
943
|
-
]
|
|
944
|
-
},
|
|
945
|
-
"push": {
|
|
946
|
-
"anyOf": [
|
|
947
|
-
{
|
|
948
|
-
"$ref": "#/components/schemas/ReactPush"
|
|
949
|
-
},
|
|
950
|
-
{
|
|
951
|
-
"type": "null"
|
|
952
|
-
}
|
|
953
|
-
]
|
|
954
|
-
},
|
|
955
|
-
"sentry": {
|
|
956
|
-
"anyOf": [
|
|
957
|
-
{
|
|
958
|
-
"$ref": "#/components/schemas/ReactSentry"
|
|
959
|
-
},
|
|
960
|
-
{
|
|
961
|
-
"type": "null"
|
|
962
|
-
}
|
|
963
|
-
]
|
|
964
|
-
},
|
|
965
|
-
"slack_channel": {
|
|
966
|
-
"anyOf": [
|
|
967
|
-
{
|
|
968
|
-
"$ref": "#/components/schemas/ReactSlackChannel"
|
|
969
|
-
},
|
|
970
|
-
{
|
|
971
|
-
"type": "null"
|
|
972
|
-
}
|
|
973
|
-
]
|
|
974
|
-
},
|
|
975
|
-
"type": {
|
|
976
|
-
"const": "react",
|
|
977
|
-
"default": "react",
|
|
978
|
-
"title": "Type",
|
|
979
|
-
"type": "string"
|
|
980
|
-
}
|
|
981
|
-
},
|
|
982
|
-
"title": "AgentConfigReactTrigger",
|
|
983
|
-
"type": "object"
|
|
984
|
-
},
|
|
985
|
-
"AgentConfigRepository": {
|
|
986
|
-
"additionalProperties": false,
|
|
987
|
-
"properties": {
|
|
988
|
-
"name": {
|
|
989
|
-
"title": "Name",
|
|
990
|
-
"type": "string"
|
|
991
|
-
},
|
|
992
|
-
"owner": {
|
|
993
|
-
"anyOf": [
|
|
994
|
-
{
|
|
995
|
-
"type": "string"
|
|
996
|
-
},
|
|
997
|
-
{
|
|
998
|
-
"type": "null"
|
|
999
|
-
}
|
|
1000
|
-
],
|
|
1001
|
-
"title": "Owner"
|
|
1002
|
-
},
|
|
1003
|
-
"ref": {
|
|
1004
|
-
"anyOf": [
|
|
1005
|
-
{
|
|
1006
|
-
"type": "string"
|
|
1007
|
-
},
|
|
1008
|
-
{
|
|
1009
|
-
"type": "null"
|
|
1010
|
-
}
|
|
1011
|
-
],
|
|
1012
|
-
"title": "Ref"
|
|
1013
|
-
}
|
|
1014
|
-
},
|
|
1015
|
-
"required": [
|
|
1016
|
-
"name"
|
|
1017
|
-
],
|
|
1018
|
-
"title": "AgentConfigRepository",
|
|
1019
|
-
"type": "object"
|
|
1020
|
-
},
|
|
1021
|
-
"AgentConfigSettingsRef": {
|
|
1022
|
-
"additionalProperties": false,
|
|
1023
|
-
"description": "A config-declared Claude Code settings.json, resolved at run start and\npassed to `claude --settings <path>`. That is the CLI settings tier \u2014 BELOW\nEllipsis's managed-settings.json floor \u2014 so it customizes behavior (model\npermissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a\nsecurity setting. Lets a team point the cloud agent at the same settings file\nthey already use with Claude Code locally instead of re-encoding it as YAML.",
|
|
1024
|
-
"properties": {
|
|
1025
|
-
"path": {
|
|
1026
|
-
"title": "Path",
|
|
1027
|
-
"type": "string"
|
|
1028
|
-
},
|
|
1029
|
-
"repository": {
|
|
1030
|
-
"anyOf": [
|
|
1031
|
-
{
|
|
1032
|
-
"$ref": "#/components/schemas/AgentConfigRepository"
|
|
1033
|
-
},
|
|
1034
|
-
{
|
|
1035
|
-
"type": "null"
|
|
1036
|
-
}
|
|
1037
|
-
]
|
|
1038
|
-
}
|
|
1039
|
-
},
|
|
1040
|
-
"required": [
|
|
1041
|
-
"path"
|
|
1042
|
-
],
|
|
1043
|
-
"title": "AgentConfigSettingsRef",
|
|
1044
|
-
"type": "object"
|
|
1045
|
-
},
|
|
1046
|
-
"AgentConfigSkill": {
|
|
1047
|
-
"additionalProperties": false,
|
|
1048
|
-
"description": "One config-declared Claude Code skill: a repository directory containing\na SKILL.md, resolved at run start and installed at the sandbox's personal\nskill level (`~/.claude/skills/<basename(path)>/`). This is how a config\nbrings in skills its cloned repositories don't provide \u2014 cross-repo refs\n(an org-wide skills repo), public third-party repos, and repo-less runs.\nSkills under a cloned repo's own `.claude/skills/` load by themselves and\ndon't need an entry here.",
|
|
1049
|
-
"properties": {
|
|
1050
|
-
"path": {
|
|
1051
|
-
"title": "Path",
|
|
1052
|
-
"type": "string"
|
|
1053
|
-
},
|
|
1054
|
-
"repository": {
|
|
1055
|
-
"anyOf": [
|
|
1056
|
-
{
|
|
1057
|
-
"$ref": "#/components/schemas/AgentConfigRepository"
|
|
1058
|
-
},
|
|
1059
|
-
{
|
|
1060
|
-
"type": "null"
|
|
1061
|
-
}
|
|
1062
|
-
]
|
|
1063
|
-
}
|
|
1064
|
-
},
|
|
1065
|
-
"required": [
|
|
1066
|
-
"path"
|
|
1067
|
-
],
|
|
1068
|
-
"title": "AgentConfigSkill",
|
|
1069
|
-
"type": "object"
|
|
1070
|
-
},
|
|
1071
|
-
"AgentConfigSource": {
|
|
1072
|
-
"description": "Where a session's config came from. Total: every session has exactly one\nsource, including the ones that never touch defaults resolution.\n\nNot derivable from the row \u2014 `agent_config_id` says WHICH saved config, not\nhow it was chosen, and is null for inline, platform-default, and built-in\nconfigs alike \u2014 so it is persisted for audit and the published wire.",
|
|
1073
|
-
"enum": [
|
|
1074
|
-
"explicit",
|
|
1075
|
-
"inline",
|
|
1076
|
-
"template",
|
|
1077
|
-
"repo_default",
|
|
1078
|
-
"account_default",
|
|
1079
|
-
"platform_default",
|
|
1080
|
-
"trigger",
|
|
1081
|
-
"builtin"
|
|
1082
|
-
],
|
|
1083
|
-
"title": "AgentConfigSource",
|
|
1084
|
-
"type": "string"
|
|
1085
|
-
},
|
|
1086
|
-
"AgentConfigSourceGithub": {
|
|
1087
|
-
"description": "Identifies the file a GitHub-sourced agent config is synced from.\n\nKeyed on the repository ID (not owner/name) so repository and org renames\ndon't orphan the config; resolve display names from gh_repositories at\nread time.",
|
|
1088
|
-
"properties": {
|
|
1089
|
-
"branch": {
|
|
1090
|
-
"title": "Branch",
|
|
1091
|
-
"type": "string"
|
|
1092
|
-
},
|
|
1093
|
-
"path": {
|
|
1094
|
-
"title": "Path",
|
|
1095
|
-
"type": "string"
|
|
1096
|
-
},
|
|
1097
|
-
"repo_id": {
|
|
1098
|
-
"title": "Repo Id",
|
|
1099
|
-
"type": "integer"
|
|
1100
|
-
}
|
|
1101
|
-
},
|
|
1102
|
-
"required": [
|
|
1103
|
-
"repo_id",
|
|
1104
|
-
"path",
|
|
1105
|
-
"branch"
|
|
1106
|
-
],
|
|
1107
|
-
"title": "AgentConfigSourceGithub",
|
|
1108
|
-
"type": "object"
|
|
1109
|
-
},
|
|
1110
|
-
"AgentConfigSystemFileRef": {
|
|
1111
|
-
"additionalProperties": false,
|
|
1112
|
-
"properties": {
|
|
1113
|
-
"file": {
|
|
1114
|
-
"title": "File",
|
|
1115
|
-
"type": "string"
|
|
1116
|
-
},
|
|
1117
|
-
"repository": {
|
|
1118
|
-
"anyOf": [
|
|
1119
|
-
{
|
|
1120
|
-
"$ref": "#/components/schemas/AgentConfigRepository"
|
|
1121
|
-
},
|
|
1122
|
-
{
|
|
1123
|
-
"type": "null"
|
|
1124
|
-
}
|
|
1125
|
-
]
|
|
1126
|
-
}
|
|
1127
|
-
},
|
|
1128
|
-
"required": [
|
|
1129
|
-
"file"
|
|
1130
|
-
],
|
|
1131
|
-
"title": "AgentConfigSystemFileRef",
|
|
1132
|
-
"type": "object"
|
|
1133
|
-
},
|
|
1134
4
|
"AgentTemplate": {
|
|
1135
5
|
"description": "A built-in agent template: a ready-to-use agent config plus the\nmetadata that describes it in the template gallery.",
|
|
1136
6
|
"properties": {
|
|
@@ -1672,20 +542,9 @@
|
|
|
1672
542
|
"Automation": {
|
|
1673
543
|
"description": "An automation: a saved agent definition that runs on its trigger or\nwhen invoked, plus where it syncs from and the state of that sync.",
|
|
1674
544
|
"properties": {
|
|
1675
|
-
"
|
|
1676
|
-
"$ref": "#/components/schemas/
|
|
1677
|
-
"description": "The
|
|
1678
|
-
},
|
|
1679
|
-
"agent_config_source_details": {
|
|
1680
|
-
"anyOf": [
|
|
1681
|
-
{
|
|
1682
|
-
"$ref": "#/components/schemas/AgentConfigSourceGithub"
|
|
1683
|
-
},
|
|
1684
|
-
{
|
|
1685
|
-
"type": "null"
|
|
1686
|
-
}
|
|
1687
|
-
],
|
|
1688
|
-
"description": "The repository, path, and branch the automation syncs from. Null only transiently, before the creating pull request's file lands on the branch."
|
|
545
|
+
"config": {
|
|
546
|
+
"$ref": "#/components/schemas/AutomationConfig",
|
|
547
|
+
"description": "The automation definition itself, in the same schema as its YAML file: identity, trigger, input contract, and the session block."
|
|
1689
548
|
},
|
|
1690
549
|
"created_at": {
|
|
1691
550
|
"description": "When the automation was created.",
|
|
@@ -1727,38 +586,192 @@
|
|
|
1727
586
|
"format": "date-time",
|
|
1728
587
|
"type": "string"
|
|
1729
588
|
},
|
|
1730
|
-
{
|
|
1731
|
-
"type": "null"
|
|
1732
|
-
}
|
|
1733
|
-
],
|
|
1734
|
-
"description": "When that most recent session was created.",
|
|
1735
|
-
"title": "Last Session Created At"
|
|
589
|
+
{
|
|
590
|
+
"type": "null"
|
|
591
|
+
}
|
|
592
|
+
],
|
|
593
|
+
"description": "When that most recent session was created.",
|
|
594
|
+
"title": "Last Session Created At"
|
|
595
|
+
},
|
|
596
|
+
"last_session_id": {
|
|
597
|
+
"anyOf": [
|
|
598
|
+
{
|
|
599
|
+
"type": "string"
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
"type": "null"
|
|
603
|
+
}
|
|
604
|
+
],
|
|
605
|
+
"description": "The most recent session this automation started, or null if it has never run.",
|
|
606
|
+
"title": "Last Session Id"
|
|
607
|
+
},
|
|
608
|
+
"last_sync_error": {
|
|
609
|
+
"anyOf": [
|
|
610
|
+
{
|
|
611
|
+
"type": "string"
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"type": "null"
|
|
615
|
+
}
|
|
616
|
+
],
|
|
617
|
+
"description": "The parse or validation error from the most recent sync attempt, or null when it succeeded. A non-null value means the automation is not running the YAML currently on the branch.",
|
|
618
|
+
"title": "Last Sync Error"
|
|
619
|
+
},
|
|
620
|
+
"last_synced_commit_sha": {
|
|
621
|
+
"anyOf": [
|
|
622
|
+
{
|
|
623
|
+
"type": "string"
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"type": "null"
|
|
627
|
+
}
|
|
628
|
+
],
|
|
629
|
+
"description": "The last commit the automation was synced from.",
|
|
630
|
+
"title": "Last Synced Commit Sha"
|
|
631
|
+
},
|
|
632
|
+
"managed_by": {
|
|
633
|
+
"$ref": "#/components/schemas/ConfigManagedBy",
|
|
634
|
+
"description": "Which writer owns this automation. \"github\" automations are defined by a file in a repository and are changed by editing that file; \"api\" automations have no file and are changed through this API."
|
|
635
|
+
},
|
|
636
|
+
"name": {
|
|
637
|
+
"anyOf": [
|
|
638
|
+
{
|
|
639
|
+
"type": "string"
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"type": "null"
|
|
643
|
+
}
|
|
644
|
+
],
|
|
645
|
+
"description": "The automation's account-unique addressable name (a slug of its display name); usable anywhere an automation is referenced, interchangeably with the id.",
|
|
646
|
+
"title": "Name"
|
|
647
|
+
},
|
|
648
|
+
"pending_pull_request_url": {
|
|
649
|
+
"anyOf": [
|
|
650
|
+
{
|
|
651
|
+
"type": "string"
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
"type": "null"
|
|
655
|
+
}
|
|
656
|
+
],
|
|
657
|
+
"description": "The open pull request that adds this automation's file. Non-null means the automation is not live yet: it starts running once the pull request merges and syncs.",
|
|
658
|
+
"title": "Pending Pull Request Url"
|
|
659
|
+
},
|
|
660
|
+
"sha": {
|
|
661
|
+
"description": "The definition's content identity: the version fingerprint frozen onto each session that runs it.",
|
|
662
|
+
"title": "Sha",
|
|
663
|
+
"type": "string"
|
|
664
|
+
},
|
|
665
|
+
"source_details": {
|
|
666
|
+
"anyOf": [
|
|
667
|
+
{
|
|
668
|
+
"$ref": "#/components/schemas/GithubSourceDetails"
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"type": "null"
|
|
672
|
+
}
|
|
673
|
+
],
|
|
674
|
+
"description": "The repository, path, and branch the automation syncs from. Null only transiently, before the creating pull request's file lands on the branch."
|
|
675
|
+
},
|
|
676
|
+
"updated_at": {
|
|
677
|
+
"description": "When the automation was last updated.",
|
|
678
|
+
"format": "date-time",
|
|
679
|
+
"title": "Updated At",
|
|
680
|
+
"type": "string"
|
|
681
|
+
}
|
|
682
|
+
},
|
|
683
|
+
"required": [
|
|
684
|
+
"id",
|
|
685
|
+
"sha",
|
|
686
|
+
"created_at",
|
|
687
|
+
"updated_at",
|
|
688
|
+
"managed_by",
|
|
689
|
+
"config"
|
|
690
|
+
],
|
|
691
|
+
"title": "Automation",
|
|
692
|
+
"type": "object"
|
|
693
|
+
},
|
|
694
|
+
"AutomationConfig": {
|
|
695
|
+
"additionalProperties": false,
|
|
696
|
+
"description": "A saved automation, as written in its YAML file: identity\n(`ellipsis`), when it runs (`trigger`), what goes in (`input`), and the\n`session:` block every session it starts is frozen from. Field order is\nthe canonical key order for files and `to_yaml` exports.",
|
|
697
|
+
"properties": {
|
|
698
|
+
"ellipsis": {
|
|
699
|
+
"$ref": "#/components/schemas/AutomationIdentity",
|
|
700
|
+
"default": {
|
|
701
|
+
"enabled": true,
|
|
702
|
+
"metadata": {
|
|
703
|
+
"annotations": {},
|
|
704
|
+
"labels": []
|
|
705
|
+
},
|
|
706
|
+
"version": "v1"
|
|
707
|
+
}
|
|
1736
708
|
},
|
|
1737
|
-
"
|
|
709
|
+
"input": {
|
|
1738
710
|
"anyOf": [
|
|
1739
711
|
{
|
|
1740
|
-
"
|
|
712
|
+
"$ref": "#/components/schemas/InputContract"
|
|
1741
713
|
},
|
|
1742
714
|
{
|
|
1743
715
|
"type": "null"
|
|
1744
716
|
}
|
|
1745
|
-
]
|
|
1746
|
-
"description": "The most recent session this automation started, or null if it has never run.",
|
|
1747
|
-
"title": "Last Session Id"
|
|
717
|
+
]
|
|
1748
718
|
},
|
|
1749
|
-
"
|
|
719
|
+
"session": {
|
|
720
|
+
"$ref": "#/components/schemas/SessionConfig",
|
|
721
|
+
"default": {
|
|
722
|
+
"budget": {},
|
|
723
|
+
"claude": {
|
|
724
|
+
"system": ""
|
|
725
|
+
},
|
|
726
|
+
"environment": {
|
|
727
|
+
"compute": {},
|
|
728
|
+
"hooks": {},
|
|
729
|
+
"image": {},
|
|
730
|
+
"mcp_servers": [],
|
|
731
|
+
"repositories": [],
|
|
732
|
+
"variables": []
|
|
733
|
+
},
|
|
734
|
+
"permissions": {
|
|
735
|
+
"ellipsis": true,
|
|
736
|
+
"github": {}
|
|
737
|
+
},
|
|
738
|
+
"skills": []
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
"trigger": {
|
|
1750
742
|
"anyOf": [
|
|
1751
743
|
{
|
|
1752
|
-
"
|
|
744
|
+
"discriminator": {
|
|
745
|
+
"mapping": {
|
|
746
|
+
"cron": "#/components/schemas/CronTrigger",
|
|
747
|
+
"react": "#/components/schemas/ReactTrigger"
|
|
748
|
+
},
|
|
749
|
+
"propertyName": "type"
|
|
750
|
+
},
|
|
751
|
+
"oneOf": [
|
|
752
|
+
{
|
|
753
|
+
"$ref": "#/components/schemas/CronTrigger"
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
"$ref": "#/components/schemas/ReactTrigger"
|
|
757
|
+
}
|
|
758
|
+
]
|
|
1753
759
|
},
|
|
1754
760
|
{
|
|
1755
761
|
"type": "null"
|
|
1756
762
|
}
|
|
1757
763
|
],
|
|
1758
|
-
"
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
764
|
+
"title": "Trigger"
|
|
765
|
+
}
|
|
766
|
+
},
|
|
767
|
+
"title": "AutomationConfig",
|
|
768
|
+
"type": "object"
|
|
769
|
+
},
|
|
770
|
+
"AutomationIdentity": {
|
|
771
|
+
"additionalProperties": false,
|
|
772
|
+
"description": "The Ellipsis product namespace for a config file: which schema this is\n(`version`), the human-facing identity (`name`/`description`), freeform\norganizational `metadata`, and whether the agent is `enabled`. The\npresence of a top-level `ellipsis:` mapping is what marks a YAML file as\nan Ellipsis agent config (vs arbitrary YAML that merely lives under a\nconfig directory) \u2014 see `yaml_is_ellipsis_config`.\n\n`enabled` is agent behavior, not freeform metadata, so it stays inside\nthe config `sha` (only `metadata` is sha-excluded). Whether a session\naccepts messages is a per-run choice (POST /v1/sessions `interactive`),\nnot a config one.",
|
|
773
|
+
"properties": {
|
|
774
|
+
"description": {
|
|
1762
775
|
"anyOf": [
|
|
1763
776
|
{
|
|
1764
777
|
"type": "string"
|
|
@@ -1767,12 +780,19 @@
|
|
|
1767
780
|
"type": "null"
|
|
1768
781
|
}
|
|
1769
782
|
],
|
|
1770
|
-
"
|
|
1771
|
-
"title": "Last Synced Commit Sha"
|
|
783
|
+
"title": "Description"
|
|
1772
784
|
},
|
|
1773
|
-
"
|
|
1774
|
-
"
|
|
1775
|
-
"
|
|
785
|
+
"enabled": {
|
|
786
|
+
"default": true,
|
|
787
|
+
"title": "Enabled",
|
|
788
|
+
"type": "boolean"
|
|
789
|
+
},
|
|
790
|
+
"metadata": {
|
|
791
|
+
"$ref": "#/components/schemas/ConfigMetadata",
|
|
792
|
+
"default": {
|
|
793
|
+
"annotations": {},
|
|
794
|
+
"labels": []
|
|
795
|
+
}
|
|
1776
796
|
},
|
|
1777
797
|
"name": {
|
|
1778
798
|
"anyOf": [
|
|
@@ -1783,42 +803,42 @@
|
|
|
1783
803
|
"type": "null"
|
|
1784
804
|
}
|
|
1785
805
|
],
|
|
1786
|
-
"description": "The automation's account-unique addressable name (a slug of its display name); usable anywhere an automation is referenced, interchangeably with the id.",
|
|
1787
806
|
"title": "Name"
|
|
1788
807
|
},
|
|
1789
|
-
"
|
|
1790
|
-
"
|
|
1791
|
-
|
|
1792
|
-
"type": "string"
|
|
1793
|
-
},
|
|
1794
|
-
{
|
|
1795
|
-
"type": "null"
|
|
1796
|
-
}
|
|
1797
|
-
],
|
|
1798
|
-
"description": "The open pull request that adds this automation's file. Non-null means the automation is not live yet: it starts running once the pull request merges and syncs.",
|
|
1799
|
-
"title": "Pending Pull Request Url"
|
|
1800
|
-
},
|
|
1801
|
-
"sha": {
|
|
1802
|
-
"description": "The definition's content identity: the version fingerprint frozen onto each session that runs it.",
|
|
1803
|
-
"title": "Sha",
|
|
808
|
+
"version": {
|
|
809
|
+
"default": "v1",
|
|
810
|
+
"title": "Version",
|
|
1804
811
|
"type": "string"
|
|
812
|
+
}
|
|
813
|
+
},
|
|
814
|
+
"title": "AutomationIdentity",
|
|
815
|
+
"type": "object"
|
|
816
|
+
},
|
|
817
|
+
"AutomationMetricsResponse": {
|
|
818
|
+
"description": "An automation's session distribution and trailing spend.",
|
|
819
|
+
"properties": {
|
|
820
|
+
"samples": {
|
|
821
|
+
"description": "One entry per finished session, unordered.",
|
|
822
|
+
"items": {
|
|
823
|
+
"$ref": "#/components/schemas/AutomationSessionSample"
|
|
824
|
+
},
|
|
825
|
+
"title": "Samples",
|
|
826
|
+
"type": "array"
|
|
1805
827
|
},
|
|
1806
|
-
"
|
|
1807
|
-
"description": "
|
|
1808
|
-
"
|
|
1809
|
-
|
|
1810
|
-
|
|
828
|
+
"spend_windows": {
|
|
829
|
+
"description": "Trailing spend versus the budget, one entry per window (1, 7, and 28 days).",
|
|
830
|
+
"items": {
|
|
831
|
+
"$ref": "#/components/schemas/AutomationSpendWindow"
|
|
832
|
+
},
|
|
833
|
+
"title": "Spend Windows",
|
|
834
|
+
"type": "array"
|
|
1811
835
|
}
|
|
1812
836
|
},
|
|
1813
837
|
"required": [
|
|
1814
|
-
"
|
|
1815
|
-
"
|
|
1816
|
-
"created_at",
|
|
1817
|
-
"updated_at",
|
|
1818
|
-
"managed_by",
|
|
1819
|
-
"agent_config"
|
|
838
|
+
"samples",
|
|
839
|
+
"spend_windows"
|
|
1820
840
|
],
|
|
1821
|
-
"title": "
|
|
841
|
+
"title": "AutomationMetricsResponse",
|
|
1822
842
|
"type": "object"
|
|
1823
843
|
},
|
|
1824
844
|
"AutomationResponse": {
|
|
@@ -1835,6 +855,66 @@
|
|
|
1835
855
|
"title": "AutomationResponse",
|
|
1836
856
|
"type": "object"
|
|
1837
857
|
},
|
|
858
|
+
"AutomationSessionSample": {
|
|
859
|
+
"description": "One finished session of the automation, reduced to the three figures\nthe distributions are drawn from.",
|
|
860
|
+
"properties": {
|
|
861
|
+
"cost": {
|
|
862
|
+
"description": "What the session cost, in millicents.",
|
|
863
|
+
"title": "Cost",
|
|
864
|
+
"type": "integer"
|
|
865
|
+
},
|
|
866
|
+
"duration_seconds": {
|
|
867
|
+
"description": "Wall-clock seconds from the session's creation to its last update.",
|
|
868
|
+
"title": "Duration Seconds",
|
|
869
|
+
"type": "number"
|
|
870
|
+
},
|
|
871
|
+
"tokens_total": {
|
|
872
|
+
"description": "Tokens the session consumed across every lane, including prompt-cache reads and writes.",
|
|
873
|
+
"title": "Tokens Total",
|
|
874
|
+
"type": "integer"
|
|
875
|
+
}
|
|
876
|
+
},
|
|
877
|
+
"required": [
|
|
878
|
+
"duration_seconds",
|
|
879
|
+
"cost",
|
|
880
|
+
"tokens_total"
|
|
881
|
+
],
|
|
882
|
+
"title": "AutomationSessionSample",
|
|
883
|
+
"type": "object"
|
|
884
|
+
},
|
|
885
|
+
"AutomationSpendWindow": {
|
|
886
|
+
"description": "The automation's trailing spend against its budget over one window.",
|
|
887
|
+
"properties": {
|
|
888
|
+
"limit_usd": {
|
|
889
|
+
"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.",
|
|
890
|
+
"title": "Limit Usd",
|
|
891
|
+
"type": "number"
|
|
892
|
+
},
|
|
893
|
+
"platform_max_usd": {
|
|
894
|
+
"description": "The platform ceiling for the window, in US dollars; a budget above it is clamped to it.",
|
|
895
|
+
"title": "Platform Max Usd",
|
|
896
|
+
"type": "number"
|
|
897
|
+
},
|
|
898
|
+
"spent_usd": {
|
|
899
|
+
"description": "What the automation's sessions cost over the window, in US dollars.",
|
|
900
|
+
"title": "Spent Usd",
|
|
901
|
+
"type": "number"
|
|
902
|
+
},
|
|
903
|
+
"window_days": {
|
|
904
|
+
"description": "The trailing window, in days: 1, 7, or 28.",
|
|
905
|
+
"title": "Window Days",
|
|
906
|
+
"type": "integer"
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
"required": [
|
|
910
|
+
"window_days",
|
|
911
|
+
"spent_usd",
|
|
912
|
+
"limit_usd",
|
|
913
|
+
"platform_max_usd"
|
|
914
|
+
],
|
|
915
|
+
"title": "AutomationSpendWindow",
|
|
916
|
+
"type": "object"
|
|
917
|
+
},
|
|
1838
918
|
"AutomationsListResponse": {
|
|
1839
919
|
"description": "The caller's automations.",
|
|
1840
920
|
"properties": {
|
|
@@ -1872,6 +952,57 @@
|
|
|
1872
952
|
"title": "BudgetCeiling",
|
|
1873
953
|
"type": "object"
|
|
1874
954
|
},
|
|
955
|
+
"BudgetConfig": {
|
|
956
|
+
"additionalProperties": false,
|
|
957
|
+
"properties": {
|
|
958
|
+
"day": {
|
|
959
|
+
"anyOf": [
|
|
960
|
+
{
|
|
961
|
+
"type": "number"
|
|
962
|
+
},
|
|
963
|
+
{
|
|
964
|
+
"type": "null"
|
|
965
|
+
}
|
|
966
|
+
],
|
|
967
|
+
"title": "Day"
|
|
968
|
+
},
|
|
969
|
+
"month": {
|
|
970
|
+
"anyOf": [
|
|
971
|
+
{
|
|
972
|
+
"type": "number"
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
"type": "null"
|
|
976
|
+
}
|
|
977
|
+
],
|
|
978
|
+
"title": "Month"
|
|
979
|
+
},
|
|
980
|
+
"session": {
|
|
981
|
+
"anyOf": [
|
|
982
|
+
{
|
|
983
|
+
"type": "number"
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
"type": "null"
|
|
987
|
+
}
|
|
988
|
+
],
|
|
989
|
+
"title": "Session"
|
|
990
|
+
},
|
|
991
|
+
"week": {
|
|
992
|
+
"anyOf": [
|
|
993
|
+
{
|
|
994
|
+
"type": "number"
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
"type": "null"
|
|
998
|
+
}
|
|
999
|
+
],
|
|
1000
|
+
"title": "Week"
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
"title": "BudgetConfig",
|
|
1004
|
+
"type": "object"
|
|
1005
|
+
},
|
|
1875
1006
|
"BudgetSource": {
|
|
1876
1007
|
"description": "Which layer actually determined the enforced budget.\n\nNot derivable from the run row alone (the run does not store the config\ncents or the account default), so we persist it for the UI / audit.",
|
|
1877
1008
|
"enum": [
|
|
@@ -1954,18 +1085,104 @@
|
|
|
1954
1085
|
"type": "string"
|
|
1955
1086
|
},
|
|
1956
1087
|
{
|
|
1957
|
-
"type": "null"
|
|
1088
|
+
"type": "null"
|
|
1089
|
+
}
|
|
1090
|
+
],
|
|
1091
|
+
"description": "When the budget period started, as an ISO timestamp.",
|
|
1092
|
+
"title": "Start"
|
|
1093
|
+
}
|
|
1094
|
+
},
|
|
1095
|
+
"required": [
|
|
1096
|
+
"start",
|
|
1097
|
+
"end"
|
|
1098
|
+
],
|
|
1099
|
+
"title": "BudgetWindow",
|
|
1100
|
+
"type": "object"
|
|
1101
|
+
},
|
|
1102
|
+
"ClaudeConfig": {
|
|
1103
|
+
"additionalProperties": false,
|
|
1104
|
+
"properties": {
|
|
1105
|
+
"effort": {
|
|
1106
|
+
"anyOf": [
|
|
1107
|
+
{
|
|
1108
|
+
"$ref": "#/components/schemas/EffortLevel"
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
"type": "null"
|
|
1112
|
+
}
|
|
1113
|
+
]
|
|
1114
|
+
},
|
|
1115
|
+
"fallback_model": {
|
|
1116
|
+
"anyOf": [
|
|
1117
|
+
{
|
|
1118
|
+
"type": "string"
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
"type": "null"
|
|
1122
|
+
}
|
|
1123
|
+
],
|
|
1124
|
+
"title": "Fallback Model"
|
|
1125
|
+
},
|
|
1126
|
+
"max_turns": {
|
|
1127
|
+
"anyOf": [
|
|
1128
|
+
{
|
|
1129
|
+
"exclusiveMinimum": 0.0,
|
|
1130
|
+
"type": "integer"
|
|
1131
|
+
},
|
|
1132
|
+
{
|
|
1133
|
+
"type": "null"
|
|
1134
|
+
}
|
|
1135
|
+
],
|
|
1136
|
+
"title": "Max Turns"
|
|
1137
|
+
},
|
|
1138
|
+
"model": {
|
|
1139
|
+
"anyOf": [
|
|
1140
|
+
{
|
|
1141
|
+
"type": "string"
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
"type": "null"
|
|
1145
|
+
}
|
|
1146
|
+
],
|
|
1147
|
+
"title": "Model"
|
|
1148
|
+
},
|
|
1149
|
+
"settings": {
|
|
1150
|
+
"anyOf": [
|
|
1151
|
+
{
|
|
1152
|
+
"$ref": "#/components/schemas/SettingsRef"
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
"type": "null"
|
|
1156
|
+
}
|
|
1157
|
+
]
|
|
1158
|
+
},
|
|
1159
|
+
"system": {
|
|
1160
|
+
"anyOf": [
|
|
1161
|
+
{
|
|
1162
|
+
"type": "string"
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
"$ref": "#/components/schemas/SystemFileRef"
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
"items": {
|
|
1169
|
+
"anyOf": [
|
|
1170
|
+
{
|
|
1171
|
+
"type": "string"
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
"$ref": "#/components/schemas/SystemFileRef"
|
|
1175
|
+
}
|
|
1176
|
+
]
|
|
1177
|
+
},
|
|
1178
|
+
"type": "array"
|
|
1958
1179
|
}
|
|
1959
1180
|
],
|
|
1960
|
-
"
|
|
1961
|
-
"title": "
|
|
1181
|
+
"default": "",
|
|
1182
|
+
"title": "System"
|
|
1962
1183
|
}
|
|
1963
1184
|
},
|
|
1964
|
-
"
|
|
1965
|
-
"start",
|
|
1966
|
-
"end"
|
|
1967
|
-
],
|
|
1968
|
-
"title": "BudgetWindow",
|
|
1185
|
+
"title": "ClaudeConfig",
|
|
1969
1186
|
"type": "object"
|
|
1970
1187
|
},
|
|
1971
1188
|
"ClaudeSessionRecord": {
|
|
@@ -2263,6 +1480,44 @@
|
|
|
2263
1480
|
"title": "CodexCommandExecutionItem",
|
|
2264
1481
|
"type": "object"
|
|
2265
1482
|
},
|
|
1483
|
+
"CodexConfig": {
|
|
1484
|
+
"additionalProperties": false,
|
|
1485
|
+
"description": "The `codex:` block \u2014 run this agent on OpenAI's Codex CLI instead of\nClaude Code. Declaring the block at all is what selects the harness\n(`AutomationConfig.harness`).\n\nDeliberately a small subset of `ClaudeConfig`: the fields omitted here\nare ones Codex has no equivalent for (`effort`, `fallback_model`,\n`settings`) or that the platform does not yet wire through for this harness\n(`max_turns`, `skills`, MCP servers). They are omitted rather than\naccepted-and-ignored, because `StrictConfigModel` forbids extra keys \u2014 so a\nconfig that sets one fails loudly at parse time instead of silently not doing\nit. The budget still bounds a run regardless.",
|
|
1486
|
+
"properties": {
|
|
1487
|
+
"model": {
|
|
1488
|
+
"default": "gpt-5.6-terra",
|
|
1489
|
+
"title": "Model",
|
|
1490
|
+
"type": "string"
|
|
1491
|
+
},
|
|
1492
|
+
"system": {
|
|
1493
|
+
"anyOf": [
|
|
1494
|
+
{
|
|
1495
|
+
"type": "string"
|
|
1496
|
+
},
|
|
1497
|
+
{
|
|
1498
|
+
"$ref": "#/components/schemas/SystemFileRef"
|
|
1499
|
+
},
|
|
1500
|
+
{
|
|
1501
|
+
"items": {
|
|
1502
|
+
"anyOf": [
|
|
1503
|
+
{
|
|
1504
|
+
"type": "string"
|
|
1505
|
+
},
|
|
1506
|
+
{
|
|
1507
|
+
"$ref": "#/components/schemas/SystemFileRef"
|
|
1508
|
+
}
|
|
1509
|
+
]
|
|
1510
|
+
},
|
|
1511
|
+
"type": "array"
|
|
1512
|
+
}
|
|
1513
|
+
],
|
|
1514
|
+
"default": "",
|
|
1515
|
+
"title": "System"
|
|
1516
|
+
}
|
|
1517
|
+
},
|
|
1518
|
+
"title": "CodexConfig",
|
|
1519
|
+
"type": "object"
|
|
1520
|
+
},
|
|
2266
1521
|
"CodexErrorEvent": {
|
|
2267
1522
|
"additionalProperties": true,
|
|
2268
1523
|
"properties": {
|
|
@@ -3032,6 +2287,55 @@
|
|
|
3032
2287
|
"title": "CodexWebSearchItem",
|
|
3033
2288
|
"type": "object"
|
|
3034
2289
|
},
|
|
2290
|
+
"ComputeConfig": {
|
|
2291
|
+
"additionalProperties": false,
|
|
2292
|
+
"description": "Sandbox compute sizing. Every field is optional; None inherits the\nplatform default (1 vCPU / 4096 MiB / 3600s \u2014 see DEFAULT_MODAL_* in\nmodels/ellipsis/sandboxes/sandbox.py). A resolved value outside the platform\nbounds fails validation loudly (a sync error on the config) rather than\nbeing clamped silently.\n\n`memory` and `timeout` each accept a shorthand string (\"8GB\", \"30m\") or an\nexplicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /\n`timeout_seconds` properties resolve either form to the canonical integer\nthe sandbox driver consumes.\n\n`timeout` is the max wall-clock the agent may run before the sandbox is\nkilled, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS \u2014 equal to the default, so\ntoday the knob only shortens a session; the cap matches the 1-hour validity\nof the sandbox's GitHub token). The worker's lease/visibility heartbeat\nceiling is derived from that cap, so a run at the max stays owned by its\nworker for its whole life.\n\nCompute is billed on the requested allocation over the sandbox's\nwall-clock lifetime, so a bigger/longer box costs proportionally more.",
|
|
2293
|
+
"properties": {
|
|
2294
|
+
"cpu": {
|
|
2295
|
+
"anyOf": [
|
|
2296
|
+
{
|
|
2297
|
+
"maximum": 16.0,
|
|
2298
|
+
"minimum": 0.125,
|
|
2299
|
+
"type": "number"
|
|
2300
|
+
},
|
|
2301
|
+
{
|
|
2302
|
+
"type": "null"
|
|
2303
|
+
}
|
|
2304
|
+
],
|
|
2305
|
+
"title": "Cpu"
|
|
2306
|
+
},
|
|
2307
|
+
"memory": {
|
|
2308
|
+
"anyOf": [
|
|
2309
|
+
{
|
|
2310
|
+
"type": "string"
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
"$ref": "#/components/schemas/MemorySize"
|
|
2314
|
+
},
|
|
2315
|
+
{
|
|
2316
|
+
"type": "null"
|
|
2317
|
+
}
|
|
2318
|
+
],
|
|
2319
|
+
"title": "Memory"
|
|
2320
|
+
},
|
|
2321
|
+
"timeout": {
|
|
2322
|
+
"anyOf": [
|
|
2323
|
+
{
|
|
2324
|
+
"type": "string"
|
|
2325
|
+
},
|
|
2326
|
+
{
|
|
2327
|
+
"$ref": "#/components/schemas/Duration"
|
|
2328
|
+
},
|
|
2329
|
+
{
|
|
2330
|
+
"type": "null"
|
|
2331
|
+
}
|
|
2332
|
+
],
|
|
2333
|
+
"title": "Timeout"
|
|
2334
|
+
}
|
|
2335
|
+
},
|
|
2336
|
+
"title": "ComputeConfig",
|
|
2337
|
+
"type": "object"
|
|
2338
|
+
},
|
|
3035
2339
|
"ConfigManagedBy": {
|
|
3036
2340
|
"description": "Which writer owns an agent: the repository file it is defined in, or\nthis API. Every agent has exactly one owner, fixed when it is created and\nchanged only by linking or unlinking it.",
|
|
3037
2341
|
"enum": [
|
|
@@ -3041,6 +2345,29 @@
|
|
|
3041
2345
|
"title": "ConfigManagedBy",
|
|
3042
2346
|
"type": "string"
|
|
3043
2347
|
},
|
|
2348
|
+
"ConfigMetadata": {
|
|
2349
|
+
"additionalProperties": false,
|
|
2350
|
+
"properties": {
|
|
2351
|
+
"annotations": {
|
|
2352
|
+
"additionalProperties": {
|
|
2353
|
+
"type": "string"
|
|
2354
|
+
},
|
|
2355
|
+
"default": {},
|
|
2356
|
+
"title": "Annotations",
|
|
2357
|
+
"type": "object"
|
|
2358
|
+
},
|
|
2359
|
+
"labels": {
|
|
2360
|
+
"default": [],
|
|
2361
|
+
"items": {
|
|
2362
|
+
"type": "string"
|
|
2363
|
+
},
|
|
2364
|
+
"title": "Labels",
|
|
2365
|
+
"type": "array"
|
|
2366
|
+
}
|
|
2367
|
+
},
|
|
2368
|
+
"title": "ConfigMetadata",
|
|
2369
|
+
"type": "object"
|
|
2370
|
+
},
|
|
3044
2371
|
"ContributorUsage": {
|
|
3045
2372
|
"description": "An author who merged a pull request in the window. The pull-request and\nline counts cover their merged pull requests; `reviews` counts reviews this\nperson also submitted.",
|
|
3046
2373
|
"properties": {
|
|
@@ -3103,8 +2430,8 @@
|
|
|
3103
2430
|
"description": "Parameters for creating an automation.",
|
|
3104
2431
|
"properties": {
|
|
3105
2432
|
"automation": {
|
|
3106
|
-
"$ref": "#/components/schemas/
|
|
3107
|
-
"description": "The automation's definition, in the same schema as a YAML file under
|
|
2433
|
+
"$ref": "#/components/schemas/AutomationConfig",
|
|
2434
|
+
"description": "The automation's definition, in the same schema as a YAML file under .ellipsis/."
|
|
3108
2435
|
}
|
|
3109
2436
|
},
|
|
3110
2437
|
"required": [
|
|
@@ -3117,7 +2444,7 @@
|
|
|
3117
2444
|
"description": "Parameters for creating an environment.",
|
|
3118
2445
|
"properties": {
|
|
3119
2446
|
"environment": {
|
|
3120
|
-
"$ref": "#/components/schemas/
|
|
2447
|
+
"$ref": "#/components/schemas/EnvironmentDocument",
|
|
3121
2448
|
"description": "The environment's definition."
|
|
3122
2449
|
}
|
|
3123
2450
|
},
|
|
@@ -3241,6 +2568,70 @@
|
|
|
3241
2568
|
"title": "CreateReviewRequest",
|
|
3242
2569
|
"type": "object"
|
|
3243
2570
|
},
|
|
2571
|
+
"CronTrigger": {
|
|
2572
|
+
"additionalProperties": false,
|
|
2573
|
+
"properties": {
|
|
2574
|
+
"schedule": {
|
|
2575
|
+
"title": "Schedule",
|
|
2576
|
+
"type": "string"
|
|
2577
|
+
},
|
|
2578
|
+
"type": {
|
|
2579
|
+
"const": "cron",
|
|
2580
|
+
"default": "cron",
|
|
2581
|
+
"title": "Type",
|
|
2582
|
+
"type": "string"
|
|
2583
|
+
}
|
|
2584
|
+
},
|
|
2585
|
+
"required": [
|
|
2586
|
+
"schedule"
|
|
2587
|
+
],
|
|
2588
|
+
"title": "CronTrigger",
|
|
2589
|
+
"type": "object"
|
|
2590
|
+
},
|
|
2591
|
+
"Duration": {
|
|
2592
|
+
"additionalProperties": false,
|
|
2593
|
+
"description": "A duration as explicit units, summed. Set any of `hours`/`minutes`/\n`seconds` (at least one). The alternative to the `30m`-style shorthand\nstring wherever a duration is accepted.",
|
|
2594
|
+
"properties": {
|
|
2595
|
+
"hours": {
|
|
2596
|
+
"anyOf": [
|
|
2597
|
+
{
|
|
2598
|
+
"minimum": 0.0,
|
|
2599
|
+
"type": "integer"
|
|
2600
|
+
},
|
|
2601
|
+
{
|
|
2602
|
+
"type": "null"
|
|
2603
|
+
}
|
|
2604
|
+
],
|
|
2605
|
+
"title": "Hours"
|
|
2606
|
+
},
|
|
2607
|
+
"minutes": {
|
|
2608
|
+
"anyOf": [
|
|
2609
|
+
{
|
|
2610
|
+
"minimum": 0.0,
|
|
2611
|
+
"type": "integer"
|
|
2612
|
+
},
|
|
2613
|
+
{
|
|
2614
|
+
"type": "null"
|
|
2615
|
+
}
|
|
2616
|
+
],
|
|
2617
|
+
"title": "Minutes"
|
|
2618
|
+
},
|
|
2619
|
+
"seconds": {
|
|
2620
|
+
"anyOf": [
|
|
2621
|
+
{
|
|
2622
|
+
"minimum": 0.0,
|
|
2623
|
+
"type": "integer"
|
|
2624
|
+
},
|
|
2625
|
+
{
|
|
2626
|
+
"type": "null"
|
|
2627
|
+
}
|
|
2628
|
+
],
|
|
2629
|
+
"title": "Seconds"
|
|
2630
|
+
}
|
|
2631
|
+
},
|
|
2632
|
+
"title": "Duration",
|
|
2633
|
+
"type": "object"
|
|
2634
|
+
},
|
|
3244
2635
|
"DurationPercentiles": {
|
|
3245
2636
|
"description": "Percentiles of a duration distribution, in hours. p0 = fastest,\np100 = slowest; the spread shows how merge latency varies.",
|
|
3246
2637
|
"properties": {
|
|
@@ -3362,6 +2753,37 @@
|
|
|
3362
2753
|
"title": "EllipsisGrant",
|
|
3363
2754
|
"type": "object"
|
|
3364
2755
|
},
|
|
2756
|
+
"EllipsisPermissions": {
|
|
2757
|
+
"additionalProperties": {
|
|
2758
|
+
"anyOf": [
|
|
2759
|
+
{
|
|
2760
|
+
"$ref": "#/components/schemas/Level"
|
|
2761
|
+
},
|
|
2762
|
+
{
|
|
2763
|
+
"$ref": "#/components/schemas/EllipsisGrant"
|
|
2764
|
+
},
|
|
2765
|
+
{
|
|
2766
|
+
"items": {
|
|
2767
|
+
"anyOf": [
|
|
2768
|
+
{
|
|
2769
|
+
"$ref": "#/components/schemas/Level"
|
|
2770
|
+
},
|
|
2771
|
+
{
|
|
2772
|
+
"$ref": "#/components/schemas/EllipsisGrant"
|
|
2773
|
+
}
|
|
2774
|
+
]
|
|
2775
|
+
},
|
|
2776
|
+
"type": "array"
|
|
2777
|
+
}
|
|
2778
|
+
]
|
|
2779
|
+
},
|
|
2780
|
+
"description": "`permissions.ellipsis` as a map: resource \u2192 level | grant | list of\ngrants. Levels are hierarchical (read < write < delete), so `write`\nincludes `read`. An unlisted resource is denied. The whole block is\nintersected with the platform's sandbox ceiling at token mint \u2014 it can\nnarrow what a sandbox token may do, never exceed it.",
|
|
2781
|
+
"propertyNames": {
|
|
2782
|
+
"$ref": "#/components/schemas/Resource"
|
|
2783
|
+
},
|
|
2784
|
+
"title": "EllipsisPermissions",
|
|
2785
|
+
"type": "object"
|
|
2786
|
+
},
|
|
3365
2787
|
"Environment": {
|
|
3366
2788
|
"description": "A saved environment: the machine agents run in (repositories,\nvariables, MCP servers, image, compute, hooks), defined once and\nreferenced by name or id from agent configs and session starts.",
|
|
3367
2789
|
"properties": {
|
|
@@ -3383,7 +2805,7 @@
|
|
|
3383
2805
|
"description": "The GitHub account that last edited the environment, when known."
|
|
3384
2806
|
},
|
|
3385
2807
|
"environment": {
|
|
3386
|
-
"$ref": "#/components/schemas/
|
|
2808
|
+
"$ref": "#/components/schemas/EnvironmentDocument",
|
|
3387
2809
|
"description": "The environment definition itself, as parsed from its YAML."
|
|
3388
2810
|
},
|
|
3389
2811
|
"id": {
|
|
@@ -3432,7 +2854,7 @@
|
|
|
3432
2854
|
"source_details": {
|
|
3433
2855
|
"anyOf": [
|
|
3434
2856
|
{
|
|
3435
|
-
"$ref": "#/components/schemas/
|
|
2857
|
+
"$ref": "#/components/schemas/GithubSourceDetails"
|
|
3436
2858
|
},
|
|
3437
2859
|
{
|
|
3438
2860
|
"type": "null"
|
|
@@ -3459,23 +2881,80 @@
|
|
|
3459
2881
|
"title": "Environment",
|
|
3460
2882
|
"type": "object"
|
|
3461
2883
|
},
|
|
3462
|
-
"EnvironmentConfig": {
|
|
2884
|
+
"EnvironmentConfig": {
|
|
2885
|
+
"additionalProperties": false,
|
|
2886
|
+
"description": "Everything about the environment (the sandbox) the agent runs in: which\n`repositories` are cloned into it, which environment `variables` it gets,\nits `compute` sizing, how its `image` is customized, and lifecycle `hooks`.\nWhat the agent may *do* from that environment is the top-level\n`permissions:` block, not this one.\n\nEach `variables` entry names a variable to inject; with an inline `value` it\nis hardcoded, without one it is resolved from the account's sandbox-secrets\nstore. Only the named variables reach this agent; the rest of the account's\nstored variables never do. This is how a config brings in the config and\ncredentials a custom CLI needs.",
|
|
2887
|
+
"properties": {
|
|
2888
|
+
"compute": {
|
|
2889
|
+
"$ref": "#/components/schemas/ComputeConfig",
|
|
2890
|
+
"default": {}
|
|
2891
|
+
},
|
|
2892
|
+
"hooks": {
|
|
2893
|
+
"$ref": "#/components/schemas/EnvironmentHooks",
|
|
2894
|
+
"default": {}
|
|
2895
|
+
},
|
|
2896
|
+
"image": {
|
|
2897
|
+
"$ref": "#/components/schemas/EnvironmentImage",
|
|
2898
|
+
"default": {}
|
|
2899
|
+
},
|
|
2900
|
+
"mcp_servers": {
|
|
2901
|
+
"default": [],
|
|
2902
|
+
"items": {
|
|
2903
|
+
"anyOf": [
|
|
2904
|
+
{
|
|
2905
|
+
"type": "string"
|
|
2906
|
+
},
|
|
2907
|
+
{
|
|
2908
|
+
"$ref": "#/components/schemas/McpServerRef"
|
|
2909
|
+
},
|
|
2910
|
+
{
|
|
2911
|
+
"$ref": "#/components/schemas/McpStdioServer"
|
|
2912
|
+
},
|
|
2913
|
+
{
|
|
2914
|
+
"$ref": "#/components/schemas/McpRemoteServer"
|
|
2915
|
+
}
|
|
2916
|
+
]
|
|
2917
|
+
},
|
|
2918
|
+
"title": "Mcp Servers",
|
|
2919
|
+
"type": "array"
|
|
2920
|
+
},
|
|
2921
|
+
"repositories": {
|
|
2922
|
+
"default": [],
|
|
2923
|
+
"items": {
|
|
2924
|
+
"$ref": "#/components/schemas/RepositoryRef"
|
|
2925
|
+
},
|
|
2926
|
+
"title": "Repositories",
|
|
2927
|
+
"type": "array"
|
|
2928
|
+
},
|
|
2929
|
+
"variables": {
|
|
2930
|
+
"default": [],
|
|
2931
|
+
"items": {
|
|
2932
|
+
"$ref": "#/components/schemas/EnvironmentVariable"
|
|
2933
|
+
},
|
|
2934
|
+
"title": "Variables",
|
|
2935
|
+
"type": "array"
|
|
2936
|
+
}
|
|
2937
|
+
},
|
|
2938
|
+
"title": "EnvironmentConfig",
|
|
2939
|
+
"type": "object"
|
|
2940
|
+
},
|
|
2941
|
+
"EnvironmentDocument": {
|
|
3463
2942
|
"additionalProperties": false,
|
|
3464
2943
|
"description": "A parsed environment document: identity plus the environment body.\n\nThe body fields are flattened to the top level of the file (not nested\nunder an `environment:` key) \u2014 the file *is* the environment, so nesting\nwould be ceremony. `to_environment()` projects the body for substitution\ninto an agent config.",
|
|
3465
2944
|
"properties": {
|
|
3466
2945
|
"compute": {
|
|
3467
|
-
"$ref": "#/components/schemas/
|
|
2946
|
+
"$ref": "#/components/schemas/ComputeConfig",
|
|
3468
2947
|
"default": {}
|
|
3469
2948
|
},
|
|
3470
2949
|
"ellipsis": {
|
|
3471
|
-
"$ref": "#/components/schemas/
|
|
2950
|
+
"$ref": "#/components/schemas/EnvironmentIdentity"
|
|
3472
2951
|
},
|
|
3473
2952
|
"hooks": {
|
|
3474
|
-
"$ref": "#/components/schemas/
|
|
2953
|
+
"$ref": "#/components/schemas/EnvironmentHooks",
|
|
3475
2954
|
"default": {}
|
|
3476
2955
|
},
|
|
3477
2956
|
"image": {
|
|
3478
|
-
"$ref": "#/components/schemas/
|
|
2957
|
+
"$ref": "#/components/schemas/EnvironmentImage",
|
|
3479
2958
|
"default": {}
|
|
3480
2959
|
},
|
|
3481
2960
|
"mcp_servers": {
|
|
@@ -3486,13 +2965,13 @@
|
|
|
3486
2965
|
"type": "string"
|
|
3487
2966
|
},
|
|
3488
2967
|
{
|
|
3489
|
-
"$ref": "#/components/schemas/
|
|
2968
|
+
"$ref": "#/components/schemas/McpServerRef"
|
|
3490
2969
|
},
|
|
3491
2970
|
{
|
|
3492
|
-
"$ref": "#/components/schemas/
|
|
2971
|
+
"$ref": "#/components/schemas/McpStdioServer"
|
|
3493
2972
|
},
|
|
3494
2973
|
{
|
|
3495
|
-
"$ref": "#/components/schemas/
|
|
2974
|
+
"$ref": "#/components/schemas/McpRemoteServer"
|
|
3496
2975
|
}
|
|
3497
2976
|
]
|
|
3498
2977
|
},
|
|
@@ -3502,7 +2981,7 @@
|
|
|
3502
2981
|
"repositories": {
|
|
3503
2982
|
"default": [],
|
|
3504
2983
|
"items": {
|
|
3505
|
-
"$ref": "#/components/schemas/
|
|
2984
|
+
"$ref": "#/components/schemas/RepositoryRef"
|
|
3506
2985
|
},
|
|
3507
2986
|
"title": "Repositories",
|
|
3508
2987
|
"type": "array"
|
|
@@ -3510,7 +2989,7 @@
|
|
|
3510
2989
|
"variables": {
|
|
3511
2990
|
"default": [],
|
|
3512
2991
|
"items": {
|
|
3513
|
-
"$ref": "#/components/schemas/
|
|
2992
|
+
"$ref": "#/components/schemas/EnvironmentVariable"
|
|
3514
2993
|
},
|
|
3515
2994
|
"title": "Variables",
|
|
3516
2995
|
"type": "array"
|
|
@@ -3519,10 +2998,40 @@
|
|
|
3519
2998
|
"required": [
|
|
3520
2999
|
"ellipsis"
|
|
3521
3000
|
],
|
|
3522
|
-
"title": "
|
|
3001
|
+
"title": "EnvironmentDocument",
|
|
3002
|
+
"type": "object"
|
|
3003
|
+
},
|
|
3004
|
+
"EnvironmentHooks": {
|
|
3005
|
+
"additionalProperties": false,
|
|
3006
|
+
"description": "Shell scripts run at points in the sandbox lifecycle, each as the sandbox\nuser with the sandbox's environment variables available. A non-zero exit\nfails the run (exit_status = LIFECYCLE_HOOK_FAILED) and is not retried.\n\n`post_start` runs after the container starts, before any repo is cloned \u2014\nrepo-independent setup (authenticate a CLI, e.g. `doppler setup`). On Modal\nthe repo is baked into the image so it is incidentally present, but\n`post_start` must not depend on repo contents (that's `post_clone`).\n\n`post_clone` runs after all repos are cloned/checked out, before the agent \u2014\nrepo-dependent setup (`pip install -r requirements.txt`, codegen).\n\nHooks run on every run and their output is never cached. A dependency\ninstall whose result should be reused across runs belongs in `image.setup`\n(baked into the cached image) instead; keep hooks for per-run work \u2014 e.g.\nanything that touches run-scoped credentials.",
|
|
3007
|
+
"properties": {
|
|
3008
|
+
"post_clone": {
|
|
3009
|
+
"anyOf": [
|
|
3010
|
+
{
|
|
3011
|
+
"type": "string"
|
|
3012
|
+
},
|
|
3013
|
+
{
|
|
3014
|
+
"type": "null"
|
|
3015
|
+
}
|
|
3016
|
+
],
|
|
3017
|
+
"title": "Post Clone"
|
|
3018
|
+
},
|
|
3019
|
+
"post_start": {
|
|
3020
|
+
"anyOf": [
|
|
3021
|
+
{
|
|
3022
|
+
"type": "string"
|
|
3023
|
+
},
|
|
3024
|
+
{
|
|
3025
|
+
"type": "null"
|
|
3026
|
+
}
|
|
3027
|
+
],
|
|
3028
|
+
"title": "Post Start"
|
|
3029
|
+
}
|
|
3030
|
+
},
|
|
3031
|
+
"title": "EnvironmentHooks",
|
|
3523
3032
|
"type": "object"
|
|
3524
3033
|
},
|
|
3525
|
-
"
|
|
3034
|
+
"EnvironmentIdentity": {
|
|
3526
3035
|
"additionalProperties": false,
|
|
3527
3036
|
"description": "The Ellipsis namespace of an environment file. `kind: environment` is\nwhat routes a synced YAML here instead of to the agent-config parser \u2014\nan agent config carries no `kind` (or `kind: agent`, tolerated nowhere:\nabsence is the agent marker).",
|
|
3528
3037
|
"properties": {
|
|
@@ -3543,7 +3052,7 @@
|
|
|
3543
3052
|
"type": "string"
|
|
3544
3053
|
},
|
|
3545
3054
|
"metadata": {
|
|
3546
|
-
"$ref": "#/components/schemas/
|
|
3055
|
+
"$ref": "#/components/schemas/ConfigMetadata",
|
|
3547
3056
|
"default": {
|
|
3548
3057
|
"annotations": {},
|
|
3549
3058
|
"labels": []
|
|
@@ -3564,7 +3073,37 @@
|
|
|
3564
3073
|
"required": [
|
|
3565
3074
|
"kind"
|
|
3566
3075
|
],
|
|
3567
|
-
"title": "
|
|
3076
|
+
"title": "EnvironmentIdentity",
|
|
3077
|
+
"type": "object"
|
|
3078
|
+
},
|
|
3079
|
+
"EnvironmentImage": {
|
|
3080
|
+
"additionalProperties": false,
|
|
3081
|
+
"description": "How to customize the container image the agent runs in. You\ncontribute appended layers (`dockerfile_append`) and a build-time script\n(`setup`) only \u2014 Ellipsis owns FROM / base tooling / entrypoint / user.\nToday only inline bodies are supported; a file reference (resolved at the\nrun's SHA) will come later.\n\nThe split: `dockerfile_append` runs when the image is assembled, before any\nrepo exists \u2014 toolchain installs (a package manager binary, apt packages).\n`setup` runs at image-build time *after* the configured repositories are\nchecked out, and its output is captured by the filesystem snapshot that\nbecomes the cached image \u2014 dependency installs (`poetry install`,\n`npm install`), so later runs start with deps already on disk. Neither runs\nper run; that's `hooks.post_start` / `hooks.post_clone`.",
|
|
3082
|
+
"properties": {
|
|
3083
|
+
"dockerfile_append": {
|
|
3084
|
+
"anyOf": [
|
|
3085
|
+
{
|
|
3086
|
+
"type": "string"
|
|
3087
|
+
},
|
|
3088
|
+
{
|
|
3089
|
+
"type": "null"
|
|
3090
|
+
}
|
|
3091
|
+
],
|
|
3092
|
+
"title": "Dockerfile Append"
|
|
3093
|
+
},
|
|
3094
|
+
"setup": {
|
|
3095
|
+
"anyOf": [
|
|
3096
|
+
{
|
|
3097
|
+
"type": "string"
|
|
3098
|
+
},
|
|
3099
|
+
{
|
|
3100
|
+
"type": "null"
|
|
3101
|
+
}
|
|
3102
|
+
],
|
|
3103
|
+
"title": "Setup"
|
|
3104
|
+
}
|
|
3105
|
+
},
|
|
3106
|
+
"title": "EnvironmentImage",
|
|
3568
3107
|
"type": "object"
|
|
3569
3108
|
},
|
|
3570
3109
|
"EnvironmentResponse": {
|
|
@@ -3593,6 +3132,32 @@
|
|
|
3593
3132
|
"title": "EnvironmentSource",
|
|
3594
3133
|
"type": "string"
|
|
3595
3134
|
},
|
|
3135
|
+
"EnvironmentVariable": {
|
|
3136
|
+
"additionalProperties": false,
|
|
3137
|
+
"description": "One environment variable injected into the agent's sandbox.\n\n`value`, when set, is a literal injected as-is \u2014 use it for non-secret\nconfig (LOG_LEVEL, an API base URL). When `value` is omitted the value is\nresolved at run time from the account's sandbox-secrets store (dashboard\n/ `PUT /v1/secrets`) by `name`, so a secret can be injected without\never putting it in the config file. Either way the variable only reaches\nagents that name it.",
|
|
3138
|
+
"properties": {
|
|
3139
|
+
"name": {
|
|
3140
|
+
"title": "Name",
|
|
3141
|
+
"type": "string"
|
|
3142
|
+
},
|
|
3143
|
+
"value": {
|
|
3144
|
+
"anyOf": [
|
|
3145
|
+
{
|
|
3146
|
+
"type": "string"
|
|
3147
|
+
},
|
|
3148
|
+
{
|
|
3149
|
+
"type": "null"
|
|
3150
|
+
}
|
|
3151
|
+
],
|
|
3152
|
+
"title": "Value"
|
|
3153
|
+
}
|
|
3154
|
+
},
|
|
3155
|
+
"required": [
|
|
3156
|
+
"name"
|
|
3157
|
+
],
|
|
3158
|
+
"title": "EnvironmentVariable",
|
|
3159
|
+
"type": "object"
|
|
3160
|
+
},
|
|
3596
3161
|
"EnvironmentsListResponse": {
|
|
3597
3162
|
"description": "The caller's saved environments.",
|
|
3598
3163
|
"properties": {
|
|
@@ -4345,6 +3910,46 @@
|
|
|
4345
3910
|
"title": "GithubMembersListResponse",
|
|
4346
3911
|
"type": "object"
|
|
4347
3912
|
},
|
|
3913
|
+
"GithubPermissions": {
|
|
3914
|
+
"additionalProperties": false,
|
|
3915
|
+
"description": "The agent's GitHub access: the scope of the installation token minted for\nits sandbox \u2014 the credential `git`, `gh`, and the GitHub MCP server\nauthenticate with.\n\nBy default the token carries the installation's full permissions on all of\nthe installation's repositories. `permissions` narrows what it may do:\nthe string `read_only` grants read access to contents, issues, metadata and\npull requests; a map requests explicit levels per GitHub App permission\nscope (e.g. `{contents: read, pull_requests: write}`) and may never exceed\nwhat the installation granted. `repositories` scopes the token to exactly\nthe listed repos, by name (they must belong to the installation).\n\nRestriction is enforced by GitHub, not by Ellipsis: the token itself is\nminted with the reduced scope, so nothing running in the sandbox can\nexceed it.",
|
|
3916
|
+
"properties": {
|
|
3917
|
+
"permissions": {
|
|
3918
|
+
"anyOf": [
|
|
3919
|
+
{
|
|
3920
|
+
"const": "read_only",
|
|
3921
|
+
"type": "string"
|
|
3922
|
+
},
|
|
3923
|
+
{
|
|
3924
|
+
"additionalProperties": {
|
|
3925
|
+
"type": "string"
|
|
3926
|
+
},
|
|
3927
|
+
"type": "object"
|
|
3928
|
+
},
|
|
3929
|
+
{
|
|
3930
|
+
"type": "null"
|
|
3931
|
+
}
|
|
3932
|
+
],
|
|
3933
|
+
"title": "Permissions"
|
|
3934
|
+
},
|
|
3935
|
+
"repositories": {
|
|
3936
|
+
"anyOf": [
|
|
3937
|
+
{
|
|
3938
|
+
"items": {
|
|
3939
|
+
"type": "string"
|
|
3940
|
+
},
|
|
3941
|
+
"type": "array"
|
|
3942
|
+
},
|
|
3943
|
+
{
|
|
3944
|
+
"type": "null"
|
|
3945
|
+
}
|
|
3946
|
+
],
|
|
3947
|
+
"title": "Repositories"
|
|
3948
|
+
}
|
|
3949
|
+
},
|
|
3950
|
+
"title": "GithubPermissions",
|
|
3951
|
+
"type": "object"
|
|
3952
|
+
},
|
|
4348
3953
|
"GithubRepositoriesListResponse": {
|
|
4349
3954
|
"description": "The repositories connected to the account's GitHub installation.",
|
|
4350
3955
|
"properties": {
|
|
@@ -4420,6 +4025,30 @@
|
|
|
4420
4025
|
"title": "GithubRepository",
|
|
4421
4026
|
"type": "object"
|
|
4422
4027
|
},
|
|
4028
|
+
"GithubSourceDetails": {
|
|
4029
|
+
"description": "Identifies the file a GitHub-sourced agent config is synced from.\n\nKeyed on the repository ID (not owner/name) so repository and org renames\ndon't orphan the config; resolve display names from gh_repositories at\nread time.",
|
|
4030
|
+
"properties": {
|
|
4031
|
+
"branch": {
|
|
4032
|
+
"title": "Branch",
|
|
4033
|
+
"type": "string"
|
|
4034
|
+
},
|
|
4035
|
+
"path": {
|
|
4036
|
+
"title": "Path",
|
|
4037
|
+
"type": "string"
|
|
4038
|
+
},
|
|
4039
|
+
"repo_id": {
|
|
4040
|
+
"title": "Repo Id",
|
|
4041
|
+
"type": "integer"
|
|
4042
|
+
}
|
|
4043
|
+
},
|
|
4044
|
+
"required": [
|
|
4045
|
+
"repo_id",
|
|
4046
|
+
"path",
|
|
4047
|
+
"branch"
|
|
4048
|
+
],
|
|
4049
|
+
"title": "GithubSourceDetails",
|
|
4050
|
+
"type": "object"
|
|
4051
|
+
},
|
|
4423
4052
|
"GithubUser": {
|
|
4424
4053
|
"description": "This is a full user account. It's the most amount of info we need to represent a GitHub user.\n\nRepresents both a public and private user.",
|
|
4425
4054
|
"properties": {
|
|
@@ -4821,6 +4450,33 @@
|
|
|
4821
4450
|
"title": "Harness",
|
|
4822
4451
|
"type": "string"
|
|
4823
4452
|
},
|
|
4453
|
+
"ImageAttachment": {
|
|
4454
|
+
"description": "One image on a request body, base64 inline (the Claude Code paste\nshape). Shared by `POST /v1/sessions` and `POST /v1/sessions/{id}/messages`.",
|
|
4455
|
+
"properties": {
|
|
4456
|
+
"data": {
|
|
4457
|
+
"description": "The raw image bytes, base64-encoded. 5 MiB cap.",
|
|
4458
|
+
"title": "Data",
|
|
4459
|
+
"type": "string"
|
|
4460
|
+
},
|
|
4461
|
+
"media_type": {
|
|
4462
|
+
"description": "The image's MIME type: image/png, image/jpeg, image/gif, or image/webp. The bytes must match.",
|
|
4463
|
+
"enum": [
|
|
4464
|
+
"image/png",
|
|
4465
|
+
"image/jpeg",
|
|
4466
|
+
"image/gif",
|
|
4467
|
+
"image/webp"
|
|
4468
|
+
],
|
|
4469
|
+
"title": "Media Type",
|
|
4470
|
+
"type": "string"
|
|
4471
|
+
}
|
|
4472
|
+
},
|
|
4473
|
+
"required": [
|
|
4474
|
+
"media_type",
|
|
4475
|
+
"data"
|
|
4476
|
+
],
|
|
4477
|
+
"title": "ImageAttachment",
|
|
4478
|
+
"type": "object"
|
|
4479
|
+
},
|
|
4824
4480
|
"IngestTranscriptRequest": {
|
|
4825
4481
|
"description": "A batch of raw transcript lines pushed from inside a session's\nsandbox.",
|
|
4826
4482
|
"properties": {
|
|
@@ -4845,6 +4501,37 @@
|
|
|
4845
4501
|
"title": "IngestTranscriptRequest",
|
|
4846
4502
|
"type": "object"
|
|
4847
4503
|
},
|
|
4504
|
+
"InputContract": {
|
|
4505
|
+
"additionalProperties": false,
|
|
4506
|
+
"description": "The typed input contract: what goes INTO a session (the trigger is\nwhen it happens; this is what goes in).\n\n`json_schema` types the payload a caller-started session takes\n(`POST /v1/sessions` `input`, validated at the door; required when\ndeclared). It is illegal on a react-triggered agent \u2014 react payloads are\nplatform-shaped (the published surface field sets), not caller-shaped.\n\n`message` is the initial-message template: exact `{{path}}` substitution\nover the caller payload (or, on a react agent, over the surface's\npublished fields), no conditionals/loops/filters. Refs are validated at\ndeploy time against the governing field set (see AutomationConfig's\n`_check_input`).",
|
|
4507
|
+
"properties": {
|
|
4508
|
+
"json_schema": {
|
|
4509
|
+
"anyOf": [
|
|
4510
|
+
{
|
|
4511
|
+
"additionalProperties": true,
|
|
4512
|
+
"type": "object"
|
|
4513
|
+
},
|
|
4514
|
+
{
|
|
4515
|
+
"type": "null"
|
|
4516
|
+
}
|
|
4517
|
+
],
|
|
4518
|
+
"title": "Json Schema"
|
|
4519
|
+
},
|
|
4520
|
+
"message": {
|
|
4521
|
+
"anyOf": [
|
|
4522
|
+
{
|
|
4523
|
+
"type": "string"
|
|
4524
|
+
},
|
|
4525
|
+
{
|
|
4526
|
+
"type": "null"
|
|
4527
|
+
}
|
|
4528
|
+
],
|
|
4529
|
+
"title": "Message"
|
|
4530
|
+
}
|
|
4531
|
+
},
|
|
4532
|
+
"title": "InputContract",
|
|
4533
|
+
"type": "object"
|
|
4534
|
+
},
|
|
4848
4535
|
"IssueAction": {
|
|
4849
4536
|
"enum": [
|
|
4850
4537
|
"opened",
|
|
@@ -5135,7 +4822,7 @@
|
|
|
5135
4822
|
"type": "null"
|
|
5136
4823
|
}
|
|
5137
4824
|
],
|
|
5138
|
-
"description": "File path within the repo. Omit for the default
|
|
4825
|
+
"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).",
|
|
5139
4826
|
"title": "Path"
|
|
5140
4827
|
},
|
|
5141
4828
|
"repository": {
|
|
@@ -5218,16 +4905,95 @@
|
|
|
5218
4905
|
"description": "The linked Slack user's email, if known.",
|
|
5219
4906
|
"title": "Slack Email"
|
|
5220
4907
|
},
|
|
5221
|
-
"slack_user_id": {
|
|
5222
|
-
"description": "The linked Slack user id.",
|
|
5223
|
-
"title": "Slack User Id",
|
|
4908
|
+
"slack_user_id": {
|
|
4909
|
+
"description": "The linked Slack user id.",
|
|
4910
|
+
"title": "Slack User Id",
|
|
4911
|
+
"type": "string"
|
|
4912
|
+
}
|
|
4913
|
+
},
|
|
4914
|
+
"required": [
|
|
4915
|
+
"slack_user_id"
|
|
4916
|
+
],
|
|
4917
|
+
"title": "LinkedSlackIdentity",
|
|
4918
|
+
"type": "object"
|
|
4919
|
+
},
|
|
4920
|
+
"McpRemoteServer": {
|
|
4921
|
+
"additionalProperties": false,
|
|
4922
|
+
"description": "A bring-your-own remote MCP server: the harness talks HTTP to `url`.\nNothing runs in the sandbox image. `headers` carry static auth (e.g.\n`Authorization: Bearer ${TOKEN}`); values may embed `${NAME}` secret\nreferences, resolved at run time from the account's secrets store.",
|
|
4923
|
+
"properties": {
|
|
4924
|
+
"headers": {
|
|
4925
|
+
"additionalProperties": {
|
|
4926
|
+
"type": "string"
|
|
4927
|
+
},
|
|
4928
|
+
"default": {},
|
|
4929
|
+
"title": "Headers",
|
|
4930
|
+
"type": "object"
|
|
4931
|
+
},
|
|
4932
|
+
"name": {
|
|
4933
|
+
"title": "Name",
|
|
4934
|
+
"type": "string"
|
|
4935
|
+
},
|
|
4936
|
+
"url": {
|
|
4937
|
+
"title": "Url",
|
|
4938
|
+
"type": "string"
|
|
4939
|
+
}
|
|
4940
|
+
},
|
|
4941
|
+
"required": [
|
|
4942
|
+
"name",
|
|
4943
|
+
"url"
|
|
4944
|
+
],
|
|
4945
|
+
"title": "McpRemoteServer",
|
|
4946
|
+
"type": "object"
|
|
4947
|
+
},
|
|
4948
|
+
"McpServerRef": {
|
|
4949
|
+
"additionalProperties": false,
|
|
4950
|
+
"description": "One built-in MCP server this agent opts into by name (`linear`/`slack`).\nA name reference over the connected built-in set \u2014 the platform manages the\nserver's transport and credentials. It only matters when the named\nintegration is set to `opt_in` inclusion; an integration in the default\n`all_sessions` mode is added regardless. For a server the platform does not\nprovide, define it instead (`McpStdioServer` /\n`McpRemoteServer`).",
|
|
4951
|
+
"properties": {
|
|
4952
|
+
"name": {
|
|
4953
|
+
"title": "Name",
|
|
4954
|
+
"type": "string"
|
|
4955
|
+
}
|
|
4956
|
+
},
|
|
4957
|
+
"required": [
|
|
4958
|
+
"name"
|
|
4959
|
+
],
|
|
4960
|
+
"title": "McpServerRef",
|
|
4961
|
+
"type": "object"
|
|
4962
|
+
},
|
|
4963
|
+
"McpStdioServer": {
|
|
4964
|
+
"additionalProperties": false,
|
|
4965
|
+
"description": "A bring-your-own stdio MCP server: the harness spawns `command` inside\nthe sandbox and speaks JSON-RPC over its stdin/stdout. The command must be\nrunnable in the sandbox image \u2014 install its runtime via `image.setup` /\n`image.dockerfile_append` if the base image lacks it.\n\n`env` values may embed `${NAME}` references, resolved at run time from the\naccount's secrets store (see `mcp_secret_refs`); everything else is passed\nliterally.",
|
|
4966
|
+
"properties": {
|
|
4967
|
+
"args": {
|
|
4968
|
+
"default": [],
|
|
4969
|
+
"items": {
|
|
4970
|
+
"type": "string"
|
|
4971
|
+
},
|
|
4972
|
+
"title": "Args",
|
|
4973
|
+
"type": "array"
|
|
4974
|
+
},
|
|
4975
|
+
"command": {
|
|
4976
|
+
"title": "Command",
|
|
4977
|
+
"type": "string"
|
|
4978
|
+
},
|
|
4979
|
+
"env": {
|
|
4980
|
+
"additionalProperties": {
|
|
4981
|
+
"type": "string"
|
|
4982
|
+
},
|
|
4983
|
+
"default": {},
|
|
4984
|
+
"title": "Env",
|
|
4985
|
+
"type": "object"
|
|
4986
|
+
},
|
|
4987
|
+
"name": {
|
|
4988
|
+
"title": "Name",
|
|
5224
4989
|
"type": "string"
|
|
5225
4990
|
}
|
|
5226
4991
|
},
|
|
5227
4992
|
"required": [
|
|
5228
|
-
"
|
|
4993
|
+
"name",
|
|
4994
|
+
"command"
|
|
5229
4995
|
],
|
|
5230
|
-
"title": "
|
|
4996
|
+
"title": "McpStdioServer",
|
|
5231
4997
|
"type": "object"
|
|
5232
4998
|
},
|
|
5233
4999
|
"MemoriesListResponse": {
|
|
@@ -5360,6 +5126,38 @@
|
|
|
5360
5126
|
"title": "MemoryResponse",
|
|
5361
5127
|
"type": "object"
|
|
5362
5128
|
},
|
|
5129
|
+
"MemorySize": {
|
|
5130
|
+
"additionalProperties": false,
|
|
5131
|
+
"description": "A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).\nSet any of `gb`/`mb` (at least one). The alternative to the `8GB`-style\nshorthand string.",
|
|
5132
|
+
"properties": {
|
|
5133
|
+
"gb": {
|
|
5134
|
+
"anyOf": [
|
|
5135
|
+
{
|
|
5136
|
+
"minimum": 0.0,
|
|
5137
|
+
"type": "integer"
|
|
5138
|
+
},
|
|
5139
|
+
{
|
|
5140
|
+
"type": "null"
|
|
5141
|
+
}
|
|
5142
|
+
],
|
|
5143
|
+
"title": "Gb"
|
|
5144
|
+
},
|
|
5145
|
+
"mb": {
|
|
5146
|
+
"anyOf": [
|
|
5147
|
+
{
|
|
5148
|
+
"minimum": 0.0,
|
|
5149
|
+
"type": "integer"
|
|
5150
|
+
},
|
|
5151
|
+
{
|
|
5152
|
+
"type": "null"
|
|
5153
|
+
}
|
|
5154
|
+
],
|
|
5155
|
+
"title": "Mb"
|
|
5156
|
+
}
|
|
5157
|
+
},
|
|
5158
|
+
"title": "MemorySize",
|
|
5159
|
+
"type": "object"
|
|
5160
|
+
},
|
|
5363
5161
|
"MemorySummary": {
|
|
5364
5162
|
"description": "One entry in the index: a memory with every field except `content`.\n\nContent is the only omission, and it's the whole reason this shape exists \u2014\nan account can hold 2,000 memories of 100 KB each, so a listing that carried\ncontent would be a 200 MB response.",
|
|
5365
5163
|
"properties": {
|
|
@@ -5569,18 +5367,6 @@
|
|
|
5569
5367
|
"$ref": "#/components/schemas/BudgetCeiling",
|
|
5570
5368
|
"description": "The organization's spend ceilings."
|
|
5571
5369
|
},
|
|
5572
|
-
"default_environment": {
|
|
5573
|
-
"anyOf": [
|
|
5574
|
-
{
|
|
5575
|
-
"type": "string"
|
|
5576
|
-
},
|
|
5577
|
-
{
|
|
5578
|
-
"type": "null"
|
|
5579
|
-
}
|
|
5580
|
-
],
|
|
5581
|
-
"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.",
|
|
5582
|
-
"title": "Default Environment"
|
|
5583
|
-
},
|
|
5584
5370
|
"default_model": {
|
|
5585
5371
|
"anyOf": [
|
|
5586
5372
|
{
|
|
@@ -5597,6 +5383,22 @@
|
|
|
5597
5383
|
"title": "OrganizationSettings",
|
|
5598
5384
|
"type": "object"
|
|
5599
5385
|
},
|
|
5386
|
+
"OutputConfig": {
|
|
5387
|
+
"additionalProperties": false,
|
|
5388
|
+
"description": "The typed output contract: the JSON Schema the agent must exit through\n(the StructuredOutput exit tool). Read back via\nGET /v1/sessions/{id}/output.",
|
|
5389
|
+
"properties": {
|
|
5390
|
+
"json_schema": {
|
|
5391
|
+
"additionalProperties": true,
|
|
5392
|
+
"title": "Json Schema",
|
|
5393
|
+
"type": "object"
|
|
5394
|
+
}
|
|
5395
|
+
},
|
|
5396
|
+
"required": [
|
|
5397
|
+
"json_schema"
|
|
5398
|
+
],
|
|
5399
|
+
"title": "OutputConfig",
|
|
5400
|
+
"type": "object"
|
|
5401
|
+
},
|
|
5600
5402
|
"ParentKind": {
|
|
5601
5403
|
"description": "How a session relates to its predecessor (parent_agent_session_id) \u2014\nthe ONE \"preceded-by\" chain for every predecessor relationship. Routing\nreads this when the distinction matters.\n\nCONTINUATION \u2014 a follow-up in the same conversation surface (e.g. a Slack\nthread reply spawning a fresh session on the same thread).\nRESUME \u2014 a conversation re-hosted on a new box after its sandbox was torn\ndown (interactive platform; later phase).",
|
|
5602
5404
|
"enum": [
|
|
@@ -5606,6 +5408,33 @@
|
|
|
5606
5408
|
"title": "ParentKind",
|
|
5607
5409
|
"type": "string"
|
|
5608
5410
|
},
|
|
5411
|
+
"PermissionsConfig": {
|
|
5412
|
+
"additionalProperties": false,
|
|
5413
|
+
"description": "What the agent is allowed to touch, per credential the platform mints\ninto its sandbox. Distinct from `environment:`, which is where the agent\nruns; this is what it may do from there.\n\n`ellipsis` scopes the sandbox's Ellipsis API token\n(`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates\nwith). `true` / the string `all` (the default) grant the full sandbox\nceiling \u2014 everything a sandbox token can ever do. A map narrows it per\nresource (see `EllipsisPermissions`); the minted token carries\nthe intersection, so a config can only ever reduce access. `false` fails\nvalidation \u2014 an agent with no API token cannot report its own progress.\n\n`github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) \u2014\nsee `GithubPermissions`. GitHub enforces it at mint time.",
|
|
5414
|
+
"properties": {
|
|
5415
|
+
"ellipsis": {
|
|
5416
|
+
"anyOf": [
|
|
5417
|
+
{
|
|
5418
|
+
"enum": [
|
|
5419
|
+
true,
|
|
5420
|
+
"all"
|
|
5421
|
+
]
|
|
5422
|
+
},
|
|
5423
|
+
{
|
|
5424
|
+
"$ref": "#/components/schemas/EllipsisPermissions"
|
|
5425
|
+
}
|
|
5426
|
+
],
|
|
5427
|
+
"default": true,
|
|
5428
|
+
"title": "Ellipsis"
|
|
5429
|
+
},
|
|
5430
|
+
"github": {
|
|
5431
|
+
"$ref": "#/components/schemas/GithubPermissions",
|
|
5432
|
+
"default": {}
|
|
5433
|
+
}
|
|
5434
|
+
},
|
|
5435
|
+
"title": "PermissionsConfig",
|
|
5436
|
+
"type": "object"
|
|
5437
|
+
},
|
|
5609
5438
|
"PollCliAuthResponse": {
|
|
5610
5439
|
"description": "The state of a device-code flow. Poll until `status` leaves `pending`.",
|
|
5611
5440
|
"properties": {
|
|
@@ -6103,6 +5932,79 @@
|
|
|
6103
5932
|
"title": "ReactSlackChannel",
|
|
6104
5933
|
"type": "object"
|
|
6105
5934
|
},
|
|
5935
|
+
"ReactTrigger": {
|
|
5936
|
+
"additionalProperties": false,
|
|
5937
|
+
"properties": {
|
|
5938
|
+
"issue": {
|
|
5939
|
+
"anyOf": [
|
|
5940
|
+
{
|
|
5941
|
+
"$ref": "#/components/schemas/ReactIssue"
|
|
5942
|
+
},
|
|
5943
|
+
{
|
|
5944
|
+
"type": "null"
|
|
5945
|
+
}
|
|
5946
|
+
]
|
|
5947
|
+
},
|
|
5948
|
+
"linear_issue": {
|
|
5949
|
+
"anyOf": [
|
|
5950
|
+
{
|
|
5951
|
+
"$ref": "#/components/schemas/ReactLinearIssue"
|
|
5952
|
+
},
|
|
5953
|
+
{
|
|
5954
|
+
"type": "null"
|
|
5955
|
+
}
|
|
5956
|
+
]
|
|
5957
|
+
},
|
|
5958
|
+
"pull_request": {
|
|
5959
|
+
"anyOf": [
|
|
5960
|
+
{
|
|
5961
|
+
"$ref": "#/components/schemas/ReactPullRequest"
|
|
5962
|
+
},
|
|
5963
|
+
{
|
|
5964
|
+
"type": "null"
|
|
5965
|
+
}
|
|
5966
|
+
]
|
|
5967
|
+
},
|
|
5968
|
+
"push": {
|
|
5969
|
+
"anyOf": [
|
|
5970
|
+
{
|
|
5971
|
+
"$ref": "#/components/schemas/ReactPush"
|
|
5972
|
+
},
|
|
5973
|
+
{
|
|
5974
|
+
"type": "null"
|
|
5975
|
+
}
|
|
5976
|
+
]
|
|
5977
|
+
},
|
|
5978
|
+
"sentry": {
|
|
5979
|
+
"anyOf": [
|
|
5980
|
+
{
|
|
5981
|
+
"$ref": "#/components/schemas/ReactSentry"
|
|
5982
|
+
},
|
|
5983
|
+
{
|
|
5984
|
+
"type": "null"
|
|
5985
|
+
}
|
|
5986
|
+
]
|
|
5987
|
+
},
|
|
5988
|
+
"slack_channel": {
|
|
5989
|
+
"anyOf": [
|
|
5990
|
+
{
|
|
5991
|
+
"$ref": "#/components/schemas/ReactSlackChannel"
|
|
5992
|
+
},
|
|
5993
|
+
{
|
|
5994
|
+
"type": "null"
|
|
5995
|
+
}
|
|
5996
|
+
]
|
|
5997
|
+
},
|
|
5998
|
+
"type": {
|
|
5999
|
+
"const": "react",
|
|
6000
|
+
"default": "react",
|
|
6001
|
+
"title": "Type",
|
|
6002
|
+
"type": "string"
|
|
6003
|
+
}
|
|
6004
|
+
},
|
|
6005
|
+
"title": "ReactTrigger",
|
|
6006
|
+
"type": "object"
|
|
6007
|
+
},
|
|
6106
6008
|
"RecentPullRequest": {
|
|
6107
6009
|
"description": "One pull request in the recent-activity table.",
|
|
6108
6010
|
"properties": {
|
|
@@ -6310,6 +6212,42 @@
|
|
|
6310
6212
|
}
|
|
6311
6213
|
]
|
|
6312
6214
|
},
|
|
6215
|
+
"RepositoryRef": {
|
|
6216
|
+
"additionalProperties": false,
|
|
6217
|
+
"properties": {
|
|
6218
|
+
"name": {
|
|
6219
|
+
"title": "Name",
|
|
6220
|
+
"type": "string"
|
|
6221
|
+
},
|
|
6222
|
+
"owner": {
|
|
6223
|
+
"anyOf": [
|
|
6224
|
+
{
|
|
6225
|
+
"type": "string"
|
|
6226
|
+
},
|
|
6227
|
+
{
|
|
6228
|
+
"type": "null"
|
|
6229
|
+
}
|
|
6230
|
+
],
|
|
6231
|
+
"title": "Owner"
|
|
6232
|
+
},
|
|
6233
|
+
"ref": {
|
|
6234
|
+
"anyOf": [
|
|
6235
|
+
{
|
|
6236
|
+
"type": "string"
|
|
6237
|
+
},
|
|
6238
|
+
{
|
|
6239
|
+
"type": "null"
|
|
6240
|
+
}
|
|
6241
|
+
],
|
|
6242
|
+
"title": "Ref"
|
|
6243
|
+
}
|
|
6244
|
+
},
|
|
6245
|
+
"required": [
|
|
6246
|
+
"name"
|
|
6247
|
+
],
|
|
6248
|
+
"title": "RepositoryRef",
|
|
6249
|
+
"type": "object"
|
|
6250
|
+
},
|
|
6313
6251
|
"RepositorySelection": {
|
|
6314
6252
|
"enum": [
|
|
6315
6253
|
"all",
|
|
@@ -7209,11 +7147,44 @@
|
|
|
7209
7147
|
"ReviewPullRequest": {
|
|
7210
7148
|
"description": "The pull request a review ran on.",
|
|
7211
7149
|
"properties": {
|
|
7150
|
+
"author": {
|
|
7151
|
+
"anyOf": [
|
|
7152
|
+
{
|
|
7153
|
+
"$ref": "#/components/schemas/ReviewPullRequestAuthor"
|
|
7154
|
+
},
|
|
7155
|
+
{
|
|
7156
|
+
"type": "null"
|
|
7157
|
+
}
|
|
7158
|
+
],
|
|
7159
|
+
"description": "Who opened the pull request, or null when Ellipsis has not ingested the pull request yet."
|
|
7160
|
+
},
|
|
7161
|
+
"base_sha": {
|
|
7162
|
+
"description": "The pull request's base commit when the review was created.",
|
|
7163
|
+
"title": "Base Sha",
|
|
7164
|
+
"type": "string"
|
|
7165
|
+
},
|
|
7166
|
+
"head_sha": {
|
|
7167
|
+
"description": "The pull request's head commit the review ran against (the same as `scope.head`).",
|
|
7168
|
+
"title": "Head Sha",
|
|
7169
|
+
"type": "string"
|
|
7170
|
+
},
|
|
7212
7171
|
"number": {
|
|
7213
7172
|
"description": "The pull request number.",
|
|
7214
7173
|
"title": "Number",
|
|
7215
7174
|
"type": "integer"
|
|
7216
7175
|
},
|
|
7176
|
+
"title": {
|
|
7177
|
+
"anyOf": [
|
|
7178
|
+
{
|
|
7179
|
+
"type": "string"
|
|
7180
|
+
},
|
|
7181
|
+
{
|
|
7182
|
+
"type": "null"
|
|
7183
|
+
}
|
|
7184
|
+
],
|
|
7185
|
+
"description": "The pull request's title, or null when Ellipsis has not ingested the pull request yet.",
|
|
7186
|
+
"title": "Title"
|
|
7187
|
+
},
|
|
7217
7188
|
"url": {
|
|
7218
7189
|
"description": "The pull request's URL on GitHub.",
|
|
7219
7190
|
"title": "Url",
|
|
@@ -7222,11 +7193,46 @@
|
|
|
7222
7193
|
},
|
|
7223
7194
|
"required": [
|
|
7224
7195
|
"number",
|
|
7225
|
-
"url"
|
|
7196
|
+
"url",
|
|
7197
|
+
"base_sha",
|
|
7198
|
+
"head_sha"
|
|
7226
7199
|
],
|
|
7227
7200
|
"title": "ReviewPullRequest",
|
|
7228
7201
|
"type": "object"
|
|
7229
7202
|
},
|
|
7203
|
+
"ReviewPullRequestAuthor": {
|
|
7204
|
+
"description": "The GitHub account that opened the pull request.",
|
|
7205
|
+
"properties": {
|
|
7206
|
+
"avatar_url": {
|
|
7207
|
+
"description": "The account's avatar URL.",
|
|
7208
|
+
"title": "Avatar Url",
|
|
7209
|
+
"type": "string"
|
|
7210
|
+
},
|
|
7211
|
+
"id": {
|
|
7212
|
+
"description": "The account's GitHub id.",
|
|
7213
|
+
"title": "Id",
|
|
7214
|
+
"type": "integer"
|
|
7215
|
+
},
|
|
7216
|
+
"login": {
|
|
7217
|
+
"description": "The account's GitHub login.",
|
|
7218
|
+
"title": "Login",
|
|
7219
|
+
"type": "string"
|
|
7220
|
+
},
|
|
7221
|
+
"type": {
|
|
7222
|
+
"description": "The account type: \"User\", \"Organization\", or \"Bot\".",
|
|
7223
|
+
"title": "Type",
|
|
7224
|
+
"type": "string"
|
|
7225
|
+
}
|
|
7226
|
+
},
|
|
7227
|
+
"required": [
|
|
7228
|
+
"id",
|
|
7229
|
+
"login",
|
|
7230
|
+
"avatar_url",
|
|
7231
|
+
"type"
|
|
7232
|
+
],
|
|
7233
|
+
"title": "ReviewPullRequestAuthor",
|
|
7234
|
+
"type": "object"
|
|
7235
|
+
},
|
|
7230
7236
|
"ReviewRepoFacet": {
|
|
7231
7237
|
"description": "A repository filter option for the reviews view.",
|
|
7232
7238
|
"properties": {
|
|
@@ -8481,8 +8487,16 @@
|
|
|
8481
8487
|
"description": "Optional retry-safety key, unique per (session, key): a retry with the same key returns the original message \u2014 no duplicate message, no double turn, no double spend. The SDK auto-generates one per send.",
|
|
8482
8488
|
"title": "Idempotency Key"
|
|
8483
8489
|
},
|
|
8490
|
+
"images": {
|
|
8491
|
+
"description": "Images attached to the message, base64 inline \u2014 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.",
|
|
8492
|
+
"items": {
|
|
8493
|
+
"$ref": "#/components/schemas/ImageAttachment"
|
|
8494
|
+
},
|
|
8495
|
+
"title": "Images",
|
|
8496
|
+
"type": "array"
|
|
8497
|
+
},
|
|
8484
8498
|
"message": {
|
|
8485
|
-
"description": "The message text.",
|
|
8499
|
+
"description": "The message text. May be empty when `images` is not.",
|
|
8486
8500
|
"title": "Message",
|
|
8487
8501
|
"type": "string"
|
|
8488
8502
|
}
|
|
@@ -8543,18 +8557,29 @@
|
|
|
8543
8557
|
"Session": {
|
|
8544
8558
|
"description": "An agent session: one conversation with an agent, from trigger to\nterminal state. Returned by `GET /v1/sessions/{id}` and carried by the\nsession stream's `session`/`snapshot` frames \u2014 REST and stream never\ndisagree about what a session looks like.",
|
|
8545
8559
|
"properties": {
|
|
8546
|
-
"agent": {
|
|
8547
|
-
"$ref": "#/components/schemas/SessionAgent",
|
|
8548
|
-
"description": "The agent that ran: the config the session executed, where that config came from, and any override merged into it."
|
|
8549
|
-
},
|
|
8550
8560
|
"attribution": {
|
|
8551
8561
|
"$ref": "#/components/schemas/SessionAttribution",
|
|
8552
8562
|
"description": "The principal this session is attributed to."
|
|
8553
8563
|
},
|
|
8564
|
+
"automation": {
|
|
8565
|
+
"anyOf": [
|
|
8566
|
+
{
|
|
8567
|
+
"$ref": "#/components/schemas/SessionAutomation"
|
|
8568
|
+
},
|
|
8569
|
+
{
|
|
8570
|
+
"type": "null"
|
|
8571
|
+
}
|
|
8572
|
+
],
|
|
8573
|
+
"description": "The automation the session was started from, or null for a raw session started with POST /v1/sessions."
|
|
8574
|
+
},
|
|
8554
8575
|
"budget": {
|
|
8555
8576
|
"$ref": "#/components/schemas/SessionBudget",
|
|
8556
8577
|
"description": "The spend budget enforced for this session."
|
|
8557
8578
|
},
|
|
8579
|
+
"config": {
|
|
8580
|
+
"$ref": "#/components/schemas/SessionConfig",
|
|
8581
|
+
"description": "What the session ran on, frozen when it was created: the harness block, the resolved environment, permissions, skills, output contract, and budget."
|
|
8582
|
+
},
|
|
8558
8583
|
"context_repository": {
|
|
8559
8584
|
"anyOf": [
|
|
8560
8585
|
{
|
|
@@ -8579,7 +8604,7 @@
|
|
|
8579
8604
|
},
|
|
8580
8605
|
"environment": {
|
|
8581
8606
|
"$ref": "#/components/schemas/SessionEnvironment",
|
|
8582
|
-
"description": "The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is
|
|
8607
|
+
"description": "The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is `config.environment`."
|
|
8583
8608
|
},
|
|
8584
8609
|
"exit_status": {
|
|
8585
8610
|
"anyOf": [
|
|
@@ -8680,7 +8705,7 @@
|
|
|
8680
8705
|
},
|
|
8681
8706
|
"source": {
|
|
8682
8707
|
"$ref": "#/components/schemas/SessionSource",
|
|
8683
|
-
"description": "Where the session came from (e.g. react,
|
|
8708
|
+
"description": "Where the session came from (e.g. react, web, api, cli, mention, cron)."
|
|
8684
8709
|
},
|
|
8685
8710
|
"status": {
|
|
8686
8711
|
"$ref": "#/components/schemas/SessionStatus",
|
|
@@ -8737,55 +8762,11 @@
|
|
|
8737
8762
|
"status",
|
|
8738
8763
|
"surface",
|
|
8739
8764
|
"prompting",
|
|
8740
|
-
"
|
|
8765
|
+
"config"
|
|
8741
8766
|
],
|
|
8742
8767
|
"title": "Session",
|
|
8743
8768
|
"type": "object"
|
|
8744
8769
|
},
|
|
8745
|
-
"SessionAgent": {
|
|
8746
|
-
"description": "The agent this session ran: the definition it actually executed, where\nthat definition came from, and the diff that was merged in \u2014 the same\neffective-value-plus-provenance shape `SessionBudget` uses.\n\n`config` is the snapshot frozen when the session was created;\n`automation_id` points at the automation as it exists NOW. They diverge\nlegitimately: a YAML edit after the session started, or any `override`,\nleaves the pointer describing something the session never ran.",
|
|
8747
|
-
"properties": {
|
|
8748
|
-
"automation_id": {
|
|
8749
|
-
"anyOf": [
|
|
8750
|
-
{
|
|
8751
|
-
"type": "string"
|
|
8752
|
-
},
|
|
8753
|
-
{
|
|
8754
|
-
"type": "null"
|
|
8755
|
-
}
|
|
8756
|
-
],
|
|
8757
|
-
"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.",
|
|
8758
|
-
"title": "Automation Id"
|
|
8759
|
-
},
|
|
8760
|
-
"config": {
|
|
8761
|
-
"$ref": "#/components/schemas/AgentConfig",
|
|
8762
|
-
"description": "The agent definition the session actually ran, frozen when the session was created."
|
|
8763
|
-
},
|
|
8764
|
-
"override": {
|
|
8765
|
-
"anyOf": [
|
|
8766
|
-
{
|
|
8767
|
-
"additionalProperties": true,
|
|
8768
|
-
"type": "object"
|
|
8769
|
-
},
|
|
8770
|
-
{
|
|
8771
|
-
"type": "null"
|
|
8772
|
-
}
|
|
8773
|
-
],
|
|
8774
|
-
"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.",
|
|
8775
|
-
"title": "Override"
|
|
8776
|
-
},
|
|
8777
|
-
"source": {
|
|
8778
|
-
"$ref": "#/components/schemas/AgentConfigSource",
|
|
8779
|
-
"description": "How this session's config was chosen."
|
|
8780
|
-
}
|
|
8781
|
-
},
|
|
8782
|
-
"required": [
|
|
8783
|
-
"config",
|
|
8784
|
-
"source"
|
|
8785
|
-
],
|
|
8786
|
-
"title": "SessionAgent",
|
|
8787
|
-
"type": "object"
|
|
8788
|
-
},
|
|
8789
8770
|
"SessionAttribution": {
|
|
8790
8771
|
"description": "The principal a session is attributed to: what kind, its id, and \u2014 when\nthe kind is a GitHub user \u2014 the resolved display snippet.",
|
|
8791
8772
|
"properties": {
|
|
@@ -8827,6 +8808,32 @@
|
|
|
8827
8808
|
"title": "SessionAttribution",
|
|
8828
8809
|
"type": "object"
|
|
8829
8810
|
},
|
|
8811
|
+
"SessionAutomation": {
|
|
8812
|
+
"description": "The automation this session was started from: the definition frozen\nwhen the session was created, and the saved automation it came from as it\nexists NOW. They diverge legitimately \u2014 a YAML edit after the session\nstarted leaves the pointer describing something the session never ran.",
|
|
8813
|
+
"properties": {
|
|
8814
|
+
"config": {
|
|
8815
|
+
"$ref": "#/components/schemas/AutomationConfig",
|
|
8816
|
+
"description": "The automation definition the session was started from, frozen when the session was created."
|
|
8817
|
+
},
|
|
8818
|
+
"id": {
|
|
8819
|
+
"anyOf": [
|
|
8820
|
+
{
|
|
8821
|
+
"type": "string"
|
|
8822
|
+
},
|
|
8823
|
+
{
|
|
8824
|
+
"type": "null"
|
|
8825
|
+
}
|
|
8826
|
+
],
|
|
8827
|
+
"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.",
|
|
8828
|
+
"title": "Id"
|
|
8829
|
+
}
|
|
8830
|
+
},
|
|
8831
|
+
"required": [
|
|
8832
|
+
"config"
|
|
8833
|
+
],
|
|
8834
|
+
"title": "SessionAutomation",
|
|
8835
|
+
"type": "object"
|
|
8836
|
+
},
|
|
8830
8837
|
"SessionBudget": {
|
|
8831
8838
|
"description": "The spend budget actually enforced for this session, and which layer of\nthe cascade set it.",
|
|
8832
8839
|
"properties": {
|
|
@@ -8845,6 +8852,78 @@
|
|
|
8845
8852
|
"title": "SessionBudget",
|
|
8846
8853
|
"type": "object"
|
|
8847
8854
|
},
|
|
8855
|
+
"SessionConfig": {
|
|
8856
|
+
"additionalProperties": false,
|
|
8857
|
+
"description": "What one session runs on: the harness block(s), where it runs, what it\nmay touch, its skills, its exit contract, and its spend cap. Every session\nfreezes one of these (`agent_sessions.session_config`); an automation\ncarries one under `session:` (`AutomationConfig.session`); and\n`POST /v1/sessions` is this shape flattened onto the request body, plus the\nrun settings. Nothing in here is an automation's identity or trigger \u2014\nthose belong to `AutomationConfig`.\n\nField order is the canonical key order for `session:` blocks and YAML\nexports: what runs (`claude`/`codex`), where (`environment`), what it may\ntouch (`permissions`), then the rest.",
|
|
8858
|
+
"properties": {
|
|
8859
|
+
"budget": {
|
|
8860
|
+
"$ref": "#/components/schemas/BudgetConfig",
|
|
8861
|
+
"default": {}
|
|
8862
|
+
},
|
|
8863
|
+
"claude": {
|
|
8864
|
+
"$ref": "#/components/schemas/ClaudeConfig",
|
|
8865
|
+
"default": {
|
|
8866
|
+
"system": ""
|
|
8867
|
+
}
|
|
8868
|
+
},
|
|
8869
|
+
"codex": {
|
|
8870
|
+
"anyOf": [
|
|
8871
|
+
{
|
|
8872
|
+
"$ref": "#/components/schemas/CodexConfig"
|
|
8873
|
+
},
|
|
8874
|
+
{
|
|
8875
|
+
"type": "null"
|
|
8876
|
+
}
|
|
8877
|
+
]
|
|
8878
|
+
},
|
|
8879
|
+
"environment": {
|
|
8880
|
+
"anyOf": [
|
|
8881
|
+
{
|
|
8882
|
+
"type": "string"
|
|
8883
|
+
},
|
|
8884
|
+
{
|
|
8885
|
+
"$ref": "#/components/schemas/EnvironmentConfig"
|
|
8886
|
+
}
|
|
8887
|
+
],
|
|
8888
|
+
"default": {
|
|
8889
|
+
"compute": {},
|
|
8890
|
+
"hooks": {},
|
|
8891
|
+
"image": {},
|
|
8892
|
+
"mcp_servers": [],
|
|
8893
|
+
"repositories": [],
|
|
8894
|
+
"variables": []
|
|
8895
|
+
},
|
|
8896
|
+
"title": "Environment"
|
|
8897
|
+
},
|
|
8898
|
+
"output": {
|
|
8899
|
+
"anyOf": [
|
|
8900
|
+
{
|
|
8901
|
+
"$ref": "#/components/schemas/OutputConfig"
|
|
8902
|
+
},
|
|
8903
|
+
{
|
|
8904
|
+
"type": "null"
|
|
8905
|
+
}
|
|
8906
|
+
]
|
|
8907
|
+
},
|
|
8908
|
+
"permissions": {
|
|
8909
|
+
"$ref": "#/components/schemas/PermissionsConfig",
|
|
8910
|
+
"default": {
|
|
8911
|
+
"ellipsis": true,
|
|
8912
|
+
"github": {}
|
|
8913
|
+
}
|
|
8914
|
+
},
|
|
8915
|
+
"skills": {
|
|
8916
|
+
"default": [],
|
|
8917
|
+
"items": {
|
|
8918
|
+
"$ref": "#/components/schemas/SkillRef"
|
|
8919
|
+
},
|
|
8920
|
+
"title": "Skills",
|
|
8921
|
+
"type": "array"
|
|
8922
|
+
}
|
|
8923
|
+
},
|
|
8924
|
+
"title": "SessionConfig",
|
|
8925
|
+
"type": "object"
|
|
8926
|
+
},
|
|
8848
8927
|
"SessionCost": {
|
|
8849
8928
|
"description": "What a session (or one turn of it) cost, in millicents.\n\n`llm` is deliberately NOT called `tokens`: it would sit beside the `tokens`\nobject and read as \"the token count's cost\" rather than \"the cost of the\nLLM leg\".",
|
|
8850
8929
|
"properties": {
|
|
@@ -8882,8 +8961,35 @@
|
|
|
8882
8961
|
"title": "SessionCost",
|
|
8883
8962
|
"type": "object"
|
|
8884
8963
|
},
|
|
8964
|
+
"SessionDiffResponse": {
|
|
8965
|
+
"description": "A session's uncommitted working-tree changes, one patch per file.",
|
|
8966
|
+
"properties": {
|
|
8967
|
+
"files": {
|
|
8968
|
+
"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.",
|
|
8969
|
+
"items": {
|
|
8970
|
+
"$ref": "#/components/schemas/SessionGitPatchFile"
|
|
8971
|
+
},
|
|
8972
|
+
"title": "Files",
|
|
8973
|
+
"type": "array"
|
|
8974
|
+
},
|
|
8975
|
+
"omitted_paths": {
|
|
8976
|
+
"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.",
|
|
8977
|
+
"items": {
|
|
8978
|
+
"type": "string"
|
|
8979
|
+
},
|
|
8980
|
+
"title": "Omitted Paths",
|
|
8981
|
+
"type": "array"
|
|
8982
|
+
}
|
|
8983
|
+
},
|
|
8984
|
+
"required": [
|
|
8985
|
+
"files",
|
|
8986
|
+
"omitted_paths"
|
|
8987
|
+
],
|
|
8988
|
+
"title": "SessionDiffResponse",
|
|
8989
|
+
"type": "object"
|
|
8990
|
+
},
|
|
8885
8991
|
"SessionEnvironment": {
|
|
8886
|
-
"description": "The environment this session resolved: which saved environment (as it\nexists now) and how it was chosen. The environment's frozen BODY rides\ninside `
|
|
8992
|
+
"description": "The environment this session resolved: which saved environment (as it\nexists now) and how it was chosen. The environment's frozen BODY rides\ninside `config.environment` \u2014 substitution happens before the config\nsnapshot freezes \u2014 so this object is provenance, not payload.",
|
|
8887
8993
|
"properties": {
|
|
8888
8994
|
"environment_id": {
|
|
8889
8995
|
"anyOf": [
|
|
@@ -8906,7 +9012,7 @@
|
|
|
8906
9012
|
"type": "null"
|
|
8907
9013
|
}
|
|
8908
9014
|
],
|
|
8909
|
-
"description": "How the environment was chosen (request, agent_config, repo_default
|
|
9015
|
+
"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."
|
|
8910
9016
|
}
|
|
8911
9017
|
},
|
|
8912
9018
|
"title": "SessionEnvironment",
|
|
@@ -9007,6 +9113,30 @@
|
|
|
9007
9113
|
"title": "SessionGitFile",
|
|
9008
9114
|
"type": "object"
|
|
9009
9115
|
},
|
|
9116
|
+
"SessionGitPatchFile": {
|
|
9117
|
+
"description": "One file's patch, split out of `git diff HEAD` at capture time.\n\nStored per file rather than as one blob because that is how a viewer reads\nit: a row per changed file, opened one at a time. Counts and status are NOT\nrepeated here \u2014 they live on the matching SessionGitFile in\n`agent_sessions.output_git`, which rides on every session read, so a surface\nlists the changed files (and their +/\u2212) before it fetches a single hunk. The\njoin key is (full_name, path).\n\n`patch` is the unified-diff section for this file, `diff --git` header\nincluded, exactly as git emitted it.",
|
|
9118
|
+
"properties": {
|
|
9119
|
+
"full_name": {
|
|
9120
|
+
"title": "Full Name",
|
|
9121
|
+
"type": "string"
|
|
9122
|
+
},
|
|
9123
|
+
"patch": {
|
|
9124
|
+
"title": "Patch",
|
|
9125
|
+
"type": "string"
|
|
9126
|
+
},
|
|
9127
|
+
"path": {
|
|
9128
|
+
"title": "Path",
|
|
9129
|
+
"type": "string"
|
|
9130
|
+
}
|
|
9131
|
+
},
|
|
9132
|
+
"required": [
|
|
9133
|
+
"full_name",
|
|
9134
|
+
"path",
|
|
9135
|
+
"patch"
|
|
9136
|
+
],
|
|
9137
|
+
"title": "SessionGitPatchFile",
|
|
9138
|
+
"type": "object"
|
|
9139
|
+
},
|
|
9010
9140
|
"SessionGitPr": {
|
|
9011
9141
|
"description": "A pull request the session opened in this repo, written the moment the\ncreating tool call's result lands (see extract_session_prs.PrCreateWatcher).\nLive PR state (open/merged/closed) is not stored \u2014 it lives on gh_prs,\njoined via `gh_pr_id` (GET /frontend/agents/sessions/{id}/git). The repo is\nthe parent object, so it is not repeated here.",
|
|
9012
9142
|
"properties": {
|
|
@@ -9195,7 +9325,7 @@
|
|
|
9195
9325
|
"title": "Author"
|
|
9196
9326
|
},
|
|
9197
9327
|
"body": {
|
|
9198
|
-
"description": "The message text.",
|
|
9328
|
+
"description": "The message text, with one `[Image #N]` placeholder per attached image.",
|
|
9199
9329
|
"title": "Body",
|
|
9200
9330
|
"type": "string"
|
|
9201
9331
|
},
|
|
@@ -9247,6 +9377,14 @@
|
|
|
9247
9377
|
"title": "Id",
|
|
9248
9378
|
"type": "string"
|
|
9249
9379
|
},
|
|
9380
|
+
"images": {
|
|
9381
|
+
"description": "Images attached to the message, metadata only: index, media type, size. The bytes go to the model, never over the stream.",
|
|
9382
|
+
"items": {
|
|
9383
|
+
"$ref": "#/components/schemas/SessionMessageImage"
|
|
9384
|
+
},
|
|
9385
|
+
"title": "Images",
|
|
9386
|
+
"type": "array"
|
|
9387
|
+
},
|
|
9250
9388
|
"sender_attribution_id": {
|
|
9251
9389
|
"anyOf": [
|
|
9252
9390
|
{
|
|
@@ -9290,6 +9428,33 @@
|
|
|
9290
9428
|
"title": "SessionMessage",
|
|
9291
9429
|
"type": "object"
|
|
9292
9430
|
},
|
|
9431
|
+
"SessionMessageImage": {
|
|
9432
|
+
"description": "One image on a message, metadata only. `index` is the N in the\n`[Image #N]` placeholder in the message body.",
|
|
9433
|
+
"properties": {
|
|
9434
|
+
"index": {
|
|
9435
|
+
"description": "1-based position: the N in `[Image #N]`.",
|
|
9436
|
+
"title": "Index",
|
|
9437
|
+
"type": "integer"
|
|
9438
|
+
},
|
|
9439
|
+
"media_type": {
|
|
9440
|
+
"description": "The image's MIME type.",
|
|
9441
|
+
"title": "Media Type",
|
|
9442
|
+
"type": "string"
|
|
9443
|
+
},
|
|
9444
|
+
"size_bytes": {
|
|
9445
|
+
"description": "Size of the decoded image, in bytes.",
|
|
9446
|
+
"title": "Size Bytes",
|
|
9447
|
+
"type": "integer"
|
|
9448
|
+
}
|
|
9449
|
+
},
|
|
9450
|
+
"required": [
|
|
9451
|
+
"index",
|
|
9452
|
+
"media_type",
|
|
9453
|
+
"size_bytes"
|
|
9454
|
+
],
|
|
9455
|
+
"title": "SessionMessageImage",
|
|
9456
|
+
"type": "object"
|
|
9457
|
+
},
|
|
9293
9458
|
"SessionMessageResponse": {
|
|
9294
9459
|
"description": "One inbox message.",
|
|
9295
9460
|
"properties": {
|
|
@@ -9491,9 +9656,10 @@
|
|
|
9491
9656
|
"type": "object"
|
|
9492
9657
|
},
|
|
9493
9658
|
"SessionSource": {
|
|
9659
|
+
"description": "Where a session came from: the credential that started it (web app,\nAPI key, CLI) or the trigger that fired (react, mention, cron). Never\ntaken from a request body.",
|
|
9494
9660
|
"enum": [
|
|
9495
9661
|
"react",
|
|
9496
|
-
"
|
|
9662
|
+
"web",
|
|
9497
9663
|
"api",
|
|
9498
9664
|
"cli",
|
|
9499
9665
|
"mention",
|
|
@@ -9719,6 +9885,56 @@
|
|
|
9719
9885
|
"title": "SessionsListResponse",
|
|
9720
9886
|
"type": "object"
|
|
9721
9887
|
},
|
|
9888
|
+
"SettingsRef": {
|
|
9889
|
+
"additionalProperties": false,
|
|
9890
|
+
"description": "A config-declared Claude Code settings.json, resolved at run start and\npassed to `claude --settings <path>`. That is the CLI settings tier \u2014 BELOW\nEllipsis's managed-settings.json floor \u2014 so it customizes behavior (model\npermissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a\nsecurity setting. Lets a team point the cloud agent at the same settings file\nthey already use with Claude Code locally instead of re-encoding it as YAML.",
|
|
9891
|
+
"properties": {
|
|
9892
|
+
"path": {
|
|
9893
|
+
"title": "Path",
|
|
9894
|
+
"type": "string"
|
|
9895
|
+
},
|
|
9896
|
+
"repository": {
|
|
9897
|
+
"anyOf": [
|
|
9898
|
+
{
|
|
9899
|
+
"$ref": "#/components/schemas/RepositoryRef"
|
|
9900
|
+
},
|
|
9901
|
+
{
|
|
9902
|
+
"type": "null"
|
|
9903
|
+
}
|
|
9904
|
+
]
|
|
9905
|
+
}
|
|
9906
|
+
},
|
|
9907
|
+
"required": [
|
|
9908
|
+
"path"
|
|
9909
|
+
],
|
|
9910
|
+
"title": "SettingsRef",
|
|
9911
|
+
"type": "object"
|
|
9912
|
+
},
|
|
9913
|
+
"SkillRef": {
|
|
9914
|
+
"additionalProperties": false,
|
|
9915
|
+
"description": "One config-declared Claude Code skill: a repository directory containing\na SKILL.md, resolved at run start and installed at the sandbox's personal\nskill level (`~/.claude/skills/<basename(path)>/`). This is how a config\nbrings in skills its cloned repositories don't provide \u2014 cross-repo refs\n(an org-wide skills repo), public third-party repos, and repo-less runs.\nSkills under a cloned repo's own `.claude/skills/` load by themselves and\ndon't need an entry here.",
|
|
9916
|
+
"properties": {
|
|
9917
|
+
"path": {
|
|
9918
|
+
"title": "Path",
|
|
9919
|
+
"type": "string"
|
|
9920
|
+
},
|
|
9921
|
+
"repository": {
|
|
9922
|
+
"anyOf": [
|
|
9923
|
+
{
|
|
9924
|
+
"$ref": "#/components/schemas/RepositoryRef"
|
|
9925
|
+
},
|
|
9926
|
+
{
|
|
9927
|
+
"type": "null"
|
|
9928
|
+
}
|
|
9929
|
+
]
|
|
9930
|
+
}
|
|
9931
|
+
},
|
|
9932
|
+
"required": [
|
|
9933
|
+
"path"
|
|
9934
|
+
],
|
|
9935
|
+
"title": "SkillRef",
|
|
9936
|
+
"type": "object"
|
|
9937
|
+
},
|
|
9722
9938
|
"SlackChannel": {
|
|
9723
9939
|
"description": "One channel in the connected Slack workspace.",
|
|
9724
9940
|
"properties": {
|
|
@@ -9939,7 +10155,7 @@
|
|
|
9939
10155
|
},
|
|
9940
10156
|
"StartAgentSessionRequest": {
|
|
9941
10157
|
"additionalProperties": false,
|
|
9942
|
-
"description": "Parameters for starting a raw session: where it runs, its first\nmessage, and the run's own settings. Flat, in the
|
|
10158
|
+
"description": "Parameters for starting a raw session: where it runs, its first\nmessage, and the run's own settings. Flat, in the AutomationConfig vocabulary\n\u2014 a `claude:` or `permissions:` block copied from an agents/ YAML file\npastes in verbatim. There is no automation behind a raw session; to run a\nsaved automation, invoke it with POST /v1/automations/{automation_id}/sessions.\n\nExtra keys are a 422, not silently dropped \u2014 a retired field\n(`from_config_id`, `input`, `ellipsis`, `config_id`) must fail loudly on\nan old client, never no-op.",
|
|
9943
10159
|
"properties": {
|
|
9944
10160
|
"budget": {
|
|
9945
10161
|
"anyOf": [
|
|
@@ -9957,7 +10173,7 @@
|
|
|
9957
10173
|
"claude": {
|
|
9958
10174
|
"anyOf": [
|
|
9959
10175
|
{
|
|
9960
|
-
"$ref": "#/components/schemas/
|
|
10176
|
+
"$ref": "#/components/schemas/ClaudeConfig"
|
|
9961
10177
|
},
|
|
9962
10178
|
{
|
|
9963
10179
|
"type": "null"
|
|
@@ -9968,7 +10184,7 @@
|
|
|
9968
10184
|
"codex": {
|
|
9969
10185
|
"anyOf": [
|
|
9970
10186
|
{
|
|
9971
|
-
"$ref": "#/components/schemas/
|
|
10187
|
+
"$ref": "#/components/schemas/CodexConfig"
|
|
9972
10188
|
},
|
|
9973
10189
|
{
|
|
9974
10190
|
"type": "null"
|
|
@@ -9982,13 +10198,13 @@
|
|
|
9982
10198
|
"type": "string"
|
|
9983
10199
|
},
|
|
9984
10200
|
{
|
|
9985
|
-
"$ref": "#/components/schemas/
|
|
10201
|
+
"$ref": "#/components/schemas/EnvironmentConfig"
|
|
9986
10202
|
},
|
|
9987
10203
|
{
|
|
9988
10204
|
"type": "null"
|
|
9989
10205
|
}
|
|
9990
10206
|
],
|
|
9991
|
-
"description": "Where the session runs. A STRING is a saved environment's name or `env_...` id. An OBJECT is
|
|
10207
|
+
"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 \u2014 `{}` is the bare sandbox. Omitted, the session runs in the built-in basic sandbox \u2014 nothing outside the request picks the environment.",
|
|
9992
10208
|
"title": "Environment"
|
|
9993
10209
|
},
|
|
9994
10210
|
"force_rebuild": {
|
|
@@ -9997,6 +10213,14 @@
|
|
|
9997
10213
|
"title": "Force Rebuild",
|
|
9998
10214
|
"type": "boolean"
|
|
9999
10215
|
},
|
|
10216
|
+
"images": {
|
|
10217
|
+
"description": "Images attached to the first message, base64 inline \u2014 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.",
|
|
10218
|
+
"items": {
|
|
10219
|
+
"$ref": "#/components/schemas/ImageAttachment"
|
|
10220
|
+
},
|
|
10221
|
+
"title": "Images",
|
|
10222
|
+
"type": "array"
|
|
10223
|
+
},
|
|
10000
10224
|
"interactive": {
|
|
10001
10225
|
"default": true,
|
|
10002
10226
|
"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.",
|
|
@@ -10015,7 +10239,7 @@
|
|
|
10015
10239
|
"output": {
|
|
10016
10240
|
"anyOf": [
|
|
10017
10241
|
{
|
|
10018
|
-
"$ref": "#/components/schemas/
|
|
10242
|
+
"$ref": "#/components/schemas/OutputConfig"
|
|
10019
10243
|
},
|
|
10020
10244
|
{
|
|
10021
10245
|
"type": "null"
|
|
@@ -10026,7 +10250,7 @@
|
|
|
10026
10250
|
"permissions": {
|
|
10027
10251
|
"anyOf": [
|
|
10028
10252
|
{
|
|
10029
|
-
"$ref": "#/components/schemas/
|
|
10253
|
+
"$ref": "#/components/schemas/PermissionsConfig"
|
|
10030
10254
|
},
|
|
10031
10255
|
{
|
|
10032
10256
|
"type": "null"
|
|
@@ -10046,11 +10270,26 @@
|
|
|
10046
10270
|
"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.",
|
|
10047
10271
|
"title": "Prompt"
|
|
10048
10272
|
},
|
|
10273
|
+
"repositories": {
|
|
10274
|
+
"anyOf": [
|
|
10275
|
+
{
|
|
10276
|
+
"items": {
|
|
10277
|
+
"type": "string"
|
|
10278
|
+
},
|
|
10279
|
+
"type": "array"
|
|
10280
|
+
},
|
|
10281
|
+
{
|
|
10282
|
+
"type": "null"
|
|
10283
|
+
}
|
|
10284
|
+
],
|
|
10285
|
+
"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 \u2014 the CLI sends the repository it is standing in this way, whatever environment the session runs in.",
|
|
10286
|
+
"title": "Repositories"
|
|
10287
|
+
},
|
|
10049
10288
|
"skills": {
|
|
10050
10289
|
"anyOf": [
|
|
10051
10290
|
{
|
|
10052
10291
|
"items": {
|
|
10053
|
-
"$ref": "#/components/schemas/
|
|
10292
|
+
"$ref": "#/components/schemas/SkillRef"
|
|
10054
10293
|
},
|
|
10055
10294
|
"type": "array"
|
|
10056
10295
|
},
|
|
@@ -10143,14 +10382,38 @@
|
|
|
10143
10382
|
}
|
|
10144
10383
|
},
|
|
10145
10384
|
"required": [
|
|
10146
|
-
"device_code",
|
|
10147
|
-
"user_code",
|
|
10148
|
-
"verification_uri",
|
|
10149
|
-
"verification_uri_complete",
|
|
10150
|
-
"interval",
|
|
10151
|
-
"expires_in"
|
|
10385
|
+
"device_code",
|
|
10386
|
+
"user_code",
|
|
10387
|
+
"verification_uri",
|
|
10388
|
+
"verification_uri_complete",
|
|
10389
|
+
"interval",
|
|
10390
|
+
"expires_in"
|
|
10391
|
+
],
|
|
10392
|
+
"title": "StartCliAuthResponse",
|
|
10393
|
+
"type": "object"
|
|
10394
|
+
},
|
|
10395
|
+
"SystemFileRef": {
|
|
10396
|
+
"additionalProperties": false,
|
|
10397
|
+
"properties": {
|
|
10398
|
+
"file": {
|
|
10399
|
+
"title": "File",
|
|
10400
|
+
"type": "string"
|
|
10401
|
+
},
|
|
10402
|
+
"repository": {
|
|
10403
|
+
"anyOf": [
|
|
10404
|
+
{
|
|
10405
|
+
"$ref": "#/components/schemas/RepositoryRef"
|
|
10406
|
+
},
|
|
10407
|
+
{
|
|
10408
|
+
"type": "null"
|
|
10409
|
+
}
|
|
10410
|
+
]
|
|
10411
|
+
}
|
|
10412
|
+
},
|
|
10413
|
+
"required": [
|
|
10414
|
+
"file"
|
|
10152
10415
|
],
|
|
10153
|
-
"title": "
|
|
10416
|
+
"title": "SystemFileRef",
|
|
10154
10417
|
"type": "object"
|
|
10155
10418
|
},
|
|
10156
10419
|
"TokensInfo": {
|
|
@@ -10223,7 +10486,7 @@
|
|
|
10223
10486
|
"description": "A replacement definition for an automation managed through the API.",
|
|
10224
10487
|
"properties": {
|
|
10225
10488
|
"automation": {
|
|
10226
|
-
"$ref": "#/components/schemas/
|
|
10489
|
+
"$ref": "#/components/schemas/AutomationConfig",
|
|
10227
10490
|
"description": "The automation's new definition. Replaces the previous one wholesale \u2014 this is not a partial update."
|
|
10228
10491
|
}
|
|
10229
10492
|
},
|
|
@@ -10237,7 +10500,7 @@
|
|
|
10237
10500
|
"description": "A replacement definition for an environment managed through the API.",
|
|
10238
10501
|
"properties": {
|
|
10239
10502
|
"environment": {
|
|
10240
|
-
"$ref": "#/components/schemas/
|
|
10503
|
+
"$ref": "#/components/schemas/EnvironmentDocument",
|
|
10241
10504
|
"description": "The environment's new definition. Replaces the previous one wholesale \u2014 this is not a partial update."
|
|
10242
10505
|
}
|
|
10243
10506
|
},
|
|
@@ -12171,6 +12434,101 @@
|
|
|
12171
12434
|
"x-ellipsis-sdk-method": "automations.link"
|
|
12172
12435
|
}
|
|
12173
12436
|
},
|
|
12437
|
+
"/v1/automations/{automation_id}/metrics": {
|
|
12438
|
+
"get": {
|
|
12439
|
+
"description": "Return an automation's session distribution and trailing spend,\nby id or by name.\n\n`samples` carries one entry per finished session (duration, cost,\ntokens) for distributions; `spend_windows` carries what the\nautomation's sessions cost over the last 1, 7, and 28 days against\nits budget for each window.",
|
|
12440
|
+
"operationId": "get_automation_metrics",
|
|
12441
|
+
"parameters": [
|
|
12442
|
+
{
|
|
12443
|
+
"in": "path",
|
|
12444
|
+
"name": "automation_id",
|
|
12445
|
+
"required": true,
|
|
12446
|
+
"schema": {
|
|
12447
|
+
"title": "Automation Id",
|
|
12448
|
+
"type": "string"
|
|
12449
|
+
}
|
|
12450
|
+
},
|
|
12451
|
+
{
|
|
12452
|
+
"in": "header",
|
|
12453
|
+
"name": "user-agent",
|
|
12454
|
+
"required": false,
|
|
12455
|
+
"schema": {
|
|
12456
|
+
"anyOf": [
|
|
12457
|
+
{
|
|
12458
|
+
"type": "string"
|
|
12459
|
+
},
|
|
12460
|
+
{
|
|
12461
|
+
"type": "null"
|
|
12462
|
+
}
|
|
12463
|
+
],
|
|
12464
|
+
"title": "User-Agent"
|
|
12465
|
+
}
|
|
12466
|
+
}
|
|
12467
|
+
],
|
|
12468
|
+
"responses": {
|
|
12469
|
+
"200": {
|
|
12470
|
+
"content": {
|
|
12471
|
+
"application/json": {
|
|
12472
|
+
"schema": {
|
|
12473
|
+
"$ref": "#/components/schemas/AutomationMetricsResponse"
|
|
12474
|
+
}
|
|
12475
|
+
}
|
|
12476
|
+
},
|
|
12477
|
+
"description": "Successful Response"
|
|
12478
|
+
},
|
|
12479
|
+
"401": {
|
|
12480
|
+
"content": {
|
|
12481
|
+
"application/json": {
|
|
12482
|
+
"schema": {
|
|
12483
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
12484
|
+
}
|
|
12485
|
+
}
|
|
12486
|
+
},
|
|
12487
|
+
"description": "The bearer token is missing, invalid, or revoked."
|
|
12488
|
+
},
|
|
12489
|
+
"403": {
|
|
12490
|
+
"content": {
|
|
12491
|
+
"application/json": {
|
|
12492
|
+
"schema": {
|
|
12493
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
12494
|
+
}
|
|
12495
|
+
}
|
|
12496
|
+
},
|
|
12497
|
+
"description": "The credential may not perform this action, or the account is blocked."
|
|
12498
|
+
},
|
|
12499
|
+
"404": {
|
|
12500
|
+
"content": {
|
|
12501
|
+
"application/json": {
|
|
12502
|
+
"schema": {
|
|
12503
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
12504
|
+
}
|
|
12505
|
+
}
|
|
12506
|
+
},
|
|
12507
|
+
"description": "No such automation in your account."
|
|
12508
|
+
},
|
|
12509
|
+
"422": {
|
|
12510
|
+
"content": {
|
|
12511
|
+
"application/json": {
|
|
12512
|
+
"schema": {
|
|
12513
|
+
"$ref": "#/components/schemas/HTTPValidationError"
|
|
12514
|
+
}
|
|
12515
|
+
}
|
|
12516
|
+
},
|
|
12517
|
+
"description": "Validation Error"
|
|
12518
|
+
}
|
|
12519
|
+
},
|
|
12520
|
+
"security": [
|
|
12521
|
+
{
|
|
12522
|
+
"HTTPBearer": []
|
|
12523
|
+
}
|
|
12524
|
+
],
|
|
12525
|
+
"summary": "Get Automation Metrics",
|
|
12526
|
+
"tags": [
|
|
12527
|
+
"v1"
|
|
12528
|
+
],
|
|
12529
|
+
"x-ellipsis-sdk-method": "automations.metrics"
|
|
12530
|
+
}
|
|
12531
|
+
},
|
|
12174
12532
|
"/v1/automations/{automation_id}/sessions": {
|
|
12175
12533
|
"post": {
|
|
12176
12534
|
"description": "Invoke an automation.\n\nRuns the automation exactly as defined \u2014 its persona, model,\nenvironment, permissions, skills, and budget bind \u2014 and returns\nthe session it started. The body carries only what a caller may\nsupply: the typed `input` its schema demands, an optional tighter\n`budget`, and `metadata`. For a different persona or environment,\nstart a raw session with POST /v1/sessions instead.",
|
|
@@ -14597,71 +14955,90 @@
|
|
|
14597
14955
|
},
|
|
14598
14956
|
"/v1/reviews": {
|
|
14599
14957
|
"get": {
|
|
14600
|
-
"description": "List code reviews, newest first.\n\n`findings`
|
|
14958
|
+
"description": "List code reviews, newest first.\n\n`findings` and `configuration` are omitted (counters only). Each\nfilter is a set: repeat `repository`, `pull_request_number`, or\n`status` to match any of several values. `start` and `end` bound\nthe review's creation time.\n\nWebhook-created reviews appear here too, so this answers \"show\nme every review on this PR\".",
|
|
14601
14959
|
"operationId": "list_reviews",
|
|
14602
14960
|
"parameters": [
|
|
14603
14961
|
{
|
|
14962
|
+
"description": "Only reviews on these repositories, each as owner/name. Repeat the parameter for several.",
|
|
14604
14963
|
"in": "query",
|
|
14605
|
-
"name": "
|
|
14964
|
+
"name": "repository",
|
|
14606
14965
|
"required": false,
|
|
14607
14966
|
"schema": {
|
|
14608
|
-
"
|
|
14609
|
-
|
|
14610
|
-
|
|
14611
|
-
|
|
14612
|
-
|
|
14613
|
-
|
|
14614
|
-
|
|
14615
|
-
],
|
|
14616
|
-
"title": "Owner"
|
|
14967
|
+
"default": [],
|
|
14968
|
+
"description": "Only reviews on these repositories, each as owner/name. Repeat the parameter for several.",
|
|
14969
|
+
"items": {
|
|
14970
|
+
"type": "string"
|
|
14971
|
+
},
|
|
14972
|
+
"title": "Repository",
|
|
14973
|
+
"type": "array"
|
|
14617
14974
|
}
|
|
14618
14975
|
},
|
|
14619
14976
|
{
|
|
14977
|
+
"description": "Only reviews on these pull request numbers. Repeat the parameter for several.",
|
|
14620
14978
|
"in": "query",
|
|
14621
|
-
"name": "
|
|
14979
|
+
"name": "pull_request_number",
|
|
14622
14980
|
"required": false,
|
|
14623
14981
|
"schema": {
|
|
14624
|
-
"
|
|
14625
|
-
|
|
14626
|
-
|
|
14627
|
-
|
|
14628
|
-
|
|
14629
|
-
|
|
14630
|
-
|
|
14631
|
-
],
|
|
14632
|
-
"title": "Repo"
|
|
14982
|
+
"default": [],
|
|
14983
|
+
"description": "Only reviews on these pull request numbers. Repeat the parameter for several.",
|
|
14984
|
+
"items": {
|
|
14985
|
+
"type": "integer"
|
|
14986
|
+
},
|
|
14987
|
+
"title": "Pull Request Number",
|
|
14988
|
+
"type": "array"
|
|
14633
14989
|
}
|
|
14634
14990
|
},
|
|
14635
14991
|
{
|
|
14992
|
+
"description": "Only reviews in these statuses. Repeat the parameter for several.",
|
|
14636
14993
|
"in": "query",
|
|
14637
|
-
"name": "
|
|
14994
|
+
"name": "status",
|
|
14995
|
+
"required": false,
|
|
14996
|
+
"schema": {
|
|
14997
|
+
"default": [],
|
|
14998
|
+
"description": "Only reviews in these statuses. Repeat the parameter for several.",
|
|
14999
|
+
"items": {
|
|
15000
|
+
"$ref": "#/components/schemas/CodeReviewRunStatus"
|
|
15001
|
+
},
|
|
15002
|
+
"title": "Status",
|
|
15003
|
+
"type": "array"
|
|
15004
|
+
}
|
|
15005
|
+
},
|
|
15006
|
+
{
|
|
15007
|
+
"description": "Only reviews created at or after this time.",
|
|
15008
|
+
"in": "query",
|
|
15009
|
+
"name": "start",
|
|
14638
15010
|
"required": false,
|
|
14639
15011
|
"schema": {
|
|
14640
15012
|
"anyOf": [
|
|
14641
15013
|
{
|
|
14642
|
-
"
|
|
15014
|
+
"format": "date-time",
|
|
15015
|
+
"type": "string"
|
|
14643
15016
|
},
|
|
14644
15017
|
{
|
|
14645
15018
|
"type": "null"
|
|
14646
15019
|
}
|
|
14647
15020
|
],
|
|
14648
|
-
"
|
|
15021
|
+
"description": "Only reviews created at or after this time.",
|
|
15022
|
+
"title": "Start"
|
|
14649
15023
|
}
|
|
14650
15024
|
},
|
|
14651
15025
|
{
|
|
15026
|
+
"description": "Only reviews created at or before this time.",
|
|
14652
15027
|
"in": "query",
|
|
14653
|
-
"name": "
|
|
15028
|
+
"name": "end",
|
|
14654
15029
|
"required": false,
|
|
14655
15030
|
"schema": {
|
|
14656
15031
|
"anyOf": [
|
|
14657
15032
|
{
|
|
14658
|
-
"
|
|
15033
|
+
"format": "date-time",
|
|
15034
|
+
"type": "string"
|
|
14659
15035
|
},
|
|
14660
15036
|
{
|
|
14661
15037
|
"type": "null"
|
|
14662
15038
|
}
|
|
14663
15039
|
],
|
|
14664
|
-
"
|
|
15040
|
+
"description": "Only reviews created at or before this time.",
|
|
15041
|
+
"title": "End"
|
|
14665
15042
|
}
|
|
14666
15043
|
},
|
|
14667
15044
|
{
|
|
@@ -14728,7 +15105,7 @@
|
|
|
14728
15105
|
}
|
|
14729
15106
|
}
|
|
14730
15107
|
},
|
|
14731
|
-
"description": "
|
|
15108
|
+
"description": "A `repository` value is not of the form owner/name."
|
|
14732
15109
|
},
|
|
14733
15110
|
"401": {
|
|
14734
15111
|
"content": {
|
|
@@ -14758,7 +15135,7 @@
|
|
|
14758
15135
|
}
|
|
14759
15136
|
}
|
|
14760
15137
|
},
|
|
14761
|
-
"description": "
|
|
15138
|
+
"description": "A `repository` was not found in your account."
|
|
14762
15139
|
},
|
|
14763
15140
|
"422": {
|
|
14764
15141
|
"content": {
|
|
@@ -14783,7 +15160,7 @@
|
|
|
14783
15160
|
"x-ellipsis-sdk-method": "reviews.list"
|
|
14784
15161
|
},
|
|
14785
15162
|
"post": {
|
|
14786
|
-
"description": "Run a code review on demand.\n\nReviews an
|
|
15163
|
+
"description": "Run a code review on demand.\n\nReviews an open pull request. Which pipeline runs is not a\nparameter: it resolves from the repository's files exactly as\nit does for a push, so an on-demand review never disagrees with\nthe automatic one.\n\nA review is one pipeline run over one commit range, with one\nagent session per stage: `review.id` is the run id, and\n`stages[].session_id` is where a client streams\n(/sessions/{id}/stream on a stage session), since the review\nitself is a pipeline rather than one process.",
|
|
14787
15164
|
"operationId": "create_review",
|
|
14788
15165
|
"parameters": [
|
|
14789
15166
|
{
|
|
@@ -15479,7 +15856,7 @@
|
|
|
15479
15856
|
"x-ellipsis-sdk-method": "sessions.list"
|
|
15480
15857
|
},
|
|
15481
15858
|
"post": {
|
|
15482
|
-
"description": "Start a cloud agent session.\n\nThe daily driver: a prompt, optionally where to run it\n(`environment`) and the run's own settings, in the
|
|
15859
|
+
"description": "Start a cloud agent session.\n\nThe daily driver: a prompt, optionally where to run it\n(`environment`) and the run's own settings, in the AutomationConfig\nvocabulary. What you send is what runs: omit `environment` and the\nsession runs in the built-in basic sandbox. A missing model or\nbudget comes from the organization's settings, so\n`{\"prompt\": \"...\"}` alone is a complete request. `prompt` is the\nfirst message; omit it and the session starts idle, waiting for\none. 400 when `interactive` is false and there is no prompt, or\nwhen `budget` exceeds the organization's per-session ceiling. To\nrun a saved automation, use POST /v1/automations/{automation_id}/sessions.",
|
|
15483
15860
|
"operationId": "start_agent_session",
|
|
15484
15861
|
"parameters": [
|
|
15485
15862
|
{
|
|
@@ -15528,7 +15905,7 @@
|
|
|
15528
15905
|
}
|
|
15529
15906
|
}
|
|
15530
15907
|
},
|
|
15531
|
-
"description": "The request is incompatible with itself (a one-shot run with no prompt,
|
|
15908
|
+
"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."
|
|
15532
15909
|
},
|
|
15533
15910
|
"401": {
|
|
15534
15911
|
"content": {
|
|
@@ -15678,6 +16055,101 @@
|
|
|
15678
16055
|
"x-ellipsis-sdk-method": "sessions.get"
|
|
15679
16056
|
}
|
|
15680
16057
|
},
|
|
16058
|
+
"/v1/sessions/{session_id}/diff": {
|
|
16059
|
+
"get": {
|
|
16060
|
+
"description": "Return the session's uncommitted changes as a patch.\n\nOne unified-diff section per changed file, captured from the\nsandbox's working tree when the session ended. The per-file\ncounts ride on the session itself (`git.repos[].files`); this\nis the text behind them. Empty when the tree was clean. A\nsandbox token may read only its own session's diff.",
|
|
16061
|
+
"operationId": "get_agent_session_diff",
|
|
16062
|
+
"parameters": [
|
|
16063
|
+
{
|
|
16064
|
+
"in": "path",
|
|
16065
|
+
"name": "session_id",
|
|
16066
|
+
"required": true,
|
|
16067
|
+
"schema": {
|
|
16068
|
+
"title": "Session Id",
|
|
16069
|
+
"type": "string"
|
|
16070
|
+
}
|
|
16071
|
+
},
|
|
16072
|
+
{
|
|
16073
|
+
"in": "header",
|
|
16074
|
+
"name": "user-agent",
|
|
16075
|
+
"required": false,
|
|
16076
|
+
"schema": {
|
|
16077
|
+
"anyOf": [
|
|
16078
|
+
{
|
|
16079
|
+
"type": "string"
|
|
16080
|
+
},
|
|
16081
|
+
{
|
|
16082
|
+
"type": "null"
|
|
16083
|
+
}
|
|
16084
|
+
],
|
|
16085
|
+
"title": "User-Agent"
|
|
16086
|
+
}
|
|
16087
|
+
}
|
|
16088
|
+
],
|
|
16089
|
+
"responses": {
|
|
16090
|
+
"200": {
|
|
16091
|
+
"content": {
|
|
16092
|
+
"application/json": {
|
|
16093
|
+
"schema": {
|
|
16094
|
+
"$ref": "#/components/schemas/SessionDiffResponse"
|
|
16095
|
+
}
|
|
16096
|
+
}
|
|
16097
|
+
},
|
|
16098
|
+
"description": "Successful Response"
|
|
16099
|
+
},
|
|
16100
|
+
"401": {
|
|
16101
|
+
"content": {
|
|
16102
|
+
"application/json": {
|
|
16103
|
+
"schema": {
|
|
16104
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16105
|
+
}
|
|
16106
|
+
}
|
|
16107
|
+
},
|
|
16108
|
+
"description": "The bearer token is missing, invalid, or revoked."
|
|
16109
|
+
},
|
|
16110
|
+
"403": {
|
|
16111
|
+
"content": {
|
|
16112
|
+
"application/json": {
|
|
16113
|
+
"schema": {
|
|
16114
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16115
|
+
}
|
|
16116
|
+
}
|
|
16117
|
+
},
|
|
16118
|
+
"description": "The credential may not perform this action, or the account is blocked."
|
|
16119
|
+
},
|
|
16120
|
+
"404": {
|
|
16121
|
+
"content": {
|
|
16122
|
+
"application/json": {
|
|
16123
|
+
"schema": {
|
|
16124
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
16125
|
+
}
|
|
16126
|
+
}
|
|
16127
|
+
},
|
|
16128
|
+
"description": "No such session in your account."
|
|
16129
|
+
},
|
|
16130
|
+
"422": {
|
|
16131
|
+
"content": {
|
|
16132
|
+
"application/json": {
|
|
16133
|
+
"schema": {
|
|
16134
|
+
"$ref": "#/components/schemas/HTTPValidationError"
|
|
16135
|
+
}
|
|
16136
|
+
}
|
|
16137
|
+
},
|
|
16138
|
+
"description": "Validation Error"
|
|
16139
|
+
}
|
|
16140
|
+
},
|
|
16141
|
+
"security": [
|
|
16142
|
+
{
|
|
16143
|
+
"HTTPBearer": []
|
|
16144
|
+
}
|
|
16145
|
+
],
|
|
16146
|
+
"summary": "Get Agent Session Diff",
|
|
16147
|
+
"tags": [
|
|
16148
|
+
"v1"
|
|
16149
|
+
],
|
|
16150
|
+
"x-ellipsis-sdk-method": "sessions.diff"
|
|
16151
|
+
}
|
|
16152
|
+
},
|
|
15681
16153
|
"/v1/sessions/{session_id}/export": {
|
|
15682
16154
|
"get": {
|
|
15683
16155
|
"description": "Export the complete session history.\n\nThe complete, ordered history of the session (agent output, tool calls, thinking,\nlifecycle events, sandbox output, message events) as an ordered\nmanifest of presigned segment URLs.\n\nSegments are gzip members: download in order and concatenate\nfor one file. The JSON API never carries the bytes (same\ntwo-step as files). /records is the paged live view of the\nsame data.",
|
|
@@ -15833,7 +16305,7 @@
|
|
|
15833
16305
|
}
|
|
15834
16306
|
}
|
|
15835
16307
|
},
|
|
15836
|
-
"description": "The message is empty."
|
|
16308
|
+
"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)."
|
|
15837
16309
|
},
|
|
15838
16310
|
"401": {
|
|
15839
16311
|
"content": {
|
|
@@ -16345,7 +16817,7 @@
|
|
|
16345
16817
|
},
|
|
16346
16818
|
"/v1/settings/organization": {
|
|
16347
16819
|
"get": {
|
|
16348
|
-
"description": "Get the organization settings.\n\nThe default model
|
|
16820
|
+
"description": "Get the organization settings.\n\nThe default model every session falls back to when neither its\nrequest nor its automation names one, and the per-session budget\nceiling no session may exceed.",
|
|
16349
16821
|
"operationId": "get_organization_settings",
|
|
16350
16822
|
"parameters": [
|
|
16351
16823
|
{
|
|
@@ -16419,7 +16891,7 @@
|
|
|
16419
16891
|
"x-ellipsis-sdk-method": "settings.organization.get"
|
|
16420
16892
|
},
|
|
16421
16893
|
"put": {
|
|
16422
|
-
"description": "Set the organization settings.\n\nReplaces
|
|
16894
|
+
"description": "Set the organization settings.\n\nReplaces both: `default_model` accepts an alias or canonical id\nand is stored canonical; `budget_ceiling.session` is in US\ndollars, at most the platform ceiling. Null clears each.\nRefused for sandbox tokens (potentially prompt-injected code must\nnot repoint the organization's defaults).",
|
|
16423
16895
|
"operationId": "put_organization_settings",
|
|
16424
16896
|
"parameters": [
|
|
16425
16897
|
{
|
|
@@ -16490,16 +16962,6 @@
|
|
|
16490
16962
|
},
|
|
16491
16963
|
"description": "The credential may not perform this action, or the account is blocked."
|
|
16492
16964
|
},
|
|
16493
|
-
"404": {
|
|
16494
|
-
"content": {
|
|
16495
|
-
"application/json": {
|
|
16496
|
-
"schema": {
|
|
16497
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
16498
|
-
}
|
|
16499
|
-
}
|
|
16500
|
-
},
|
|
16501
|
-
"description": "The default environment does not exist in your account."
|
|
16502
|
-
},
|
|
16503
16965
|
"422": {
|
|
16504
16966
|
"content": {
|
|
16505
16967
|
"application/json": {
|