@ellipsis-dev/sdk 0.11.0 → 0.12.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.
@@ -29,7 +29,6 @@
29
29
  "$ref": "#/components/schemas/AgentConfigEllipsis",
30
30
  "default": {
31
31
  "enabled": true,
32
- "ide": true,
33
32
  "interactive": true,
34
33
  "metadata": {
35
34
  "annotations": {},
@@ -44,12 +43,6 @@
44
43
  "compute": {},
45
44
  "hooks": {},
46
45
  "image": {},
47
- "ports": [
48
- 3000,
49
- 5173,
50
- 8000,
51
- 8080
52
- ],
53
46
  "repositories": [],
54
47
  "variables": []
55
48
  }
@@ -277,7 +270,7 @@
277
270
  "description": "The `codex:` block \u2014 run this agent on OpenAI's Codex CLI instead of\nClaude Code. Declaring the block at all is what selects the harness\n(`AgentConfig.harness`).\n\nDeliberately a small subset of `AgentConfigClaude`: the fields omitted here\nare ones Codex has no equivalent for (`effort`, `fallback_model`,\n`settings`) or that the platform does not yet wire through for this harness\n(`max_turns`, `skills`, MCP servers). They are omitted rather than\naccepted-and-ignored, because `StrictConfigModel` forbids extra keys \u2014 so a\nconfig that sets one fails loudly at parse time instead of silently not doing\nit. The budget still bounds a run regardless.",
278
271
  "properties": {
279
272
  "model": {
280
- "default": "bedrock-gpt-5.6-terra",
273
+ "default": "gpt-5.6-terra",
281
274
  "title": "Model",
282
275
  "type": "string"
283
276
  },
@@ -425,7 +418,7 @@
425
418
  },
426
419
  "AgentConfigEllipsis": {
427
420
  "additionalProperties": false,
428
- "description": "The Ellipsis product namespace for a config file: which schema this is\n(`version`), the human-facing identity (`name`/`description`), freeform\norganizational `metadata`, whether the agent is `enabled`, and the two\nhuman-access flags (`interactive`/`ide`). The presence of a top-level\n`ellipsis:` mapping is what marks a YAML file as an Ellipsis agent config (vs\narbitrary YAML that merely lives under a config directory) \u2014 see\n`yaml_is_ellipsis_config`.\n\n`enabled`/`interactive`/`ide` are agent behavior, not freeform metadata, so\nthey stay inside the config `sha` (only `metadata` is sha-excluded).\n`interactive` and `ide` are sibling human-access flags: `interactive` lets a\nhuman `agent session connect` to a live session (CLI relay); `ide` lets a\nhuman open an editor / a port URL into the sandbox. Neither decides whether a\nsession is ephemeral or durable \u2014 that is the trigger's job.",
421
+ "description": "The Ellipsis product namespace for a config file: which schema this is\n(`version`), the human-facing identity (`name`/`description`), freeform\norganizational `metadata`, whether the agent is `enabled`, and the\nhuman-access flag `interactive`. The presence of a top-level `ellipsis:`\nmapping is what marks a YAML file as an Ellipsis agent config (vs arbitrary\nYAML that merely lives under a config directory) \u2014 see\n`yaml_is_ellipsis_config`.\n\n`enabled`/`interactive` are agent behavior, not freeform metadata, so they\nstay inside the config `sha` (only `metadata` is sha-excluded).\n`interactive` lets a human `agent session connect` to a live session (CLI\nrelay). It does not decide whether a session is ephemeral or durable \u2014 that\nis the trigger's job.",
429
422
  "properties": {
430
423
  "description": {
431
424
  "anyOf": [
@@ -443,11 +436,6 @@
443
436
  "title": "Enabled",
444
437
  "type": "boolean"
445
438
  },
446
- "ide": {
447
- "default": true,
448
- "title": "Ide",
449
- "type": "boolean"
450
- },
451
439
  "interactive": {
452
440
  "default": true,
453
441
  "title": "Interactive",
@@ -527,19 +515,6 @@
527
515
  "$ref": "#/components/schemas/AgentConfigEnvironmentImage",
528
516
  "default": {}
529
517
  },
530
- "ports": {
531
- "default": [
532
- 3000,
533
- 5173,
534
- 8000,
535
- 8080
536
- ],
537
- "items": {
538
- "type": "integer"
539
- },
540
- "title": "Ports",
541
- "type": "array"
542
- },
543
518
  "repositories": {
544
519
  "default": [],
545
520
  "items": {
@@ -622,7 +597,7 @@
622
597
  },
623
598
  "AgentConfigEnvironmentVariable": {
624
599
  "additionalProperties": false,
625
- "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 /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.",
600
+ "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.",
626
601
  "properties": {
627
602
  "name": {
628
603
  "title": "Name",
@@ -688,7 +663,7 @@
688
663
  },
689
664
  "AgentConfigInput": {
690
665
  "additionalProperties": false,
691
- "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 /sessions` `input`, validated at the door; required when\ndeclared). It is illegal on a react-triggered agent \u2014 react payloads are\nplatform-shaped (the published surface field sets), not caller-shaped.\n\n`message` is the initial-message template: exact `{{path}}` substitution\nover the caller payload (or, on a react agent, over the surface's\npublished fields), no conditionals/loops/filters. Refs are validated at\ndeploy time against the governing field set (see AgentConfig's\n`_check_input`).",
666
+ "description": "The typed input contract: what goes INTO a session (the trigger is\nwhen it happens; this is what goes in).\n\n`json_schema` types the payload a caller-started session takes\n(`POST /v1/sessions` `input`, validated at the door; required when\ndeclared). It is illegal on a react-triggered agent \u2014 react payloads are\nplatform-shaped (the published surface field sets), not caller-shaped.\n\n`message` is the initial-message template: exact `{{path}}` substitution\nover the caller payload (or, on a react agent, over the surface's\npublished fields), no conditionals/loops/filters. Refs are validated at\ndeploy time against the governing field set (see AgentConfig's\n`_check_input`).",
692
667
  "properties": {
693
668
  "json_schema": {
694
669
  "anyOf": [
@@ -839,7 +814,7 @@
839
814
  },
840
815
  "AgentConfigOutput": {
841
816
  "additionalProperties": false,
842
- "description": "The typed output contract: the JSON Schema the agent must exit through\n(the StructuredOutput exit tool). Read back via\nGET /sessions/{id}/output.",
817
+ "description": "The typed output contract: the JSON Schema the agent must exit through\n(the StructuredOutput exit tool). Read back via\nGET /v1/sessions/{id}/output.",
843
818
  "properties": {
844
819
  "json_schema": {
845
820
  "additionalProperties": true,
@@ -1859,7 +1834,7 @@
1859
1834
  "description": "A device-flow poll from the CLI.",
1860
1835
  "properties": {
1861
1836
  "device_code": {
1862
- "description": "The device code returned by POST /auth/cli/start.",
1837
+ "description": "The device code returned by POST /v1/auth/cli/start.",
1863
1838
  "title": "Device Code",
1864
1839
  "type": "string"
1865
1840
  }
@@ -2149,7 +2124,7 @@
2149
2124
  "type": "null"
2150
2125
  }
2151
2126
  ],
2152
- "description": "A gallery template slug (see GET /agents/templates).",
2127
+ "description": "A gallery template slug (see GET /v1/agents/templates).",
2153
2128
  "title": "Template Id"
2154
2129
  }
2155
2130
  },
@@ -2835,21 +2810,6 @@
2835
2810
  "title": "GetIntegrationsResponse",
2836
2811
  "type": "object"
2837
2812
  },
2838
- "GetSessionIdeResponse": {
2839
- "description": "The IDE link for a session's live sandbox.",
2840
- "properties": {
2841
- "url": {
2842
- "description": "The membership-gated dashboard page for the session's sandbox. The page performs the proxy handoff itself, so the URL carries no credential \u2014 safe to share with any org member, in a transcript, or in a Slack message.",
2843
- "title": "Url",
2844
- "type": "string"
2845
- }
2846
- },
2847
- "required": [
2848
- "url"
2849
- ],
2850
- "title": "GetSessionIdeResponse",
2851
- "type": "object"
2852
- },
2853
2813
  "GetSessionLogResponse": {
2854
2814
  "description": "The session log manifest: the complete, ordered, downloadable history\nof the session \u2014 every record (agent output, tool calls, thinking,\nlifecycle events, sandbox output, message events), archived into\nseq-ranged segments. For a running session `latest_feed_seq` may exceed\n`archived_through_feed_seq`; `has_more` tells the client whether the\nmanifest is the whole story yet.",
2855
2815
  "properties": {
@@ -2911,27 +2871,6 @@
2911
2871
  "title": "GetSessionLogResponse",
2912
2872
  "type": "object"
2913
2873
  },
2914
- "GetSessionPortResponse": {
2915
- "description": "A preview link for a port in a session's live sandbox.",
2916
- "properties": {
2917
- "port": {
2918
- "description": "The sandbox port the link previews.",
2919
- "title": "Port",
2920
- "type": "integer"
2921
- },
2922
- "url": {
2923
- "description": "The same membership-gated dashboard page as the IDE URL, deep-linked to a preview port (a dev server the agent or the IDE user started).",
2924
- "title": "Url",
2925
- "type": "string"
2926
- }
2927
- },
2928
- "required": [
2929
- "url",
2930
- "port"
2931
- ],
2932
- "title": "GetSessionPortResponse",
2933
- "type": "object"
2934
- },
2935
2874
  "GetUsageDashboardResponse": {
2936
2875
  "description": "The account's usage over a period: token and cost totals, a per-day\nseries, and a per-model breakdown. Costs are in millicents (1000 = $0.01);\ntoken counts include cache reads and writes \u2014 everything the runs were\ncharged for.",
2937
2876
  "properties": {
@@ -4212,7 +4151,7 @@
4212
4151
  "type": "object"
4213
4152
  },
4214
4153
  "ModelManufacturer": {
4215
- "description": "Who BUILT a model. Never who serves it.\n\nServing path is irrelevant here. Anthropic built every Claude model, so all of\nthem are ANTHROPIC whether we reach them through the first-party Anthropic API\nor through Bedrock -- a choice made per request by the llm_providers chain, so\nit is not even a fixed property of the model. Likewise the `bedrock-gpt-5.6-*`\nrows are OPENAI (OpenAI's models, served by AWS), and GLM is ZAI (Z.ai's model,\nserved by Concentrate).\n\nSo this is deliberately NOT derived from `EgressRoute.provider`: routing is an\ninfrastructure fact that changes when we move a model between providers, while\nthe manufacturer is a property of the model itself and never changes.\n\nThe frontend renders a vendor logo per model, which is why it needs the maker.\nKeying that UI off the egress provider would put an AWS logo on a GPT model and\nan OpenAI logo on GLM.",
4154
+ "description": "Who BUILT a model. Never who serves it.\n\nServing path is irrelevant here. Anthropic built every Claude model, so all of\nthem are ANTHROPIC whether we reach them through the first-party Anthropic API\nor through Bedrock -- a choice made per request by the llm_providers chain, so\nit is not even a fixed property of the model. Likewise the `gpt-5.6-*` rows\nare OPENAI (OpenAI's models, served by AWS via bedrock-mantle), and GLM is ZAI\n(Z.ai's model, served by Concentrate).\n\nSo this is deliberately NOT derived from `EgressRoute.provider`: routing is an\ninfrastructure fact that changes when we move a model between providers, while\nthe manufacturer is a property of the model itself and never changes.\n\nThe frontend renders a vendor logo per model, which is why it needs the maker.\nKeying that UI off the egress provider would put an AWS logo on a GPT model and\nan OpenAI logo on GLM.",
4216
4155
  "enum": [
4217
4156
  "anthropic",
4218
4157
  "openai",
@@ -6798,7 +6737,7 @@
6798
6737
  "type": "object"
6799
6738
  },
6800
6739
  "Session": {
6801
- "description": "An agent session: one conversation with an agent, from trigger to\nterminal state. Returned by `GET /sessions/{id}` and carried by the\nsession stream's `session`/`snapshot` frames \u2014 REST and stream never\ndisagree about what a session looks like.",
6740
+ "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.",
6802
6741
  "properties": {
6803
6742
  "attribution": {
6804
6743
  "$ref": "#/components/schemas/SessionAttribution",
@@ -6808,18 +6747,6 @@
6808
6747
  "$ref": "#/components/schemas/SessionBudget",
6809
6748
  "description": "The spend budget enforced for this session."
6810
6749
  },
6811
- "client_version": {
6812
- "anyOf": [
6813
- {
6814
- "type": "string"
6815
- },
6816
- {
6817
- "type": "null"
6818
- }
6819
- ],
6820
- "description": "Version of the client that started the session, if reported.",
6821
- "title": "Client Version"
6822
- },
6823
6750
  "config_id": {
6824
6751
  "anyOf": [
6825
6752
  {
@@ -6832,19 +6759,6 @@
6832
6759
  "description": "Identifier of the saved agent config the session ran on, if any.",
6833
6760
  "title": "Config Id"
6834
6761
  },
6835
- "config_override": {
6836
- "anyOf": [
6837
- {
6838
- "additionalProperties": true,
6839
- "type": "object"
6840
- },
6841
- {
6842
- "type": "null"
6843
- }
6844
- ],
6845
- "description": "The partial-config diff applied for this run; null when the config was unmodified.",
6846
- "title": "Config Override"
6847
- },
6848
6762
  "context_repository": {
6849
6763
  "anyOf": [
6850
6764
  {
@@ -6980,30 +6894,6 @@
6980
6894
  "$ref": "#/components/schemas/SessionPrompting",
6981
6895
  "description": "Whether a client may send this session a message and, when it may not, the reason to show instead of a composer."
6982
6896
  },
6983
- "sandbox_id": {
6984
- "anyOf": [
6985
- {
6986
- "type": "string"
6987
- },
6988
- {
6989
- "type": "null"
6990
- }
6991
- ],
6992
- "description": "Identifier of the sandbox the session runs in, if any.",
6993
- "title": "Sandbox Id"
6994
- },
6995
- "session_key": {
6996
- "anyOf": [
6997
- {
6998
- "type": "string"
6999
- },
7000
- {
7001
- "type": "null"
7002
- }
7003
- ],
7004
- "description": "Key identifying the durable conversation this session belongs to, or null for single-shot sessions.",
7005
- "title": "Session Key"
7006
- },
7007
6897
  "session_state": {
7008
6898
  "anyOf": [
7009
6899
  {
@@ -7059,29 +6949,6 @@
7059
6949
  "format": "date-time",
7060
6950
  "title": "Updated At",
7061
6951
  "type": "string"
7062
- },
7063
- "webhook_id": {
7064
- "anyOf": [
7065
- {
7066
- "type": "string"
7067
- },
7068
- {
7069
- "type": "null"
7070
- }
7071
- ],
7072
- "description": "Identifier of the webhook event that triggered the session, if any.",
7073
- "title": "Webhook Id"
7074
- },
7075
- "webhook_type": {
7076
- "anyOf": [
7077
- {
7078
- "$ref": "#/components/schemas/WebhookType"
7079
- },
7080
- {
7081
- "type": "null"
7082
- }
7083
- ],
7084
- "description": "Type of the webhook event that triggered the session, if any."
7085
6952
  }
7086
6953
  },
7087
6954
  "required": [
@@ -8152,7 +8019,7 @@
8152
8019
  "title": "Next Cursor"
8153
8020
  },
8154
8021
  "sessions": {
8155
- "description": "Lean wire rows \u2014 the same shape GET /sessions/{id} and the stream's session frames carry. The heavy blobs (config snapshot, input/output) live on the detail endpoints.",
8022
+ "description": "Lean wire rows \u2014 the same shape GET /v1/sessions/{id} and the stream's session frames carry. The heavy blobs (config snapshot, input/output) live on the detail endpoints.",
8156
8023
  "items": {
8157
8024
  "$ref": "#/components/schemas/Session"
8158
8025
  },
@@ -8919,27 +8786,6 @@
8919
8786
  "title": "ValidationError",
8920
8787
  "type": "object"
8921
8788
  },
8922
- "WebhookType": {
8923
- "enum": [
8924
- "github.issue",
8925
- "github.issue_comment",
8926
- "github.push",
8927
- "github.pull_request",
8928
- "github.pull_request_comment",
8929
- "github.pull_request_review",
8930
- "github.pull_request_review_comment",
8931
- "slack.app_mention",
8932
- "slack.message",
8933
- "slack.channel_created",
8934
- "linear.issue",
8935
- "linear.issue_comment",
8936
- "sentry.event_alert",
8937
- "sentry.metric_alert",
8938
- "user.message"
8939
- ],
8940
- "title": "WebhookType",
8941
- "type": "string"
8942
- },
8943
8789
  "WhoAmIResponse": {
8944
8790
  "description": "The identity behind the caller's credential.",
8945
8791
  "properties": {
@@ -9027,7 +8873,7 @@
9027
8873
  },
9028
8874
  "openapi": "3.1.0",
9029
8875
  "paths": {
9030
- "/agents/configs": {
8876
+ "/v1/agents/configs": {
9031
8877
  "get": {
9032
8878
  "description": "List saved agent configs.",
9033
8879
  "operationId": "list_agent_configs",
@@ -9217,7 +9063,7 @@
9217
9063
  "x-ellipsis-sdk-method": "agents.configs.create"
9218
9064
  }
9219
9065
  },
9220
- "/agents/configs/{config_id}": {
9066
+ "/v1/agents/configs/{config_id}": {
9221
9067
  "delete": {
9222
9068
  "description": "Delete an agent, by id or by the agent's name.\n\nThe agent stops running and its name is freed immediately; its\npast sessions remain readable. Only for agents managed through\nthis API \u2014 delete the file to remove one defined by a\nrepository.",
9223
9069
  "operationId": "delete_agent_config",
@@ -9531,7 +9377,7 @@
9531
9377
  "x-ellipsis-sdk-method": "agents.configs.update"
9532
9378
  }
9533
9379
  },
9534
- "/agents/configs/{config_id}/link": {
9380
+ "/v1/agents/configs/{config_id}/link": {
9535
9381
  "post": {
9536
9382
  "description": "Move an agent into a repository, by id or by the agent's name.\n\nOpens a pull request adding the agent's config file. The agent\nkeeps running unchanged meanwhile; merging hands it over to the\nfile, after which the file is what changes it. Nothing happens\nif the pull request is never merged.",
9537
9383
  "operationId": "link_agent_config",
@@ -9656,7 +9502,7 @@
9656
9502
  "x-ellipsis-sdk-method": "agents.configs.link"
9657
9503
  }
9658
9504
  },
9659
- "/agents/configs/{config_id}/unlink": {
9505
+ "/v1/agents/configs/{config_id}/unlink": {
9660
9506
  "post": {
9661
9507
  "description": "Take over an agent from its file, by id or by the agent's name.\n\nThe file stops governing the agent immediately and further\nchanges go through this API. The file is left in place, inert \u2014\ndelete it whenever you like.",
9662
9508
  "operationId": "unlink_agent_config",
@@ -9761,7 +9607,7 @@
9761
9607
  "x-ellipsis-sdk-method": "agents.configs.unlink"
9762
9608
  }
9763
9609
  },
9764
- "/agents/defaults": {
9610
+ "/v1/agents/defaults": {
9765
9611
  "delete": {
9766
9612
  "description": "Clear a default agent config.\n\nAddressed by rung: the account rung (repository omitted) or a\nrepository rung.\n\nRefused for sandbox tokens.",
9767
9613
  "operationId": "delete_agent_default",
@@ -10036,7 +9882,7 @@
10036
9882
  "x-ellipsis-sdk-method": "agents.defaults.set"
10037
9883
  }
10038
9884
  },
10039
- "/agents/templates": {
9885
+ "/v1/agents/templates": {
10040
9886
  "get": {
10041
9887
  "description": "List the built-in starter agent templates.\n\nBehind auth but not account-scoped \u2014 the data is static\nproduct content shared by the dashboard, landing site, and CLI.",
10042
9888
  "operationId": "list_agent_templates",
@@ -10112,7 +9958,7 @@
10112
9958
  "x-ellipsis-sdk-method": "agents.templates.list"
10113
9959
  }
10114
9960
  },
10115
- "/agents/templates/{template_id}": {
9961
+ "/v1/agents/templates/{template_id}": {
10116
9962
  "get": {
10117
9963
  "description": "Return one built-in agent template by slug.",
10118
9964
  "operationId": "get_agent_template",
@@ -10207,7 +10053,7 @@
10207
10053
  "x-ellipsis-sdk-method": "agents.templates.get"
10208
10054
  }
10209
10055
  },
10210
- "/alerts": {
10056
+ "/v1/alerts": {
10211
10057
  "get": {
10212
10058
  "description": "List budget alerts for the organization, newest first.\n\nOptionally filtered by status and source.\n\nAvailable to all credential types, so an agent can check \"is\nthis org near budget?\" mid-task.",
10213
10059
  "operationId": "list_alerts",
@@ -10343,7 +10189,7 @@
10343
10189
  "x-ellipsis-sdk-method": "alerts.list"
10344
10190
  }
10345
10191
  },
10346
- "/alerts/{alert_id}": {
10192
+ "/v1/alerts/{alert_id}": {
10347
10193
  "get": {
10348
10194
  "description": "Return one alert by id.\n\n404 if it doesn't exist or belongs to another organization.",
10349
10195
  "operationId": "get_alert",
@@ -10438,7 +10284,7 @@
10438
10284
  "x-ellipsis-sdk-method": "alerts.get"
10439
10285
  }
10440
10286
  },
10441
- "/alerts/{alert_id}/dismiss": {
10287
+ "/v1/alerts/{alert_id}/dismiss": {
10442
10288
  "post": {
10443
10289
  "description": "Dismiss an open alert and return it.\n\n409 when the alert is not open; 404 when it doesn't exist.",
10444
10290
  "operationId": "dismiss_alert",
@@ -10543,7 +10389,7 @@
10543
10389
  "x-ellipsis-sdk-method": "alerts.dismiss"
10544
10390
  }
10545
10391
  },
10546
- "/analytics/metrics": {
10392
+ "/v1/analytics/metrics": {
10547
10393
  "get": {
10548
10394
  "description": "Return PR and review analytics metrics.\n\nThe same data as the analytics dashboard.\n\nWindowing: pass explicit start/end, or days (default: the last\n30 days). account_type in all|user|bot scopes the authors (bot =\nthe apps/agents). Available to all credential types: the\nresponses expose the organization's own GitHub PR/review activity,\nno secrets.",
10549
10395
  "operationId": "get_analytics_metrics",
@@ -10752,7 +10598,7 @@
10752
10598
  "x-ellipsis-sdk-method": "analytics.metrics"
10753
10599
  }
10754
10600
  },
10755
- "/analytics/pull-requests": {
10601
+ "/v1/analytics/pull-requests": {
10756
10602
  "get": {
10757
10603
  "description": "Return pull-request analytics.\n\nWindowing: pass explicit start/end, or days (default: the last\n30 days).",
10758
10604
  "operationId": "get_analytics_pull_requests",
@@ -10964,7 +10810,7 @@
10964
10810
  "x-ellipsis-sdk-method": "analytics.pull_requests"
10965
10811
  }
10966
10812
  },
10967
- "/analytics/reviews": {
10813
+ "/v1/analytics/reviews": {
10968
10814
  "get": {
10969
10815
  "description": "Return code-review analytics.\n\naccount_type scopes reviewers (bot|user|all) \u2014 e.g. \"what apps\nreview the most PRs?\" is the reviewer facets here with\naccount_type=bot. Windowing: pass explicit start/end, or days\n(default: the last 30 days).",
10970
10816
  "operationId": "get_analytics_reviews",
@@ -11169,7 +11015,7 @@
11169
11015
  "x-ellipsis-sdk-method": "analytics.reviews"
11170
11016
  }
11171
11017
  },
11172
- "/auth/cli/poll": {
11018
+ "/v1/auth/cli/poll": {
11173
11019
  "post": {
11174
11020
  "description": "Poll a device-code auth flow for its token.\n\nUnauthenticated; the device code identifies the flow.",
11175
11021
  "operationId": "cli_auth_poll",
@@ -11242,7 +11088,7 @@
11242
11088
  "x-ellipsis-sdk-method": "auth.cli.poll"
11243
11089
  }
11244
11090
  },
11245
- "/auth/cli/start": {
11091
+ "/v1/auth/cli/start": {
11246
11092
  "post": {
11247
11093
  "description": "Start a device-code auth flow for the CLI.\n\nUnauthenticated: the CLI has no credential yet \u2014 that's what\nit's obtaining. The human authorizes out-of-band in the\ndashboard.",
11248
11094
  "operationId": "cli_auth_start",
@@ -11285,7 +11131,7 @@
11285
11131
  "x-ellipsis-sdk-method": "auth.cli.start"
11286
11132
  }
11287
11133
  },
11288
- "/budget": {
11134
+ "/v1/budget": {
11289
11135
  "get": {
11290
11136
  "description": "Return the caller's current budget summary.",
11291
11137
  "operationId": "get_budget",
@@ -11361,7 +11207,7 @@
11361
11207
  "x-ellipsis-sdk-method": "budget"
11362
11208
  }
11363
11209
  },
11364
- "/files": {
11210
+ "/v1/files": {
11365
11211
  "get": {
11366
11212
  "description": "List uploaded files, newest first.\n\nMetadata only \u2014 download URLs are minted per explicit GET, not\nper row. session_id scopes the list to one run's uploads.",
11367
11213
  "operationId": "list_files",
@@ -11585,7 +11431,7 @@
11585
11431
  "x-ellipsis-sdk-method": "files.create"
11586
11432
  }
11587
11433
  },
11588
- "/files/{file_id}": {
11434
+ "/v1/files/{file_id}": {
11589
11435
  "delete": {
11590
11436
  "description": "Delete a file.\n\nA foreign, missing, or already-deleted id is an\nindistinguishable 404, so ids can't be enumerated. Sandbox\ntokens get a 403 (a sandbox token sits next to\npotentially-untrusted code and must not be able to destroy the\naccount's files \u2014 uploading is fine, destruction is not); API\nkeys and user tokens may delete.",
11591
11437
  "operationId": "delete_file",
@@ -11766,7 +11612,7 @@
11766
11612
  "x-ellipsis-sdk-method": "files.get"
11767
11613
  }
11768
11614
  },
11769
- "/integrations": {
11615
+ "/v1/integrations": {
11770
11616
  "get": {
11771
11617
  "description": "List connected integrations.\n\nA read-only view, so an agent authoring another agent's\nconfig can learn which repositories, channels, teams, and\norganizations it may name before POST /agents/configs.\n\nAvailable to all credential types including sandbox tokens: the\nresponses never include OAuth tokens or any other secret.",
11772
11618
  "operationId": "get_integrations",
@@ -11842,7 +11688,7 @@
11842
11688
  "x-ellipsis-sdk-method": "integrations.list"
11843
11689
  }
11844
11690
  },
11845
- "/integrations/github/members": {
11691
+ "/v1/integrations/github/members": {
11846
11692
  "get": {
11847
11693
  "description": "List the GitHub organization roster.\n\n(Or the account itself for a personal workspace) \u2014 the universe of author_id values for\n/sessions and /sessions/search.\n\nMembers carry their linked Slack identity when a Slack-GitHub\nlink exists, and /slack/members carries the reverse link.",
11848
11694
  "operationId": "list_github_members",
@@ -11918,7 +11764,7 @@
11918
11764
  "x-ellipsis-sdk-method": "integrations.github.members"
11919
11765
  }
11920
11766
  },
11921
- "/integrations/github/repos": {
11767
+ "/v1/integrations/github/repos": {
11922
11768
  "get": {
11923
11769
  "description": "List GitHub repositories connected to the installation.",
11924
11770
  "operationId": "list_github_repositories",
@@ -11994,7 +11840,7 @@
11994
11840
  "x-ellipsis-sdk-method": "integrations.github.repos"
11995
11841
  }
11996
11842
  },
11997
- "/integrations/linear/teams": {
11843
+ "/v1/integrations/linear/teams": {
11998
11844
  "get": {
11999
11845
  "description": "List the teams of the connected Linear workspace.",
12000
11846
  "operationId": "list_linear_teams",
@@ -12080,7 +11926,7 @@
12080
11926
  "x-ellipsis-sdk-method": "integrations.linear.teams"
12081
11927
  }
12082
11928
  },
12083
- "/integrations/sentry/organizations": {
11929
+ "/v1/integrations/sentry/organizations": {
12084
11930
  "get": {
12085
11931
  "description": "List the connected Sentry organizations.",
12086
11932
  "operationId": "list_sentry_organizations",
@@ -12156,7 +12002,7 @@
12156
12002
  "x-ellipsis-sdk-method": "integrations.sentry.organizations"
12157
12003
  }
12158
12004
  },
12159
- "/integrations/slack/channels": {
12005
+ "/v1/integrations/slack/channels": {
12160
12006
  "get": {
12161
12007
  "description": "List the channels of the connected Slack workspace, fetched\nlive from the Slack API.",
12162
12008
  "operationId": "list_slack_channels",
@@ -12242,7 +12088,7 @@
12242
12088
  "x-ellipsis-sdk-method": "integrations.slack.channels"
12243
12089
  }
12244
12090
  },
12245
- "/integrations/slack/members": {
12091
+ "/v1/integrations/slack/members": {
12246
12092
  "get": {
12247
12093
  "description": "List the members of the connected Slack workspace, fetched\nlive from the Slack API.",
12248
12094
  "operationId": "list_slack_members",
@@ -12328,7 +12174,7 @@
12328
12174
  "x-ellipsis-sdk-method": "integrations.slack.members"
12329
12175
  }
12330
12176
  },
12331
- "/me": {
12177
+ "/v1/me": {
12332
12178
  "get": {
12333
12179
  "description": "Return the identity behind the caller's credential.",
12334
12180
  "operationId": "whoami",
@@ -12404,7 +12250,7 @@
12404
12250
  "x-ellipsis-sdk-method": "me"
12405
12251
  }
12406
12252
  },
12407
- "/memories": {
12253
+ "/v1/memories": {
12408
12254
  "get": {
12409
12255
  "description": "List the organization's memories as a readable index.\n\nReturns the memories rendered as a markdown index (one line per\nmemory, carrying its id, path, and description) plus the same\nentries structured, each with every field except `content`. Read\nthe index, then fetch the ids whose content you want.",
12410
12256
  "operationId": "list_memories",
@@ -12592,7 +12438,7 @@
12592
12438
  "x-ellipsis-sdk-method": "memories.create"
12593
12439
  }
12594
12440
  },
12595
- "/memories/{memory_id}": {
12441
+ "/v1/memories/{memory_id}": {
12596
12442
  "delete": {
12597
12443
  "description": "Delete a memory that is no longer true.\n\nAvailable to every credential type, agents included \u2014 a wrong\nmemory is worse than a missing one. The deleted content is kept in\nthe memory's history for forensics, not for an undo API.",
12598
12444
  "operationId": "delete_memory",
@@ -12914,7 +12760,7 @@
12914
12760
  "x-ellipsis-sdk-method": "memories.edit"
12915
12761
  }
12916
12762
  },
12917
- "/models": {
12763
+ "/v1/models": {
12918
12764
  "get": {
12919
12765
  "description": "List selectable agent models.\n\nMost expensive first, with the platform default flagged.\n\nReads the same registry as the dashboard's rate table, so a\nclient's model picker can never drift from what's offered.\nBehind auth but not account-scoped \u2014 the selectable set is\nglobal.",
12920
12766
  "operationId": "list_supported_models",
@@ -12990,7 +12836,7 @@
12990
12836
  "x-ellipsis-sdk-method": "models.list"
12991
12837
  }
12992
12838
  },
12993
- "/reviews": {
12839
+ "/v1/reviews": {
12994
12840
  "get": {
12995
12841
  "description": "List code reviews, newest first.\n\n`findings` is omitted (counters only).\n\nWebhook-created reviews appear here too, so this answers \"show\nme every review on this PR\".",
12996
12842
  "operationId": "list_reviews",
@@ -13292,7 +13138,7 @@
13292
13138
  "x-ellipsis-sdk-method": "reviews.create"
13293
13139
  }
13294
13140
  },
13295
- "/reviews/{review_id}": {
13141
+ "/v1/reviews/{review_id}": {
13296
13142
  "get": {
13297
13143
  "description": "Return one review with findings and outcome.\n\nIncludes its scope, the per-stage sessions, the parsed findings,\nthe finding counters, and the posting outcome.\n\nFindings only exist after a stage session finalizes \u2014 a running\nreview honestly reports [] / null, which is why a client\nstreams a stage session and then re-fetches the review.",
13298
13144
  "operationId": "get_review",
@@ -13387,7 +13233,7 @@
13387
13233
  "x-ellipsis-sdk-method": "reviews.get"
13388
13234
  }
13389
13235
  },
13390
- "/secrets": {
13236
+ "/v1/secrets": {
13391
13237
  "get": {
13392
13238
  "description": "List secrets.\n\nValues are write-only: the response carries only names and\ntimestamps, never the stored value.",
13393
13239
  "operationId": "list_secrets",
@@ -13557,7 +13403,7 @@
13557
13403
  "x-ellipsis-sdk-method": "secrets.set"
13558
13404
  }
13559
13405
  },
13560
- "/secrets/{name}": {
13406
+ "/v1/secrets/{name}": {
13561
13407
  "delete": {
13562
13408
  "description": "Delete a secret by name.\n\nRefused for sandbox tokens; mutations require an API key or\nuser token.",
13563
13409
  "operationId": "delete_secret",
@@ -13635,7 +13481,7 @@
13635
13481
  "x-ellipsis-sdk-method": "secrets.delete"
13636
13482
  }
13637
13483
  },
13638
- "/sessions": {
13484
+ "/v1/sessions": {
13639
13485
  "get": {
13640
13486
  "description": "List cloud agent sessions, newest first.\n\nOptionally filtered by config (id or `ellipsis.name`), source, time\nwindow, attributed author, repository, and whether the session is\nstill going.",
13641
13487
  "operationId": "list_agent_sessions",
@@ -13988,7 +13834,7 @@
13988
13834
  "x-ellipsis-sdk-method": "sessions.start"
13989
13835
  }
13990
13836
  },
13991
- "/sessions/search": {
13837
+ "/v1/sessions/search": {
13992
13838
  "get": {
13993
13839
  "description": "Search sessions over steps, recaps, and pull requests.\n\nGrouped by session, over everything a session left behind: step text, recap text, created\nPRs, and recap-embedding similarity.\n\nThis is how an agent answers \"did Tony look into X?\": resolve\nthe author via /github/members, search, then read the winning\nsession via /sessions/{id} (recap) and /sessions/{id}/records\n(transcript).",
13994
13840
  "operationId": "search_sessions",
@@ -14255,7 +14101,7 @@
14255
14101
  "x-ellipsis-sdk-method": "sessions.search"
14256
14102
  }
14257
14103
  },
14258
- "/sessions/sync": {
14104
+ "/v1/sessions/sync": {
14259
14105
  "post": {
14260
14106
  "description": "Sync a local Claude Code session to Ellipsis.\n\nRequires a user token (device-flow `agent login`): the user is\npart of the sync's idempotency key, so API keys and sandbox\ntokens are rejected with a 403 rather than silently attributed.",
14261
14107
  "operationId": "sync_agent_session",
@@ -14361,7 +14207,7 @@
14361
14207
  "x-ellipsis-sdk-method": "sessions.sync"
14362
14208
  }
14363
14209
  },
14364
- "/sessions/{session_id}": {
14210
+ "/v1/sessions/{session_id}": {
14365
14211
  "get": {
14366
14212
  "description": "Return one session.\n\nThe public wire shape \u2014 the same shape the stream's session\nframes carry, with attributed_user and stopped_by_user resolved\nat read time.\n\nThe heavy near-static blobs (config snapshot, input/output)\nlive on the detail endpoints, not here.",
14367
14213
  "operationId": "get_agent_session",
@@ -14456,7 +14302,7 @@
14456
14302
  "x-ellipsis-sdk-method": "sessions.get"
14457
14303
  }
14458
14304
  },
14459
- "/sessions/{session_id}/executions": {
14305
+ "/v1/sessions/{session_id}/executions": {
14460
14306
  "get": {
14461
14307
  "description": "Return the session's executions and launch context.\n\nMost notably system_prompt_append, the text Ellipsis appends to\nClaude Code's default system prompt (platform section + response\ninstructions + the config's own instructions).\n\nPer execution because each cold wake persists its own launch\nconfig (a config edit or replay override between wakes changes\nit).",
14462
14308
  "operationId": "get_agent_session_executions",
@@ -14551,7 +14397,7 @@
14551
14397
  "x-ellipsis-sdk-method": "sessions.executions"
14552
14398
  }
14553
14399
  },
14554
- "/sessions/{session_id}/export": {
14400
+ "/v1/sessions/{session_id}/export": {
14555
14401
  "get": {
14556
14402
  "description": "Export the complete session history.\n\nThe complete, ordered history of the session (agent output, tool calls, thinking,\nlifecycle events, sandbox output, message events) as an ordered\nmanifest of presigned segment URLs.\n\nSegments are gzip members: download in order and concatenate\nfor one file. The JSON API never carries the bytes (same\ntwo-step as files). /records is the paged live view of the\nsame data.",
14557
14403
  "operationId": "export_agent_session",
@@ -14646,112 +14492,7 @@
14646
14492
  "x-ellipsis-sdk-method": "sessions.export"
14647
14493
  }
14648
14494
  },
14649
- "/sessions/{session_id}/ide": {
14650
- "get": {
14651
- "description": "Return the IDE link for the session's sandbox.\n\nThe membership-gated dashboard page, which performs the sandbox\nproxy handoff itself.\n\nNo credential is minted here \u2014 the URL grants nothing by\npossession. 409 when the sandbox isn't running (send the\nsession a message to wake it first). Backs the `agent session\nide` CLI verb.",
14652
- "operationId": "get_agent_session_ide",
14653
- "parameters": [
14654
- {
14655
- "in": "path",
14656
- "name": "session_id",
14657
- "required": true,
14658
- "schema": {
14659
- "title": "Session Id",
14660
- "type": "string"
14661
- }
14662
- },
14663
- {
14664
- "in": "header",
14665
- "name": "user-agent",
14666
- "required": false,
14667
- "schema": {
14668
- "anyOf": [
14669
- {
14670
- "type": "string"
14671
- },
14672
- {
14673
- "type": "null"
14674
- }
14675
- ],
14676
- "title": "User-Agent"
14677
- }
14678
- }
14679
- ],
14680
- "responses": {
14681
- "200": {
14682
- "content": {
14683
- "application/json": {
14684
- "schema": {
14685
- "$ref": "#/components/schemas/GetSessionIdeResponse"
14686
- }
14687
- }
14688
- },
14689
- "description": "Successful Response"
14690
- },
14691
- "401": {
14692
- "content": {
14693
- "application/json": {
14694
- "schema": {
14695
- "$ref": "#/components/schemas/ErrorResponse"
14696
- }
14697
- }
14698
- },
14699
- "description": "The bearer token is missing, invalid, or revoked."
14700
- },
14701
- "403": {
14702
- "content": {
14703
- "application/json": {
14704
- "schema": {
14705
- "$ref": "#/components/schemas/ErrorResponse"
14706
- }
14707
- }
14708
- },
14709
- "description": "The credential may not perform this action, or the account is blocked."
14710
- },
14711
- "404": {
14712
- "content": {
14713
- "application/json": {
14714
- "schema": {
14715
- "$ref": "#/components/schemas/ErrorResponse"
14716
- }
14717
- }
14718
- },
14719
- "description": "No such session in your account."
14720
- },
14721
- "409": {
14722
- "content": {
14723
- "application/json": {
14724
- "schema": {
14725
- "$ref": "#/components/schemas/ErrorResponse"
14726
- }
14727
- }
14728
- },
14729
- "description": "The session's sandbox is not running; send it a message to wake it first."
14730
- },
14731
- "422": {
14732
- "content": {
14733
- "application/json": {
14734
- "schema": {
14735
- "$ref": "#/components/schemas/HTTPValidationError"
14736
- }
14737
- }
14738
- },
14739
- "description": "Validation Error"
14740
- }
14741
- },
14742
- "security": [
14743
- {
14744
- "HTTPBearer": []
14745
- }
14746
- ],
14747
- "summary": "Get Agent Session Ide",
14748
- "tags": [
14749
- "v1"
14750
- ],
14751
- "x-ellipsis-sdk-method": "sessions.ide"
14752
- }
14753
- },
14754
- "/sessions/{session_id}/messages": {
14495
+ "/v1/sessions/{session_id}/messages": {
14755
14496
  "post": {
14756
14497
  "description": "Send a message to a session.\n\n409 for react/cron, non-interactive, and closed sessions.\nReturns the created message so the caller can track it by id; a\nretried send with the same idempotency_key returns the original\nmessage.",
14757
14498
  "operationId": "send_agent_session_message",
@@ -14876,9 +14617,9 @@
14876
14617
  "x-ellipsis-sdk-method": "sessions.send_message"
14877
14618
  }
14878
14619
  },
14879
- "/sessions/{session_id}/output": {
14620
+ "/v1/sessions/{session_id}/output": {
14880
14621
  "get": {
14881
- "description": "Return the session's typed output.\n\nThe payload the agent submitted through its config-declared\noutput.json_schema, as the raw JSON body with no envelope. 404\nwhile the session is still running (poll GET /sessions/{id}),\nwhen the agent declares no output block, or when no execution\nproduced output.",
14622
+ "description": "Return the session's typed output.\n\nThe payload the agent submitted through its config-declared\noutput.json_schema, as the raw JSON body with no envelope. 404\nwhile the session is still running (poll GET /v1/sessions/{id}),\nwhen the agent declares no output block, or when no execution\nproduced output.",
14882
14623
  "operationId": "get_agent_session_output",
14883
14624
  "parameters": [
14884
14625
  {
@@ -14971,121 +14712,7 @@
14971
14712
  "x-ellipsis-sdk-method": "sessions.output"
14972
14713
  }
14973
14714
  },
14974
- "/sessions/{session_id}/ports/{port}": {
14975
- "get": {
14976
- "description": "Return a preview link for a sandbox port.\n\nFor a dev server running in the session's live sandbox: the\nsame dashboard page as the IDE, deep-linked to the port.\n\nBacks `agent session port`.",
14977
- "operationId": "get_agent_session_port",
14978
- "parameters": [
14979
- {
14980
- "in": "path",
14981
- "name": "session_id",
14982
- "required": true,
14983
- "schema": {
14984
- "title": "Session Id",
14985
- "type": "string"
14986
- }
14987
- },
14988
- {
14989
- "in": "path",
14990
- "name": "port",
14991
- "required": true,
14992
- "schema": {
14993
- "title": "Port",
14994
- "type": "integer"
14995
- }
14996
- },
14997
- {
14998
- "in": "header",
14999
- "name": "user-agent",
15000
- "required": false,
15001
- "schema": {
15002
- "anyOf": [
15003
- {
15004
- "type": "string"
15005
- },
15006
- {
15007
- "type": "null"
15008
- }
15009
- ],
15010
- "title": "User-Agent"
15011
- }
15012
- }
15013
- ],
15014
- "responses": {
15015
- "200": {
15016
- "content": {
15017
- "application/json": {
15018
- "schema": {
15019
- "$ref": "#/components/schemas/GetSessionPortResponse"
15020
- }
15021
- }
15022
- },
15023
- "description": "Successful Response"
15024
- },
15025
- "401": {
15026
- "content": {
15027
- "application/json": {
15028
- "schema": {
15029
- "$ref": "#/components/schemas/ErrorResponse"
15030
- }
15031
- }
15032
- },
15033
- "description": "The bearer token is missing, invalid, or revoked."
15034
- },
15035
- "403": {
15036
- "content": {
15037
- "application/json": {
15038
- "schema": {
15039
- "$ref": "#/components/schemas/ErrorResponse"
15040
- }
15041
- }
15042
- },
15043
- "description": "The credential may not perform this action, or the account is blocked."
15044
- },
15045
- "404": {
15046
- "content": {
15047
- "application/json": {
15048
- "schema": {
15049
- "$ref": "#/components/schemas/ErrorResponse"
15050
- }
15051
- }
15052
- },
15053
- "description": "No such session in your account, or the port is not a valid TCP port."
15054
- },
15055
- "409": {
15056
- "content": {
15057
- "application/json": {
15058
- "schema": {
15059
- "$ref": "#/components/schemas/ErrorResponse"
15060
- }
15061
- }
15062
- },
15063
- "description": "The session's sandbox is not running; send it a message to wake it first."
15064
- },
15065
- "422": {
15066
- "content": {
15067
- "application/json": {
15068
- "schema": {
15069
- "$ref": "#/components/schemas/HTTPValidationError"
15070
- }
15071
- }
15072
- },
15073
- "description": "Validation Error"
15074
- }
15075
- },
15076
- "security": [
15077
- {
15078
- "HTTPBearer": []
15079
- }
15080
- ],
15081
- "summary": "Get Agent Session Port",
15082
- "tags": [
15083
- "v1"
15084
- ],
15085
- "x-ellipsis-sdk-method": "sessions.port"
15086
- }
15087
- },
15088
- "/sessions/{session_id}/records": {
14715
+ "/v1/sessions/{session_id}/records": {
15089
14716
  "get": {
15090
14717
  "description": "Return the session's stored transcript records, oldest first.\n\nPagination is opt-in (cursor/limit); a bare call returns the\nfull retained transcript. Available to sandbox tokens too: an\nagent answering \"did X look into Y?\" needs to read the session\nit found via /sessions/search, and any org member sees the same\ntranscript in the dashboard (laptop transcripts are redacted\nclient-side before they are ever uploaded).",
15091
14718
  "operationId": "get_agent_session_records",
@@ -15214,7 +14841,7 @@
15214
14841
  "x-ellipsis-sdk-method": "sessions.records"
15215
14842
  }
15216
14843
  },
15217
- "/sessions/{session_id}/replay": {
14844
+ "/v1/sessions/{session_id}/replay": {
15218
14845
  "post": {
15219
14846
  "description": "Replay a session as a new session.\n\nReuses the original config snapshot unless config_id is given,\nand accepts the same config_override as session start \u2014 e.g.\n{\"claude\": {\"model\": ...}} to replay the same input on a\ndifferent model.",
15220
14847
  "operationId": "replay_agent_session",
@@ -15329,7 +14956,7 @@
15329
14956
  "x-ellipsis-sdk-method": "sessions.replay"
15330
14957
  }
15331
14958
  },
15332
- "/sessions/{session_id}/stop": {
14959
+ "/v1/sessions/{session_id}/stop": {
15333
14960
  "post": {
15334
14961
  "description": "Stop an in-flight session and return it.\n\nstopped_by is recorded only when the caller's credential maps\nto a GitHub account.",
15335
14962
  "operationId": "stop_agent_session",
@@ -15444,7 +15071,7 @@
15444
15071
  "x-ellipsis-sdk-method": "sessions.stop"
15445
15072
  }
15446
15073
  },
15447
- "/sessions/{session_id}/transcript": {
15074
+ "/v1/sessions/{session_id}/transcript": {
15448
15075
  "post": {
15449
15076
  "description": "Append transcript lines to a session's record.\n\nThe in-sandbox tailer for interactive sessions.\n\nA sandbox token may only push its own session's transcript.\nIdempotent by transcript line uuid; tolerant of malformed lines.",
15450
15077
  "operationId": "ingest_agent_session_transcript",
@@ -15559,7 +15186,7 @@
15559
15186
  "x-ellipsis-sdk-method": "sessions.ingest_transcript"
15560
15187
  }
15561
15188
  },
15562
- "/usage": {
15189
+ "/v1/usage": {
15563
15190
  "get": {
15564
15191
  "description": "Return the caller's usage dashboard data.",
15565
15192
  "operationId": "get_usage_endpoint",