@ellipsis-dev/sdk 0.31.0 → 0.32.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.
@@ -229,7 +229,7 @@
229
229
  },
230
230
  "AgentIdentity": {
231
231
  "additionalProperties": false,
232
- "description": "The Ellipsis product namespace for a config file: which schema this is\n(`version`), the human-facing identity (`name`/`description`), freeform\norganizational `metadata`, and whether the agent is `enabled`. The\npresence of a top-level `ellipsis:` mapping is what marks a YAML file as\nan Ellipsis agent (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.",
232
+ "description": "The Ellipsis product namespace for a config file: which schema this is\n(`version`), the human-facing identity (`name`/`description`), freeform\norganizational `metadata`, and whether the agent is `enabled`. The\npresence of a top-level `ellipsis:` mapping is what marks a YAML file as\nan Ellipsis agent (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).",
233
233
  "properties": {
234
234
  "description": {
235
235
  "anyOf": [
@@ -324,6 +324,7 @@
324
324
  },
325
325
  "BudgetConfig": {
326
326
  "additionalProperties": false,
327
+ "description": "A saved agent's spend limits: the per-session cap plus its total spend\nover the trailing 1, 7, and 28 days.",
327
328
  "properties": {
328
329
  "day": {
329
330
  "anyOf": [
@@ -335,6 +336,7 @@
335
336
  }
336
337
  ],
337
338
  "default": null,
339
+ "description": "The most the agent may spend over the last day, in US dollars.",
338
340
  "title": "Day"
339
341
  },
340
342
  "month": {
@@ -347,6 +349,7 @@
347
349
  }
348
350
  ],
349
351
  "default": null,
352
+ "description": "The most the agent may spend over the last 28 days, in US dollars.",
350
353
  "title": "Month"
351
354
  },
352
355
  "session": {
@@ -360,6 +363,7 @@
360
363
  }
361
364
  ],
362
365
  "default": null,
366
+ "description": "The most one session may spend, in US dollars.",
363
367
  "title": "Session"
364
368
  },
365
369
  "week": {
@@ -372,6 +376,7 @@
372
376
  }
373
377
  ],
374
378
  "default": null,
379
+ "description": "The most the agent may spend over the last 7 days, in US dollars.",
375
380
  "title": "Week"
376
381
  }
377
382
  },
@@ -384,6 +389,14 @@
384
389
  "title": "BudgetConfig",
385
390
  "type": "object"
386
391
  },
392
+ "CheckRunAction": {
393
+ "description": "What a completed check run did. `failed` covers the conclusions that\nmean the check did not pass on its own merits (`failure`, `timed_out`); a\ncancelled, skipped, neutral or stale check is not a failure and never\nfires (see FAILED_CHECK_RUN_CONCLUSIONS).",
394
+ "enum": [
395
+ "failed"
396
+ ],
397
+ "title": "CheckRunAction",
398
+ "type": "string"
399
+ },
387
400
  "ClaudeConfig": {
388
401
  "additionalProperties": false,
389
402
  "description": "Native Claude Code options for an explicitly selected harness.",
@@ -425,16 +438,9 @@
425
438
  "title": "Max Turns"
426
439
  },
427
440
  "model": {
428
- "anyOf": [
429
- {
430
- "type": "string"
431
- },
432
- {
433
- "type": "null"
434
- }
435
- ],
436
- "default": null,
437
- "title": "Model"
441
+ "description": "The model the session runs on: an alias or canonical id from the models table. Required.",
442
+ "title": "Model",
443
+ "type": "string"
438
444
  },
439
445
  "prompt": {
440
446
  "anyOf": [
@@ -474,7 +480,7 @@
474
480
  },
475
481
  "CodexConfig": {
476
482
  "additionalProperties": false,
477
- "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.",
483
+ "description": "Native options supported by the current Codex adapter.",
478
484
  "properties": {
479
485
  "effort": {
480
486
  "anyOf": [
@@ -489,7 +495,7 @@
489
495
  "description": "Reasoning effort for every turn. Omit to use the model default."
490
496
  },
491
497
  "model": {
492
- "default": "gpt-6-sol",
498
+ "description": "The model the session runs on: a Responses-capable id from the models table. Required.",
493
499
  "title": "Model",
494
500
  "type": "string"
495
501
  },
@@ -637,7 +643,13 @@
637
643
  },
638
644
  "CronTrigger": {
639
645
  "additionalProperties": false,
646
+ "description": "A schedule: `schedule` is a five-field cron expression in UTC.\n\n`enabled: false` pauses the trigger and keeps its definition: the schedule\nstops firing while the agent stays live for on-demand starts and open\nsessions keep taking follow-ups (`ellipsis.enabled: false` pauses the\nwhole file instead). Re-enabling resumes at the next scheduled time; runs\nmissed while paused are not made up.",
640
647
  "properties": {
648
+ "enabled": {
649
+ "default": true,
650
+ "title": "Enabled",
651
+ "type": "boolean"
652
+ },
641
653
  "schedule": {
642
654
  "title": "Schedule",
643
655
  "type": "string"
@@ -650,6 +662,7 @@
650
662
  }
651
663
  },
652
664
  "required": [
665
+ "enabled",
653
666
  "schedule",
654
667
  "type"
655
668
  ],
@@ -721,7 +734,7 @@
721
734
  },
722
735
  "EllipsisGrant": {
723
736
  "additionalProperties": false,
724
- "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.",
737
+ "description": "One grant entry: a level, optionally narrowed to instances whose\nnatural key (a file's name, a secret's name, a config's name, a session's\nid) matches any of the `match` globs.",
725
738
  "properties": {
726
739
  "level": {
727
740
  "$ref": "#/$defs/Level"
@@ -1080,17 +1093,26 @@
1080
1093
  },
1081
1094
  "GithubAccountSelector": {
1082
1095
  "additionalProperties": false,
1083
- "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).",
1096
+ "description": "A selector of GitHub accounts \u2014 the `for:` audience gate on react\nsurfaces, classified on the stable entity author (the pusher for `push`,\nthe PR author for a pull request). `users` selects human\naccounts, `bots` selects bot accounts; each is a `GithubAccountFilter`\n(include minus exclude, with bare bool/list shorthand).\n\n`teams` narrows further to members of any of the listed GitHub teams of\nthe installation's organization, by slug (`platform` for\n`@org/platform`). It applies on top of `users`: the author must pass the\nusers filter AND belong to a listed team. A bot is never a team member,\nso a selector with `teams` never admits one. Membership is resolved live\nat match time (see `TriggerEventContext.is_author_team_member`), and the\nconfig sync refuses a team that does not exist when the file is\naccepted.",
1084
1097
  "properties": {
1085
1098
  "bots": {
1086
1099
  "$ref": "#/$defs/GithubAccountFilter"
1087
1100
  },
1101
+ "teams": {
1102
+ "default": [],
1103
+ "items": {
1104
+ "type": "string"
1105
+ },
1106
+ "title": "Teams",
1107
+ "type": "array"
1108
+ },
1088
1109
  "users": {
1089
1110
  "$ref": "#/$defs/GithubAccountFilter"
1090
1111
  }
1091
1112
  },
1092
1113
  "required": [
1093
1114
  "bots",
1115
+ "teams",
1094
1116
  "users"
1095
1117
  ],
1096
1118
  "title": "GithubAccountSelector",
@@ -1111,6 +1133,18 @@
1111
1133
  "title": "Login",
1112
1134
  "type": "string"
1113
1135
  },
1136
+ "name": {
1137
+ "anyOf": [
1138
+ {
1139
+ "type": "string"
1140
+ },
1141
+ {
1142
+ "type": "null"
1143
+ }
1144
+ ],
1145
+ "default": null,
1146
+ "title": "Name"
1147
+ },
1114
1148
  "type": {
1115
1149
  "$ref": "#/$defs/GithubAccountType"
1116
1150
  }
@@ -1119,6 +1153,7 @@
1119
1153
  "avatar_url",
1120
1154
  "id",
1121
1155
  "login",
1156
+ "name",
1122
1157
  "type"
1123
1158
  ],
1124
1159
  "title": "GithubAccountSnippet",
@@ -1134,6 +1169,96 @@
1134
1169
  "title": "GithubAccountType",
1135
1170
  "type": "string"
1136
1171
  },
1172
+ "GithubCheckRunEvent": {
1173
+ "properties": {
1174
+ "action": {
1175
+ "$ref": "#/$defs/CheckRunAction"
1176
+ },
1177
+ "actor": {
1178
+ "anyOf": [
1179
+ {
1180
+ "$ref": "#/$defs/SessionEventActor"
1181
+ },
1182
+ {
1183
+ "type": "null"
1184
+ }
1185
+ ],
1186
+ "default": null
1187
+ },
1188
+ "branch": {
1189
+ "anyOf": [
1190
+ {
1191
+ "type": "string"
1192
+ },
1193
+ {
1194
+ "type": "null"
1195
+ }
1196
+ ],
1197
+ "default": null,
1198
+ "title": "Branch"
1199
+ },
1200
+ "conclusion": {
1201
+ "anyOf": [
1202
+ {
1203
+ "type": "string"
1204
+ },
1205
+ {
1206
+ "type": "null"
1207
+ }
1208
+ ],
1209
+ "default": null,
1210
+ "title": "Conclusion"
1211
+ },
1212
+ "head_sha": {
1213
+ "title": "Head Sha",
1214
+ "type": "string"
1215
+ },
1216
+ "name": {
1217
+ "title": "Name",
1218
+ "type": "string"
1219
+ },
1220
+ "pull_request_number": {
1221
+ "anyOf": [
1222
+ {
1223
+ "type": "integer"
1224
+ },
1225
+ {
1226
+ "type": "null"
1227
+ }
1228
+ ],
1229
+ "default": null,
1230
+ "title": "Pull Request Number"
1231
+ },
1232
+ "repository": {
1233
+ "title": "Repository",
1234
+ "type": "string"
1235
+ },
1236
+ "type": {
1237
+ "const": "github.check_run",
1238
+ "default": "github.check_run",
1239
+ "title": "Type",
1240
+ "type": "string"
1241
+ },
1242
+ "url": {
1243
+ "title": "Url",
1244
+ "type": "string"
1245
+ }
1246
+ },
1247
+ "required": [
1248
+ "action",
1249
+ "actor",
1250
+ "branch",
1251
+ "conclusion",
1252
+ "head_sha",
1253
+ "name",
1254
+ "pull_request_number",
1255
+ "repository",
1256
+ "type",
1257
+ "url"
1258
+ ],
1259
+ "title": "GithubCheckRunEvent",
1260
+ "type": "object"
1261
+ },
1137
1262
  "GithubIssueEvent": {
1138
1263
  "properties": {
1139
1264
  "action": {
@@ -1187,7 +1312,7 @@
1187
1312
  },
1188
1313
  "GithubPermissions": {
1189
1314
  "additionalProperties": false,
1190
- "description": "The agent's GitHub access: the scope of the installation token minted for\nits session's environment \u2014 the credential `git`, `gh`, and the GitHub MCP\nserver authenticate 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 environment can\nexceed it.",
1315
+ "description": "The agent's GitHub access: the scope of the installation token minted for\nits session's environment \u2014 the credential `git` and `gh` authenticate\nwith.\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 environment can\nexceed it.",
1191
1316
  "properties": {
1192
1317
  "permissions": {
1193
1318
  "anyOf": [
@@ -1348,6 +1473,70 @@
1348
1473
  "title": "GithubPushEvent",
1349
1474
  "type": "object"
1350
1475
  },
1476
+ "GithubReleaseEvent": {
1477
+ "properties": {
1478
+ "action": {
1479
+ "$ref": "#/$defs/ReleaseAction"
1480
+ },
1481
+ "actor": {
1482
+ "anyOf": [
1483
+ {
1484
+ "$ref": "#/$defs/SessionEventActor"
1485
+ },
1486
+ {
1487
+ "type": "null"
1488
+ }
1489
+ ],
1490
+ "default": null
1491
+ },
1492
+ "name": {
1493
+ "anyOf": [
1494
+ {
1495
+ "type": "string"
1496
+ },
1497
+ {
1498
+ "type": "null"
1499
+ }
1500
+ ],
1501
+ "default": null,
1502
+ "title": "Name"
1503
+ },
1504
+ "prerelease": {
1505
+ "title": "Prerelease",
1506
+ "type": "boolean"
1507
+ },
1508
+ "repository": {
1509
+ "title": "Repository",
1510
+ "type": "string"
1511
+ },
1512
+ "tag": {
1513
+ "title": "Tag",
1514
+ "type": "string"
1515
+ },
1516
+ "type": {
1517
+ "const": "github.release",
1518
+ "default": "github.release",
1519
+ "title": "Type",
1520
+ "type": "string"
1521
+ },
1522
+ "url": {
1523
+ "title": "Url",
1524
+ "type": "string"
1525
+ }
1526
+ },
1527
+ "required": [
1528
+ "action",
1529
+ "actor",
1530
+ "name",
1531
+ "prerelease",
1532
+ "repository",
1533
+ "tag",
1534
+ "type",
1535
+ "url"
1536
+ ],
1537
+ "title": "GithubReleaseEvent",
1538
+ "type": "object"
1539
+ },
1351
1540
  "GithubSourceDetails": {
1352
1541
  "description": "Identifies the file a GitHub-sourced agent is synced from.\n\nIdentified by 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.",
1353
1542
  "properties": {
@@ -1385,7 +1574,7 @@
1385
1574
  },
1386
1575
  "InputContract": {
1387
1576
  "additionalProperties": false,
1388
- "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` validates customer data sent as `input` to\n`POST /v1/agents/{id}/sessions` and stored as `session.input`.\nInvocations require input when a schema is declared. React agents\ncannot declare schemas: the platform defines their event payloads.\n\n`message` is the initial-message template: exact `{{path}}` substitution\nover the caller payload (or, on a react agent, over the surface's\npublished fields), no conditionals/loops/filters. Refs are validated at\ndeploy time against the governing field set (see AgentConfig's\n`_check_input`).",
1577
+ "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` validates customer data sent as `input` to\n`POST /v1/agents/{id}/sessions` (the dashboard and the CLI start\nthrough the same door) and stored as `session.input`. An on-demand\nstart requires input when a schema is declared. A trigger fires\nwithout it: a cron fire has no payload and a react fire carries the\nplatform-shaped event, so an agent may declare a schema alongside\neither trigger and the schema governs only its on-demand starts.\n\n`message` is the initial-message template: exact `{{path}}` substitution\nover the payload the session has (the caller payload on an on-demand\nstart, the surface's published fields on a react fire, the empty\nobject on a cron fire), no conditionals/loops/filters. Refs are\nvalidated at deploy time against every governing field set (see\nAgentConfig's `_check_input`): the caller schema's paths, the react\nsurface's published fields, and both when the agent has a react trigger\nand a schema, so one template renders fully on either door (declare the\nsurface's field names in the schema). Omit `message` to let each door\nrender its default. An unresolved ref renders as the empty string (a\ncron fire, an optional field the payload omitted).",
1389
1578
  "properties": {
1390
1579
  "json_schema": {
1391
1580
  "anyOf": [
@@ -1454,7 +1643,10 @@
1454
1643
  "$ref": "#/$defs/LinearIssueAction"
1455
1644
  },
1456
1645
  {
1457
- "const": "commented",
1646
+ "enum": [
1647
+ "commented",
1648
+ "delegated"
1649
+ ],
1458
1650
  "type": "string"
1459
1651
  }
1460
1652
  ],
@@ -1545,7 +1737,7 @@
1545
1737
  },
1546
1738
  "McpServerRef": {
1547
1739
  "additionalProperties": false,
1548
- "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`).",
1740
+ "description": "One built-in MCP server this agent attaches by name (`linear`/`slack`).\nA name reference over the connected built-in set \u2014 the platform manages the\nserver's transport and credentials. A session gets a built-in server only\nwhen its config names it here or the session started from that server's\nown surface. For a server the platform does not provide, define it instead\n(`McpStdioServer` / `McpRemoteServer`).",
1549
1741
  "properties": {
1550
1742
  "name": {
1551
1743
  "title": "Name",
@@ -1652,7 +1844,7 @@
1652
1844
  },
1653
1845
  "PermissionsConfig": {
1654
1846
  "additionalProperties": false,
1655
- "description": "What the agent is allowed to touch, per credential the platform mints\ninto its session's environment. Distinct from `environment:`, which is\nwhere the agent runs; this is what it may do from there.\n\n`ellipsis` scopes the session's Ellipsis API token (`ELLIPSIS_API_TOKEN`,\nwhat the `agent` CLI running inside the session authenticates with).\n`true` / the string `all` (the default) grant the full session token\nceiling \u2014 everything a session 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 session's GitHub installation token (`GH_TOKEN`) \u2014\nsee `GithubPermissions`. GitHub enforces it at mint time.",
1847
+ "description": "What the agent is allowed to touch, per credential the platform mints\ninto its session's environment. Distinct from `environment:`, which is\nwhere the agent runs; this is what it may do from there.\n\n`ellipsis` scopes the session's Ellipsis API token (`ELLIPSIS_API_TOKEN`,\nwhat the `ellipsis` CLI running inside the session authenticates with).\n`true` / the string `all` (the default) grant the full session token\nceiling \u2014 everything a session 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 session's GitHub installation token (`GH_TOKEN`) \u2014\nsee `GithubPermissions`. GitHub enforces it at mint time.",
1656
1848
  "properties": {
1657
1849
  "ellipsis": {
1658
1850
  "anyOf": [
@@ -1688,7 +1880,6 @@
1688
1880
  "description": "Why direct prompting is refused. Absent when prompting is allowed.",
1689
1881
  "enum": [
1690
1882
  "mention_surface",
1691
- "ephemeral_trigger",
1692
1883
  "non_interactive",
1693
1884
  "harness_single_turn",
1694
1885
  "budget_exhausted",
@@ -1709,6 +1900,53 @@
1709
1900
  "title": "PullRequestAction",
1710
1901
  "type": "string"
1711
1902
  },
1903
+ "ReactCheckRun": {
1904
+ "additionalProperties": false,
1905
+ "description": "A CI/CD check completing on a commit \u2014 a `check_run` from GitHub\nActions or any other app that reports checks. `names` narrows to the check\nruns whose name matches (exact, or a prefix ending in `*`); `branch` is the\ncheck suite's head branch. The `for:` audience is the commit's author (the\npull request author when the check is attached to one), never the CI app\nthat completed the check \u2014 a check run's sender is always a bot.\n\nDelivery needs the Ellipsis GitHub App's `checks` permission on the\ninstallation; without it GitHub sends no check events and the webhook\nhandler refuses the ones it does see.",
1906
+ "properties": {
1907
+ "branch": {
1908
+ "default": [],
1909
+ "items": {
1910
+ "type": "string"
1911
+ },
1912
+ "title": "Branch",
1913
+ "type": "array"
1914
+ },
1915
+ "for": {
1916
+ "$ref": "#/$defs/GithubAccountSelector"
1917
+ },
1918
+ "names": {
1919
+ "default": [],
1920
+ "items": {
1921
+ "type": "string"
1922
+ },
1923
+ "title": "Names",
1924
+ "type": "array"
1925
+ },
1926
+ "on": {
1927
+ "default": [
1928
+ "failed"
1929
+ ],
1930
+ "items": {
1931
+ "$ref": "#/$defs/CheckRunAction"
1932
+ },
1933
+ "title": "On",
1934
+ "type": "array"
1935
+ },
1936
+ "repositories": {
1937
+ "$ref": "#/$defs/RepositoryFilter"
1938
+ }
1939
+ },
1940
+ "required": [
1941
+ "branch",
1942
+ "for",
1943
+ "names",
1944
+ "on",
1945
+ "repositories"
1946
+ ],
1947
+ "title": "ReactCheckRun",
1948
+ "type": "object"
1949
+ },
1712
1950
  "ReactIssue": {
1713
1951
  "additionalProperties": false,
1714
1952
  "properties": {
@@ -1876,6 +2114,57 @@
1876
2114
  "title": "ReactPush",
1877
2115
  "type": "object"
1878
2116
  },
2117
+ "ReactRelease": {
2118
+ "additionalProperties": false,
2119
+ "description": "A GitHub release being published \u2014 a release or prerelease published\ndirectly, or a draft published later. `tag` narrows to the release tags\nthat match (exact, or a prefix ending in `*`, so `v*`); `prerelease`\nselects prereleases or full releases, like `draft` on pull requests. The\n`for:` audience is the release's author, which for a release cut by CI is\na bot and needs `bots` to opt in.",
2120
+ "properties": {
2121
+ "for": {
2122
+ "$ref": "#/$defs/GithubAccountSelector"
2123
+ },
2124
+ "on": {
2125
+ "default": [
2126
+ "published"
2127
+ ],
2128
+ "items": {
2129
+ "$ref": "#/$defs/ReleaseAction"
2130
+ },
2131
+ "title": "On",
2132
+ "type": "array"
2133
+ },
2134
+ "prerelease": {
2135
+ "anyOf": [
2136
+ {
2137
+ "type": "boolean"
2138
+ },
2139
+ {
2140
+ "type": "null"
2141
+ }
2142
+ ],
2143
+ "default": null,
2144
+ "title": "Prerelease"
2145
+ },
2146
+ "repositories": {
2147
+ "$ref": "#/$defs/RepositoryFilter"
2148
+ },
2149
+ "tag": {
2150
+ "default": [],
2151
+ "items": {
2152
+ "type": "string"
2153
+ },
2154
+ "title": "Tag",
2155
+ "type": "array"
2156
+ }
2157
+ },
2158
+ "required": [
2159
+ "for",
2160
+ "on",
2161
+ "prerelease",
2162
+ "repositories",
2163
+ "tag"
2164
+ ],
2165
+ "title": "ReactRelease",
2166
+ "type": "object"
2167
+ },
1879
2168
  "ReactSentry": {
1880
2169
  "additionalProperties": false,
1881
2170
  "properties": {
@@ -1910,7 +2199,24 @@
1910
2199
  },
1911
2200
  "ReactTrigger": {
1912
2201
  "additionalProperties": false,
2202
+ "description": "An event trigger: exactly one surface block names the events to match.\n\n`enabled: false` pauses the trigger and keeps its definition: events stop\nmatching while the agent stays live for on-demand starts and open\nsessions keep taking follow-ups (`ellipsis.enabled: false` pauses the\nwhole file instead).",
1913
2203
  "properties": {
2204
+ "check_run": {
2205
+ "anyOf": [
2206
+ {
2207
+ "$ref": "#/$defs/ReactCheckRun"
2208
+ },
2209
+ {
2210
+ "type": "null"
2211
+ }
2212
+ ],
2213
+ "default": null
2214
+ },
2215
+ "enabled": {
2216
+ "default": true,
2217
+ "title": "Enabled",
2218
+ "type": "boolean"
2219
+ },
1914
2220
  "issue": {
1915
2221
  "anyOf": [
1916
2222
  {
@@ -1955,6 +2261,17 @@
1955
2261
  ],
1956
2262
  "default": null
1957
2263
  },
2264
+ "release": {
2265
+ "anyOf": [
2266
+ {
2267
+ "$ref": "#/$defs/ReactRelease"
2268
+ },
2269
+ {
2270
+ "type": "null"
2271
+ }
2272
+ ],
2273
+ "default": null
2274
+ },
1958
2275
  "sentry": {
1959
2276
  "anyOf": [
1960
2277
  {
@@ -1985,10 +2302,13 @@
1985
2302
  }
1986
2303
  },
1987
2304
  "required": [
2305
+ "check_run",
2306
+ "enabled",
1988
2307
  "issue",
1989
2308
  "linear_issue",
1990
2309
  "pull_request",
1991
2310
  "push",
2311
+ "release",
1992
2312
  "sentry",
1993
2313
  "slack_channel",
1994
2314
  "type"
@@ -1996,6 +2316,14 @@
1996
2316
  "title": "ReactTrigger",
1997
2317
  "type": "object"
1998
2318
  },
2319
+ "ReleaseAction": {
2320
+ "description": "What happened to a GitHub release. `published` is the one moment a\nrelease becomes visible: a release or prerelease published directly, or a\ndraft published later. Edits, deletions, and unpublishes never fire.",
2321
+ "enum": [
2322
+ "published"
2323
+ ],
2324
+ "title": "ReleaseAction",
2325
+ "type": "string"
2326
+ },
1999
2327
  "RepositoryFilter": {
2000
2328
  "anyOf": [
2001
2329
  {
@@ -2080,14 +2408,13 @@
2080
2408
  "account",
2081
2409
  "alerts",
2082
2410
  "sessions",
2083
- "memories",
2084
- "reviews",
2085
2411
  "configs",
2086
2412
  "defaults",
2087
2413
  "environments",
2088
2414
  "secrets",
2089
2415
  "templates",
2090
2416
  "integrations",
2417
+ "reviews",
2091
2418
  "tokens",
2092
2419
  "webhooks",
2093
2420
  "user"
@@ -2239,11 +2566,9 @@
2239
2566
  },
2240
2567
  "SandboxSource": {
2241
2568
  "enum": [
2242
- "cli",
2243
- "web_ui",
2244
- "ingest_pull_request_job_run",
2245
2569
  "session",
2246
2570
  "image_refresh",
2571
+ "environment_check",
2247
2572
  "test",
2248
2573
  "script"
2249
2574
  ],
@@ -2493,9 +2818,11 @@
2493
2818
  {
2494
2819
  "discriminator": {
2495
2820
  "mapping": {
2821
+ "github.check_run": "#/$defs/GithubCheckRunEvent",
2496
2822
  "github.issue": "#/$defs/GithubIssueEvent",
2497
2823
  "github.pull_request": "#/$defs/GithubPullRequestEvent",
2498
2824
  "github.push": "#/$defs/GithubPushEvent",
2825
+ "github.release": "#/$defs/GithubReleaseEvent",
2499
2826
  "linear.issue": "#/$defs/LinearIssueEvent",
2500
2827
  "sentry.alert": "#/$defs/SentryAlertEvent",
2501
2828
  "slack.channel_created": "#/$defs/SlackChannelCreatedEvent",
@@ -2513,6 +2840,12 @@
2513
2840
  {
2514
2841
  "$ref": "#/$defs/GithubPushEvent"
2515
2842
  },
2843
+ {
2844
+ "$ref": "#/$defs/GithubCheckRunEvent"
2845
+ },
2846
+ {
2847
+ "$ref": "#/$defs/GithubReleaseEvent"
2848
+ },
2516
2849
  {
2517
2850
  "$ref": "#/$defs/LinearIssueEvent"
2518
2851
  },
@@ -2576,14 +2909,14 @@
2576
2909
  "output": {
2577
2910
  "anyOf": [
2578
2911
  {
2579
- "$ref": "#/$defs/OutputConfig"
2912
+ "$ref": "#/$defs/SessionOutput"
2580
2913
  },
2581
2914
  {
2582
2915
  "type": "null"
2583
2916
  }
2584
2917
  ],
2585
2918
  "default": null,
2586
- "description": "The structured-output exit contract for this session."
2919
+ "description": "The session's structured output: the `json_schema` the agent must satisfy and, once a turn has submitted it, the `result`."
2587
2920
  },
2588
2921
  "parent": {
2589
2922
  "anyOf": [
@@ -2694,7 +3027,7 @@
2694
3027
  }
2695
3028
  ],
2696
3029
  "default": null,
2697
- "description": "Identifier of the saved agent 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 agent behind them. Points at the agent as it exists now, which may have changed since.",
3030
+ "description": "Identifier of the saved agent this session's snapshot was taken from. Null for a routing-file agent or the built-in mention agent, which have no saved agent behind them. Points at the agent as it exists now, which may have changed since.",
2698
3031
  "title": "Id"
2699
3032
  }
2700
3033
  },
@@ -2856,6 +3189,12 @@
2856
3189
  "default": null,
2857
3190
  "description": "Codex input and native options. Set exactly one of claude_code or codex."
2858
3191
  },
3192
+ "conversation": {
3193
+ "$ref": "#/$defs/SessionConversationConfig",
3194
+ "default": {
3195
+ "interactive": true
3196
+ }
3197
+ },
2859
3198
  "environment": {
2860
3199
  "anyOf": [
2861
3200
  {
@@ -2884,6 +3223,15 @@
2884
3223
  },
2885
3224
  "title": "Environment"
2886
3225
  },
3226
+ "metadata": {
3227
+ "additionalProperties": {
3228
+ "type": "string"
3229
+ },
3230
+ "default": {},
3231
+ "description": "Arbitrary string key/value metadata stored on every session.",
3232
+ "title": "Metadata",
3233
+ "type": "object"
3234
+ },
2887
3235
  "output": {
2888
3236
  "anyOf": [
2889
3237
  {
@@ -2918,7 +3266,9 @@
2918
3266
  "budget",
2919
3267
  "claude_code",
2920
3268
  "codex",
3269
+ "conversation",
2921
3270
  "environment",
3271
+ "metadata",
2922
3272
  "output",
2923
3273
  "permissions",
2924
3274
  "skills"
@@ -2957,6 +3307,23 @@
2957
3307
  "title": "SessionConversation",
2958
3308
  "type": "object"
2959
3309
  },
3310
+ "SessionConversationConfig": {
3311
+ "additionalProperties": false,
3312
+ "description": "Conversation settings for a session, set on a saved agent or sent when starting a session or running an agent.",
3313
+ "properties": {
3314
+ "interactive": {
3315
+ "default": true,
3316
+ "description": "Whether the session stays open after its first turn. Defaults to true; false runs once and requires a prompt. Requires the model's interactive capability when true. Direct message acceptance is reported separately in conversation.prompting.",
3317
+ "title": "Interactive",
3318
+ "type": "boolean"
3319
+ }
3320
+ },
3321
+ "required": [
3322
+ "interactive"
3323
+ ],
3324
+ "title": "SessionConversationConfig",
3325
+ "type": "object"
3326
+ },
2960
3327
  "SessionCost": {
2961
3328
  "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\".",
2962
3329
  "properties": {
@@ -3400,6 +3767,37 @@
3400
3767
  "title": "SessionListStreamMessage",
3401
3768
  "type": "object"
3402
3769
  },
3770
+ "SessionOutput": {
3771
+ "description": "Structured output on the wire: the contract and, when a turn has\nsubmitted one, the payload. `result` is None while the session runs and\nwhen no turn submitted anything; it is the agent's own JSON, in the\nshape of `json_schema`.",
3772
+ "properties": {
3773
+ "json_schema": {
3774
+ "additionalProperties": true,
3775
+ "description": "JSON Schema the agent's result must satisfy.",
3776
+ "title": "Json Schema",
3777
+ "type": "object"
3778
+ },
3779
+ "result": {
3780
+ "anyOf": [
3781
+ {
3782
+ "additionalProperties": true,
3783
+ "type": "object"
3784
+ },
3785
+ {
3786
+ "type": "null"
3787
+ }
3788
+ ],
3789
+ "default": null,
3790
+ "description": "The payload the agent submitted, or null until a turn submits one.",
3791
+ "title": "Result"
3792
+ }
3793
+ },
3794
+ "required": [
3795
+ "json_schema",
3796
+ "result"
3797
+ ],
3798
+ "title": "SessionOutput",
3799
+ "type": "object"
3800
+ },
3403
3801
  "SessionParent": {
3404
3802
  "description": "The predecessor session this session continues.",
3405
3803
  "properties": {
@@ -3476,9 +3874,10 @@
3476
3874
  "type": "object"
3477
3875
  },
3478
3876
  "SessionSource": {
3479
- "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.",
3877
+ "description": "Where a session came from: the credential that started it (web app,\nAPI key, CLI) or the trigger that fired (react, mention, cron, code\nreview). Never taken from a request body.",
3480
3878
  "enum": [
3481
3879
  "react",
3880
+ "code_review",
3482
3881
  "web",
3483
3882
  "api",
3484
3883
  "cli",
@@ -3722,7 +4121,7 @@
3722
4121
  },
3723
4122
  "SettingsRef": {
3724
4123
  "additionalProperties": false,
3725
- "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.",
4124
+ "description": "A Claude Code settings.json read from a repository and applied to the\nsession. It adds permission rules and other Claude Code settings; rules the\nplatform sets stay in force. Supported models list `settings` in\n`/v1/account/models`.",
3726
4125
  "properties": {
3727
4126
  "path": {
3728
4127
  "title": "Path",