@ellipsis-dev/sdk 0.27.0 → 0.28.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/{chunk-RMPAMUAE.js → chunk-YJC53TA7.js} +11 -1
- package/dist/index.d.ts +1749 -72
- package/dist/index.js +887 -84
- package/dist/store/index.d.ts +5 -2
- package/dist/store/index.js +217 -23
- package/dist/stream/index.d.ts +2 -2
- package/dist/stream/index.js +1 -1
- package/dist/{types-ClEF_IA9.d.ts → types-B-jIFh4_.d.ts} +20446 -10002
- package/package.json +1 -1
- package/schema/collection_frames.schema.json +3623 -0
- package/schema/frames.schema.json +9534 -3142
- package/schema/lifecycle.schema.json +18 -0
- package/schema/openapi.v1.json +25149 -8434
- package/schema/trigger_fields.schema.json +1 -1
|
@@ -0,0 +1,3623 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$defs": {
|
|
3
|
+
"AttributionType": {
|
|
4
|
+
"enum": [
|
|
5
|
+
"github_user",
|
|
6
|
+
"linear_user",
|
|
7
|
+
"slack_user",
|
|
8
|
+
"api_key"
|
|
9
|
+
],
|
|
10
|
+
"title": "AttributionType",
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
"Automation": {
|
|
14
|
+
"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.",
|
|
15
|
+
"properties": {
|
|
16
|
+
"config": {
|
|
17
|
+
"$ref": "#/$defs/AutomationConfig",
|
|
18
|
+
"description": "The automation definition itself, in the same schema as its YAML file: identity, trigger, input contract, and the session block."
|
|
19
|
+
},
|
|
20
|
+
"created_at": {
|
|
21
|
+
"description": "When the automation was created.",
|
|
22
|
+
"format": "date-time",
|
|
23
|
+
"title": "Created At",
|
|
24
|
+
"type": "string"
|
|
25
|
+
},
|
|
26
|
+
"display_name": {
|
|
27
|
+
"anyOf": [
|
|
28
|
+
{
|
|
29
|
+
"type": "string"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"type": "null"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"default": null,
|
|
36
|
+
"description": "The raw ellipsis.name display text from the config file.",
|
|
37
|
+
"title": "Display Name"
|
|
38
|
+
},
|
|
39
|
+
"edited_by": {
|
|
40
|
+
"anyOf": [
|
|
41
|
+
{
|
|
42
|
+
"$ref": "#/$defs/GithubAccountSnippet"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "null"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"default": null,
|
|
49
|
+
"description": "The GitHub account that last edited the automation, when the edit came from a known user."
|
|
50
|
+
},
|
|
51
|
+
"id": {
|
|
52
|
+
"description": "Unique identifier of the automation.",
|
|
53
|
+
"title": "Id",
|
|
54
|
+
"type": "string"
|
|
55
|
+
},
|
|
56
|
+
"last_session_created_at": {
|
|
57
|
+
"anyOf": [
|
|
58
|
+
{
|
|
59
|
+
"format": "date-time",
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"type": "null"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"default": null,
|
|
67
|
+
"description": "When that most recent session was created.",
|
|
68
|
+
"title": "Last Session Created At"
|
|
69
|
+
},
|
|
70
|
+
"last_session_id": {
|
|
71
|
+
"anyOf": [
|
|
72
|
+
{
|
|
73
|
+
"type": "string"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"type": "null"
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"default": null,
|
|
80
|
+
"description": "The most recent session this automation started, or null if it has never run.",
|
|
81
|
+
"title": "Last Session Id"
|
|
82
|
+
},
|
|
83
|
+
"last_sync_error": {
|
|
84
|
+
"anyOf": [
|
|
85
|
+
{
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"type": "null"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"default": null,
|
|
93
|
+
"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.",
|
|
94
|
+
"title": "Last Sync Error"
|
|
95
|
+
},
|
|
96
|
+
"last_synced_commit_sha": {
|
|
97
|
+
"anyOf": [
|
|
98
|
+
{
|
|
99
|
+
"type": "string"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "null"
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"default": null,
|
|
106
|
+
"description": "The last commit the automation was synced from.",
|
|
107
|
+
"title": "Last Synced Commit Sha"
|
|
108
|
+
},
|
|
109
|
+
"managed_by": {
|
|
110
|
+
"$ref": "#/$defs/ConfigManagedBy",
|
|
111
|
+
"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."
|
|
112
|
+
},
|
|
113
|
+
"name": {
|
|
114
|
+
"anyOf": [
|
|
115
|
+
{
|
|
116
|
+
"type": "string"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "null"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"default": null,
|
|
123
|
+
"description": "The automation's account-unique addressable name (a slug of its display name); usable anywhere an automation is referenced, interchangeably with the id.",
|
|
124
|
+
"title": "Name"
|
|
125
|
+
},
|
|
126
|
+
"pending_pull_request_url": {
|
|
127
|
+
"anyOf": [
|
|
128
|
+
{
|
|
129
|
+
"type": "string"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"type": "null"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"default": null,
|
|
136
|
+
"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.",
|
|
137
|
+
"title": "Pending Pull Request Url"
|
|
138
|
+
},
|
|
139
|
+
"sha": {
|
|
140
|
+
"description": "The definition's content identity: the version fingerprint frozen onto each session that runs it.",
|
|
141
|
+
"title": "Sha",
|
|
142
|
+
"type": "string"
|
|
143
|
+
},
|
|
144
|
+
"source_details": {
|
|
145
|
+
"anyOf": [
|
|
146
|
+
{
|
|
147
|
+
"$ref": "#/$defs/GithubSourceDetails"
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"type": "null"
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"default": null,
|
|
154
|
+
"description": "The repository, path, and branch the automation syncs from. Null only transiently, before the creating pull request's file lands on the branch."
|
|
155
|
+
},
|
|
156
|
+
"updated_at": {
|
|
157
|
+
"description": "When the automation was last updated.",
|
|
158
|
+
"format": "date-time",
|
|
159
|
+
"title": "Updated At",
|
|
160
|
+
"type": "string"
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"required": [
|
|
164
|
+
"config",
|
|
165
|
+
"created_at",
|
|
166
|
+
"display_name",
|
|
167
|
+
"edited_by",
|
|
168
|
+
"id",
|
|
169
|
+
"last_session_created_at",
|
|
170
|
+
"last_session_id",
|
|
171
|
+
"last_sync_error",
|
|
172
|
+
"last_synced_commit_sha",
|
|
173
|
+
"managed_by",
|
|
174
|
+
"name",
|
|
175
|
+
"pending_pull_request_url",
|
|
176
|
+
"sha",
|
|
177
|
+
"source_details",
|
|
178
|
+
"updated_at"
|
|
179
|
+
],
|
|
180
|
+
"title": "Automation",
|
|
181
|
+
"type": "object"
|
|
182
|
+
},
|
|
183
|
+
"AutomationConfig": {
|
|
184
|
+
"additionalProperties": false,
|
|
185
|
+
"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.",
|
|
186
|
+
"properties": {
|
|
187
|
+
"ellipsis": {
|
|
188
|
+
"$ref": "#/$defs/AutomationIdentity",
|
|
189
|
+
"default": {
|
|
190
|
+
"description": null,
|
|
191
|
+
"enabled": true,
|
|
192
|
+
"metadata": {
|
|
193
|
+
"annotations": {},
|
|
194
|
+
"labels": []
|
|
195
|
+
},
|
|
196
|
+
"name": null,
|
|
197
|
+
"version": "v1"
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"input": {
|
|
201
|
+
"anyOf": [
|
|
202
|
+
{
|
|
203
|
+
"$ref": "#/$defs/InputContract"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"type": "null"
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"default": null
|
|
210
|
+
},
|
|
211
|
+
"session": {
|
|
212
|
+
"$ref": "#/$defs/SessionConfig"
|
|
213
|
+
},
|
|
214
|
+
"trigger": {
|
|
215
|
+
"anyOf": [
|
|
216
|
+
{
|
|
217
|
+
"discriminator": {
|
|
218
|
+
"mapping": {
|
|
219
|
+
"cron": "#/$defs/CronTrigger",
|
|
220
|
+
"react": "#/$defs/ReactTrigger"
|
|
221
|
+
},
|
|
222
|
+
"propertyName": "type"
|
|
223
|
+
},
|
|
224
|
+
"oneOf": [
|
|
225
|
+
{
|
|
226
|
+
"$ref": "#/$defs/CronTrigger"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"$ref": "#/$defs/ReactTrigger"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"type": "null"
|
|
235
|
+
}
|
|
236
|
+
],
|
|
237
|
+
"default": null,
|
|
238
|
+
"title": "Trigger"
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
"required": [
|
|
242
|
+
"ellipsis",
|
|
243
|
+
"input",
|
|
244
|
+
"session",
|
|
245
|
+
"trigger"
|
|
246
|
+
],
|
|
247
|
+
"title": "AutomationConfig",
|
|
248
|
+
"type": "object"
|
|
249
|
+
},
|
|
250
|
+
"AutomationIdentity": {
|
|
251
|
+
"additionalProperties": false,
|
|
252
|
+
"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 automation (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.",
|
|
253
|
+
"properties": {
|
|
254
|
+
"description": {
|
|
255
|
+
"anyOf": [
|
|
256
|
+
{
|
|
257
|
+
"type": "string"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"type": "null"
|
|
261
|
+
}
|
|
262
|
+
],
|
|
263
|
+
"default": null,
|
|
264
|
+
"title": "Description"
|
|
265
|
+
},
|
|
266
|
+
"enabled": {
|
|
267
|
+
"default": true,
|
|
268
|
+
"title": "Enabled",
|
|
269
|
+
"type": "boolean"
|
|
270
|
+
},
|
|
271
|
+
"metadata": {
|
|
272
|
+
"$ref": "#/$defs/ConfigMetadata",
|
|
273
|
+
"default": {
|
|
274
|
+
"annotations": {},
|
|
275
|
+
"labels": []
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
"name": {
|
|
279
|
+
"anyOf": [
|
|
280
|
+
{
|
|
281
|
+
"type": "string"
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"type": "null"
|
|
285
|
+
}
|
|
286
|
+
],
|
|
287
|
+
"default": null,
|
|
288
|
+
"title": "Name"
|
|
289
|
+
},
|
|
290
|
+
"version": {
|
|
291
|
+
"default": "v1",
|
|
292
|
+
"title": "Version",
|
|
293
|
+
"type": "string"
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
"required": [
|
|
297
|
+
"description",
|
|
298
|
+
"enabled",
|
|
299
|
+
"metadata",
|
|
300
|
+
"name",
|
|
301
|
+
"version"
|
|
302
|
+
],
|
|
303
|
+
"title": "AutomationIdentity",
|
|
304
|
+
"type": "object"
|
|
305
|
+
},
|
|
306
|
+
"AutomationListStreamMessage": {
|
|
307
|
+
"properties": {
|
|
308
|
+
"automations": {
|
|
309
|
+
"items": {
|
|
310
|
+
"$ref": "#/$defs/Automation"
|
|
311
|
+
},
|
|
312
|
+
"title": "Automations",
|
|
313
|
+
"type": "array"
|
|
314
|
+
},
|
|
315
|
+
"type": {
|
|
316
|
+
"const": "automations",
|
|
317
|
+
"default": "automations",
|
|
318
|
+
"title": "Type",
|
|
319
|
+
"type": "string"
|
|
320
|
+
}
|
|
321
|
+
},
|
|
322
|
+
"required": [
|
|
323
|
+
"automations",
|
|
324
|
+
"type"
|
|
325
|
+
],
|
|
326
|
+
"title": "AutomationListStreamMessage",
|
|
327
|
+
"type": "object"
|
|
328
|
+
},
|
|
329
|
+
"BudgetConfig": {
|
|
330
|
+
"additionalProperties": false,
|
|
331
|
+
"properties": {
|
|
332
|
+
"day": {
|
|
333
|
+
"anyOf": [
|
|
334
|
+
{
|
|
335
|
+
"type": "number"
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"type": "null"
|
|
339
|
+
}
|
|
340
|
+
],
|
|
341
|
+
"default": null,
|
|
342
|
+
"title": "Day"
|
|
343
|
+
},
|
|
344
|
+
"month": {
|
|
345
|
+
"anyOf": [
|
|
346
|
+
{
|
|
347
|
+
"type": "number"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"type": "null"
|
|
351
|
+
}
|
|
352
|
+
],
|
|
353
|
+
"default": null,
|
|
354
|
+
"title": "Month"
|
|
355
|
+
},
|
|
356
|
+
"session": {
|
|
357
|
+
"anyOf": [
|
|
358
|
+
{
|
|
359
|
+
"type": "number"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"type": "null"
|
|
363
|
+
}
|
|
364
|
+
],
|
|
365
|
+
"default": null,
|
|
366
|
+
"title": "Session"
|
|
367
|
+
},
|
|
368
|
+
"week": {
|
|
369
|
+
"anyOf": [
|
|
370
|
+
{
|
|
371
|
+
"type": "number"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"type": "null"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"default": null,
|
|
378
|
+
"title": "Week"
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
"required": [
|
|
382
|
+
"day",
|
|
383
|
+
"month",
|
|
384
|
+
"session",
|
|
385
|
+
"week"
|
|
386
|
+
],
|
|
387
|
+
"title": "BudgetConfig",
|
|
388
|
+
"type": "object"
|
|
389
|
+
},
|
|
390
|
+
"BudgetSource": {
|
|
391
|
+
"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.",
|
|
392
|
+
"enum": [
|
|
393
|
+
"system",
|
|
394
|
+
"account",
|
|
395
|
+
"config",
|
|
396
|
+
"run"
|
|
397
|
+
],
|
|
398
|
+
"title": "BudgetSource",
|
|
399
|
+
"type": "string"
|
|
400
|
+
},
|
|
401
|
+
"ClaudeConfig": {
|
|
402
|
+
"additionalProperties": false,
|
|
403
|
+
"description": "Native Claude Code options for an explicitly selected harness.",
|
|
404
|
+
"properties": {
|
|
405
|
+
"effort": {
|
|
406
|
+
"anyOf": [
|
|
407
|
+
{
|
|
408
|
+
"$ref": "#/$defs/EffortLevel"
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"type": "null"
|
|
412
|
+
}
|
|
413
|
+
],
|
|
414
|
+
"default": null
|
|
415
|
+
},
|
|
416
|
+
"fallback_model": {
|
|
417
|
+
"anyOf": [
|
|
418
|
+
{
|
|
419
|
+
"type": "string"
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"type": "null"
|
|
423
|
+
}
|
|
424
|
+
],
|
|
425
|
+
"default": null,
|
|
426
|
+
"title": "Fallback Model"
|
|
427
|
+
},
|
|
428
|
+
"max_turns": {
|
|
429
|
+
"anyOf": [
|
|
430
|
+
{
|
|
431
|
+
"exclusiveMinimum": 0,
|
|
432
|
+
"type": "integer"
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"type": "null"
|
|
436
|
+
}
|
|
437
|
+
],
|
|
438
|
+
"default": null,
|
|
439
|
+
"title": "Max Turns"
|
|
440
|
+
},
|
|
441
|
+
"model": {
|
|
442
|
+
"anyOf": [
|
|
443
|
+
{
|
|
444
|
+
"type": "string"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"type": "null"
|
|
448
|
+
}
|
|
449
|
+
],
|
|
450
|
+
"default": null,
|
|
451
|
+
"title": "Model"
|
|
452
|
+
},
|
|
453
|
+
"settings": {
|
|
454
|
+
"anyOf": [
|
|
455
|
+
{
|
|
456
|
+
"$ref": "#/$defs/SettingsRef"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"type": "null"
|
|
460
|
+
}
|
|
461
|
+
],
|
|
462
|
+
"default": null
|
|
463
|
+
},
|
|
464
|
+
"type": {
|
|
465
|
+
"const": "claude_code",
|
|
466
|
+
"title": "Type",
|
|
467
|
+
"type": "string"
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"required": [
|
|
471
|
+
"effort",
|
|
472
|
+
"fallback_model",
|
|
473
|
+
"max_turns",
|
|
474
|
+
"model",
|
|
475
|
+
"settings",
|
|
476
|
+
"type"
|
|
477
|
+
],
|
|
478
|
+
"title": "ClaudeConfig",
|
|
479
|
+
"type": "object"
|
|
480
|
+
},
|
|
481
|
+
"CodexConfig": {
|
|
482
|
+
"additionalProperties": false,
|
|
483
|
+
"description": "Native options supported by the current Codex adapter.\n\nOptions and capabilities expand only when their runtime behavior is tested.\nUnknown options are rejected instead of silently ignored.",
|
|
484
|
+
"properties": {
|
|
485
|
+
"effort": {
|
|
486
|
+
"anyOf": [
|
|
487
|
+
{
|
|
488
|
+
"$ref": "#/$defs/CodexEffortLevel"
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
"type": "null"
|
|
492
|
+
}
|
|
493
|
+
],
|
|
494
|
+
"default": null,
|
|
495
|
+
"description": "Reasoning effort for every turn. Omit to use the model default."
|
|
496
|
+
},
|
|
497
|
+
"model": {
|
|
498
|
+
"default": "gpt-5.6-terra",
|
|
499
|
+
"title": "Model",
|
|
500
|
+
"type": "string"
|
|
501
|
+
},
|
|
502
|
+
"type": {
|
|
503
|
+
"const": "codex",
|
|
504
|
+
"title": "Type",
|
|
505
|
+
"type": "string"
|
|
506
|
+
}
|
|
507
|
+
},
|
|
508
|
+
"required": [
|
|
509
|
+
"effort",
|
|
510
|
+
"model",
|
|
511
|
+
"type"
|
|
512
|
+
],
|
|
513
|
+
"title": "CodexConfig",
|
|
514
|
+
"type": "object"
|
|
515
|
+
},
|
|
516
|
+
"CodexEffortLevel": {
|
|
517
|
+
"enum": [
|
|
518
|
+
"none",
|
|
519
|
+
"low",
|
|
520
|
+
"medium",
|
|
521
|
+
"high",
|
|
522
|
+
"xhigh",
|
|
523
|
+
"max"
|
|
524
|
+
],
|
|
525
|
+
"title": "CodexEffortLevel",
|
|
526
|
+
"type": "string"
|
|
527
|
+
},
|
|
528
|
+
"CollectionStreamHeartbeat": {
|
|
529
|
+
"properties": {
|
|
530
|
+
"type": {
|
|
531
|
+
"const": "heartbeat",
|
|
532
|
+
"default": "heartbeat",
|
|
533
|
+
"title": "Type",
|
|
534
|
+
"type": "string"
|
|
535
|
+
}
|
|
536
|
+
},
|
|
537
|
+
"required": [
|
|
538
|
+
"type"
|
|
539
|
+
],
|
|
540
|
+
"title": "CollectionStreamHeartbeat",
|
|
541
|
+
"type": "object"
|
|
542
|
+
},
|
|
543
|
+
"ComputeConfig": {
|
|
544
|
+
"additionalProperties": false,
|
|
545
|
+
"description": "Sandbox compute sizing. Every field is optional; None inherits the\nplatform default (2 vCPU / 4096 MiB / 3600s \u2014 see DEFAULT_SANDBOX_* 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 its execution is\nstopped, 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 currently uses a temporary flat one-cent amount per allocated\nexecution, subject to the account's existing free-compute exemptions.",
|
|
546
|
+
"properties": {
|
|
547
|
+
"cpu": {
|
|
548
|
+
"anyOf": [
|
|
549
|
+
{
|
|
550
|
+
"maximum": 32,
|
|
551
|
+
"minimum": 2,
|
|
552
|
+
"type": "integer"
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"type": "null"
|
|
556
|
+
}
|
|
557
|
+
],
|
|
558
|
+
"default": null,
|
|
559
|
+
"title": "Cpu"
|
|
560
|
+
},
|
|
561
|
+
"memory": {
|
|
562
|
+
"anyOf": [
|
|
563
|
+
{
|
|
564
|
+
"type": "string"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"$ref": "#/$defs/MemorySize"
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"type": "null"
|
|
571
|
+
}
|
|
572
|
+
],
|
|
573
|
+
"default": null,
|
|
574
|
+
"title": "Memory"
|
|
575
|
+
},
|
|
576
|
+
"timeout": {
|
|
577
|
+
"anyOf": [
|
|
578
|
+
{
|
|
579
|
+
"type": "string"
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
"$ref": "#/$defs/Duration"
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"type": "null"
|
|
586
|
+
}
|
|
587
|
+
],
|
|
588
|
+
"default": null,
|
|
589
|
+
"title": "Timeout"
|
|
590
|
+
}
|
|
591
|
+
},
|
|
592
|
+
"required": [
|
|
593
|
+
"cpu",
|
|
594
|
+
"memory",
|
|
595
|
+
"timeout"
|
|
596
|
+
],
|
|
597
|
+
"title": "ComputeConfig",
|
|
598
|
+
"type": "object"
|
|
599
|
+
},
|
|
600
|
+
"ConfigManagedBy": {
|
|
601
|
+
"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.",
|
|
602
|
+
"enum": [
|
|
603
|
+
"github",
|
|
604
|
+
"api"
|
|
605
|
+
],
|
|
606
|
+
"title": "ConfigManagedBy",
|
|
607
|
+
"type": "string"
|
|
608
|
+
},
|
|
609
|
+
"ConfigMetadata": {
|
|
610
|
+
"additionalProperties": false,
|
|
611
|
+
"properties": {
|
|
612
|
+
"annotations": {
|
|
613
|
+
"additionalProperties": {
|
|
614
|
+
"type": "string"
|
|
615
|
+
},
|
|
616
|
+
"default": {},
|
|
617
|
+
"title": "Annotations",
|
|
618
|
+
"type": "object"
|
|
619
|
+
},
|
|
620
|
+
"labels": {
|
|
621
|
+
"default": [],
|
|
622
|
+
"items": {
|
|
623
|
+
"type": "string"
|
|
624
|
+
},
|
|
625
|
+
"title": "Labels",
|
|
626
|
+
"type": "array"
|
|
627
|
+
}
|
|
628
|
+
},
|
|
629
|
+
"required": [
|
|
630
|
+
"annotations",
|
|
631
|
+
"labels"
|
|
632
|
+
],
|
|
633
|
+
"title": "ConfigMetadata",
|
|
634
|
+
"type": "object"
|
|
635
|
+
},
|
|
636
|
+
"CronTrigger": {
|
|
637
|
+
"additionalProperties": false,
|
|
638
|
+
"properties": {
|
|
639
|
+
"schedule": {
|
|
640
|
+
"title": "Schedule",
|
|
641
|
+
"type": "string"
|
|
642
|
+
},
|
|
643
|
+
"type": {
|
|
644
|
+
"const": "cron",
|
|
645
|
+
"default": "cron",
|
|
646
|
+
"title": "Type",
|
|
647
|
+
"type": "string"
|
|
648
|
+
}
|
|
649
|
+
},
|
|
650
|
+
"required": [
|
|
651
|
+
"schedule",
|
|
652
|
+
"type"
|
|
653
|
+
],
|
|
654
|
+
"title": "CronTrigger",
|
|
655
|
+
"type": "object"
|
|
656
|
+
},
|
|
657
|
+
"Duration": {
|
|
658
|
+
"additionalProperties": false,
|
|
659
|
+
"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.",
|
|
660
|
+
"properties": {
|
|
661
|
+
"hours": {
|
|
662
|
+
"anyOf": [
|
|
663
|
+
{
|
|
664
|
+
"minimum": 0,
|
|
665
|
+
"type": "integer"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"type": "null"
|
|
669
|
+
}
|
|
670
|
+
],
|
|
671
|
+
"default": null,
|
|
672
|
+
"title": "Hours"
|
|
673
|
+
},
|
|
674
|
+
"minutes": {
|
|
675
|
+
"anyOf": [
|
|
676
|
+
{
|
|
677
|
+
"minimum": 0,
|
|
678
|
+
"type": "integer"
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
"type": "null"
|
|
682
|
+
}
|
|
683
|
+
],
|
|
684
|
+
"default": null,
|
|
685
|
+
"title": "Minutes"
|
|
686
|
+
},
|
|
687
|
+
"seconds": {
|
|
688
|
+
"anyOf": [
|
|
689
|
+
{
|
|
690
|
+
"minimum": 0,
|
|
691
|
+
"type": "integer"
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
"type": "null"
|
|
695
|
+
}
|
|
696
|
+
],
|
|
697
|
+
"default": null,
|
|
698
|
+
"title": "Seconds"
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
"required": [
|
|
702
|
+
"hours",
|
|
703
|
+
"minutes",
|
|
704
|
+
"seconds"
|
|
705
|
+
],
|
|
706
|
+
"title": "Duration",
|
|
707
|
+
"type": "object"
|
|
708
|
+
},
|
|
709
|
+
"EffortLevel": {
|
|
710
|
+
"enum": [
|
|
711
|
+
"low",
|
|
712
|
+
"medium",
|
|
713
|
+
"high",
|
|
714
|
+
"xhigh",
|
|
715
|
+
"max"
|
|
716
|
+
],
|
|
717
|
+
"title": "EffortLevel",
|
|
718
|
+
"type": "string"
|
|
719
|
+
},
|
|
720
|
+
"EllipsisGrant": {
|
|
721
|
+
"additionalProperties": false,
|
|
722
|
+
"description": "One grant entry: a level, optionally narrowed to instances whose\nnatural key (a file's name, a memory's path, a secret's name, a config's\nname, a session's id) matches any of the `match` globs.",
|
|
723
|
+
"properties": {
|
|
724
|
+
"level": {
|
|
725
|
+
"$ref": "#/$defs/Level"
|
|
726
|
+
},
|
|
727
|
+
"match": {
|
|
728
|
+
"anyOf": [
|
|
729
|
+
{
|
|
730
|
+
"items": {
|
|
731
|
+
"type": "string"
|
|
732
|
+
},
|
|
733
|
+
"type": "array"
|
|
734
|
+
},
|
|
735
|
+
{
|
|
736
|
+
"type": "null"
|
|
737
|
+
}
|
|
738
|
+
],
|
|
739
|
+
"default": null,
|
|
740
|
+
"title": "Match"
|
|
741
|
+
}
|
|
742
|
+
},
|
|
743
|
+
"required": [
|
|
744
|
+
"level",
|
|
745
|
+
"match"
|
|
746
|
+
],
|
|
747
|
+
"title": "EllipsisGrant",
|
|
748
|
+
"type": "object"
|
|
749
|
+
},
|
|
750
|
+
"EllipsisPermissions": {
|
|
751
|
+
"additionalProperties": {
|
|
752
|
+
"anyOf": [
|
|
753
|
+
{
|
|
754
|
+
"$ref": "#/$defs/Level"
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
"$ref": "#/$defs/EllipsisGrant"
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
"items": {
|
|
761
|
+
"anyOf": [
|
|
762
|
+
{
|
|
763
|
+
"$ref": "#/$defs/Level"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"$ref": "#/$defs/EllipsisGrant"
|
|
767
|
+
}
|
|
768
|
+
]
|
|
769
|
+
},
|
|
770
|
+
"type": "array"
|
|
771
|
+
}
|
|
772
|
+
]
|
|
773
|
+
},
|
|
774
|
+
"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.",
|
|
775
|
+
"propertyNames": {
|
|
776
|
+
"$ref": "#/$defs/Resource"
|
|
777
|
+
},
|
|
778
|
+
"title": "EllipsisPermissions",
|
|
779
|
+
"type": "object"
|
|
780
|
+
},
|
|
781
|
+
"EnvironmentConfig": {
|
|
782
|
+
"additionalProperties": false,
|
|
783
|
+
"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.",
|
|
784
|
+
"properties": {
|
|
785
|
+
"compute": {
|
|
786
|
+
"$ref": "#/$defs/ComputeConfig",
|
|
787
|
+
"default": {
|
|
788
|
+
"cpu": null,
|
|
789
|
+
"memory": null,
|
|
790
|
+
"timeout": null
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
"hooks": {
|
|
794
|
+
"$ref": "#/$defs/EnvironmentHooks",
|
|
795
|
+
"default": {
|
|
796
|
+
"post_clone": null,
|
|
797
|
+
"post_start": null
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
"image": {
|
|
801
|
+
"$ref": "#/$defs/EnvironmentImage",
|
|
802
|
+
"default": {
|
|
803
|
+
"dockerfile_append": null,
|
|
804
|
+
"setup": null
|
|
805
|
+
}
|
|
806
|
+
},
|
|
807
|
+
"mcp_servers": {
|
|
808
|
+
"default": [],
|
|
809
|
+
"items": {
|
|
810
|
+
"anyOf": [
|
|
811
|
+
{
|
|
812
|
+
"type": "string"
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"$ref": "#/$defs/McpServerRef"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"$ref": "#/$defs/McpStdioServer"
|
|
819
|
+
},
|
|
820
|
+
{
|
|
821
|
+
"$ref": "#/$defs/McpRemoteServer"
|
|
822
|
+
}
|
|
823
|
+
]
|
|
824
|
+
},
|
|
825
|
+
"title": "Mcp Servers",
|
|
826
|
+
"type": "array"
|
|
827
|
+
},
|
|
828
|
+
"repositories": {
|
|
829
|
+
"default": [],
|
|
830
|
+
"items": {
|
|
831
|
+
"$ref": "#/$defs/RepositoryRef"
|
|
832
|
+
},
|
|
833
|
+
"title": "Repositories",
|
|
834
|
+
"type": "array"
|
|
835
|
+
},
|
|
836
|
+
"variables": {
|
|
837
|
+
"default": [],
|
|
838
|
+
"items": {
|
|
839
|
+
"$ref": "#/$defs/EnvironmentVariable"
|
|
840
|
+
},
|
|
841
|
+
"title": "Variables",
|
|
842
|
+
"type": "array"
|
|
843
|
+
}
|
|
844
|
+
},
|
|
845
|
+
"required": [
|
|
846
|
+
"compute",
|
|
847
|
+
"hooks",
|
|
848
|
+
"image",
|
|
849
|
+
"mcp_servers",
|
|
850
|
+
"repositories",
|
|
851
|
+
"variables"
|
|
852
|
+
],
|
|
853
|
+
"title": "EnvironmentConfig",
|
|
854
|
+
"type": "object"
|
|
855
|
+
},
|
|
856
|
+
"EnvironmentHooks": {
|
|
857
|
+
"additionalProperties": false,
|
|
858
|
+
"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 Freestyle\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.",
|
|
859
|
+
"properties": {
|
|
860
|
+
"post_clone": {
|
|
861
|
+
"anyOf": [
|
|
862
|
+
{
|
|
863
|
+
"type": "string"
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"type": "null"
|
|
867
|
+
}
|
|
868
|
+
],
|
|
869
|
+
"default": null,
|
|
870
|
+
"title": "Post Clone"
|
|
871
|
+
},
|
|
872
|
+
"post_start": {
|
|
873
|
+
"anyOf": [
|
|
874
|
+
{
|
|
875
|
+
"type": "string"
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"type": "null"
|
|
879
|
+
}
|
|
880
|
+
],
|
|
881
|
+
"default": null,
|
|
882
|
+
"title": "Post Start"
|
|
883
|
+
}
|
|
884
|
+
},
|
|
885
|
+
"required": [
|
|
886
|
+
"post_clone",
|
|
887
|
+
"post_start"
|
|
888
|
+
],
|
|
889
|
+
"title": "EnvironmentHooks",
|
|
890
|
+
"type": "object"
|
|
891
|
+
},
|
|
892
|
+
"EnvironmentImage": {
|
|
893
|
+
"additionalProperties": false,
|
|
894
|
+
"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`.",
|
|
895
|
+
"properties": {
|
|
896
|
+
"dockerfile_append": {
|
|
897
|
+
"anyOf": [
|
|
898
|
+
{
|
|
899
|
+
"type": "string"
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
"type": "null"
|
|
903
|
+
}
|
|
904
|
+
],
|
|
905
|
+
"default": null,
|
|
906
|
+
"title": "Dockerfile Append"
|
|
907
|
+
},
|
|
908
|
+
"setup": {
|
|
909
|
+
"anyOf": [
|
|
910
|
+
{
|
|
911
|
+
"type": "string"
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"type": "null"
|
|
915
|
+
}
|
|
916
|
+
],
|
|
917
|
+
"default": null,
|
|
918
|
+
"title": "Setup"
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
"required": [
|
|
922
|
+
"dockerfile_append",
|
|
923
|
+
"setup"
|
|
924
|
+
],
|
|
925
|
+
"title": "EnvironmentImage",
|
|
926
|
+
"type": "object"
|
|
927
|
+
},
|
|
928
|
+
"EnvironmentSource": {
|
|
929
|
+
"description": "How a session's environment was chosen. None (the field is nullable)\nwhen the config carried an inline environment block and no resolution ran \u2014\nan inline environment is not a reference, so there is nothing to record.\n\nNot derivable from the row: `environment_id` says WHICH environment, not\nhow it was chosen, and is null for the built-in basic sandbox.",
|
|
930
|
+
"enum": [
|
|
931
|
+
"request",
|
|
932
|
+
"automation",
|
|
933
|
+
"repo_default",
|
|
934
|
+
"account_default",
|
|
935
|
+
"platform_default"
|
|
936
|
+
],
|
|
937
|
+
"title": "EnvironmentSource",
|
|
938
|
+
"type": "string"
|
|
939
|
+
},
|
|
940
|
+
"EnvironmentVariable": {
|
|
941
|
+
"additionalProperties": false,
|
|
942
|
+
"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.",
|
|
943
|
+
"properties": {
|
|
944
|
+
"name": {
|
|
945
|
+
"title": "Name",
|
|
946
|
+
"type": "string"
|
|
947
|
+
},
|
|
948
|
+
"value": {
|
|
949
|
+
"anyOf": [
|
|
950
|
+
{
|
|
951
|
+
"type": "string"
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
"type": "null"
|
|
955
|
+
}
|
|
956
|
+
],
|
|
957
|
+
"default": null,
|
|
958
|
+
"title": "Value"
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
"required": [
|
|
962
|
+
"name",
|
|
963
|
+
"value"
|
|
964
|
+
],
|
|
965
|
+
"title": "EnvironmentVariable",
|
|
966
|
+
"type": "object"
|
|
967
|
+
},
|
|
968
|
+
"GithubAccountFilter": {
|
|
969
|
+
"anyOf": [
|
|
970
|
+
{
|
|
971
|
+
"additionalProperties": false,
|
|
972
|
+
"description": "One include-minus-exclude set of GitHub accounts: an account matches iff\nit is in `include` (`true` = all, a list = exactly those, `false`/`[]` =\nnone) AND not in `exclude`. A bare bool or list is shorthand for `include`,\nso `users: true` and `users: [priya-shah]` both parse.",
|
|
973
|
+
"properties": {
|
|
974
|
+
"exclude": {
|
|
975
|
+
"default": [],
|
|
976
|
+
"items": {
|
|
977
|
+
"type": "string"
|
|
978
|
+
},
|
|
979
|
+
"title": "Exclude",
|
|
980
|
+
"type": "array"
|
|
981
|
+
},
|
|
982
|
+
"include": {
|
|
983
|
+
"anyOf": [
|
|
984
|
+
{
|
|
985
|
+
"items": {
|
|
986
|
+
"type": "string"
|
|
987
|
+
},
|
|
988
|
+
"type": "array"
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"type": "boolean"
|
|
992
|
+
}
|
|
993
|
+
],
|
|
994
|
+
"default": true,
|
|
995
|
+
"title": "Include"
|
|
996
|
+
}
|
|
997
|
+
},
|
|
998
|
+
"title": "GithubAccountFilter",
|
|
999
|
+
"type": "object"
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
"type": "boolean"
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"items": {
|
|
1006
|
+
"type": "string"
|
|
1007
|
+
},
|
|
1008
|
+
"type": "array"
|
|
1009
|
+
}
|
|
1010
|
+
]
|
|
1011
|
+
},
|
|
1012
|
+
"GithubAccountSelector": {
|
|
1013
|
+
"additionalProperties": false,
|
|
1014
|
+
"description": "A selector of GitHub accounts \u2014 the `for:` audience gate on react\nsurfaces and code review pipelines, classified on the stable entity author\n(the pusher for `push`, the PR author for a review). `users` selects human\naccounts, `bots` selects bot accounts; each is a `GithubAccountFilter`\n(include minus exclude, with bare bool/list shorthand).",
|
|
1015
|
+
"properties": {
|
|
1016
|
+
"bots": {
|
|
1017
|
+
"$ref": "#/$defs/GithubAccountFilter"
|
|
1018
|
+
},
|
|
1019
|
+
"users": {
|
|
1020
|
+
"$ref": "#/$defs/GithubAccountFilter"
|
|
1021
|
+
}
|
|
1022
|
+
},
|
|
1023
|
+
"required": [
|
|
1024
|
+
"bots",
|
|
1025
|
+
"users"
|
|
1026
|
+
],
|
|
1027
|
+
"title": "GithubAccountSelector",
|
|
1028
|
+
"type": "object"
|
|
1029
|
+
},
|
|
1030
|
+
"GithubAccountSnippet": {
|
|
1031
|
+
"description": "Sometimes the GitHub API returns a user of github (can include bots)\nusing this snippet instead of the full GithubAccount model. One example,\nis when the API returns a pull request.\n\nThis is the least amount of info we need to represent a GitHub account.",
|
|
1032
|
+
"properties": {
|
|
1033
|
+
"avatar_url": {
|
|
1034
|
+
"title": "Avatar Url",
|
|
1035
|
+
"type": "string"
|
|
1036
|
+
},
|
|
1037
|
+
"id": {
|
|
1038
|
+
"title": "Id",
|
|
1039
|
+
"type": "integer"
|
|
1040
|
+
},
|
|
1041
|
+
"login": {
|
|
1042
|
+
"title": "Login",
|
|
1043
|
+
"type": "string"
|
|
1044
|
+
},
|
|
1045
|
+
"type": {
|
|
1046
|
+
"$ref": "#/$defs/GithubAccountType"
|
|
1047
|
+
}
|
|
1048
|
+
},
|
|
1049
|
+
"required": [
|
|
1050
|
+
"avatar_url",
|
|
1051
|
+
"id",
|
|
1052
|
+
"login",
|
|
1053
|
+
"type"
|
|
1054
|
+
],
|
|
1055
|
+
"title": "GithubAccountSnippet",
|
|
1056
|
+
"type": "object"
|
|
1057
|
+
},
|
|
1058
|
+
"GithubAccountType": {
|
|
1059
|
+
"enum": [
|
|
1060
|
+
"User",
|
|
1061
|
+
"Organization",
|
|
1062
|
+
"Bot",
|
|
1063
|
+
"Mannequin"
|
|
1064
|
+
],
|
|
1065
|
+
"title": "GithubAccountType",
|
|
1066
|
+
"type": "string"
|
|
1067
|
+
},
|
|
1068
|
+
"GithubPermissions": {
|
|
1069
|
+
"additionalProperties": false,
|
|
1070
|
+
"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.",
|
|
1071
|
+
"properties": {
|
|
1072
|
+
"permissions": {
|
|
1073
|
+
"anyOf": [
|
|
1074
|
+
{
|
|
1075
|
+
"const": "read_only",
|
|
1076
|
+
"type": "string"
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
"additionalProperties": {
|
|
1080
|
+
"type": "string"
|
|
1081
|
+
},
|
|
1082
|
+
"type": "object"
|
|
1083
|
+
},
|
|
1084
|
+
{
|
|
1085
|
+
"type": "null"
|
|
1086
|
+
}
|
|
1087
|
+
],
|
|
1088
|
+
"default": null,
|
|
1089
|
+
"title": "Permissions"
|
|
1090
|
+
},
|
|
1091
|
+
"repositories": {
|
|
1092
|
+
"anyOf": [
|
|
1093
|
+
{
|
|
1094
|
+
"items": {
|
|
1095
|
+
"type": "string"
|
|
1096
|
+
},
|
|
1097
|
+
"type": "array"
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"type": "null"
|
|
1101
|
+
}
|
|
1102
|
+
],
|
|
1103
|
+
"default": null,
|
|
1104
|
+
"title": "Repositories"
|
|
1105
|
+
}
|
|
1106
|
+
},
|
|
1107
|
+
"required": [
|
|
1108
|
+
"permissions",
|
|
1109
|
+
"repositories"
|
|
1110
|
+
],
|
|
1111
|
+
"title": "GithubPermissions",
|
|
1112
|
+
"type": "object"
|
|
1113
|
+
},
|
|
1114
|
+
"GithubSourceDetails": {
|
|
1115
|
+
"description": "Identifies the file a GitHub-sourced automation 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.",
|
|
1116
|
+
"properties": {
|
|
1117
|
+
"branch": {
|
|
1118
|
+
"title": "Branch",
|
|
1119
|
+
"type": "string"
|
|
1120
|
+
},
|
|
1121
|
+
"path": {
|
|
1122
|
+
"title": "Path",
|
|
1123
|
+
"type": "string"
|
|
1124
|
+
},
|
|
1125
|
+
"repo_id": {
|
|
1126
|
+
"title": "Repo Id",
|
|
1127
|
+
"type": "integer"
|
|
1128
|
+
}
|
|
1129
|
+
},
|
|
1130
|
+
"required": [
|
|
1131
|
+
"branch",
|
|
1132
|
+
"path",
|
|
1133
|
+
"repo_id"
|
|
1134
|
+
],
|
|
1135
|
+
"title": "GithubSourceDetails",
|
|
1136
|
+
"type": "object"
|
|
1137
|
+
},
|
|
1138
|
+
"Harness": {
|
|
1139
|
+
"enum": [
|
|
1140
|
+
"claude_code",
|
|
1141
|
+
"codex"
|
|
1142
|
+
],
|
|
1143
|
+
"title": "Harness",
|
|
1144
|
+
"type": "string"
|
|
1145
|
+
},
|
|
1146
|
+
"HarnessOptions": {
|
|
1147
|
+
"discriminator": {
|
|
1148
|
+
"mapping": {
|
|
1149
|
+
"claude_code": "#/$defs/ClaudeConfig",
|
|
1150
|
+
"codex": "#/$defs/CodexConfig"
|
|
1151
|
+
},
|
|
1152
|
+
"propertyName": "type"
|
|
1153
|
+
},
|
|
1154
|
+
"oneOf": [
|
|
1155
|
+
{
|
|
1156
|
+
"$ref": "#/$defs/ClaudeConfig"
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
"$ref": "#/$defs/CodexConfig"
|
|
1160
|
+
}
|
|
1161
|
+
]
|
|
1162
|
+
},
|
|
1163
|
+
"InputContract": {
|
|
1164
|
+
"additionalProperties": false,
|
|
1165
|
+
"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`).",
|
|
1166
|
+
"properties": {
|
|
1167
|
+
"json_schema": {
|
|
1168
|
+
"anyOf": [
|
|
1169
|
+
{
|
|
1170
|
+
"additionalProperties": true,
|
|
1171
|
+
"type": "object"
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
"type": "null"
|
|
1175
|
+
}
|
|
1176
|
+
],
|
|
1177
|
+
"default": null,
|
|
1178
|
+
"title": "Json Schema"
|
|
1179
|
+
},
|
|
1180
|
+
"message": {
|
|
1181
|
+
"anyOf": [
|
|
1182
|
+
{
|
|
1183
|
+
"type": "string"
|
|
1184
|
+
},
|
|
1185
|
+
{
|
|
1186
|
+
"type": "null"
|
|
1187
|
+
}
|
|
1188
|
+
],
|
|
1189
|
+
"default": null,
|
|
1190
|
+
"title": "Message"
|
|
1191
|
+
}
|
|
1192
|
+
},
|
|
1193
|
+
"required": [
|
|
1194
|
+
"json_schema",
|
|
1195
|
+
"message"
|
|
1196
|
+
],
|
|
1197
|
+
"title": "InputContract",
|
|
1198
|
+
"type": "object"
|
|
1199
|
+
},
|
|
1200
|
+
"Instructions": {
|
|
1201
|
+
"anyOf": [
|
|
1202
|
+
{
|
|
1203
|
+
"type": "string"
|
|
1204
|
+
},
|
|
1205
|
+
{
|
|
1206
|
+
"$ref": "#/$defs/SystemFileRef"
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
"items": {
|
|
1210
|
+
"anyOf": [
|
|
1211
|
+
{
|
|
1212
|
+
"type": "string"
|
|
1213
|
+
},
|
|
1214
|
+
{
|
|
1215
|
+
"$ref": "#/$defs/SystemFileRef"
|
|
1216
|
+
}
|
|
1217
|
+
]
|
|
1218
|
+
},
|
|
1219
|
+
"type": "array"
|
|
1220
|
+
}
|
|
1221
|
+
]
|
|
1222
|
+
},
|
|
1223
|
+
"IssueAction": {
|
|
1224
|
+
"enum": [
|
|
1225
|
+
"opened",
|
|
1226
|
+
"closed",
|
|
1227
|
+
"commented"
|
|
1228
|
+
],
|
|
1229
|
+
"title": "IssueAction",
|
|
1230
|
+
"type": "string"
|
|
1231
|
+
},
|
|
1232
|
+
"Level": {
|
|
1233
|
+
"description": "What may be done to a resource. Strictly ordered: a grant at one level\nincludes every level below it (write-only would be a phantom capability \u2014\nno real client can create what it cannot read back).",
|
|
1234
|
+
"enum": [
|
|
1235
|
+
"read",
|
|
1236
|
+
"write",
|
|
1237
|
+
"delete"
|
|
1238
|
+
],
|
|
1239
|
+
"title": "Level",
|
|
1240
|
+
"type": "string"
|
|
1241
|
+
},
|
|
1242
|
+
"LinearIssueAction": {
|
|
1243
|
+
"enum": [
|
|
1244
|
+
"opened"
|
|
1245
|
+
],
|
|
1246
|
+
"title": "LinearIssueAction",
|
|
1247
|
+
"type": "string"
|
|
1248
|
+
},
|
|
1249
|
+
"McpRemoteServer": {
|
|
1250
|
+
"additionalProperties": false,
|
|
1251
|
+
"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.",
|
|
1252
|
+
"properties": {
|
|
1253
|
+
"headers": {
|
|
1254
|
+
"additionalProperties": {
|
|
1255
|
+
"type": "string"
|
|
1256
|
+
},
|
|
1257
|
+
"default": {},
|
|
1258
|
+
"title": "Headers",
|
|
1259
|
+
"type": "object"
|
|
1260
|
+
},
|
|
1261
|
+
"name": {
|
|
1262
|
+
"title": "Name",
|
|
1263
|
+
"type": "string"
|
|
1264
|
+
},
|
|
1265
|
+
"url": {
|
|
1266
|
+
"title": "Url",
|
|
1267
|
+
"type": "string"
|
|
1268
|
+
}
|
|
1269
|
+
},
|
|
1270
|
+
"required": [
|
|
1271
|
+
"headers",
|
|
1272
|
+
"name",
|
|
1273
|
+
"url"
|
|
1274
|
+
],
|
|
1275
|
+
"title": "McpRemoteServer",
|
|
1276
|
+
"type": "object"
|
|
1277
|
+
},
|
|
1278
|
+
"McpServerRef": {
|
|
1279
|
+
"additionalProperties": false,
|
|
1280
|
+
"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`).",
|
|
1281
|
+
"properties": {
|
|
1282
|
+
"name": {
|
|
1283
|
+
"title": "Name",
|
|
1284
|
+
"type": "string"
|
|
1285
|
+
}
|
|
1286
|
+
},
|
|
1287
|
+
"required": [
|
|
1288
|
+
"name"
|
|
1289
|
+
],
|
|
1290
|
+
"title": "McpServerRef",
|
|
1291
|
+
"type": "object"
|
|
1292
|
+
},
|
|
1293
|
+
"McpStdioServer": {
|
|
1294
|
+
"additionalProperties": false,
|
|
1295
|
+
"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.",
|
|
1296
|
+
"properties": {
|
|
1297
|
+
"args": {
|
|
1298
|
+
"default": [],
|
|
1299
|
+
"items": {
|
|
1300
|
+
"type": "string"
|
|
1301
|
+
},
|
|
1302
|
+
"title": "Args",
|
|
1303
|
+
"type": "array"
|
|
1304
|
+
},
|
|
1305
|
+
"command": {
|
|
1306
|
+
"title": "Command",
|
|
1307
|
+
"type": "string"
|
|
1308
|
+
},
|
|
1309
|
+
"env": {
|
|
1310
|
+
"additionalProperties": {
|
|
1311
|
+
"type": "string"
|
|
1312
|
+
},
|
|
1313
|
+
"default": {},
|
|
1314
|
+
"title": "Env",
|
|
1315
|
+
"type": "object"
|
|
1316
|
+
},
|
|
1317
|
+
"name": {
|
|
1318
|
+
"title": "Name",
|
|
1319
|
+
"type": "string"
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
"required": [
|
|
1323
|
+
"args",
|
|
1324
|
+
"command",
|
|
1325
|
+
"env",
|
|
1326
|
+
"name"
|
|
1327
|
+
],
|
|
1328
|
+
"title": "McpStdioServer",
|
|
1329
|
+
"type": "object"
|
|
1330
|
+
},
|
|
1331
|
+
"MemorySize": {
|
|
1332
|
+
"additionalProperties": false,
|
|
1333
|
+
"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.",
|
|
1334
|
+
"properties": {
|
|
1335
|
+
"gb": {
|
|
1336
|
+
"anyOf": [
|
|
1337
|
+
{
|
|
1338
|
+
"minimum": 0,
|
|
1339
|
+
"type": "integer"
|
|
1340
|
+
},
|
|
1341
|
+
{
|
|
1342
|
+
"type": "null"
|
|
1343
|
+
}
|
|
1344
|
+
],
|
|
1345
|
+
"default": null,
|
|
1346
|
+
"title": "Gb"
|
|
1347
|
+
},
|
|
1348
|
+
"mb": {
|
|
1349
|
+
"anyOf": [
|
|
1350
|
+
{
|
|
1351
|
+
"minimum": 0,
|
|
1352
|
+
"type": "integer"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"type": "null"
|
|
1356
|
+
}
|
|
1357
|
+
],
|
|
1358
|
+
"default": null,
|
|
1359
|
+
"title": "Mb"
|
|
1360
|
+
}
|
|
1361
|
+
},
|
|
1362
|
+
"required": [
|
|
1363
|
+
"gb",
|
|
1364
|
+
"mb"
|
|
1365
|
+
],
|
|
1366
|
+
"title": "MemorySize",
|
|
1367
|
+
"type": "object"
|
|
1368
|
+
},
|
|
1369
|
+
"OutputConfig": {
|
|
1370
|
+
"additionalProperties": false,
|
|
1371
|
+
"description": "JSON Schema for the harness's structured result, when certified.",
|
|
1372
|
+
"properties": {
|
|
1373
|
+
"json_schema": {
|
|
1374
|
+
"additionalProperties": true,
|
|
1375
|
+
"title": "Json Schema",
|
|
1376
|
+
"type": "object"
|
|
1377
|
+
}
|
|
1378
|
+
},
|
|
1379
|
+
"required": [
|
|
1380
|
+
"json_schema"
|
|
1381
|
+
],
|
|
1382
|
+
"title": "OutputConfig",
|
|
1383
|
+
"type": "object"
|
|
1384
|
+
},
|
|
1385
|
+
"ParentKind": {
|
|
1386
|
+
"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).",
|
|
1387
|
+
"enum": [
|
|
1388
|
+
"continuation",
|
|
1389
|
+
"resume"
|
|
1390
|
+
],
|
|
1391
|
+
"title": "ParentKind",
|
|
1392
|
+
"type": "string"
|
|
1393
|
+
},
|
|
1394
|
+
"PermissionsConfig": {
|
|
1395
|
+
"additionalProperties": false,
|
|
1396
|
+
"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.",
|
|
1397
|
+
"properties": {
|
|
1398
|
+
"ellipsis": {
|
|
1399
|
+
"anyOf": [
|
|
1400
|
+
{
|
|
1401
|
+
"enum": [
|
|
1402
|
+
true,
|
|
1403
|
+
"all"
|
|
1404
|
+
]
|
|
1405
|
+
},
|
|
1406
|
+
{
|
|
1407
|
+
"$ref": "#/$defs/EllipsisPermissions"
|
|
1408
|
+
}
|
|
1409
|
+
],
|
|
1410
|
+
"default": true,
|
|
1411
|
+
"title": "Ellipsis"
|
|
1412
|
+
},
|
|
1413
|
+
"github": {
|
|
1414
|
+
"$ref": "#/$defs/GithubPermissions",
|
|
1415
|
+
"default": {
|
|
1416
|
+
"permissions": null,
|
|
1417
|
+
"repositories": null
|
|
1418
|
+
}
|
|
1419
|
+
}
|
|
1420
|
+
},
|
|
1421
|
+
"required": [
|
|
1422
|
+
"ellipsis",
|
|
1423
|
+
"github"
|
|
1424
|
+
],
|
|
1425
|
+
"title": "PermissionsConfig",
|
|
1426
|
+
"type": "object"
|
|
1427
|
+
},
|
|
1428
|
+
"PromptBlockedReason": {
|
|
1429
|
+
"description": "Why direct prompting is refused. Absent when prompting is allowed.",
|
|
1430
|
+
"enum": [
|
|
1431
|
+
"mention_surface",
|
|
1432
|
+
"ephemeral_trigger",
|
|
1433
|
+
"non_interactive",
|
|
1434
|
+
"harness_single_turn",
|
|
1435
|
+
"closed"
|
|
1436
|
+
],
|
|
1437
|
+
"title": "PromptBlockedReason",
|
|
1438
|
+
"type": "string"
|
|
1439
|
+
},
|
|
1440
|
+
"PullRequestAction": {
|
|
1441
|
+
"enum": [
|
|
1442
|
+
"opened",
|
|
1443
|
+
"pushed",
|
|
1444
|
+
"merged",
|
|
1445
|
+
"closed",
|
|
1446
|
+
"review_submitted",
|
|
1447
|
+
"commented"
|
|
1448
|
+
],
|
|
1449
|
+
"title": "PullRequestAction",
|
|
1450
|
+
"type": "string"
|
|
1451
|
+
},
|
|
1452
|
+
"ReactIssue": {
|
|
1453
|
+
"additionalProperties": false,
|
|
1454
|
+
"properties": {
|
|
1455
|
+
"for": {
|
|
1456
|
+
"$ref": "#/$defs/GithubAccountSelector"
|
|
1457
|
+
},
|
|
1458
|
+
"labels": {
|
|
1459
|
+
"default": [],
|
|
1460
|
+
"items": {
|
|
1461
|
+
"type": "string"
|
|
1462
|
+
},
|
|
1463
|
+
"title": "Labels",
|
|
1464
|
+
"type": "array"
|
|
1465
|
+
},
|
|
1466
|
+
"on": {
|
|
1467
|
+
"items": {
|
|
1468
|
+
"$ref": "#/$defs/IssueAction"
|
|
1469
|
+
},
|
|
1470
|
+
"title": "On",
|
|
1471
|
+
"type": "array"
|
|
1472
|
+
},
|
|
1473
|
+
"repositories": {
|
|
1474
|
+
"$ref": "#/$defs/RepositoryFilter"
|
|
1475
|
+
}
|
|
1476
|
+
},
|
|
1477
|
+
"required": [
|
|
1478
|
+
"for",
|
|
1479
|
+
"labels",
|
|
1480
|
+
"on",
|
|
1481
|
+
"repositories"
|
|
1482
|
+
],
|
|
1483
|
+
"title": "ReactIssue",
|
|
1484
|
+
"type": "object"
|
|
1485
|
+
},
|
|
1486
|
+
"ReactLinearIssue": {
|
|
1487
|
+
"additionalProperties": false,
|
|
1488
|
+
"properties": {
|
|
1489
|
+
"for": {
|
|
1490
|
+
"$ref": "#/$defs/GithubAccountSelector"
|
|
1491
|
+
},
|
|
1492
|
+
"on": {
|
|
1493
|
+
"default": [
|
|
1494
|
+
"opened"
|
|
1495
|
+
],
|
|
1496
|
+
"items": {
|
|
1497
|
+
"$ref": "#/$defs/LinearIssueAction"
|
|
1498
|
+
},
|
|
1499
|
+
"title": "On",
|
|
1500
|
+
"type": "array"
|
|
1501
|
+
}
|
|
1502
|
+
},
|
|
1503
|
+
"required": [
|
|
1504
|
+
"for",
|
|
1505
|
+
"on"
|
|
1506
|
+
],
|
|
1507
|
+
"title": "ReactLinearIssue",
|
|
1508
|
+
"type": "object"
|
|
1509
|
+
},
|
|
1510
|
+
"ReactPullRequest": {
|
|
1511
|
+
"additionalProperties": false,
|
|
1512
|
+
"properties": {
|
|
1513
|
+
"base": {
|
|
1514
|
+
"default": [],
|
|
1515
|
+
"items": {
|
|
1516
|
+
"type": "string"
|
|
1517
|
+
},
|
|
1518
|
+
"title": "Base",
|
|
1519
|
+
"type": "array"
|
|
1520
|
+
},
|
|
1521
|
+
"draft": {
|
|
1522
|
+
"anyOf": [
|
|
1523
|
+
{
|
|
1524
|
+
"type": "boolean"
|
|
1525
|
+
},
|
|
1526
|
+
{
|
|
1527
|
+
"type": "null"
|
|
1528
|
+
}
|
|
1529
|
+
],
|
|
1530
|
+
"default": null,
|
|
1531
|
+
"title": "Draft"
|
|
1532
|
+
},
|
|
1533
|
+
"for": {
|
|
1534
|
+
"$ref": "#/$defs/GithubAccountSelector"
|
|
1535
|
+
},
|
|
1536
|
+
"head": {
|
|
1537
|
+
"default": [],
|
|
1538
|
+
"items": {
|
|
1539
|
+
"type": "string"
|
|
1540
|
+
},
|
|
1541
|
+
"title": "Head",
|
|
1542
|
+
"type": "array"
|
|
1543
|
+
},
|
|
1544
|
+
"labels": {
|
|
1545
|
+
"default": [],
|
|
1546
|
+
"items": {
|
|
1547
|
+
"type": "string"
|
|
1548
|
+
},
|
|
1549
|
+
"title": "Labels",
|
|
1550
|
+
"type": "array"
|
|
1551
|
+
},
|
|
1552
|
+
"on": {
|
|
1553
|
+
"items": {
|
|
1554
|
+
"$ref": "#/$defs/PullRequestAction"
|
|
1555
|
+
},
|
|
1556
|
+
"title": "On",
|
|
1557
|
+
"type": "array"
|
|
1558
|
+
},
|
|
1559
|
+
"paths": {
|
|
1560
|
+
"default": [],
|
|
1561
|
+
"items": {
|
|
1562
|
+
"type": "string"
|
|
1563
|
+
},
|
|
1564
|
+
"title": "Paths",
|
|
1565
|
+
"type": "array"
|
|
1566
|
+
},
|
|
1567
|
+
"repositories": {
|
|
1568
|
+
"$ref": "#/$defs/RepositoryFilter"
|
|
1569
|
+
}
|
|
1570
|
+
},
|
|
1571
|
+
"required": [
|
|
1572
|
+
"base",
|
|
1573
|
+
"draft",
|
|
1574
|
+
"for",
|
|
1575
|
+
"head",
|
|
1576
|
+
"labels",
|
|
1577
|
+
"on",
|
|
1578
|
+
"paths",
|
|
1579
|
+
"repositories"
|
|
1580
|
+
],
|
|
1581
|
+
"title": "ReactPullRequest",
|
|
1582
|
+
"type": "object"
|
|
1583
|
+
},
|
|
1584
|
+
"ReactPush": {
|
|
1585
|
+
"additionalProperties": false,
|
|
1586
|
+
"properties": {
|
|
1587
|
+
"branch": {
|
|
1588
|
+
"default": [],
|
|
1589
|
+
"items": {
|
|
1590
|
+
"type": "string"
|
|
1591
|
+
},
|
|
1592
|
+
"title": "Branch",
|
|
1593
|
+
"type": "array"
|
|
1594
|
+
},
|
|
1595
|
+
"for": {
|
|
1596
|
+
"$ref": "#/$defs/GithubAccountSelector"
|
|
1597
|
+
},
|
|
1598
|
+
"paths": {
|
|
1599
|
+
"default": [],
|
|
1600
|
+
"items": {
|
|
1601
|
+
"type": "string"
|
|
1602
|
+
},
|
|
1603
|
+
"title": "Paths",
|
|
1604
|
+
"type": "array"
|
|
1605
|
+
},
|
|
1606
|
+
"repositories": {
|
|
1607
|
+
"$ref": "#/$defs/RepositoryFilter"
|
|
1608
|
+
}
|
|
1609
|
+
},
|
|
1610
|
+
"required": [
|
|
1611
|
+
"branch",
|
|
1612
|
+
"for",
|
|
1613
|
+
"paths",
|
|
1614
|
+
"repositories"
|
|
1615
|
+
],
|
|
1616
|
+
"title": "ReactPush",
|
|
1617
|
+
"type": "object"
|
|
1618
|
+
},
|
|
1619
|
+
"ReactSentry": {
|
|
1620
|
+
"additionalProperties": false,
|
|
1621
|
+
"properties": {
|
|
1622
|
+
"on": {
|
|
1623
|
+
"items": {
|
|
1624
|
+
"$ref": "#/$defs/SentryAction"
|
|
1625
|
+
},
|
|
1626
|
+
"title": "On",
|
|
1627
|
+
"type": "array"
|
|
1628
|
+
},
|
|
1629
|
+
"projects": {
|
|
1630
|
+
"default": [],
|
|
1631
|
+
"items": {
|
|
1632
|
+
"type": "string"
|
|
1633
|
+
},
|
|
1634
|
+
"title": "Projects",
|
|
1635
|
+
"type": "array"
|
|
1636
|
+
}
|
|
1637
|
+
},
|
|
1638
|
+
"required": [
|
|
1639
|
+
"on",
|
|
1640
|
+
"projects"
|
|
1641
|
+
],
|
|
1642
|
+
"title": "ReactSentry",
|
|
1643
|
+
"type": "object"
|
|
1644
|
+
},
|
|
1645
|
+
"ReactSlackChannel": {
|
|
1646
|
+
"additionalProperties": false,
|
|
1647
|
+
"properties": {},
|
|
1648
|
+
"title": "ReactSlackChannel",
|
|
1649
|
+
"type": "object"
|
|
1650
|
+
},
|
|
1651
|
+
"ReactTrigger": {
|
|
1652
|
+
"additionalProperties": false,
|
|
1653
|
+
"properties": {
|
|
1654
|
+
"issue": {
|
|
1655
|
+
"anyOf": [
|
|
1656
|
+
{
|
|
1657
|
+
"$ref": "#/$defs/ReactIssue"
|
|
1658
|
+
},
|
|
1659
|
+
{
|
|
1660
|
+
"type": "null"
|
|
1661
|
+
}
|
|
1662
|
+
],
|
|
1663
|
+
"default": null
|
|
1664
|
+
},
|
|
1665
|
+
"linear_issue": {
|
|
1666
|
+
"anyOf": [
|
|
1667
|
+
{
|
|
1668
|
+
"$ref": "#/$defs/ReactLinearIssue"
|
|
1669
|
+
},
|
|
1670
|
+
{
|
|
1671
|
+
"type": "null"
|
|
1672
|
+
}
|
|
1673
|
+
],
|
|
1674
|
+
"default": null
|
|
1675
|
+
},
|
|
1676
|
+
"pull_request": {
|
|
1677
|
+
"anyOf": [
|
|
1678
|
+
{
|
|
1679
|
+
"$ref": "#/$defs/ReactPullRequest"
|
|
1680
|
+
},
|
|
1681
|
+
{
|
|
1682
|
+
"type": "null"
|
|
1683
|
+
}
|
|
1684
|
+
],
|
|
1685
|
+
"default": null
|
|
1686
|
+
},
|
|
1687
|
+
"push": {
|
|
1688
|
+
"anyOf": [
|
|
1689
|
+
{
|
|
1690
|
+
"$ref": "#/$defs/ReactPush"
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
"type": "null"
|
|
1694
|
+
}
|
|
1695
|
+
],
|
|
1696
|
+
"default": null
|
|
1697
|
+
},
|
|
1698
|
+
"sentry": {
|
|
1699
|
+
"anyOf": [
|
|
1700
|
+
{
|
|
1701
|
+
"$ref": "#/$defs/ReactSentry"
|
|
1702
|
+
},
|
|
1703
|
+
{
|
|
1704
|
+
"type": "null"
|
|
1705
|
+
}
|
|
1706
|
+
],
|
|
1707
|
+
"default": null
|
|
1708
|
+
},
|
|
1709
|
+
"slack_channel": {
|
|
1710
|
+
"anyOf": [
|
|
1711
|
+
{
|
|
1712
|
+
"$ref": "#/$defs/ReactSlackChannel"
|
|
1713
|
+
},
|
|
1714
|
+
{
|
|
1715
|
+
"type": "null"
|
|
1716
|
+
}
|
|
1717
|
+
],
|
|
1718
|
+
"default": null
|
|
1719
|
+
},
|
|
1720
|
+
"type": {
|
|
1721
|
+
"const": "react",
|
|
1722
|
+
"default": "react",
|
|
1723
|
+
"title": "Type",
|
|
1724
|
+
"type": "string"
|
|
1725
|
+
}
|
|
1726
|
+
},
|
|
1727
|
+
"required": [
|
|
1728
|
+
"issue",
|
|
1729
|
+
"linear_issue",
|
|
1730
|
+
"pull_request",
|
|
1731
|
+
"push",
|
|
1732
|
+
"sentry",
|
|
1733
|
+
"slack_channel",
|
|
1734
|
+
"type"
|
|
1735
|
+
],
|
|
1736
|
+
"title": "ReactTrigger",
|
|
1737
|
+
"type": "object"
|
|
1738
|
+
},
|
|
1739
|
+
"RepositoryFilter": {
|
|
1740
|
+
"anyOf": [
|
|
1741
|
+
{
|
|
1742
|
+
"additionalProperties": false,
|
|
1743
|
+
"description": "The watch scope of a trigger, by repository name (owner defaults to the\naccount). Include minus exclude: `include: []` (the default) covers every\nrepository of the installation, so `exclude`-only means \"all except these\"\nand keeps covering repositories added to the org later. A bare list is\nshorthand for `include`.",
|
|
1744
|
+
"properties": {
|
|
1745
|
+
"exclude": {
|
|
1746
|
+
"default": [],
|
|
1747
|
+
"items": {
|
|
1748
|
+
"type": "string"
|
|
1749
|
+
},
|
|
1750
|
+
"title": "Exclude",
|
|
1751
|
+
"type": "array"
|
|
1752
|
+
},
|
|
1753
|
+
"include": {
|
|
1754
|
+
"default": [],
|
|
1755
|
+
"items": {
|
|
1756
|
+
"type": "string"
|
|
1757
|
+
},
|
|
1758
|
+
"title": "Include",
|
|
1759
|
+
"type": "array"
|
|
1760
|
+
}
|
|
1761
|
+
},
|
|
1762
|
+
"title": "RepositoryFilter",
|
|
1763
|
+
"type": "object"
|
|
1764
|
+
},
|
|
1765
|
+
{
|
|
1766
|
+
"items": {
|
|
1767
|
+
"type": "string"
|
|
1768
|
+
},
|
|
1769
|
+
"type": "array"
|
|
1770
|
+
}
|
|
1771
|
+
]
|
|
1772
|
+
},
|
|
1773
|
+
"RepositoryRef": {
|
|
1774
|
+
"additionalProperties": false,
|
|
1775
|
+
"properties": {
|
|
1776
|
+
"name": {
|
|
1777
|
+
"title": "Name",
|
|
1778
|
+
"type": "string"
|
|
1779
|
+
},
|
|
1780
|
+
"owner": {
|
|
1781
|
+
"anyOf": [
|
|
1782
|
+
{
|
|
1783
|
+
"type": "string"
|
|
1784
|
+
},
|
|
1785
|
+
{
|
|
1786
|
+
"type": "null"
|
|
1787
|
+
}
|
|
1788
|
+
],
|
|
1789
|
+
"default": null,
|
|
1790
|
+
"title": "Owner"
|
|
1791
|
+
},
|
|
1792
|
+
"ref": {
|
|
1793
|
+
"anyOf": [
|
|
1794
|
+
{
|
|
1795
|
+
"type": "string"
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
"type": "null"
|
|
1799
|
+
}
|
|
1800
|
+
],
|
|
1801
|
+
"default": null,
|
|
1802
|
+
"title": "Ref"
|
|
1803
|
+
}
|
|
1804
|
+
},
|
|
1805
|
+
"required": [
|
|
1806
|
+
"name",
|
|
1807
|
+
"owner",
|
|
1808
|
+
"ref"
|
|
1809
|
+
],
|
|
1810
|
+
"title": "RepositoryRef",
|
|
1811
|
+
"type": "object"
|
|
1812
|
+
},
|
|
1813
|
+
"Resource": {
|
|
1814
|
+
"description": "Everything a credential can be granted access to, one value per /v1\nresource family. `TOKENS` is reserved for the future token-management\nroutes; nothing maps to it yet.",
|
|
1815
|
+
"enum": [
|
|
1816
|
+
"account",
|
|
1817
|
+
"alerts",
|
|
1818
|
+
"sessions",
|
|
1819
|
+
"files",
|
|
1820
|
+
"memories",
|
|
1821
|
+
"reviews",
|
|
1822
|
+
"configs",
|
|
1823
|
+
"defaults",
|
|
1824
|
+
"environments",
|
|
1825
|
+
"secrets",
|
|
1826
|
+
"templates",
|
|
1827
|
+
"integrations",
|
|
1828
|
+
"tokens",
|
|
1829
|
+
"webhooks",
|
|
1830
|
+
"user"
|
|
1831
|
+
],
|
|
1832
|
+
"title": "Resource",
|
|
1833
|
+
"type": "string"
|
|
1834
|
+
},
|
|
1835
|
+
"RunStatus": {
|
|
1836
|
+
"description": "What the current (or most recent) execution is doing (backs `run`).",
|
|
1837
|
+
"enum": [
|
|
1838
|
+
"scheduled",
|
|
1839
|
+
"starting",
|
|
1840
|
+
"working",
|
|
1841
|
+
"waiting",
|
|
1842
|
+
"done",
|
|
1843
|
+
"failed",
|
|
1844
|
+
"stopped",
|
|
1845
|
+
"cancelled",
|
|
1846
|
+
"retrying"
|
|
1847
|
+
],
|
|
1848
|
+
"title": "RunStatus",
|
|
1849
|
+
"type": "string"
|
|
1850
|
+
},
|
|
1851
|
+
"SandboxCacheTier": {
|
|
1852
|
+
"description": "Which image-cache tier a sandbox creation took \u2014 the customer-facing\nnames for `create_sandbox_from_default`'s exact / latest / default tiers.\nRides on `Sandbox.cache_tier` and the sandbox_ready lifecycle record.",
|
|
1853
|
+
"enum": [
|
|
1854
|
+
"exact",
|
|
1855
|
+
"incremental",
|
|
1856
|
+
"full"
|
|
1857
|
+
],
|
|
1858
|
+
"title": "SandboxCacheTier",
|
|
1859
|
+
"type": "string"
|
|
1860
|
+
},
|
|
1861
|
+
"SandboxPort": {
|
|
1862
|
+
"properties": {
|
|
1863
|
+
"port": {
|
|
1864
|
+
"title": "Port",
|
|
1865
|
+
"type": "integer"
|
|
1866
|
+
},
|
|
1867
|
+
"tcp_host": {
|
|
1868
|
+
"anyOf": [
|
|
1869
|
+
{
|
|
1870
|
+
"type": "string"
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"type": "null"
|
|
1874
|
+
}
|
|
1875
|
+
],
|
|
1876
|
+
"default": null,
|
|
1877
|
+
"title": "Tcp Host"
|
|
1878
|
+
},
|
|
1879
|
+
"tcp_port": {
|
|
1880
|
+
"anyOf": [
|
|
1881
|
+
{
|
|
1882
|
+
"type": "integer"
|
|
1883
|
+
},
|
|
1884
|
+
{
|
|
1885
|
+
"type": "null"
|
|
1886
|
+
}
|
|
1887
|
+
],
|
|
1888
|
+
"default": null,
|
|
1889
|
+
"title": "Tcp Port"
|
|
1890
|
+
},
|
|
1891
|
+
"tls_host": {
|
|
1892
|
+
"title": "Tls Host",
|
|
1893
|
+
"type": "string"
|
|
1894
|
+
},
|
|
1895
|
+
"tls_port": {
|
|
1896
|
+
"title": "Tls Port",
|
|
1897
|
+
"type": "integer"
|
|
1898
|
+
},
|
|
1899
|
+
"tunnel_url": {
|
|
1900
|
+
"title": "Tunnel Url",
|
|
1901
|
+
"type": "string"
|
|
1902
|
+
},
|
|
1903
|
+
"unencrypted_host": {
|
|
1904
|
+
"anyOf": [
|
|
1905
|
+
{
|
|
1906
|
+
"type": "string"
|
|
1907
|
+
},
|
|
1908
|
+
{
|
|
1909
|
+
"type": "null"
|
|
1910
|
+
}
|
|
1911
|
+
],
|
|
1912
|
+
"default": null,
|
|
1913
|
+
"title": "Unencrypted Host"
|
|
1914
|
+
},
|
|
1915
|
+
"unencrypted_port": {
|
|
1916
|
+
"anyOf": [
|
|
1917
|
+
{
|
|
1918
|
+
"type": "integer"
|
|
1919
|
+
},
|
|
1920
|
+
{
|
|
1921
|
+
"type": "null"
|
|
1922
|
+
}
|
|
1923
|
+
],
|
|
1924
|
+
"default": null,
|
|
1925
|
+
"title": "Unencrypted Port"
|
|
1926
|
+
}
|
|
1927
|
+
},
|
|
1928
|
+
"required": [
|
|
1929
|
+
"port",
|
|
1930
|
+
"tcp_host",
|
|
1931
|
+
"tcp_port",
|
|
1932
|
+
"tls_host",
|
|
1933
|
+
"tls_port",
|
|
1934
|
+
"tunnel_url",
|
|
1935
|
+
"unencrypted_host",
|
|
1936
|
+
"unencrypted_port"
|
|
1937
|
+
],
|
|
1938
|
+
"title": "SandboxPort",
|
|
1939
|
+
"type": "object"
|
|
1940
|
+
},
|
|
1941
|
+
"SandboxRepository": {
|
|
1942
|
+
"properties": {
|
|
1943
|
+
"id": {
|
|
1944
|
+
"title": "Id",
|
|
1945
|
+
"type": "integer"
|
|
1946
|
+
},
|
|
1947
|
+
"name": {
|
|
1948
|
+
"title": "Name",
|
|
1949
|
+
"type": "string"
|
|
1950
|
+
},
|
|
1951
|
+
"owner_id": {
|
|
1952
|
+
"title": "Owner Id",
|
|
1953
|
+
"type": "integer"
|
|
1954
|
+
},
|
|
1955
|
+
"owner_name": {
|
|
1956
|
+
"title": "Owner Name",
|
|
1957
|
+
"type": "string"
|
|
1958
|
+
},
|
|
1959
|
+
"sha": {
|
|
1960
|
+
"title": "Sha",
|
|
1961
|
+
"type": "string"
|
|
1962
|
+
}
|
|
1963
|
+
},
|
|
1964
|
+
"required": [
|
|
1965
|
+
"id",
|
|
1966
|
+
"name",
|
|
1967
|
+
"owner_id",
|
|
1968
|
+
"owner_name",
|
|
1969
|
+
"sha"
|
|
1970
|
+
],
|
|
1971
|
+
"title": "SandboxRepository",
|
|
1972
|
+
"type": "object"
|
|
1973
|
+
},
|
|
1974
|
+
"SandboxResponse": {
|
|
1975
|
+
"properties": {
|
|
1976
|
+
"cache_tier": {
|
|
1977
|
+
"anyOf": [
|
|
1978
|
+
{
|
|
1979
|
+
"$ref": "#/$defs/SandboxCacheTier"
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
"type": "null"
|
|
1983
|
+
}
|
|
1984
|
+
]
|
|
1985
|
+
},
|
|
1986
|
+
"cost_sandbox_cpu": {
|
|
1987
|
+
"title": "Cost Sandbox Cpu",
|
|
1988
|
+
"type": "integer"
|
|
1989
|
+
},
|
|
1990
|
+
"cost_sandbox_memory": {
|
|
1991
|
+
"title": "Cost Sandbox Memory",
|
|
1992
|
+
"type": "integer"
|
|
1993
|
+
},
|
|
1994
|
+
"cpu": {
|
|
1995
|
+
"title": "Cpu",
|
|
1996
|
+
"type": "number"
|
|
1997
|
+
},
|
|
1998
|
+
"dockerfile": {
|
|
1999
|
+
"anyOf": [
|
|
2000
|
+
{
|
|
2001
|
+
"type": "string"
|
|
2002
|
+
},
|
|
2003
|
+
{
|
|
2004
|
+
"type": "null"
|
|
2005
|
+
}
|
|
2006
|
+
],
|
|
2007
|
+
"title": "Dockerfile"
|
|
2008
|
+
},
|
|
2009
|
+
"encrypted_ports": {
|
|
2010
|
+
"items": {
|
|
2011
|
+
"type": "integer"
|
|
2012
|
+
},
|
|
2013
|
+
"title": "Encrypted Ports",
|
|
2014
|
+
"type": "array"
|
|
2015
|
+
},
|
|
2016
|
+
"environment_variable_keys": {
|
|
2017
|
+
"items": {
|
|
2018
|
+
"type": "string"
|
|
2019
|
+
},
|
|
2020
|
+
"title": "Environment Variable Keys",
|
|
2021
|
+
"type": "array"
|
|
2022
|
+
},
|
|
2023
|
+
"failed_at": {
|
|
2024
|
+
"anyOf": [
|
|
2025
|
+
{
|
|
2026
|
+
"format": "date-time",
|
|
2027
|
+
"type": "string"
|
|
2028
|
+
},
|
|
2029
|
+
{
|
|
2030
|
+
"type": "null"
|
|
2031
|
+
}
|
|
2032
|
+
],
|
|
2033
|
+
"title": "Failed At"
|
|
2034
|
+
},
|
|
2035
|
+
"id": {
|
|
2036
|
+
"title": "Id",
|
|
2037
|
+
"type": "string"
|
|
2038
|
+
},
|
|
2039
|
+
"image_setup": {
|
|
2040
|
+
"anyOf": [
|
|
2041
|
+
{
|
|
2042
|
+
"type": "string"
|
|
2043
|
+
},
|
|
2044
|
+
{
|
|
2045
|
+
"type": "null"
|
|
2046
|
+
}
|
|
2047
|
+
],
|
|
2048
|
+
"title": "Image Setup"
|
|
2049
|
+
},
|
|
2050
|
+
"memory_mib": {
|
|
2051
|
+
"title": "Memory Mib",
|
|
2052
|
+
"type": "integer"
|
|
2053
|
+
},
|
|
2054
|
+
"phase_timings": {
|
|
2055
|
+
"additionalProperties": {
|
|
2056
|
+
"type": "number"
|
|
2057
|
+
},
|
|
2058
|
+
"title": "Phase Timings",
|
|
2059
|
+
"type": "object"
|
|
2060
|
+
},
|
|
2061
|
+
"post_clone": {
|
|
2062
|
+
"anyOf": [
|
|
2063
|
+
{
|
|
2064
|
+
"type": "string"
|
|
2065
|
+
},
|
|
2066
|
+
{
|
|
2067
|
+
"type": "null"
|
|
2068
|
+
}
|
|
2069
|
+
],
|
|
2070
|
+
"title": "Post Clone"
|
|
2071
|
+
},
|
|
2072
|
+
"post_start": {
|
|
2073
|
+
"anyOf": [
|
|
2074
|
+
{
|
|
2075
|
+
"type": "string"
|
|
2076
|
+
},
|
|
2077
|
+
{
|
|
2078
|
+
"type": "null"
|
|
2079
|
+
}
|
|
2080
|
+
],
|
|
2081
|
+
"title": "Post Start"
|
|
2082
|
+
},
|
|
2083
|
+
"repositories": {
|
|
2084
|
+
"items": {
|
|
2085
|
+
"$ref": "#/$defs/SandboxRepository"
|
|
2086
|
+
},
|
|
2087
|
+
"title": "Repositories",
|
|
2088
|
+
"type": "array"
|
|
2089
|
+
},
|
|
2090
|
+
"running_at": {
|
|
2091
|
+
"anyOf": [
|
|
2092
|
+
{
|
|
2093
|
+
"format": "date-time",
|
|
2094
|
+
"type": "string"
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
"type": "null"
|
|
2098
|
+
}
|
|
2099
|
+
],
|
|
2100
|
+
"title": "Running At"
|
|
2101
|
+
},
|
|
2102
|
+
"scheduled_at": {
|
|
2103
|
+
"format": "date-time",
|
|
2104
|
+
"title": "Scheduled At",
|
|
2105
|
+
"type": "string"
|
|
2106
|
+
},
|
|
2107
|
+
"source": {
|
|
2108
|
+
"$ref": "#/$defs/SandboxSource"
|
|
2109
|
+
},
|
|
2110
|
+
"source_session_id": {
|
|
2111
|
+
"anyOf": [
|
|
2112
|
+
{
|
|
2113
|
+
"type": "string"
|
|
2114
|
+
},
|
|
2115
|
+
{
|
|
2116
|
+
"type": "null"
|
|
2117
|
+
}
|
|
2118
|
+
],
|
|
2119
|
+
"title": "Source Session Id"
|
|
2120
|
+
},
|
|
2121
|
+
"status": {
|
|
2122
|
+
"$ref": "#/$defs/SandboxStatus"
|
|
2123
|
+
},
|
|
2124
|
+
"terminated_at": {
|
|
2125
|
+
"anyOf": [
|
|
2126
|
+
{
|
|
2127
|
+
"format": "date-time",
|
|
2128
|
+
"type": "string"
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"type": "null"
|
|
2132
|
+
}
|
|
2133
|
+
],
|
|
2134
|
+
"title": "Terminated At"
|
|
2135
|
+
},
|
|
2136
|
+
"terminating_at": {
|
|
2137
|
+
"anyOf": [
|
|
2138
|
+
{
|
|
2139
|
+
"format": "date-time",
|
|
2140
|
+
"type": "string"
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
"type": "null"
|
|
2144
|
+
}
|
|
2145
|
+
],
|
|
2146
|
+
"title": "Terminating At"
|
|
2147
|
+
},
|
|
2148
|
+
"timeout_seconds": {
|
|
2149
|
+
"title": "Timeout Seconds",
|
|
2150
|
+
"type": "integer"
|
|
2151
|
+
},
|
|
2152
|
+
"tunnels": {
|
|
2153
|
+
"items": {
|
|
2154
|
+
"$ref": "#/$defs/SandboxPort"
|
|
2155
|
+
},
|
|
2156
|
+
"title": "Tunnels",
|
|
2157
|
+
"type": "array"
|
|
2158
|
+
},
|
|
2159
|
+
"type": {
|
|
2160
|
+
"$ref": "#/$defs/SandboxType"
|
|
2161
|
+
},
|
|
2162
|
+
"unencrypted_ports": {
|
|
2163
|
+
"items": {
|
|
2164
|
+
"type": "integer"
|
|
2165
|
+
},
|
|
2166
|
+
"title": "Unencrypted Ports",
|
|
2167
|
+
"type": "array"
|
|
2168
|
+
}
|
|
2169
|
+
},
|
|
2170
|
+
"required": [
|
|
2171
|
+
"cache_tier",
|
|
2172
|
+
"cost_sandbox_cpu",
|
|
2173
|
+
"cost_sandbox_memory",
|
|
2174
|
+
"cpu",
|
|
2175
|
+
"dockerfile",
|
|
2176
|
+
"encrypted_ports",
|
|
2177
|
+
"environment_variable_keys",
|
|
2178
|
+
"failed_at",
|
|
2179
|
+
"id",
|
|
2180
|
+
"image_setup",
|
|
2181
|
+
"memory_mib",
|
|
2182
|
+
"phase_timings",
|
|
2183
|
+
"post_clone",
|
|
2184
|
+
"post_start",
|
|
2185
|
+
"repositories",
|
|
2186
|
+
"running_at",
|
|
2187
|
+
"scheduled_at",
|
|
2188
|
+
"source",
|
|
2189
|
+
"source_session_id",
|
|
2190
|
+
"status",
|
|
2191
|
+
"terminated_at",
|
|
2192
|
+
"terminating_at",
|
|
2193
|
+
"timeout_seconds",
|
|
2194
|
+
"tunnels",
|
|
2195
|
+
"type",
|
|
2196
|
+
"unencrypted_ports"
|
|
2197
|
+
],
|
|
2198
|
+
"title": "SandboxResponse",
|
|
2199
|
+
"type": "object"
|
|
2200
|
+
},
|
|
2201
|
+
"SandboxSnapshotFrame": {
|
|
2202
|
+
"properties": {
|
|
2203
|
+
"sandbox": {
|
|
2204
|
+
"$ref": "#/$defs/SandboxResponse"
|
|
2205
|
+
},
|
|
2206
|
+
"type": {
|
|
2207
|
+
"const": "snapshot",
|
|
2208
|
+
"default": "snapshot",
|
|
2209
|
+
"title": "Type",
|
|
2210
|
+
"type": "string"
|
|
2211
|
+
}
|
|
2212
|
+
},
|
|
2213
|
+
"required": [
|
|
2214
|
+
"sandbox",
|
|
2215
|
+
"type"
|
|
2216
|
+
],
|
|
2217
|
+
"title": "SandboxSnapshotFrame",
|
|
2218
|
+
"type": "object"
|
|
2219
|
+
},
|
|
2220
|
+
"SandboxSource": {
|
|
2221
|
+
"enum": [
|
|
2222
|
+
"cli",
|
|
2223
|
+
"web_ui",
|
|
2224
|
+
"ingest_pull_request_job_run",
|
|
2225
|
+
"agent_session",
|
|
2226
|
+
"image_refresh",
|
|
2227
|
+
"test",
|
|
2228
|
+
"script"
|
|
2229
|
+
],
|
|
2230
|
+
"title": "SandboxSource",
|
|
2231
|
+
"type": "string"
|
|
2232
|
+
},
|
|
2233
|
+
"SandboxStatus": {
|
|
2234
|
+
"enum": [
|
|
2235
|
+
"scheduled",
|
|
2236
|
+
"building",
|
|
2237
|
+
"running",
|
|
2238
|
+
"released",
|
|
2239
|
+
"terminating",
|
|
2240
|
+
"terminated",
|
|
2241
|
+
"failed"
|
|
2242
|
+
],
|
|
2243
|
+
"title": "SandboxStatus",
|
|
2244
|
+
"type": "string"
|
|
2245
|
+
},
|
|
2246
|
+
"SandboxType": {
|
|
2247
|
+
"enum": [
|
|
2248
|
+
"claude_code"
|
|
2249
|
+
],
|
|
2250
|
+
"title": "SandboxType",
|
|
2251
|
+
"type": "string"
|
|
2252
|
+
},
|
|
2253
|
+
"SandboxUpdateFrame": {
|
|
2254
|
+
"properties": {
|
|
2255
|
+
"sandbox": {
|
|
2256
|
+
"$ref": "#/$defs/SandboxResponse"
|
|
2257
|
+
},
|
|
2258
|
+
"type": {
|
|
2259
|
+
"const": "sandbox",
|
|
2260
|
+
"default": "sandbox",
|
|
2261
|
+
"title": "Type",
|
|
2262
|
+
"type": "string"
|
|
2263
|
+
}
|
|
2264
|
+
},
|
|
2265
|
+
"required": [
|
|
2266
|
+
"sandbox",
|
|
2267
|
+
"type"
|
|
2268
|
+
],
|
|
2269
|
+
"title": "SandboxUpdateFrame",
|
|
2270
|
+
"type": "object"
|
|
2271
|
+
},
|
|
2272
|
+
"SentryAction": {
|
|
2273
|
+
"enum": [
|
|
2274
|
+
"issue_alert",
|
|
2275
|
+
"metric_alert"
|
|
2276
|
+
],
|
|
2277
|
+
"title": "SentryAction",
|
|
2278
|
+
"type": "string"
|
|
2279
|
+
},
|
|
2280
|
+
"Session": {
|
|
2281
|
+
"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.",
|
|
2282
|
+
"properties": {
|
|
2283
|
+
"attribution": {
|
|
2284
|
+
"$ref": "#/$defs/SessionAttribution",
|
|
2285
|
+
"description": "The principal this session is attributed to."
|
|
2286
|
+
},
|
|
2287
|
+
"automation": {
|
|
2288
|
+
"anyOf": [
|
|
2289
|
+
{
|
|
2290
|
+
"$ref": "#/$defs/SessionAutomation"
|
|
2291
|
+
},
|
|
2292
|
+
{
|
|
2293
|
+
"type": "null"
|
|
2294
|
+
}
|
|
2295
|
+
],
|
|
2296
|
+
"default": null,
|
|
2297
|
+
"description": "The automation the session was started from, or null for a raw session started with POST /v1/sessions."
|
|
2298
|
+
},
|
|
2299
|
+
"budget": {
|
|
2300
|
+
"$ref": "#/$defs/SessionBudget",
|
|
2301
|
+
"description": "The spend budget enforced for this session."
|
|
2302
|
+
},
|
|
2303
|
+
"config": {
|
|
2304
|
+
"$ref": "#/$defs/SessionConfig",
|
|
2305
|
+
"description": "What the session ran on, frozen when it was created: the harness block, the resolved environment, permissions, skills, output contract, and budget."
|
|
2306
|
+
},
|
|
2307
|
+
"context_repository": {
|
|
2308
|
+
"anyOf": [
|
|
2309
|
+
{
|
|
2310
|
+
"type": "string"
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
"type": "null"
|
|
2314
|
+
}
|
|
2315
|
+
],
|
|
2316
|
+
"default": null,
|
|
2317
|
+
"description": "The \"owner/name\" repository context the session was started in, if any.",
|
|
2318
|
+
"title": "Context Repository"
|
|
2319
|
+
},
|
|
2320
|
+
"cost": {
|
|
2321
|
+
"$ref": "#/$defs/SessionCost",
|
|
2322
|
+
"description": "What the session cost, in millicents, broken down by leg and carrying its own total."
|
|
2323
|
+
},
|
|
2324
|
+
"created_at": {
|
|
2325
|
+
"description": "When the session was created.",
|
|
2326
|
+
"format": "date-time",
|
|
2327
|
+
"title": "Created At",
|
|
2328
|
+
"type": "string"
|
|
2329
|
+
},
|
|
2330
|
+
"environment": {
|
|
2331
|
+
"$ref": "#/$defs/SessionEnvironment",
|
|
2332
|
+
"description": "The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is `config.environment`."
|
|
2333
|
+
},
|
|
2334
|
+
"exit_status": {
|
|
2335
|
+
"anyOf": [
|
|
2336
|
+
{
|
|
2337
|
+
"$ref": "#/$defs/SessionExitStatus"
|
|
2338
|
+
},
|
|
2339
|
+
{
|
|
2340
|
+
"type": "null"
|
|
2341
|
+
}
|
|
2342
|
+
],
|
|
2343
|
+
"default": null,
|
|
2344
|
+
"description": "How the session ended; null until it is terminal."
|
|
2345
|
+
},
|
|
2346
|
+
"git": {
|
|
2347
|
+
"anyOf": [
|
|
2348
|
+
{
|
|
2349
|
+
"$ref": "#/$defs/SessionGit"
|
|
2350
|
+
},
|
|
2351
|
+
{
|
|
2352
|
+
"type": "null"
|
|
2353
|
+
}
|
|
2354
|
+
],
|
|
2355
|
+
"default": null,
|
|
2356
|
+
"description": "What the session did to git, one entry per repository in its workspace: the commit and branch it sits on, per-file line counts for its uncommitted changes, and the pull requests it opened. Null if nothing was ever captured."
|
|
2357
|
+
},
|
|
2358
|
+
"harness": {
|
|
2359
|
+
"$ref": "#/$defs/Harness",
|
|
2360
|
+
"description": "The coding-agent harness the session runs on."
|
|
2361
|
+
},
|
|
2362
|
+
"id": {
|
|
2363
|
+
"description": "Unique identifier of the session.",
|
|
2364
|
+
"title": "Id",
|
|
2365
|
+
"type": "string"
|
|
2366
|
+
},
|
|
2367
|
+
"last_activity_at": {
|
|
2368
|
+
"anyOf": [
|
|
2369
|
+
{
|
|
2370
|
+
"format": "date-time",
|
|
2371
|
+
"type": "string"
|
|
2372
|
+
},
|
|
2373
|
+
{
|
|
2374
|
+
"type": "null"
|
|
2375
|
+
}
|
|
2376
|
+
],
|
|
2377
|
+
"default": null,
|
|
2378
|
+
"description": "When the session last showed activity.",
|
|
2379
|
+
"title": "Last Activity At"
|
|
2380
|
+
},
|
|
2381
|
+
"last_message_at": {
|
|
2382
|
+
"anyOf": [
|
|
2383
|
+
{
|
|
2384
|
+
"format": "date-time",
|
|
2385
|
+
"type": "string"
|
|
2386
|
+
},
|
|
2387
|
+
{
|
|
2388
|
+
"type": "null"
|
|
2389
|
+
}
|
|
2390
|
+
],
|
|
2391
|
+
"default": null,
|
|
2392
|
+
"description": "When the session last received a message.",
|
|
2393
|
+
"title": "Last Message At"
|
|
2394
|
+
},
|
|
2395
|
+
"metadata": {
|
|
2396
|
+
"additionalProperties": {
|
|
2397
|
+
"type": "string"
|
|
2398
|
+
},
|
|
2399
|
+
"default": {},
|
|
2400
|
+
"description": "Caller-supplied metadata key-value pairs.",
|
|
2401
|
+
"title": "Metadata",
|
|
2402
|
+
"type": "object"
|
|
2403
|
+
},
|
|
2404
|
+
"parent": {
|
|
2405
|
+
"$ref": "#/$defs/SessionParent",
|
|
2406
|
+
"description": "What preceded this session, if anything."
|
|
2407
|
+
},
|
|
2408
|
+
"prompt": {
|
|
2409
|
+
"anyOf": [
|
|
2410
|
+
{
|
|
2411
|
+
"type": "string"
|
|
2412
|
+
},
|
|
2413
|
+
{
|
|
2414
|
+
"type": "null"
|
|
2415
|
+
}
|
|
2416
|
+
],
|
|
2417
|
+
"default": null,
|
|
2418
|
+
"description": "The per-session prompt the session was started with.",
|
|
2419
|
+
"title": "Prompt"
|
|
2420
|
+
},
|
|
2421
|
+
"prompting": {
|
|
2422
|
+
"$ref": "#/$defs/SessionPrompting",
|
|
2423
|
+
"description": "Whether a client may send this session a message and, when it may not, the reason to show instead of a composer."
|
|
2424
|
+
},
|
|
2425
|
+
"session_state": {
|
|
2426
|
+
"anyOf": [
|
|
2427
|
+
{
|
|
2428
|
+
"$ref": "#/$defs/SessionState"
|
|
2429
|
+
},
|
|
2430
|
+
{
|
|
2431
|
+
"type": "null"
|
|
2432
|
+
}
|
|
2433
|
+
],
|
|
2434
|
+
"default": null,
|
|
2435
|
+
"description": "Lifecycle state of the durable conversation, or null for sessions without one."
|
|
2436
|
+
},
|
|
2437
|
+
"source": {
|
|
2438
|
+
"$ref": "#/$defs/SessionSource",
|
|
2439
|
+
"description": "Where the session came from (e.g. react, web, api, cli, mention, cron)."
|
|
2440
|
+
},
|
|
2441
|
+
"status": {
|
|
2442
|
+
"$ref": "#/$defs/SessionStatus",
|
|
2443
|
+
"description": "Execution status of the session."
|
|
2444
|
+
},
|
|
2445
|
+
"status_reason": {
|
|
2446
|
+
"anyOf": [
|
|
2447
|
+
{
|
|
2448
|
+
"type": "string"
|
|
2449
|
+
},
|
|
2450
|
+
{
|
|
2451
|
+
"type": "null"
|
|
2452
|
+
}
|
|
2453
|
+
],
|
|
2454
|
+
"default": null,
|
|
2455
|
+
"description": "Human-readable reason for the current status, when there is one.",
|
|
2456
|
+
"title": "Status Reason"
|
|
2457
|
+
},
|
|
2458
|
+
"stopped": {
|
|
2459
|
+
"$ref": "#/$defs/SessionStopped",
|
|
2460
|
+
"description": "The stop request, if the session was stopped."
|
|
2461
|
+
},
|
|
2462
|
+
"summary": {
|
|
2463
|
+
"anyOf": [
|
|
2464
|
+
{
|
|
2465
|
+
"$ref": "#/$defs/SessionSummary"
|
|
2466
|
+
},
|
|
2467
|
+
{
|
|
2468
|
+
"type": "null"
|
|
2469
|
+
}
|
|
2470
|
+
],
|
|
2471
|
+
"default": null,
|
|
2472
|
+
"description": "The latest live summary of the session's progress while it runs, and when it was generated."
|
|
2473
|
+
},
|
|
2474
|
+
"surface": {
|
|
2475
|
+
"$ref": "#/$defs/SessionSurface",
|
|
2476
|
+
"description": "The public status projection: the durable conversation (`session`), the current execution (`run`), and the one derived `status` word."
|
|
2477
|
+
},
|
|
2478
|
+
"tokens": {
|
|
2479
|
+
"$ref": "#/$defs/SessionTokens",
|
|
2480
|
+
"description": "The tokens the session spent and the model they went to. `total` includes the prompt-cache lanes."
|
|
2481
|
+
},
|
|
2482
|
+
"trigger": {
|
|
2483
|
+
"anyOf": [
|
|
2484
|
+
{
|
|
2485
|
+
"$ref": "#/$defs/SessionTrigger"
|
|
2486
|
+
},
|
|
2487
|
+
{
|
|
2488
|
+
"type": "null"
|
|
2489
|
+
}
|
|
2490
|
+
],
|
|
2491
|
+
"default": null,
|
|
2492
|
+
"description": "The external event that started the session."
|
|
2493
|
+
},
|
|
2494
|
+
"updated_at": {
|
|
2495
|
+
"description": "When the session was last updated.",
|
|
2496
|
+
"format": "date-time",
|
|
2497
|
+
"title": "Updated At",
|
|
2498
|
+
"type": "string"
|
|
2499
|
+
}
|
|
2500
|
+
},
|
|
2501
|
+
"required": [
|
|
2502
|
+
"attribution",
|
|
2503
|
+
"automation",
|
|
2504
|
+
"budget",
|
|
2505
|
+
"config",
|
|
2506
|
+
"context_repository",
|
|
2507
|
+
"cost",
|
|
2508
|
+
"created_at",
|
|
2509
|
+
"environment",
|
|
2510
|
+
"exit_status",
|
|
2511
|
+
"git",
|
|
2512
|
+
"harness",
|
|
2513
|
+
"id",
|
|
2514
|
+
"last_activity_at",
|
|
2515
|
+
"last_message_at",
|
|
2516
|
+
"metadata",
|
|
2517
|
+
"parent",
|
|
2518
|
+
"prompt",
|
|
2519
|
+
"prompting",
|
|
2520
|
+
"session_state",
|
|
2521
|
+
"source",
|
|
2522
|
+
"status",
|
|
2523
|
+
"status_reason",
|
|
2524
|
+
"stopped",
|
|
2525
|
+
"summary",
|
|
2526
|
+
"surface",
|
|
2527
|
+
"tokens",
|
|
2528
|
+
"trigger",
|
|
2529
|
+
"updated_at"
|
|
2530
|
+
],
|
|
2531
|
+
"title": "Session",
|
|
2532
|
+
"type": "object"
|
|
2533
|
+
},
|
|
2534
|
+
"SessionAttribution": {
|
|
2535
|
+
"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.",
|
|
2536
|
+
"properties": {
|
|
2537
|
+
"id": {
|
|
2538
|
+
"anyOf": [
|
|
2539
|
+
{
|
|
2540
|
+
"type": "string"
|
|
2541
|
+
},
|
|
2542
|
+
{
|
|
2543
|
+
"type": "null"
|
|
2544
|
+
}
|
|
2545
|
+
],
|
|
2546
|
+
"default": null,
|
|
2547
|
+
"description": "Identifier of the principal the session is attributed to.",
|
|
2548
|
+
"title": "Id"
|
|
2549
|
+
},
|
|
2550
|
+
"type": {
|
|
2551
|
+
"anyOf": [
|
|
2552
|
+
{
|
|
2553
|
+
"$ref": "#/$defs/AttributionType"
|
|
2554
|
+
},
|
|
2555
|
+
{
|
|
2556
|
+
"type": "null"
|
|
2557
|
+
}
|
|
2558
|
+
],
|
|
2559
|
+
"default": null,
|
|
2560
|
+
"description": "Kind of principal the session is attributed to (e.g. a GitHub user or an API key)."
|
|
2561
|
+
},
|
|
2562
|
+
"user": {
|
|
2563
|
+
"anyOf": [
|
|
2564
|
+
{
|
|
2565
|
+
"$ref": "#/$defs/GithubAccountSnippet"
|
|
2566
|
+
},
|
|
2567
|
+
{
|
|
2568
|
+
"type": "null"
|
|
2569
|
+
}
|
|
2570
|
+
],
|
|
2571
|
+
"default": null,
|
|
2572
|
+
"description": "The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user."
|
|
2573
|
+
}
|
|
2574
|
+
},
|
|
2575
|
+
"required": [
|
|
2576
|
+
"id",
|
|
2577
|
+
"type",
|
|
2578
|
+
"user"
|
|
2579
|
+
],
|
|
2580
|
+
"title": "SessionAttribution",
|
|
2581
|
+
"type": "object"
|
|
2582
|
+
},
|
|
2583
|
+
"SessionAutomation": {
|
|
2584
|
+
"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.",
|
|
2585
|
+
"properties": {
|
|
2586
|
+
"config": {
|
|
2587
|
+
"$ref": "#/$defs/AutomationConfig",
|
|
2588
|
+
"description": "The automation definition the session was started from, frozen when the session was created."
|
|
2589
|
+
},
|
|
2590
|
+
"id": {
|
|
2591
|
+
"anyOf": [
|
|
2592
|
+
{
|
|
2593
|
+
"type": "string"
|
|
2594
|
+
},
|
|
2595
|
+
{
|
|
2596
|
+
"type": "null"
|
|
2597
|
+
}
|
|
2598
|
+
],
|
|
2599
|
+
"default": null,
|
|
2600
|
+
"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.",
|
|
2601
|
+
"title": "Id"
|
|
2602
|
+
}
|
|
2603
|
+
},
|
|
2604
|
+
"required": [
|
|
2605
|
+
"config",
|
|
2606
|
+
"id"
|
|
2607
|
+
],
|
|
2608
|
+
"title": "SessionAutomation",
|
|
2609
|
+
"type": "object"
|
|
2610
|
+
},
|
|
2611
|
+
"SessionBudget": {
|
|
2612
|
+
"description": "The spend budget actually enforced for this session, and which layer of\nthe cascade set it.",
|
|
2613
|
+
"properties": {
|
|
2614
|
+
"cents": {
|
|
2615
|
+
"default": 0,
|
|
2616
|
+
"description": "The spend budget resolved for this session, in cents.",
|
|
2617
|
+
"title": "Cents",
|
|
2618
|
+
"type": "integer"
|
|
2619
|
+
},
|
|
2620
|
+
"source": {
|
|
2621
|
+
"$ref": "#/$defs/BudgetSource",
|
|
2622
|
+
"default": "account",
|
|
2623
|
+
"description": "Where the resolved budget came from."
|
|
2624
|
+
}
|
|
2625
|
+
},
|
|
2626
|
+
"required": [
|
|
2627
|
+
"cents",
|
|
2628
|
+
"source"
|
|
2629
|
+
],
|
|
2630
|
+
"title": "SessionBudget",
|
|
2631
|
+
"type": "object"
|
|
2632
|
+
},
|
|
2633
|
+
"SessionConfig": {
|
|
2634
|
+
"additionalProperties": false,
|
|
2635
|
+
"description": "What one session runs on: its selected harness, 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 (`harness`, `instructions`), where (`environment`), what it may\ntouch (`permissions`), then the rest.",
|
|
2636
|
+
"properties": {
|
|
2637
|
+
"budget": {
|
|
2638
|
+
"$ref": "#/$defs/BudgetConfig",
|
|
2639
|
+
"default": {
|
|
2640
|
+
"day": null,
|
|
2641
|
+
"month": null,
|
|
2642
|
+
"session": null,
|
|
2643
|
+
"week": null
|
|
2644
|
+
}
|
|
2645
|
+
},
|
|
2646
|
+
"environment": {
|
|
2647
|
+
"anyOf": [
|
|
2648
|
+
{
|
|
2649
|
+
"type": "string"
|
|
2650
|
+
},
|
|
2651
|
+
{
|
|
2652
|
+
"$ref": "#/$defs/EnvironmentConfig"
|
|
2653
|
+
}
|
|
2654
|
+
],
|
|
2655
|
+
"default": {
|
|
2656
|
+
"compute": {
|
|
2657
|
+
"cpu": null,
|
|
2658
|
+
"memory": null,
|
|
2659
|
+
"timeout": null
|
|
2660
|
+
},
|
|
2661
|
+
"hooks": {
|
|
2662
|
+
"post_clone": null,
|
|
2663
|
+
"post_start": null
|
|
2664
|
+
},
|
|
2665
|
+
"image": {
|
|
2666
|
+
"dockerfile_append": null,
|
|
2667
|
+
"setup": null
|
|
2668
|
+
},
|
|
2669
|
+
"mcp_servers": [],
|
|
2670
|
+
"repositories": [],
|
|
2671
|
+
"variables": []
|
|
2672
|
+
},
|
|
2673
|
+
"title": "Environment"
|
|
2674
|
+
},
|
|
2675
|
+
"harness": {
|
|
2676
|
+
"$ref": "#/$defs/HarnessOptions",
|
|
2677
|
+
"description": "The explicitly selected harness and its native options."
|
|
2678
|
+
},
|
|
2679
|
+
"instructions": {
|
|
2680
|
+
"$ref": "#/$defs/Instructions",
|
|
2681
|
+
"default": "",
|
|
2682
|
+
"description": "Instructions appended to the harness's own prompt. Text and repository file references are resolved in order."
|
|
2683
|
+
},
|
|
2684
|
+
"output": {
|
|
2685
|
+
"anyOf": [
|
|
2686
|
+
{
|
|
2687
|
+
"$ref": "#/$defs/OutputConfig"
|
|
2688
|
+
},
|
|
2689
|
+
{
|
|
2690
|
+
"type": "null"
|
|
2691
|
+
}
|
|
2692
|
+
],
|
|
2693
|
+
"default": null
|
|
2694
|
+
},
|
|
2695
|
+
"permissions": {
|
|
2696
|
+
"$ref": "#/$defs/PermissionsConfig",
|
|
2697
|
+
"default": {
|
|
2698
|
+
"ellipsis": true,
|
|
2699
|
+
"github": {
|
|
2700
|
+
"permissions": null,
|
|
2701
|
+
"repositories": null
|
|
2702
|
+
}
|
|
2703
|
+
}
|
|
2704
|
+
},
|
|
2705
|
+
"skills": {
|
|
2706
|
+
"default": [],
|
|
2707
|
+
"items": {
|
|
2708
|
+
"$ref": "#/$defs/SkillRef"
|
|
2709
|
+
},
|
|
2710
|
+
"title": "Skills",
|
|
2711
|
+
"type": "array"
|
|
2712
|
+
}
|
|
2713
|
+
},
|
|
2714
|
+
"required": [
|
|
2715
|
+
"budget",
|
|
2716
|
+
"environment",
|
|
2717
|
+
"harness",
|
|
2718
|
+
"instructions",
|
|
2719
|
+
"output",
|
|
2720
|
+
"permissions",
|
|
2721
|
+
"skills"
|
|
2722
|
+
],
|
|
2723
|
+
"title": "SessionConfig",
|
|
2724
|
+
"type": "object"
|
|
2725
|
+
},
|
|
2726
|
+
"SessionCost": {
|
|
2727
|
+
"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\".",
|
|
2728
|
+
"properties": {
|
|
2729
|
+
"fee": {
|
|
2730
|
+
"default": 0,
|
|
2731
|
+
"description": "Platform fee in millicents.",
|
|
2732
|
+
"title": "Fee",
|
|
2733
|
+
"type": "integer"
|
|
2734
|
+
},
|
|
2735
|
+
"llm": {
|
|
2736
|
+
"default": 0,
|
|
2737
|
+
"description": "LLM spend in millicents.",
|
|
2738
|
+
"title": "Llm",
|
|
2739
|
+
"type": "integer"
|
|
2740
|
+
},
|
|
2741
|
+
"sandbox_cpu": {
|
|
2742
|
+
"default": 0,
|
|
2743
|
+
"description": "Sandbox CPU spend in millicents.",
|
|
2744
|
+
"title": "Sandbox Cpu",
|
|
2745
|
+
"type": "integer"
|
|
2746
|
+
},
|
|
2747
|
+
"sandbox_memory": {
|
|
2748
|
+
"default": 0,
|
|
2749
|
+
"description": "Sandbox memory spend in millicents.",
|
|
2750
|
+
"title": "Sandbox Memory",
|
|
2751
|
+
"type": "integer"
|
|
2752
|
+
},
|
|
2753
|
+
"total": {
|
|
2754
|
+
"default": 0,
|
|
2755
|
+
"description": "The grand total in millicents: llm + sandbox_cpu + sandbox_memory + fee.",
|
|
2756
|
+
"title": "Total",
|
|
2757
|
+
"type": "integer"
|
|
2758
|
+
}
|
|
2759
|
+
},
|
|
2760
|
+
"required": [
|
|
2761
|
+
"fee",
|
|
2762
|
+
"llm",
|
|
2763
|
+
"sandbox_cpu",
|
|
2764
|
+
"sandbox_memory",
|
|
2765
|
+
"total"
|
|
2766
|
+
],
|
|
2767
|
+
"title": "SessionCost",
|
|
2768
|
+
"type": "object"
|
|
2769
|
+
},
|
|
2770
|
+
"SessionEnvironment": {
|
|
2771
|
+
"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.",
|
|
2772
|
+
"properties": {
|
|
2773
|
+
"environment_id": {
|
|
2774
|
+
"anyOf": [
|
|
2775
|
+
{
|
|
2776
|
+
"type": "string"
|
|
2777
|
+
},
|
|
2778
|
+
{
|
|
2779
|
+
"type": "null"
|
|
2780
|
+
}
|
|
2781
|
+
],
|
|
2782
|
+
"default": null,
|
|
2783
|
+
"description": "Identifier of the saved environment the session's config resolved. Null for an inline environment block or the built-in basic sandbox.",
|
|
2784
|
+
"title": "Environment Id"
|
|
2785
|
+
},
|
|
2786
|
+
"source": {
|
|
2787
|
+
"anyOf": [
|
|
2788
|
+
{
|
|
2789
|
+
"$ref": "#/$defs/EnvironmentSource"
|
|
2790
|
+
},
|
|
2791
|
+
{
|
|
2792
|
+
"type": "null"
|
|
2793
|
+
}
|
|
2794
|
+
],
|
|
2795
|
+
"default": null,
|
|
2796
|
+
"description": "How the environment was chosen (request, automation, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment."
|
|
2797
|
+
}
|
|
2798
|
+
},
|
|
2799
|
+
"required": [
|
|
2800
|
+
"environment_id",
|
|
2801
|
+
"source"
|
|
2802
|
+
],
|
|
2803
|
+
"title": "SessionEnvironment",
|
|
2804
|
+
"type": "object"
|
|
2805
|
+
},
|
|
2806
|
+
"SessionExitStatus": {
|
|
2807
|
+
"description": "Why a terminal agent session ended \u2014 a finer-grained reason than `status`.\n\n`status` (SessionStatus) is the lifecycle state: COMPLETED / ERROR /\nCANCELLED. `exit_status` explains *why* a run reached that terminal state, so\nthe UI and metrics can tell a budget cutoff apart from a crashed tool call or\na deliberate cancellation. It is None until the run reaches a terminal state.",
|
|
2808
|
+
"enum": [
|
|
2809
|
+
"completed",
|
|
2810
|
+
"budget_hit",
|
|
2811
|
+
"payment_required",
|
|
2812
|
+
"tool_call_failed",
|
|
2813
|
+
"lifecycle_hook_failed",
|
|
2814
|
+
"missing_repo_access",
|
|
2815
|
+
"missing_token_permissions",
|
|
2816
|
+
"missing_sandbox_variables",
|
|
2817
|
+
"blocked",
|
|
2818
|
+
"contact_email_required",
|
|
2819
|
+
"cancelled",
|
|
2820
|
+
"interrupted",
|
|
2821
|
+
"error",
|
|
2822
|
+
"stopped"
|
|
2823
|
+
],
|
|
2824
|
+
"title": "SessionExitStatus",
|
|
2825
|
+
"type": "string"
|
|
2826
|
+
},
|
|
2827
|
+
"SessionGit": {
|
|
2828
|
+
"description": "Every repo the session touched. Small enough to ride on `agent_sessions`\nand be returned by every session read.",
|
|
2829
|
+
"properties": {
|
|
2830
|
+
"repos": {
|
|
2831
|
+
"default": [],
|
|
2832
|
+
"items": {
|
|
2833
|
+
"$ref": "#/$defs/SessionGitRepo"
|
|
2834
|
+
},
|
|
2835
|
+
"title": "Repos",
|
|
2836
|
+
"type": "array"
|
|
2837
|
+
}
|
|
2838
|
+
},
|
|
2839
|
+
"required": [
|
|
2840
|
+
"repos"
|
|
2841
|
+
],
|
|
2842
|
+
"title": "SessionGit",
|
|
2843
|
+
"type": "object"
|
|
2844
|
+
},
|
|
2845
|
+
"SessionGitCommit": {
|
|
2846
|
+
"description": "One commit the session created in this repo (everything past the\nprovisioning checkout's sha), captured from the sandbox rather than the\ntranscript so it stays correct through amends, rebases, and commits made by\nscripts. The repo is the parent object, so it is not repeated here.",
|
|
2847
|
+
"properties": {
|
|
2848
|
+
"committed_at": {
|
|
2849
|
+
"format": "date-time",
|
|
2850
|
+
"title": "Committed At",
|
|
2851
|
+
"type": "string"
|
|
2852
|
+
},
|
|
2853
|
+
"pushed": {
|
|
2854
|
+
"title": "Pushed",
|
|
2855
|
+
"type": "boolean"
|
|
2856
|
+
},
|
|
2857
|
+
"sha": {
|
|
2858
|
+
"title": "Sha",
|
|
2859
|
+
"type": "string"
|
|
2860
|
+
},
|
|
2861
|
+
"subject": {
|
|
2862
|
+
"title": "Subject",
|
|
2863
|
+
"type": "string"
|
|
2864
|
+
}
|
|
2865
|
+
},
|
|
2866
|
+
"required": [
|
|
2867
|
+
"committed_at",
|
|
2868
|
+
"pushed",
|
|
2869
|
+
"sha",
|
|
2870
|
+
"subject"
|
|
2871
|
+
],
|
|
2872
|
+
"title": "SessionGitCommit",
|
|
2873
|
+
"type": "object"
|
|
2874
|
+
},
|
|
2875
|
+
"SessionGitFile": {
|
|
2876
|
+
"description": "One file's uncommitted change, as `git diff HEAD --numstat` reports it\n(with intent-to-add, so a brand-new file still counts).",
|
|
2877
|
+
"properties": {
|
|
2878
|
+
"additions": {
|
|
2879
|
+
"title": "Additions",
|
|
2880
|
+
"type": "integer"
|
|
2881
|
+
},
|
|
2882
|
+
"deletions": {
|
|
2883
|
+
"title": "Deletions",
|
|
2884
|
+
"type": "integer"
|
|
2885
|
+
},
|
|
2886
|
+
"path": {
|
|
2887
|
+
"title": "Path",
|
|
2888
|
+
"type": "string"
|
|
2889
|
+
},
|
|
2890
|
+
"status": {
|
|
2891
|
+
"title": "Status",
|
|
2892
|
+
"type": "string"
|
|
2893
|
+
}
|
|
2894
|
+
},
|
|
2895
|
+
"required": [
|
|
2896
|
+
"additions",
|
|
2897
|
+
"deletions",
|
|
2898
|
+
"path",
|
|
2899
|
+
"status"
|
|
2900
|
+
],
|
|
2901
|
+
"title": "SessionGitFile",
|
|
2902
|
+
"type": "object"
|
|
2903
|
+
},
|
|
2904
|
+
"SessionGitPr": {
|
|
2905
|
+
"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.",
|
|
2906
|
+
"properties": {
|
|
2907
|
+
"gh_pr_id": {
|
|
2908
|
+
"anyOf": [
|
|
2909
|
+
{
|
|
2910
|
+
"type": "integer"
|
|
2911
|
+
},
|
|
2912
|
+
{
|
|
2913
|
+
"type": "null"
|
|
2914
|
+
}
|
|
2915
|
+
],
|
|
2916
|
+
"default": null,
|
|
2917
|
+
"title": "Gh Pr Id"
|
|
2918
|
+
},
|
|
2919
|
+
"number": {
|
|
2920
|
+
"title": "Number",
|
|
2921
|
+
"type": "integer"
|
|
2922
|
+
},
|
|
2923
|
+
"title": {
|
|
2924
|
+
"anyOf": [
|
|
2925
|
+
{
|
|
2926
|
+
"type": "string"
|
|
2927
|
+
},
|
|
2928
|
+
{
|
|
2929
|
+
"type": "null"
|
|
2930
|
+
}
|
|
2931
|
+
],
|
|
2932
|
+
"default": null,
|
|
2933
|
+
"title": "Title"
|
|
2934
|
+
},
|
|
2935
|
+
"url": {
|
|
2936
|
+
"title": "Url",
|
|
2937
|
+
"type": "string"
|
|
2938
|
+
}
|
|
2939
|
+
},
|
|
2940
|
+
"required": [
|
|
2941
|
+
"gh_pr_id",
|
|
2942
|
+
"number",
|
|
2943
|
+
"title",
|
|
2944
|
+
"url"
|
|
2945
|
+
],
|
|
2946
|
+
"title": "SessionGitPr",
|
|
2947
|
+
"type": "object"
|
|
2948
|
+
},
|
|
2949
|
+
"SessionGitRepo": {
|
|
2950
|
+
"description": "One checkout in the session's sandbox and everything the session did to\nit, split by whether it survived the sandbox.",
|
|
2951
|
+
"properties": {
|
|
2952
|
+
"commits": {
|
|
2953
|
+
"default": [],
|
|
2954
|
+
"items": {
|
|
2955
|
+
"$ref": "#/$defs/SessionGitCommit"
|
|
2956
|
+
},
|
|
2957
|
+
"title": "Commits",
|
|
2958
|
+
"type": "array"
|
|
2959
|
+
},
|
|
2960
|
+
"commits_total": {
|
|
2961
|
+
"default": 0,
|
|
2962
|
+
"title": "Commits Total",
|
|
2963
|
+
"type": "integer"
|
|
2964
|
+
},
|
|
2965
|
+
"full_name": {
|
|
2966
|
+
"title": "Full Name",
|
|
2967
|
+
"type": "string"
|
|
2968
|
+
},
|
|
2969
|
+
"local_commit": {
|
|
2970
|
+
"anyOf": [
|
|
2971
|
+
{
|
|
2972
|
+
"type": "string"
|
|
2973
|
+
},
|
|
2974
|
+
{
|
|
2975
|
+
"type": "null"
|
|
2976
|
+
}
|
|
2977
|
+
],
|
|
2978
|
+
"default": null,
|
|
2979
|
+
"title": "Local Commit"
|
|
2980
|
+
},
|
|
2981
|
+
"local_uncommitted_files": {
|
|
2982
|
+
"default": [],
|
|
2983
|
+
"items": {
|
|
2984
|
+
"$ref": "#/$defs/SessionGitFile"
|
|
2985
|
+
},
|
|
2986
|
+
"title": "Local Uncommitted Files",
|
|
2987
|
+
"type": "array"
|
|
2988
|
+
},
|
|
2989
|
+
"prs": {
|
|
2990
|
+
"default": [],
|
|
2991
|
+
"items": {
|
|
2992
|
+
"$ref": "#/$defs/SessionGitPr"
|
|
2993
|
+
},
|
|
2994
|
+
"title": "Prs",
|
|
2995
|
+
"type": "array"
|
|
2996
|
+
},
|
|
2997
|
+
"remote_branch": {
|
|
2998
|
+
"anyOf": [
|
|
2999
|
+
{
|
|
3000
|
+
"type": "string"
|
|
3001
|
+
},
|
|
3002
|
+
{
|
|
3003
|
+
"type": "null"
|
|
3004
|
+
}
|
|
3005
|
+
],
|
|
3006
|
+
"default": null,
|
|
3007
|
+
"title": "Remote Branch"
|
|
3008
|
+
},
|
|
3009
|
+
"remote_commit": {
|
|
3010
|
+
"anyOf": [
|
|
3011
|
+
{
|
|
3012
|
+
"type": "string"
|
|
3013
|
+
},
|
|
3014
|
+
{
|
|
3015
|
+
"type": "null"
|
|
3016
|
+
}
|
|
3017
|
+
],
|
|
3018
|
+
"default": null,
|
|
3019
|
+
"title": "Remote Commit"
|
|
3020
|
+
}
|
|
3021
|
+
},
|
|
3022
|
+
"required": [
|
|
3023
|
+
"commits",
|
|
3024
|
+
"commits_total",
|
|
3025
|
+
"full_name",
|
|
3026
|
+
"local_commit",
|
|
3027
|
+
"local_uncommitted_files",
|
|
3028
|
+
"prs",
|
|
3029
|
+
"remote_branch",
|
|
3030
|
+
"remote_commit"
|
|
3031
|
+
],
|
|
3032
|
+
"title": "SessionGitRepo",
|
|
3033
|
+
"type": "object"
|
|
3034
|
+
},
|
|
3035
|
+
"SessionListStreamMessage": {
|
|
3036
|
+
"properties": {
|
|
3037
|
+
"session": {
|
|
3038
|
+
"$ref": "#/$defs/Session"
|
|
3039
|
+
},
|
|
3040
|
+
"type": {
|
|
3041
|
+
"const": "session",
|
|
3042
|
+
"default": "session",
|
|
3043
|
+
"title": "Type",
|
|
3044
|
+
"type": "string"
|
|
3045
|
+
}
|
|
3046
|
+
},
|
|
3047
|
+
"required": [
|
|
3048
|
+
"session",
|
|
3049
|
+
"type"
|
|
3050
|
+
],
|
|
3051
|
+
"title": "SessionListStreamMessage",
|
|
3052
|
+
"type": "object"
|
|
3053
|
+
},
|
|
3054
|
+
"SessionLiveness": {
|
|
3055
|
+
"description": "The durable conversation axis (backs the surfaced `session` field).",
|
|
3056
|
+
"enum": [
|
|
3057
|
+
"alive",
|
|
3058
|
+
"idle",
|
|
3059
|
+
"closed"
|
|
3060
|
+
],
|
|
3061
|
+
"title": "SessionLiveness",
|
|
3062
|
+
"type": "string"
|
|
3063
|
+
},
|
|
3064
|
+
"SessionParent": {
|
|
3065
|
+
"description": "The ONE \"preceded-by\" chain: the predecessor session and how this one\nrelates to it. Not a parent that orchestrates children \u2014 a session never\nspawns sub-sessions.",
|
|
3066
|
+
"properties": {
|
|
3067
|
+
"kind": {
|
|
3068
|
+
"anyOf": [
|
|
3069
|
+
{
|
|
3070
|
+
"$ref": "#/$defs/ParentKind"
|
|
3071
|
+
},
|
|
3072
|
+
{
|
|
3073
|
+
"type": "null"
|
|
3074
|
+
}
|
|
3075
|
+
],
|
|
3076
|
+
"default": null,
|
|
3077
|
+
"description": "How this session relates to its parent session, if any."
|
|
3078
|
+
},
|
|
3079
|
+
"replayed_from_session_id": {
|
|
3080
|
+
"anyOf": [
|
|
3081
|
+
{
|
|
3082
|
+
"type": "string"
|
|
3083
|
+
},
|
|
3084
|
+
{
|
|
3085
|
+
"type": "null"
|
|
3086
|
+
}
|
|
3087
|
+
],
|
|
3088
|
+
"default": null,
|
|
3089
|
+
"description": "Identifier of the original session this one was replayed from, if it was started via replay.",
|
|
3090
|
+
"title": "Replayed From Session Id"
|
|
3091
|
+
},
|
|
3092
|
+
"session_id": {
|
|
3093
|
+
"anyOf": [
|
|
3094
|
+
{
|
|
3095
|
+
"type": "string"
|
|
3096
|
+
},
|
|
3097
|
+
{
|
|
3098
|
+
"type": "null"
|
|
3099
|
+
}
|
|
3100
|
+
],
|
|
3101
|
+
"default": null,
|
|
3102
|
+
"description": "Identifier of the parent session that spawned this one, if any.",
|
|
3103
|
+
"title": "Session Id"
|
|
3104
|
+
}
|
|
3105
|
+
},
|
|
3106
|
+
"required": [
|
|
3107
|
+
"kind",
|
|
3108
|
+
"replayed_from_session_id",
|
|
3109
|
+
"session_id"
|
|
3110
|
+
],
|
|
3111
|
+
"title": "SessionParent",
|
|
3112
|
+
"type": "object"
|
|
3113
|
+
},
|
|
3114
|
+
"SessionPrompting": {
|
|
3115
|
+
"description": "The prompt-affordance projection. `enabled` answers \"would a send work\",\nand when it wouldn't, `blocked_reason` + `detail` say why.\n\n`surface_name` is set only for MENTION_SURFACE, naming where to reply.",
|
|
3116
|
+
"properties": {
|
|
3117
|
+
"blocked_reason": {
|
|
3118
|
+
"anyOf": [
|
|
3119
|
+
{
|
|
3120
|
+
"$ref": "#/$defs/PromptBlockedReason"
|
|
3121
|
+
},
|
|
3122
|
+
{
|
|
3123
|
+
"type": "null"
|
|
3124
|
+
}
|
|
3125
|
+
],
|
|
3126
|
+
"default": null
|
|
3127
|
+
},
|
|
3128
|
+
"detail": {
|
|
3129
|
+
"anyOf": [
|
|
3130
|
+
{
|
|
3131
|
+
"type": "string"
|
|
3132
|
+
},
|
|
3133
|
+
{
|
|
3134
|
+
"type": "null"
|
|
3135
|
+
}
|
|
3136
|
+
],
|
|
3137
|
+
"default": null,
|
|
3138
|
+
"title": "Detail"
|
|
3139
|
+
},
|
|
3140
|
+
"enabled": {
|
|
3141
|
+
"title": "Enabled",
|
|
3142
|
+
"type": "boolean"
|
|
3143
|
+
},
|
|
3144
|
+
"surface_name": {
|
|
3145
|
+
"anyOf": [
|
|
3146
|
+
{
|
|
3147
|
+
"type": "string"
|
|
3148
|
+
},
|
|
3149
|
+
{
|
|
3150
|
+
"type": "null"
|
|
3151
|
+
}
|
|
3152
|
+
],
|
|
3153
|
+
"default": null,
|
|
3154
|
+
"title": "Surface Name"
|
|
3155
|
+
}
|
|
3156
|
+
},
|
|
3157
|
+
"required": [
|
|
3158
|
+
"blocked_reason",
|
|
3159
|
+
"detail",
|
|
3160
|
+
"enabled",
|
|
3161
|
+
"surface_name"
|
|
3162
|
+
],
|
|
3163
|
+
"title": "SessionPrompting",
|
|
3164
|
+
"type": "object"
|
|
3165
|
+
},
|
|
3166
|
+
"SessionSource": {
|
|
3167
|
+
"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.",
|
|
3168
|
+
"enum": [
|
|
3169
|
+
"react",
|
|
3170
|
+
"web",
|
|
3171
|
+
"api",
|
|
3172
|
+
"cli",
|
|
3173
|
+
"mention",
|
|
3174
|
+
"cron"
|
|
3175
|
+
],
|
|
3176
|
+
"title": "SessionSource",
|
|
3177
|
+
"type": "string"
|
|
3178
|
+
},
|
|
3179
|
+
"SessionState": {
|
|
3180
|
+
"description": "Lifecycle of a keyed (multi-turn) session \u2014 the durable conversation.\nDistinct from SessionStatus, which is per-execution (one turn's run) and\nmoves to agent_turns in a later slice. IDLE: alive, waiting for the next\nmessage. RUNNING: a turn is executing. CLOSED: the conversation is done and\nits sandbox/snapshots are torn down.",
|
|
3181
|
+
"enum": [
|
|
3182
|
+
"idle",
|
|
3183
|
+
"running",
|
|
3184
|
+
"closed"
|
|
3185
|
+
],
|
|
3186
|
+
"title": "SessionState",
|
|
3187
|
+
"type": "string"
|
|
3188
|
+
},
|
|
3189
|
+
"SessionStatus": {
|
|
3190
|
+
"enum": [
|
|
3191
|
+
"scheduled",
|
|
3192
|
+
"creating_sandbox",
|
|
3193
|
+
"running",
|
|
3194
|
+
"retrying",
|
|
3195
|
+
"completed",
|
|
3196
|
+
"error",
|
|
3197
|
+
"cancelled",
|
|
3198
|
+
"stopped"
|
|
3199
|
+
],
|
|
3200
|
+
"title": "SessionStatus",
|
|
3201
|
+
"type": "string"
|
|
3202
|
+
},
|
|
3203
|
+
"SessionStopped": {
|
|
3204
|
+
"description": "The stop request, if there was one: when, by which GitHub account id,\nand that account resolved to a display snippet.",
|
|
3205
|
+
"properties": {
|
|
3206
|
+
"at": {
|
|
3207
|
+
"anyOf": [
|
|
3208
|
+
{
|
|
3209
|
+
"format": "date-time",
|
|
3210
|
+
"type": "string"
|
|
3211
|
+
},
|
|
3212
|
+
{
|
|
3213
|
+
"type": "null"
|
|
3214
|
+
}
|
|
3215
|
+
],
|
|
3216
|
+
"default": null,
|
|
3217
|
+
"description": "When a stop was requested, if one was.",
|
|
3218
|
+
"title": "At"
|
|
3219
|
+
},
|
|
3220
|
+
"by": {
|
|
3221
|
+
"anyOf": [
|
|
3222
|
+
{
|
|
3223
|
+
"type": "integer"
|
|
3224
|
+
},
|
|
3225
|
+
{
|
|
3226
|
+
"type": "null"
|
|
3227
|
+
}
|
|
3228
|
+
],
|
|
3229
|
+
"default": null,
|
|
3230
|
+
"description": "GitHub account id of the user who stopped the session, if known.",
|
|
3231
|
+
"title": "By"
|
|
3232
|
+
},
|
|
3233
|
+
"by_user": {
|
|
3234
|
+
"anyOf": [
|
|
3235
|
+
{
|
|
3236
|
+
"$ref": "#/$defs/GithubAccountSnippet"
|
|
3237
|
+
},
|
|
3238
|
+
{
|
|
3239
|
+
"type": "null"
|
|
3240
|
+
}
|
|
3241
|
+
],
|
|
3242
|
+
"default": null,
|
|
3243
|
+
"description": "The GitHub user who stopped the session, resolved at read time."
|
|
3244
|
+
}
|
|
3245
|
+
},
|
|
3246
|
+
"required": [
|
|
3247
|
+
"at",
|
|
3248
|
+
"by",
|
|
3249
|
+
"by_user"
|
|
3250
|
+
],
|
|
3251
|
+
"title": "SessionStopped",
|
|
3252
|
+
"type": "object"
|
|
3253
|
+
},
|
|
3254
|
+
"SessionSummary": {
|
|
3255
|
+
"description": "A live one-line summary of what the session is working on, refreshed\nevery few steps while it runs.",
|
|
3256
|
+
"properties": {
|
|
3257
|
+
"created_at": {
|
|
3258
|
+
"anyOf": [
|
|
3259
|
+
{
|
|
3260
|
+
"format": "date-time",
|
|
3261
|
+
"type": "string"
|
|
3262
|
+
},
|
|
3263
|
+
{
|
|
3264
|
+
"type": "null"
|
|
3265
|
+
}
|
|
3266
|
+
],
|
|
3267
|
+
"default": null,
|
|
3268
|
+
"description": "When this summary line was generated. Null on summaries written before generation time was tracked.",
|
|
3269
|
+
"title": "Created At"
|
|
3270
|
+
},
|
|
3271
|
+
"description": {
|
|
3272
|
+
"description": "One-line description of what the session is working on.",
|
|
3273
|
+
"title": "Description",
|
|
3274
|
+
"type": "string"
|
|
3275
|
+
}
|
|
3276
|
+
},
|
|
3277
|
+
"required": [
|
|
3278
|
+
"created_at",
|
|
3279
|
+
"description"
|
|
3280
|
+
],
|
|
3281
|
+
"title": "SessionSummary",
|
|
3282
|
+
"type": "object"
|
|
3283
|
+
},
|
|
3284
|
+
"SessionSurface": {
|
|
3285
|
+
"description": "The three fields we expose.\n\n`use_enum_values=True` (from CustomBaseModel) stores the members as their\nstring values, so this serializes to `{\"session\": \"alive\", \"run\": \"waiting\",\n\"status\": \"waiting\"}` \u2014 a plain object, not enum names.",
|
|
3286
|
+
"properties": {
|
|
3287
|
+
"run": {
|
|
3288
|
+
"anyOf": [
|
|
3289
|
+
{
|
|
3290
|
+
"$ref": "#/$defs/RunStatus"
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"type": "null"
|
|
3294
|
+
}
|
|
3295
|
+
]
|
|
3296
|
+
},
|
|
3297
|
+
"session": {
|
|
3298
|
+
"anyOf": [
|
|
3299
|
+
{
|
|
3300
|
+
"$ref": "#/$defs/SessionLiveness"
|
|
3301
|
+
},
|
|
3302
|
+
{
|
|
3303
|
+
"type": "null"
|
|
3304
|
+
}
|
|
3305
|
+
]
|
|
3306
|
+
},
|
|
3307
|
+
"status": {
|
|
3308
|
+
"anyOf": [
|
|
3309
|
+
{
|
|
3310
|
+
"type": "string"
|
|
3311
|
+
},
|
|
3312
|
+
{
|
|
3313
|
+
"type": "null"
|
|
3314
|
+
}
|
|
3315
|
+
],
|
|
3316
|
+
"title": "Status"
|
|
3317
|
+
}
|
|
3318
|
+
},
|
|
3319
|
+
"required": [
|
|
3320
|
+
"run",
|
|
3321
|
+
"session",
|
|
3322
|
+
"status"
|
|
3323
|
+
],
|
|
3324
|
+
"title": "SessionSurface",
|
|
3325
|
+
"type": "object"
|
|
3326
|
+
},
|
|
3327
|
+
"SessionTokens": {
|
|
3328
|
+
"description": "The token counts a session (or turn) spent, and the model they went to.\n\n`total` INCLUDES the cache lanes, unlike the old flat `tokens_total` which\ncounted input+output+thinking only and left callers to add cache reads and\nwrites back themselves (the deleted `tokensTotalAll` helper). Cache tokens\ndominate an agent run's token bill, so a \"total\" that omits them is the\nwrong default and produced two competing totals in the dashboard.",
|
|
3329
|
+
"properties": {
|
|
3330
|
+
"cache_creation": {
|
|
3331
|
+
"default": 0,
|
|
3332
|
+
"description": "Tokens written to the prompt cache.",
|
|
3333
|
+
"title": "Cache Creation",
|
|
3334
|
+
"type": "integer"
|
|
3335
|
+
},
|
|
3336
|
+
"cache_read": {
|
|
3337
|
+
"default": 0,
|
|
3338
|
+
"description": "Tokens read from the prompt cache.",
|
|
3339
|
+
"title": "Cache Read",
|
|
3340
|
+
"type": "integer"
|
|
3341
|
+
},
|
|
3342
|
+
"input": {
|
|
3343
|
+
"default": 0,
|
|
3344
|
+
"description": "Input tokens used.",
|
|
3345
|
+
"title": "Input",
|
|
3346
|
+
"type": "integer"
|
|
3347
|
+
},
|
|
3348
|
+
"model": {
|
|
3349
|
+
"default": "",
|
|
3350
|
+
"description": "The model the token counts are attributed to.",
|
|
3351
|
+
"title": "Model",
|
|
3352
|
+
"type": "string"
|
|
3353
|
+
},
|
|
3354
|
+
"output": {
|
|
3355
|
+
"default": 0,
|
|
3356
|
+
"description": "Output tokens used.",
|
|
3357
|
+
"title": "Output",
|
|
3358
|
+
"type": "integer"
|
|
3359
|
+
},
|
|
3360
|
+
"total": {
|
|
3361
|
+
"default": 0,
|
|
3362
|
+
"description": "Total tokens consumed, INCLUDING the prompt-cache reads and writes \u2014 the same basis the token cost is priced on.",
|
|
3363
|
+
"title": "Total",
|
|
3364
|
+
"type": "integer"
|
|
3365
|
+
}
|
|
3366
|
+
},
|
|
3367
|
+
"required": [
|
|
3368
|
+
"cache_creation",
|
|
3369
|
+
"cache_read",
|
|
3370
|
+
"input",
|
|
3371
|
+
"model",
|
|
3372
|
+
"output",
|
|
3373
|
+
"total"
|
|
3374
|
+
],
|
|
3375
|
+
"title": "SessionTokens",
|
|
3376
|
+
"type": "object"
|
|
3377
|
+
},
|
|
3378
|
+
"SessionTrigger": {
|
|
3379
|
+
"description": "The external event that started a session, without raw webhook payloads.",
|
|
3380
|
+
"properties": {
|
|
3381
|
+
"action": {
|
|
3382
|
+
"anyOf": [
|
|
3383
|
+
{
|
|
3384
|
+
"type": "string"
|
|
3385
|
+
},
|
|
3386
|
+
{
|
|
3387
|
+
"type": "null"
|
|
3388
|
+
}
|
|
3389
|
+
],
|
|
3390
|
+
"default": null,
|
|
3391
|
+
"title": "Action"
|
|
3392
|
+
},
|
|
3393
|
+
"actor": {
|
|
3394
|
+
"anyOf": [
|
|
3395
|
+
{
|
|
3396
|
+
"$ref": "#/$defs/SessionTriggerActor"
|
|
3397
|
+
},
|
|
3398
|
+
{
|
|
3399
|
+
"type": "null"
|
|
3400
|
+
}
|
|
3401
|
+
],
|
|
3402
|
+
"default": null
|
|
3403
|
+
},
|
|
3404
|
+
"branch": {
|
|
3405
|
+
"anyOf": [
|
|
3406
|
+
{
|
|
3407
|
+
"type": "string"
|
|
3408
|
+
},
|
|
3409
|
+
{
|
|
3410
|
+
"type": "null"
|
|
3411
|
+
}
|
|
3412
|
+
],
|
|
3413
|
+
"default": null,
|
|
3414
|
+
"title": "Branch"
|
|
3415
|
+
},
|
|
3416
|
+
"number": {
|
|
3417
|
+
"anyOf": [
|
|
3418
|
+
{
|
|
3419
|
+
"type": "integer"
|
|
3420
|
+
},
|
|
3421
|
+
{
|
|
3422
|
+
"type": "null"
|
|
3423
|
+
}
|
|
3424
|
+
],
|
|
3425
|
+
"default": null,
|
|
3426
|
+
"title": "Number"
|
|
3427
|
+
},
|
|
3428
|
+
"repository": {
|
|
3429
|
+
"anyOf": [
|
|
3430
|
+
{
|
|
3431
|
+
"type": "string"
|
|
3432
|
+
},
|
|
3433
|
+
{
|
|
3434
|
+
"type": "null"
|
|
3435
|
+
}
|
|
3436
|
+
],
|
|
3437
|
+
"default": null,
|
|
3438
|
+
"title": "Repository"
|
|
3439
|
+
},
|
|
3440
|
+
"surface": {
|
|
3441
|
+
"anyOf": [
|
|
3442
|
+
{
|
|
3443
|
+
"type": "string"
|
|
3444
|
+
},
|
|
3445
|
+
{
|
|
3446
|
+
"type": "null"
|
|
3447
|
+
}
|
|
3448
|
+
],
|
|
3449
|
+
"default": null,
|
|
3450
|
+
"title": "Surface"
|
|
3451
|
+
},
|
|
3452
|
+
"title": {
|
|
3453
|
+
"anyOf": [
|
|
3454
|
+
{
|
|
3455
|
+
"type": "string"
|
|
3456
|
+
},
|
|
3457
|
+
{
|
|
3458
|
+
"type": "null"
|
|
3459
|
+
}
|
|
3460
|
+
],
|
|
3461
|
+
"default": null,
|
|
3462
|
+
"title": "Title"
|
|
3463
|
+
},
|
|
3464
|
+
"url": {
|
|
3465
|
+
"anyOf": [
|
|
3466
|
+
{
|
|
3467
|
+
"type": "string"
|
|
3468
|
+
},
|
|
3469
|
+
{
|
|
3470
|
+
"type": "null"
|
|
3471
|
+
}
|
|
3472
|
+
],
|
|
3473
|
+
"default": null,
|
|
3474
|
+
"title": "Url"
|
|
3475
|
+
}
|
|
3476
|
+
},
|
|
3477
|
+
"required": [
|
|
3478
|
+
"action",
|
|
3479
|
+
"actor",
|
|
3480
|
+
"branch",
|
|
3481
|
+
"number",
|
|
3482
|
+
"repository",
|
|
3483
|
+
"surface",
|
|
3484
|
+
"title",
|
|
3485
|
+
"url"
|
|
3486
|
+
],
|
|
3487
|
+
"title": "SessionTrigger",
|
|
3488
|
+
"type": "object"
|
|
3489
|
+
},
|
|
3490
|
+
"SessionTriggerActor": {
|
|
3491
|
+
"properties": {
|
|
3492
|
+
"avatar_url": {
|
|
3493
|
+
"anyOf": [
|
|
3494
|
+
{
|
|
3495
|
+
"type": "string"
|
|
3496
|
+
},
|
|
3497
|
+
{
|
|
3498
|
+
"type": "null"
|
|
3499
|
+
}
|
|
3500
|
+
],
|
|
3501
|
+
"default": null,
|
|
3502
|
+
"title": "Avatar Url"
|
|
3503
|
+
},
|
|
3504
|
+
"is_bot": {
|
|
3505
|
+
"default": false,
|
|
3506
|
+
"title": "Is Bot",
|
|
3507
|
+
"type": "boolean"
|
|
3508
|
+
},
|
|
3509
|
+
"name": {
|
|
3510
|
+
"title": "Name",
|
|
3511
|
+
"type": "string"
|
|
3512
|
+
}
|
|
3513
|
+
},
|
|
3514
|
+
"required": [
|
|
3515
|
+
"avatar_url",
|
|
3516
|
+
"is_bot",
|
|
3517
|
+
"name"
|
|
3518
|
+
],
|
|
3519
|
+
"title": "SessionTriggerActor",
|
|
3520
|
+
"type": "object"
|
|
3521
|
+
},
|
|
3522
|
+
"SettingsRef": {
|
|
3523
|
+
"additionalProperties": false,
|
|
3524
|
+
"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.",
|
|
3525
|
+
"properties": {
|
|
3526
|
+
"path": {
|
|
3527
|
+
"title": "Path",
|
|
3528
|
+
"type": "string"
|
|
3529
|
+
},
|
|
3530
|
+
"repository": {
|
|
3531
|
+
"anyOf": [
|
|
3532
|
+
{
|
|
3533
|
+
"$ref": "#/$defs/RepositoryRef"
|
|
3534
|
+
},
|
|
3535
|
+
{
|
|
3536
|
+
"type": "null"
|
|
3537
|
+
}
|
|
3538
|
+
],
|
|
3539
|
+
"default": null
|
|
3540
|
+
}
|
|
3541
|
+
},
|
|
3542
|
+
"required": [
|
|
3543
|
+
"path",
|
|
3544
|
+
"repository"
|
|
3545
|
+
],
|
|
3546
|
+
"title": "SettingsRef",
|
|
3547
|
+
"type": "object"
|
|
3548
|
+
},
|
|
3549
|
+
"SkillRef": {
|
|
3550
|
+
"additionalProperties": false,
|
|
3551
|
+
"description": "A repository directory containing SKILL.md and supporting UTF-8 files.\nResolved at run start and installed in the selected harness's skill directory.\nExplicit skill references require a model with the skills capability.",
|
|
3552
|
+
"properties": {
|
|
3553
|
+
"path": {
|
|
3554
|
+
"title": "Path",
|
|
3555
|
+
"type": "string"
|
|
3556
|
+
},
|
|
3557
|
+
"repository": {
|
|
3558
|
+
"anyOf": [
|
|
3559
|
+
{
|
|
3560
|
+
"$ref": "#/$defs/RepositoryRef"
|
|
3561
|
+
},
|
|
3562
|
+
{
|
|
3563
|
+
"type": "null"
|
|
3564
|
+
}
|
|
3565
|
+
],
|
|
3566
|
+
"default": null
|
|
3567
|
+
}
|
|
3568
|
+
},
|
|
3569
|
+
"required": [
|
|
3570
|
+
"path",
|
|
3571
|
+
"repository"
|
|
3572
|
+
],
|
|
3573
|
+
"title": "SkillRef",
|
|
3574
|
+
"type": "object"
|
|
3575
|
+
},
|
|
3576
|
+
"SystemFileRef": {
|
|
3577
|
+
"additionalProperties": false,
|
|
3578
|
+
"properties": {
|
|
3579
|
+
"file": {
|
|
3580
|
+
"title": "File",
|
|
3581
|
+
"type": "string"
|
|
3582
|
+
},
|
|
3583
|
+
"repository": {
|
|
3584
|
+
"anyOf": [
|
|
3585
|
+
{
|
|
3586
|
+
"$ref": "#/$defs/RepositoryRef"
|
|
3587
|
+
},
|
|
3588
|
+
{
|
|
3589
|
+
"type": "null"
|
|
3590
|
+
}
|
|
3591
|
+
],
|
|
3592
|
+
"default": null
|
|
3593
|
+
}
|
|
3594
|
+
},
|
|
3595
|
+
"required": [
|
|
3596
|
+
"file",
|
|
3597
|
+
"repository"
|
|
3598
|
+
],
|
|
3599
|
+
"title": "SystemFileRef",
|
|
3600
|
+
"type": "object"
|
|
3601
|
+
}
|
|
3602
|
+
},
|
|
3603
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3604
|
+
"description": "Frames on /v1/sessions/stream, /v1/automations/stream and /v1/sandboxes/{id}/stream. Ignore unknown frame types.",
|
|
3605
|
+
"oneOf": [
|
|
3606
|
+
{
|
|
3607
|
+
"$ref": "#/$defs/SessionListStreamMessage"
|
|
3608
|
+
},
|
|
3609
|
+
{
|
|
3610
|
+
"$ref": "#/$defs/AutomationListStreamMessage"
|
|
3611
|
+
},
|
|
3612
|
+
{
|
|
3613
|
+
"$ref": "#/$defs/CollectionStreamHeartbeat"
|
|
3614
|
+
},
|
|
3615
|
+
{
|
|
3616
|
+
"$ref": "#/$defs/SandboxSnapshotFrame"
|
|
3617
|
+
},
|
|
3618
|
+
{
|
|
3619
|
+
"$ref": "#/$defs/SandboxUpdateFrame"
|
|
3620
|
+
}
|
|
3621
|
+
],
|
|
3622
|
+
"title": "CollectionStreamFrame"
|
|
3623
|
+
}
|