@ellipsis-dev/sdk 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -33
- package/dist/index.js +8 -25
- package/dist/store/index.d.ts +1 -1
- package/dist/stream/index.d.ts +1 -1
- package/dist/{types-BN5YExTm.d.ts → types-egqnpL5C.d.ts} +595 -365
- package/package.json +1 -1
- package/schema/frames.schema.json +1748 -61
- package/schema/openapi.v1.json +144 -464
|
@@ -128,12 +128,11 @@ interface paths {
|
|
|
128
128
|
};
|
|
129
129
|
/**
|
|
130
130
|
* List Agent Defaults
|
|
131
|
-
* @description
|
|
131
|
+
* @description Get the default agent configs.
|
|
132
132
|
*
|
|
133
|
-
* The account default and
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* omitted, a repo rung is "owner/name" — never by row id.
|
|
133
|
+
* The account-wide default and the per-repository defaults, as config
|
|
134
|
+
* ids. Repo rungs are keyed "owner/name"; a repository this
|
|
135
|
+
* installation can no longer see is omitted.
|
|
137
136
|
*/
|
|
138
137
|
get: operations['list_agent_defaults'];
|
|
139
138
|
/**
|
|
@@ -142,7 +141,7 @@ interface paths {
|
|
|
142
141
|
*
|
|
143
142
|
* Addressed by rung: the account rung (repository omitted) or a
|
|
144
143
|
* repository rung ("owner/name"); the config by id or by the
|
|
145
|
-
* agent's name.
|
|
144
|
+
* agent's name. Returns the full resulting ladder.
|
|
146
145
|
*
|
|
147
146
|
* Refused for sandbox tokens (potentially prompt-injected code
|
|
148
147
|
* must not repoint the account's ambient default); an unknown or
|
|
@@ -916,8 +915,7 @@ interface paths {
|
|
|
916
915
|
* config, or
|
|
917
916
|
* template_id; with none, the account's default-config ladder
|
|
918
917
|
* resolves the config. 400 when idle_start is combined with
|
|
919
|
-
* prompt
|
|
920
|
-
* any config source or override. 422 when the agent declares an
|
|
918
|
+
* prompt or input. 422 when the agent declares an
|
|
921
919
|
* input schema and the request's input is absent or invalid.
|
|
922
920
|
*/
|
|
923
921
|
post: operations['start_agent_session'];
|
|
@@ -955,30 +953,6 @@ interface paths {
|
|
|
955
953
|
patch?: never;
|
|
956
954
|
trace?: never;
|
|
957
955
|
};
|
|
958
|
-
'/v1/sessions/sync': {
|
|
959
|
-
parameters: {
|
|
960
|
-
query?: never;
|
|
961
|
-
header?: never;
|
|
962
|
-
path?: never;
|
|
963
|
-
cookie?: never;
|
|
964
|
-
};
|
|
965
|
-
get?: never;
|
|
966
|
-
put?: never;
|
|
967
|
-
/**
|
|
968
|
-
* Sync Agent Session
|
|
969
|
-
* @description Sync a local Claude Code session to Ellipsis.
|
|
970
|
-
*
|
|
971
|
-
* Requires a user token (device-flow `agent login`): the user is
|
|
972
|
-
* part of the sync's idempotency key, so API keys and sandbox
|
|
973
|
-
* tokens are rejected with a 403 rather than silently attributed.
|
|
974
|
-
*/
|
|
975
|
-
post: operations['sync_agent_session'];
|
|
976
|
-
delete?: never;
|
|
977
|
-
options?: never;
|
|
978
|
-
head?: never;
|
|
979
|
-
patch?: never;
|
|
980
|
-
trace?: never;
|
|
981
|
-
};
|
|
982
956
|
'/v1/sessions/{session_id}': {
|
|
983
957
|
parameters: {
|
|
984
958
|
query?: never;
|
|
@@ -1129,8 +1103,7 @@ interface paths {
|
|
|
1129
1103
|
* full retained transcript. Available to sandbox tokens too: an
|
|
1130
1104
|
* agent answering "did X look into Y?" needs to read the session
|
|
1131
1105
|
* it found via /sessions/search, and any org member sees the same
|
|
1132
|
-
* transcript in the dashboard
|
|
1133
|
-
* client-side before they are ever uploaded).
|
|
1106
|
+
* transcript in the dashboard.
|
|
1134
1107
|
*/
|
|
1135
1108
|
get: operations['get_agent_session_records'];
|
|
1136
1109
|
put?: never;
|
|
@@ -1781,6 +1754,17 @@ interface components {
|
|
|
1781
1754
|
path: string;
|
|
1782
1755
|
repository?: components['schemas']['AgentConfigRepository'] | null;
|
|
1783
1756
|
};
|
|
1757
|
+
/**
|
|
1758
|
+
* AgentConfigSource
|
|
1759
|
+
* @description Where a session's config came from. Total: every session has exactly one
|
|
1760
|
+
* source, including the ones that never touch defaults resolution.
|
|
1761
|
+
*
|
|
1762
|
+
* Not derivable from the row — `agent_config_id` says WHICH saved config, not
|
|
1763
|
+
* how it was chosen, and is null for inline, platform-default, and built-in
|
|
1764
|
+
* configs alike — so it is persisted for audit and the published wire.
|
|
1765
|
+
* @enum {string}
|
|
1766
|
+
*/
|
|
1767
|
+
AgentConfigSource: 'explicit' | 'inline' | 'template' | 'repo_default' | 'account_default' | 'platform_default' | 'trigger' | 'builtin';
|
|
1784
1768
|
/**
|
|
1785
1769
|
* AgentConfigSourceGithub
|
|
1786
1770
|
* @description Identifies the file a GitHub-sourced agent config is synced from.
|
|
@@ -1815,61 +1799,29 @@ interface components {
|
|
|
1815
1799
|
configs: components['schemas']['Config'][];
|
|
1816
1800
|
};
|
|
1817
1801
|
/**
|
|
1818
|
-
*
|
|
1819
|
-
* @description
|
|
1820
|
-
*
|
|
1802
|
+
* AgentDefaults
|
|
1803
|
+
* @description Which agent config serves sessions started without an explicit config:
|
|
1804
|
+
* one account-wide rung, plus a rung per repository.
|
|
1805
|
+
*
|
|
1806
|
+
* Values are config ids — stable across renames, unlike the agent's name.
|
|
1807
|
+
* A repo rung whose repository this installation can no longer see is absent
|
|
1808
|
+
* from `repositories`; its row is left in place, so re-installing the repo
|
|
1809
|
+
* brings the rung back.
|
|
1821
1810
|
*/
|
|
1822
|
-
|
|
1811
|
+
AgentDefaults: {
|
|
1823
1812
|
/**
|
|
1824
|
-
*
|
|
1825
|
-
* @description
|
|
1813
|
+
* Account
|
|
1814
|
+
* @description Config id serving sessions with no repository context, or null when no account default is set.
|
|
1826
1815
|
*/
|
|
1827
|
-
|
|
1828
|
-
/**
|
|
1829
|
-
* Config Id
|
|
1830
|
-
* @description The agent config this default points at.
|
|
1831
|
-
*/
|
|
1832
|
-
config_id: string;
|
|
1833
|
-
/**
|
|
1834
|
-
* Config Name
|
|
1835
|
-
* @description The pointed-at config's name; null when the config no longer exists.
|
|
1836
|
-
*/
|
|
1837
|
-
config_name?: string | null;
|
|
1838
|
-
/**
|
|
1839
|
-
* Id
|
|
1840
|
-
* @description The default's unique identifier.
|
|
1841
|
-
*/
|
|
1842
|
-
id: string;
|
|
1843
|
-
/**
|
|
1844
|
-
* Repository
|
|
1845
|
-
* @description The repository this default applies to, as "owner/name", or null for the account-wide default.
|
|
1846
|
-
*/
|
|
1847
|
-
repository?: string | null;
|
|
1848
|
-
/**
|
|
1849
|
-
* Updated At
|
|
1850
|
-
* Format: date-time
|
|
1851
|
-
* @description When the default was last changed.
|
|
1852
|
-
*/
|
|
1853
|
-
updated_at: string;
|
|
1854
|
-
};
|
|
1855
|
-
/**
|
|
1856
|
-
* AgentDefaultResponse
|
|
1857
|
-
* @description One default-agent setting.
|
|
1858
|
-
*/
|
|
1859
|
-
AgentDefaultResponse: {
|
|
1860
|
-
/** @description The default-agent setting. */
|
|
1861
|
-
default: components['schemas']['AgentDefault'];
|
|
1862
|
-
};
|
|
1863
|
-
/**
|
|
1864
|
-
* AgentDefaultsListResponse
|
|
1865
|
-
* @description The account's default-agent settings.
|
|
1866
|
-
*/
|
|
1867
|
-
AgentDefaultsListResponse: {
|
|
1816
|
+
account?: string | null;
|
|
1868
1817
|
/**
|
|
1869
|
-
*
|
|
1870
|
-
* @description
|
|
1818
|
+
* Repositories
|
|
1819
|
+
* @description Config id per repository, keyed "owner/name". A repository with no default set is absent.
|
|
1820
|
+
* @default {}
|
|
1871
1821
|
*/
|
|
1872
|
-
|
|
1822
|
+
repositories: {
|
|
1823
|
+
[key: string]: string;
|
|
1824
|
+
};
|
|
1873
1825
|
};
|
|
1874
1826
|
/**
|
|
1875
1827
|
* AgentTemplate
|
|
@@ -2604,16 +2556,6 @@ interface components {
|
|
|
2604
2556
|
*/
|
|
2605
2557
|
scope: components['schemas']['ReviewScope'];
|
|
2606
2558
|
};
|
|
2607
|
-
/**
|
|
2608
|
-
* DefaultResolution
|
|
2609
|
-
* @description How a session that arrived with no explicit config source resolved its
|
|
2610
|
-
* config (documents/eng/DEFAULT_CONFIGS.md §4). Persisted on the session so
|
|
2611
|
-
* audit and clients can say "ran under X (repo default)". A session started
|
|
2612
|
-
* with an explicit config/config_id/template_id never enters resolution and
|
|
2613
|
-
* stores None.
|
|
2614
|
-
* @enum {string}
|
|
2615
|
-
*/
|
|
2616
|
-
DefaultResolution: 'repo_default' | 'account_default' | 'none';
|
|
2617
2559
|
/**
|
|
2618
2560
|
* DurationPercentiles
|
|
2619
2561
|
* @description Percentiles of a duration distribution, in hours. p0 = fastest,
|
|
@@ -2688,7 +2630,7 @@ interface components {
|
|
|
2688
2630
|
ErrorInfo: {
|
|
2689
2631
|
/**
|
|
2690
2632
|
* Code
|
|
2691
|
-
* @description Stable machine-readable error code. Open vocabulary — handle unknown codes by HTTP status. Known values: account_blocked, conflict,
|
|
2633
|
+
* @description Stable machine-readable error code. Open vocabulary — handle unknown codes by HTTP status. Known values: account_blocked, conflict, contact_email_required, failed_dependency, file_quota_exceeded, forbidden, internal_error, invalid_request, not_found, rate_limited, review_in_flight, session_closed, session_ephemeral_trigger, session_finished, session_harness_single_turn, session_mention_surface, session_non_interactive, unauthorized, unavailable.
|
|
2692
2634
|
*/
|
|
2693
2635
|
code: string;
|
|
2694
2636
|
/**
|
|
@@ -3278,35 +3220,6 @@ interface components {
|
|
|
3278
3220
|
/** Detail */
|
|
3279
3221
|
detail?: components['schemas']['ValidationError'][];
|
|
3280
3222
|
};
|
|
3281
|
-
/**
|
|
3282
|
-
* HandoffAgentSessionParams
|
|
3283
|
-
* @description Laptop-to-cloud handoff parameters (`agent session handoff`): start a
|
|
3284
|
-
* fresh session on the built-in handoff config, chained to the handed-off
|
|
3285
|
-
* session. Mutually exclusive with config_id / config / template_id — the
|
|
3286
|
-
* handoff config is platform-owned.
|
|
3287
|
-
*/
|
|
3288
|
-
HandoffAgentSessionParams: {
|
|
3289
|
-
/**
|
|
3290
|
-
* Parent Session Id
|
|
3291
|
-
* @description The session being handed off (usually a laptop-synced session).
|
|
3292
|
-
*/
|
|
3293
|
-
parent_session_id: string;
|
|
3294
|
-
/**
|
|
3295
|
-
* Ref
|
|
3296
|
-
* @description Where the WIP commit was pushed (refs/ellipsis/handoff/<short>); recorded as a metadata breadcrumb.
|
|
3297
|
-
*/
|
|
3298
|
-
ref?: string | null;
|
|
3299
|
-
/**
|
|
3300
|
-
* Repo
|
|
3301
|
-
* @description "owner/name" (or a bare name under the caller's account).
|
|
3302
|
-
*/
|
|
3303
|
-
repo: string;
|
|
3304
|
-
/**
|
|
3305
|
-
* Sha
|
|
3306
|
-
* @description The work-in-progress commit the CLI pushed (a commit of the dirty working tree) — becomes the sandbox checkout target.
|
|
3307
|
-
*/
|
|
3308
|
-
sha: string;
|
|
3309
|
-
};
|
|
3310
3223
|
/**
|
|
3311
3224
|
* Harness
|
|
3312
3225
|
* @enum {string}
|
|
@@ -3639,7 +3552,7 @@ interface components {
|
|
|
3639
3552
|
* or through Bedrock -- a choice made per request by the llm_providers chain, so
|
|
3640
3553
|
* it is not even a fixed property of the model. Likewise the `gpt-5.6-*` rows
|
|
3641
3554
|
* are OPENAI (OpenAI's models, served by AWS via bedrock-mantle), and GLM is ZAI
|
|
3642
|
-
* (Z.ai's model, served by
|
|
3555
|
+
* (Z.ai's model, served by DeepInfra via OpenRouter).
|
|
3643
3556
|
*
|
|
3644
3557
|
* So this is deliberately NOT derived from `EgressRoute.provider`: routing is an
|
|
3645
3558
|
* infrastructure fact that changes when we move a model between providers, while
|
|
@@ -3719,13 +3632,11 @@ interface components {
|
|
|
3719
3632
|
*
|
|
3720
3633
|
* CONTINUATION — a follow-up in the same conversation surface (e.g. a Slack
|
|
3721
3634
|
* thread reply spawning a fresh session on the same thread).
|
|
3722
|
-
* HANDOFF — a session started to take over work from another surface (e.g.
|
|
3723
|
-
* laptop → cloud handoff; later phase).
|
|
3724
3635
|
* RESUME — a conversation re-hosted on a new box after its sandbox was torn
|
|
3725
3636
|
* down (interactive platform; later phase).
|
|
3726
3637
|
* @enum {string}
|
|
3727
3638
|
*/
|
|
3728
|
-
ParentKind: 'continuation' | '
|
|
3639
|
+
ParentKind: 'continuation' | 'resume';
|
|
3729
3640
|
/**
|
|
3730
3641
|
* PollCliAuthResponse
|
|
3731
3642
|
* @description The state of a device-code flow. Poll until `status` leaves `pending`.
|
|
@@ -3747,7 +3658,7 @@ interface components {
|
|
|
3747
3658
|
* @description Why direct prompting is refused. Absent when prompting is allowed.
|
|
3748
3659
|
* @enum {string}
|
|
3749
3660
|
*/
|
|
3750
|
-
PromptBlockedReason: 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'harness_single_turn' | 'closed'
|
|
3661
|
+
PromptBlockedReason: 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'harness_single_turn' | 'closed';
|
|
3751
3662
|
/**
|
|
3752
3663
|
* PullRequestAction
|
|
3753
3664
|
* @enum {string}
|
|
@@ -4234,7 +4145,7 @@ interface components {
|
|
|
4234
4145
|
config_id?: string | null;
|
|
4235
4146
|
/**
|
|
4236
4147
|
* Config Override
|
|
4237
|
-
* @description Optional partial-config override merged onto the chosen config and re-validated — e.g. {"claude": {"model": "claude-opus-4-8"}} to replay the run on a different model, or {"
|
|
4148
|
+
* @description Optional partial-config override merged onto the chosen config and re-validated — e.g. {"claude": {"model": "claude-opus-4-8"}} to replay the run on a different model, or {"budget": {"session": 5.0}} to raise its budget. Mutually exclusive with config_override_yaml.
|
|
4238
4149
|
*/
|
|
4239
4150
|
config_override?: {
|
|
4240
4151
|
[key: string]: unknown;
|
|
@@ -5263,15 +5174,12 @@ interface components {
|
|
|
5263
5174
|
* disagree about what a session looks like.
|
|
5264
5175
|
*/
|
|
5265
5176
|
Session: {
|
|
5177
|
+
/** @description The agent that ran: the config the session executed, where that config came from, and any override merged into it. */
|
|
5178
|
+
agent: components['schemas']['SessionAgent'];
|
|
5266
5179
|
/** @description The principal this session is attributed to. */
|
|
5267
5180
|
attribution?: components['schemas']['SessionAttribution'];
|
|
5268
5181
|
/** @description The spend budget enforced for this session. */
|
|
5269
5182
|
budget?: components['schemas']['SessionBudget'];
|
|
5270
|
-
/**
|
|
5271
|
-
* Config Id
|
|
5272
|
-
* @description Identifier of the saved agent config the session ran on, if any.
|
|
5273
|
-
*/
|
|
5274
|
-
config_id?: string | null;
|
|
5275
5183
|
/**
|
|
5276
5184
|
* Context Repository
|
|
5277
5185
|
* @description The "owner/name" repository context the session was started in, if any.
|
|
@@ -5285,8 +5193,6 @@ interface components {
|
|
|
5285
5193
|
* @description When the session was created.
|
|
5286
5194
|
*/
|
|
5287
5195
|
created_at: string;
|
|
5288
|
-
/** @description How the session's config was resolved from the account's defaults, when no explicit config was given. */
|
|
5289
|
-
default_resolution?: components['schemas']['DefaultResolution'] | null;
|
|
5290
5196
|
/** @description How the session ended; null until it is terminal. */
|
|
5291
5197
|
exit_status?: components['schemas']['SessionExitStatus'] | null;
|
|
5292
5198
|
/** @description The coding-agent harness the session runs on. */
|
|
@@ -5306,11 +5212,6 @@ interface components {
|
|
|
5306
5212
|
* @description When the session last received a message.
|
|
5307
5213
|
*/
|
|
5308
5214
|
last_message_at?: string | null;
|
|
5309
|
-
/**
|
|
5310
|
-
* Live Summary
|
|
5311
|
-
* @description A live summary of the session's progress while it runs.
|
|
5312
|
-
*/
|
|
5313
|
-
live_summary?: string | null;
|
|
5314
5215
|
/**
|
|
5315
5216
|
* Metadata
|
|
5316
5217
|
* @description Caller-supplied metadata key-value pairs.
|
|
@@ -5335,7 +5236,7 @@ interface components {
|
|
|
5335
5236
|
prompting: components['schemas']['SessionPrompting'];
|
|
5336
5237
|
/** @description Lifecycle state of the durable conversation, or null for sessions without one. */
|
|
5337
5238
|
session_state?: components['schemas']['SessionState'] | null;
|
|
5338
|
-
/** @description Where the session came from (e.g. react, manual, api, cli, mention, cron
|
|
5239
|
+
/** @description Where the session came from (e.g. react, manual, api, cli, mention, cron). */
|
|
5339
5240
|
source: components['schemas']['SessionSource'];
|
|
5340
5241
|
/** @description Execution status of the session. */
|
|
5341
5242
|
status: components['schemas']['SessionStatus'];
|
|
@@ -5346,7 +5247,9 @@ interface components {
|
|
|
5346
5247
|
status_reason?: string | null;
|
|
5347
5248
|
/** @description The stop request, if the session was stopped. */
|
|
5348
5249
|
stopped?: components['schemas']['SessionStopped'];
|
|
5349
|
-
/** @description The
|
|
5250
|
+
/** @description The latest live summary of the session's progress while it runs, and when it was generated. */
|
|
5251
|
+
summary?: components['schemas']['SessionSummary'] | null;
|
|
5252
|
+
/** @description The public status projection; null on list/search responses, which do not derive it. */
|
|
5350
5253
|
surface?: components['schemas']['SessionSurface'] | null;
|
|
5351
5254
|
/** @description The tokens the session spent and the model they went to. `total` includes the prompt-cache lanes. */
|
|
5352
5255
|
tokens?: components['schemas']['SessionTokens'];
|
|
@@ -5357,6 +5260,35 @@ interface components {
|
|
|
5357
5260
|
*/
|
|
5358
5261
|
updated_at: string;
|
|
5359
5262
|
};
|
|
5263
|
+
/**
|
|
5264
|
+
* SessionAgent
|
|
5265
|
+
* @description The agent this session ran: the config it actually executed, where that
|
|
5266
|
+
* config came from, and the diff that was merged in — the same
|
|
5267
|
+
* effective-value-plus-provenance shape `SessionBudget` uses.
|
|
5268
|
+
*
|
|
5269
|
+
* `config` is the snapshot frozen when the session was created; `config_id`
|
|
5270
|
+
* points at the saved config as it exists NOW. They diverge legitimately: a
|
|
5271
|
+
* YAML edit after the session started, or any `override`, leaves the pointer
|
|
5272
|
+
* describing something the session never ran.
|
|
5273
|
+
*/
|
|
5274
|
+
SessionAgent: {
|
|
5275
|
+
/** @description The agent config the session actually ran, frozen when the session was created. */
|
|
5276
|
+
config: components['schemas']['AgentConfig'];
|
|
5277
|
+
/**
|
|
5278
|
+
* Config Id
|
|
5279
|
+
* @description Identifier of the saved config this session's snapshot was taken from. Null for inline, platform-default, and built-in configs. Points at the config as it exists now, which may have changed since.
|
|
5280
|
+
*/
|
|
5281
|
+
config_id?: string | null;
|
|
5282
|
+
/**
|
|
5283
|
+
* Override
|
|
5284
|
+
* @description The partial-config override merged into `config` for this session, or null when the config ran unmodified. `config` is the merged result; this is the diff.
|
|
5285
|
+
*/
|
|
5286
|
+
override?: {
|
|
5287
|
+
[key: string]: unknown;
|
|
5288
|
+
} | null;
|
|
5289
|
+
/** @description How this session's config was chosen. */
|
|
5290
|
+
source: components['schemas']['AgentConfigSource'];
|
|
5291
|
+
};
|
|
5360
5292
|
/**
|
|
5361
5293
|
* SessionAttribution
|
|
5362
5294
|
* @description The principal a session is attributed to: what kind, its id, and — when
|
|
@@ -5518,7 +5450,7 @@ interface components {
|
|
|
5518
5450
|
* a deliberate cancellation. It is None until the run reaches a terminal state.
|
|
5519
5451
|
* @enum {string}
|
|
5520
5452
|
*/
|
|
5521
|
-
SessionExitStatus: 'completed' | 'budget_hit' | 'payment_required' | 'tool_call_failed' | 'lifecycle_hook_failed' | 'missing_repo_access' | 'missing_token_permissions' | 'missing_sandbox_variables' | 'cancelled' | 'interrupted' | 'error' | 'stopped';
|
|
5453
|
+
SessionExitStatus: 'completed' | 'budget_hit' | 'payment_required' | 'tool_call_failed' | 'lifecycle_hook_failed' | 'missing_repo_access' | 'missing_token_permissions' | 'missing_sandbox_variables' | 'blocked' | 'contact_email_required' | 'cancelled' | 'interrupted' | 'error' | 'stopped';
|
|
5522
5454
|
/**
|
|
5523
5455
|
* SessionLiveness
|
|
5524
5456
|
* @description The durable conversation axis (backs the surfaced `session` field).
|
|
@@ -5874,7 +5806,7 @@ interface components {
|
|
|
5874
5806
|
* SessionSource
|
|
5875
5807
|
* @enum {string}
|
|
5876
5808
|
*/
|
|
5877
|
-
SessionSource: 'react' | 'manual' | 'api' | 'cli' | 'mention' | 'cron'
|
|
5809
|
+
SessionSource: 'react' | 'manual' | 'api' | 'cli' | 'mention' | 'cron';
|
|
5878
5810
|
/**
|
|
5879
5811
|
* SessionState
|
|
5880
5812
|
* @description Lifecycle of a keyed (multi-turn) session — the durable conversation.
|
|
@@ -5909,9 +5841,26 @@ interface components {
|
|
|
5909
5841
|
/** @description The GitHub user who stopped the session, resolved at read time. */
|
|
5910
5842
|
by_user?: components['schemas']['GithubAccountSnippet'] | null;
|
|
5911
5843
|
};
|
|
5844
|
+
/**
|
|
5845
|
+
* SessionSummary
|
|
5846
|
+
* @description A live one-line summary of what the session is working on, refreshed
|
|
5847
|
+
* every few steps while it runs.
|
|
5848
|
+
*/
|
|
5849
|
+
SessionSummary: {
|
|
5850
|
+
/**
|
|
5851
|
+
* Created At
|
|
5852
|
+
* @description When this summary line was generated. Null on summaries written before generation time was tracked.
|
|
5853
|
+
*/
|
|
5854
|
+
created_at?: string | null;
|
|
5855
|
+
/**
|
|
5856
|
+
* Description
|
|
5857
|
+
* @description One-line description of what the session is working on.
|
|
5858
|
+
*/
|
|
5859
|
+
description: string;
|
|
5860
|
+
};
|
|
5912
5861
|
/**
|
|
5913
5862
|
* SessionSurface
|
|
5914
|
-
* @description The three fields we expose.
|
|
5863
|
+
* @description The three fields we expose.
|
|
5915
5864
|
*
|
|
5916
5865
|
* `use_enum_values=True` (from CustomBaseModel) stores the members as their
|
|
5917
5866
|
* string values, so this serializes to `{"session": "alive", "run": "waiting",
|
|
@@ -6131,7 +6080,7 @@ interface components {
|
|
|
6131
6080
|
config_id?: string | null;
|
|
6132
6081
|
/**
|
|
6133
6082
|
* Config Override
|
|
6134
|
-
* @description Optional partial-config override merged onto the chosen config and re-validated (e.g. {"
|
|
6083
|
+
* @description Optional partial-config override merged onto the chosen config and re-validated (e.g. {"budget": {"session": 5.0}} to raise just this session's budget). Merged onto config_id/template_id or the platform default; with an inline config, set fields directly instead. Mutually exclusive with config_override_yaml.
|
|
6135
6084
|
*/
|
|
6136
6085
|
config_override?: {
|
|
6137
6086
|
[key: string]: unknown;
|
|
@@ -6147,11 +6096,9 @@ interface components {
|
|
|
6147
6096
|
* @default false
|
|
6148
6097
|
*/
|
|
6149
6098
|
force_rebuild: boolean;
|
|
6150
|
-
/** @description Laptop-to-cloud handoff parameters. When set, the built-in handoff config is used and config_id/config/template_id must be omitted. */
|
|
6151
|
-
handoff?: components['schemas']['HandoffAgentSessionParams'] | null;
|
|
6152
6099
|
/**
|
|
6153
6100
|
* Idle Start
|
|
6154
|
-
* @description Start the session with no initial message: the sandbox spins up, the agent starts idle at the prompt, and the first message sent to the session opens turn 0. Mutually exclusive with prompt
|
|
6101
|
+
* @description Start the session with no initial message: the sandbox spins up, the agent starts idle at the prompt, and the first message sent to the session opens turn 0. Mutually exclusive with prompt. Ignored when the resolved config is not interactive (an ephemeral run keeps its kickoff — it can never receive a message).
|
|
6155
6102
|
* @default false
|
|
6156
6103
|
*/
|
|
6157
6104
|
idle_start: boolean;
|
|
@@ -6172,7 +6119,7 @@ interface components {
|
|
|
6172
6119
|
};
|
|
6173
6120
|
/**
|
|
6174
6121
|
* Prompt
|
|
6175
|
-
* @description Per-run instructions appended to the initial query after the config's shared system prompt. Applies regardless of which config source is used.
|
|
6122
|
+
* @description Per-run instructions appended to the initial query after the config's shared system prompt. Applies regardless of which config source is used.
|
|
6176
6123
|
*/
|
|
6177
6124
|
prompt?: string | null;
|
|
6178
6125
|
/**
|
|
@@ -6186,22 +6133,6 @@ interface components {
|
|
|
6186
6133
|
*/
|
|
6187
6134
|
template_id?: string | null;
|
|
6188
6135
|
};
|
|
6189
|
-
/**
|
|
6190
|
-
* StartAgentSessionResponse
|
|
6191
|
-
* @description The started session, plus explicit fields describing how its config
|
|
6192
|
-
* was resolved.
|
|
6193
|
-
*/
|
|
6194
|
-
StartAgentSessionResponse: {
|
|
6195
|
-
/** @description Which rung of the defaults ladder chose the config (repo_default | account_default | none). Null when an explicit config/config_id/template_id (or a handoff) bypassed resolution. */
|
|
6196
|
-
resolution_source?: components['schemas']['DefaultResolution'] | null;
|
|
6197
|
-
/**
|
|
6198
|
-
* Resolved Config Name
|
|
6199
|
-
* @description The name of the config the session runs under.
|
|
6200
|
-
*/
|
|
6201
|
-
resolved_config_name?: string | null;
|
|
6202
|
-
/** @description The started session. */
|
|
6203
|
-
session: components['schemas']['Session'];
|
|
6204
|
-
};
|
|
6205
6136
|
/**
|
|
6206
6137
|
* StartCliAuthResponse
|
|
6207
6138
|
* @description A freshly minted device-code flow: show the user code (or open the
|
|
@@ -6239,72 +6170,6 @@ interface components {
|
|
|
6239
6170
|
*/
|
|
6240
6171
|
verification_uri_complete: string;
|
|
6241
6172
|
};
|
|
6242
|
-
/**
|
|
6243
|
-
* SyncAgentSessionRequest
|
|
6244
|
-
* @description One hook-driven transcript sync from a developer laptop. The CLI reads
|
|
6245
|
-
* the live on-disk Claude Code transcript, redacts it client-side, gzips
|
|
6246
|
-
* it, and POSTs it here — once per turn and at termination.
|
|
6247
|
-
*/
|
|
6248
|
-
SyncAgentSessionRequest: {
|
|
6249
|
-
/**
|
|
6250
|
-
* Cc Session Id
|
|
6251
|
-
* @description The Claude Code session uuid (from the hook payload's session_id).
|
|
6252
|
-
*/
|
|
6253
|
-
cc_session_id: string;
|
|
6254
|
-
/**
|
|
6255
|
-
* Cwd
|
|
6256
|
-
* @description The laptop working directory.
|
|
6257
|
-
*/
|
|
6258
|
-
cwd?: string | null;
|
|
6259
|
-
/**
|
|
6260
|
-
* Git Branch
|
|
6261
|
-
* @description The checked-out git branch.
|
|
6262
|
-
*/
|
|
6263
|
-
git_branch?: string | null;
|
|
6264
|
-
/**
|
|
6265
|
-
* Reason
|
|
6266
|
-
* @description Which hook fired the sync: "stop" (mid-session, once per turn) or "session_end" (the Claude Code process terminated).
|
|
6267
|
-
* @default stop
|
|
6268
|
-
* @enum {string}
|
|
6269
|
-
*/
|
|
6270
|
-
reason: 'stop' | 'session_end';
|
|
6271
|
-
/**
|
|
6272
|
-
* Repo
|
|
6273
|
-
* @description The enrolled repository ("owner/name", from the working directory's git remote).
|
|
6274
|
-
*/
|
|
6275
|
-
repo?: string | null;
|
|
6276
|
-
/**
|
|
6277
|
-
* Transcript Gzip B64
|
|
6278
|
-
* @description The redacted transcript JSONL, gzipped then base64-encoded.
|
|
6279
|
-
*/
|
|
6280
|
-
transcript_gzip_b64: string;
|
|
6281
|
-
};
|
|
6282
|
-
/**
|
|
6283
|
-
* SyncAgentSessionResponse
|
|
6284
|
-
* @description The outcome of a laptop transcript sync.
|
|
6285
|
-
*/
|
|
6286
|
-
SyncAgentSessionResponse: {
|
|
6287
|
-
/**
|
|
6288
|
-
* Accepted
|
|
6289
|
-
* @description False when the stored snapshot was already at least as long (longest snapshot wins) — acknowledged, nothing written.
|
|
6290
|
-
*/
|
|
6291
|
-
accepted: boolean;
|
|
6292
|
-
/**
|
|
6293
|
-
* Event Count
|
|
6294
|
-
* @description The number of transcript events in the stored snapshot.
|
|
6295
|
-
*/
|
|
6296
|
-
event_count: number;
|
|
6297
|
-
/**
|
|
6298
|
-
* Process Id
|
|
6299
|
-
* @description The synced Claude Code process id.
|
|
6300
|
-
*/
|
|
6301
|
-
process_id: string;
|
|
6302
|
-
/**
|
|
6303
|
-
* Session Id
|
|
6304
|
-
* @description The platform session the sync mapped to.
|
|
6305
|
-
*/
|
|
6306
|
-
session_id: string;
|
|
6307
|
-
};
|
|
6308
6173
|
/**
|
|
6309
6174
|
* TokensInfo
|
|
6310
6175
|
* @description Token/cost usage, per record (one API call's counts, aggregate fields at
|
|
@@ -6997,7 +6862,7 @@ interface operations {
|
|
|
6997
6862
|
[name: string]: unknown;
|
|
6998
6863
|
};
|
|
6999
6864
|
content: {
|
|
7000
|
-
'application/json': components['schemas']['
|
|
6865
|
+
'application/json': components['schemas']['AgentDefaults'];
|
|
7001
6866
|
};
|
|
7002
6867
|
};
|
|
7003
6868
|
/** @description The bearer token is missing, invalid, or revoked. */
|
|
@@ -7050,7 +6915,7 @@ interface operations {
|
|
|
7050
6915
|
[name: string]: unknown;
|
|
7051
6916
|
};
|
|
7052
6917
|
content: {
|
|
7053
|
-
'application/json': components['schemas']['
|
|
6918
|
+
'application/json': components['schemas']['AgentDefaults'];
|
|
7054
6919
|
};
|
|
7055
6920
|
};
|
|
7056
6921
|
/** @description The config is not eligible as a default: its pull request has not merged, or it is disabled. */
|
|
@@ -9214,7 +9079,7 @@ interface operations {
|
|
|
9214
9079
|
cursor?: string | null;
|
|
9215
9080
|
/** @description A GitHub account id (see GET /v1/integrations/github/members); scopes the list to sessions attributed to that developer. */
|
|
9216
9081
|
author_id?: number | null;
|
|
9217
|
-
/** @description "owner/name" (exact) or a bare repo name, matched the same way as on GET /v1/sessions/search. Sessions whose repository is named only inside their agent config — dashboard starts, cron
|
|
9082
|
+
/** @description "owner/name" (exact) or a bare repo name, matched the same way as on GET /v1/sessions/search. Sessions whose repository is named only inside their agent config — dashboard starts, cron — do not match. */
|
|
9218
9083
|
repo?: string | null;
|
|
9219
9084
|
/** @description Keep only sessions whose conversation is still going — live or sleeping — dropping the ones that completed, errored, or were stopped or cancelled. A session parked between turns counts as unfinished. */
|
|
9220
9085
|
unfinished?: boolean;
|
|
@@ -9286,10 +9151,10 @@ interface operations {
|
|
|
9286
9151
|
[name: string]: unknown;
|
|
9287
9152
|
};
|
|
9288
9153
|
content: {
|
|
9289
|
-
'application/json': components['schemas']['
|
|
9154
|
+
'application/json': components['schemas']['SessionResponse'];
|
|
9290
9155
|
};
|
|
9291
9156
|
};
|
|
9292
|
-
/** @description The request combines incompatible fields (multiple config sources, idle_start with prompt/input
|
|
9157
|
+
/** @description The request combines incompatible fields (multiple config sources, idle_start with prompt/input, or both override forms), or the config override is invalid. */
|
|
9293
9158
|
400: {
|
|
9294
9159
|
headers: {
|
|
9295
9160
|
[name: string]: unknown;
|
|
@@ -9316,7 +9181,7 @@ interface operations {
|
|
|
9316
9181
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9317
9182
|
};
|
|
9318
9183
|
};
|
|
9319
|
-
/** @description The named agent
|
|
9184
|
+
/** @description The named agent or template does not exist in your account. */
|
|
9320
9185
|
404: {
|
|
9321
9186
|
headers: {
|
|
9322
9187
|
[name: string]: unknown;
|
|
@@ -9418,77 +9283,6 @@ interface operations {
|
|
|
9418
9283
|
};
|
|
9419
9284
|
};
|
|
9420
9285
|
};
|
|
9421
|
-
sync_agent_session: {
|
|
9422
|
-
parameters: {
|
|
9423
|
-
query?: never;
|
|
9424
|
-
header?: {
|
|
9425
|
-
'user-agent'?: string | null;
|
|
9426
|
-
};
|
|
9427
|
-
path?: never;
|
|
9428
|
-
cookie?: never;
|
|
9429
|
-
};
|
|
9430
|
-
requestBody: {
|
|
9431
|
-
content: {
|
|
9432
|
-
'application/json': components['schemas']['SyncAgentSessionRequest'];
|
|
9433
|
-
};
|
|
9434
|
-
};
|
|
9435
|
-
responses: {
|
|
9436
|
-
/** @description Successful Response */
|
|
9437
|
-
200: {
|
|
9438
|
-
headers: {
|
|
9439
|
-
[name: string]: unknown;
|
|
9440
|
-
};
|
|
9441
|
-
content: {
|
|
9442
|
-
'application/json': components['schemas']['SyncAgentSessionResponse'];
|
|
9443
|
-
};
|
|
9444
|
-
};
|
|
9445
|
-
/** @description The transcript payload is empty, or is not valid base64/gzip. */
|
|
9446
|
-
400: {
|
|
9447
|
-
headers: {
|
|
9448
|
-
[name: string]: unknown;
|
|
9449
|
-
};
|
|
9450
|
-
content: {
|
|
9451
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9452
|
-
};
|
|
9453
|
-
};
|
|
9454
|
-
/** @description The bearer token is missing, invalid, or revoked. */
|
|
9455
|
-
401: {
|
|
9456
|
-
headers: {
|
|
9457
|
-
[name: string]: unknown;
|
|
9458
|
-
};
|
|
9459
|
-
content: {
|
|
9460
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9461
|
-
};
|
|
9462
|
-
};
|
|
9463
|
-
/** @description The credential may not perform this action, or the account is blocked. */
|
|
9464
|
-
403: {
|
|
9465
|
-
headers: {
|
|
9466
|
-
[name: string]: unknown;
|
|
9467
|
-
};
|
|
9468
|
-
content: {
|
|
9469
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9470
|
-
};
|
|
9471
|
-
};
|
|
9472
|
-
/** @description The transcript exceeds the size limit (compressed or decompressed). */
|
|
9473
|
-
413: {
|
|
9474
|
-
headers: {
|
|
9475
|
-
[name: string]: unknown;
|
|
9476
|
-
};
|
|
9477
|
-
content: {
|
|
9478
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9479
|
-
};
|
|
9480
|
-
};
|
|
9481
|
-
/** @description Validation Error */
|
|
9482
|
-
422: {
|
|
9483
|
-
headers: {
|
|
9484
|
-
[name: string]: unknown;
|
|
9485
|
-
};
|
|
9486
|
-
content: {
|
|
9487
|
-
'application/json': components['schemas']['HTTPValidationError'];
|
|
9488
|
-
};
|
|
9489
|
-
};
|
|
9490
|
-
};
|
|
9491
|
-
};
|
|
9492
9286
|
get_agent_session: {
|
|
9493
9287
|
parameters: {
|
|
9494
9288
|
query?: never;
|
|
@@ -9731,7 +9525,7 @@ interface operations {
|
|
|
9731
9525
|
'application/json': components['schemas']['ErrorResponse'];
|
|
9732
9526
|
};
|
|
9733
9527
|
};
|
|
9734
|
-
/** @description The session cannot be messaged: it is closed, non-interactive,
|
|
9528
|
+
/** @description The session cannot be messaged: it is closed, non-interactive, or steered from its triggering surface (mention/react/cron). */
|
|
9735
9529
|
409: {
|
|
9736
9530
|
headers: {
|
|
9737
9531
|
[name: string]: unknown;
|
|
@@ -9900,7 +9694,7 @@ interface operations {
|
|
|
9900
9694
|
'application/json': components['schemas']['SessionResponse'];
|
|
9901
9695
|
};
|
|
9902
9696
|
};
|
|
9903
|
-
/** @description The
|
|
9697
|
+
/** @description The named config does not exist, or the config override is invalid. */
|
|
9904
9698
|
400: {
|
|
9905
9699
|
headers: {
|
|
9906
9700
|
[name: string]: unknown;
|
|
@@ -9969,15 +9763,6 @@ interface operations {
|
|
|
9969
9763
|
'application/json': components['schemas']['SessionResponse'];
|
|
9970
9764
|
};
|
|
9971
9765
|
};
|
|
9972
|
-
/** @description The session runs on a developer laptop and cannot be stopped from the cloud. */
|
|
9973
|
-
400: {
|
|
9974
|
-
headers: {
|
|
9975
|
-
[name: string]: unknown;
|
|
9976
|
-
};
|
|
9977
|
-
content: {
|
|
9978
|
-
'application/json': components['schemas']['ErrorResponse'];
|
|
9979
|
-
};
|
|
9980
|
-
};
|
|
9981
9766
|
/** @description The bearer token is missing, invalid, or revoked. */
|
|
9982
9767
|
401: {
|
|
9983
9768
|
headers: {
|
|
@@ -10158,19 +9943,38 @@ type AttributionType = 'github_user' | 'linear_user' | 'slack_user' | 'api_key';
|
|
|
10158
9943
|
* Delivery status of the message.
|
|
10159
9944
|
*/
|
|
10160
9945
|
type SessionMessageStatus = 'pending' | 'delivered';
|
|
9946
|
+
type EffortLevel = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
9947
|
+
/**
|
|
9948
|
+
* What may be done to a resource. Strictly ordered: a grant at one level
|
|
9949
|
+
* includes every level below it (write-only would be a phantom capability —
|
|
9950
|
+
* no real client can create what it cannot read back).
|
|
9951
|
+
*/
|
|
9952
|
+
type Level = 'read' | 'write' | 'delete';
|
|
9953
|
+
type GithubAccountFilter = {
|
|
9954
|
+
exclude?: string[];
|
|
9955
|
+
include?: string[] | boolean;
|
|
9956
|
+
} | boolean | string[];
|
|
9957
|
+
type IssueAction = 'opened' | 'closed' | 'commented';
|
|
9958
|
+
type RepositoryFilter = {
|
|
9959
|
+
exclude?: string[];
|
|
9960
|
+
include?: string[];
|
|
9961
|
+
} | string[];
|
|
9962
|
+
type LinearIssueAction = 'opened';
|
|
9963
|
+
type PullRequestAction = 'opened' | 'pushed' | 'merged' | 'closed' | 'review_submitted' | 'commented';
|
|
9964
|
+
type SentryAction = 'issue_alert' | 'metric_alert';
|
|
9965
|
+
/**
|
|
9966
|
+
* The surface an @ellipsis mention can come from.
|
|
9967
|
+
*/
|
|
9968
|
+
type AgentConfigMentionPlatform = 'github' | 'slack' | 'linear';
|
|
9969
|
+
/**
|
|
9970
|
+
* How this session's config was chosen.
|
|
9971
|
+
*/
|
|
9972
|
+
type AgentConfigSource = 'explicit' | 'inline' | 'template' | 'repo_default' | 'account_default' | 'platform_default' | 'trigger' | 'builtin';
|
|
10161
9973
|
type GithubAccountType = 'User' | 'Organization' | 'Bot' | 'Mannequin';
|
|
10162
9974
|
/**
|
|
10163
9975
|
* Where the resolved budget came from.
|
|
10164
9976
|
*/
|
|
10165
9977
|
type BudgetSource = 'system' | 'account' | 'config' | 'run';
|
|
10166
|
-
/**
|
|
10167
|
-
* How a session that arrived with no explicit config source resolved its
|
|
10168
|
-
* config (documents/eng/DEFAULT_CONFIGS.md §4). Persisted on the session so
|
|
10169
|
-
* audit and clients can say "ran under X (repo default)". A session started
|
|
10170
|
-
* with an explicit config/config_id/template_id never enters resolution and
|
|
10171
|
-
* stores None.
|
|
10172
|
-
*/
|
|
10173
|
-
type DefaultResolution = 'repo_default' | 'account_default' | 'none';
|
|
10174
9978
|
/**
|
|
10175
9979
|
* Why a terminal agent session ended — a finer-grained reason than `status`.
|
|
10176
9980
|
*
|
|
@@ -10179,7 +9983,7 @@ type DefaultResolution = 'repo_default' | 'account_default' | 'none';
|
|
|
10179
9983
|
* the UI and metrics can tell a budget cutoff apart from a crashed tool call or
|
|
10180
9984
|
* a deliberate cancellation. It is None until the run reaches a terminal state.
|
|
10181
9985
|
*/
|
|
10182
|
-
type SessionExitStatus = 'completed' | 'budget_hit' | 'payment_required' | 'tool_call_failed' | 'lifecycle_hook_failed' | 'missing_repo_access' | 'missing_token_permissions' | 'missing_sandbox_variables' | 'cancelled' | 'interrupted' | 'error' | 'stopped';
|
|
9986
|
+
type SessionExitStatus = 'completed' | 'budget_hit' | 'payment_required' | 'tool_call_failed' | 'lifecycle_hook_failed' | 'missing_repo_access' | 'missing_token_permissions' | 'missing_sandbox_variables' | 'blocked' | 'contact_email_required' | 'cancelled' | 'interrupted' | 'error' | 'stopped';
|
|
10183
9987
|
/**
|
|
10184
9988
|
* The coding-agent harness the session runs on.
|
|
10185
9989
|
*/
|
|
@@ -10191,16 +9995,14 @@ type Harness = 'claude_code' | 'codex';
|
|
|
10191
9995
|
*
|
|
10192
9996
|
* CONTINUATION — a follow-up in the same conversation surface (e.g. a Slack
|
|
10193
9997
|
* thread reply spawning a fresh session on the same thread).
|
|
10194
|
-
* HANDOFF — a session started to take over work from another surface (e.g.
|
|
10195
|
-
* laptop → cloud handoff; later phase).
|
|
10196
9998
|
* RESUME — a conversation re-hosted on a new box after its sandbox was torn
|
|
10197
9999
|
* down (interactive platform; later phase).
|
|
10198
10000
|
*/
|
|
10199
|
-
type ParentKind = 'continuation' | '
|
|
10001
|
+
type ParentKind = 'continuation' | 'resume';
|
|
10200
10002
|
/**
|
|
10201
10003
|
* Why direct prompting is refused. Absent when prompting is allowed.
|
|
10202
10004
|
*/
|
|
10203
|
-
type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'harness_single_turn' | 'closed'
|
|
10005
|
+
type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'harness_single_turn' | 'closed';
|
|
10204
10006
|
/**
|
|
10205
10007
|
* Lifecycle of a keyed (multi-turn) session — the durable conversation.
|
|
10206
10008
|
* Distinct from SessionStatus, which is per-execution (one turn's run) and
|
|
@@ -10210,9 +10012,9 @@ type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_intera
|
|
|
10210
10012
|
*/
|
|
10211
10013
|
type SessionState = 'idle' | 'running' | 'closed';
|
|
10212
10014
|
/**
|
|
10213
|
-
* Where the session came from (e.g. react, manual, api, cli, mention, cron
|
|
10015
|
+
* Where the session came from (e.g. react, manual, api, cli, mention, cron).
|
|
10214
10016
|
*/
|
|
10215
|
-
type SessionSource = 'react' | 'manual' | 'api' | 'cli' | 'mention' | 'cron'
|
|
10017
|
+
type SessionSource = 'react' | 'manual' | 'api' | 'cli' | 'mention' | 'cron';
|
|
10216
10018
|
/**
|
|
10217
10019
|
* Execution status of the session.
|
|
10218
10020
|
*/
|
|
@@ -10296,12 +10098,9 @@ interface SessionMessage {
|
|
|
10296
10098
|
* The session's current state.
|
|
10297
10099
|
*/
|
|
10298
10100
|
interface Session {
|
|
10101
|
+
agent: SessionAgent;
|
|
10299
10102
|
attribution: SessionAttribution;
|
|
10300
10103
|
budget: SessionBudget;
|
|
10301
|
-
/**
|
|
10302
|
-
* Identifier of the saved agent config the session ran on, if any.
|
|
10303
|
-
*/
|
|
10304
|
-
config_id: string | null;
|
|
10305
10104
|
/**
|
|
10306
10105
|
* The "owner/name" repository context the session was started in, if any.
|
|
10307
10106
|
*/
|
|
@@ -10311,10 +10110,6 @@ interface Session {
|
|
|
10311
10110
|
* When the session was created.
|
|
10312
10111
|
*/
|
|
10313
10112
|
created_at: string;
|
|
10314
|
-
/**
|
|
10315
|
-
* How the session's config was resolved from the account's defaults, when no explicit config was given.
|
|
10316
|
-
*/
|
|
10317
|
-
default_resolution: DefaultResolution | null;
|
|
10318
10113
|
/**
|
|
10319
10114
|
* How the session ended; null until it is terminal.
|
|
10320
10115
|
*/
|
|
@@ -10332,10 +10127,6 @@ interface Session {
|
|
|
10332
10127
|
* When the session last received a message.
|
|
10333
10128
|
*/
|
|
10334
10129
|
last_message_at: string | null;
|
|
10335
|
-
/**
|
|
10336
|
-
* A live summary of the session's progress while it runs.
|
|
10337
|
-
*/
|
|
10338
|
-
live_summary: string | null;
|
|
10339
10130
|
/**
|
|
10340
10131
|
* Caller-supplied metadata key-value pairs.
|
|
10341
10132
|
*/
|
|
@@ -10364,7 +10155,11 @@ interface Session {
|
|
|
10364
10155
|
status_reason: string | null;
|
|
10365
10156
|
stopped: SessionStopped;
|
|
10366
10157
|
/**
|
|
10367
|
-
* The
|
|
10158
|
+
* The latest live summary of the session's progress while it runs, and when it was generated.
|
|
10159
|
+
*/
|
|
10160
|
+
summary: SessionSummary | null;
|
|
10161
|
+
/**
|
|
10162
|
+
* The public status projection; null on list/search responses, which do not derive it.
|
|
10368
10163
|
*/
|
|
10369
10164
|
surface: SessionSurface | null;
|
|
10370
10165
|
tokens: SessionTokens;
|
|
@@ -10373,6 +10168,434 @@ interface Session {
|
|
|
10373
10168
|
*/
|
|
10374
10169
|
updated_at: string;
|
|
10375
10170
|
}
|
|
10171
|
+
/**
|
|
10172
|
+
* The agent that ran: the config the session executed, where that config came from, and any override merged into it.
|
|
10173
|
+
*/
|
|
10174
|
+
interface SessionAgent {
|
|
10175
|
+
config: AgentConfig;
|
|
10176
|
+
/**
|
|
10177
|
+
* Identifier of the saved config this session's snapshot was taken from. Null for inline, platform-default, and built-in configs. Points at the config as it exists now, which may have changed since.
|
|
10178
|
+
*/
|
|
10179
|
+
config_id: string | null;
|
|
10180
|
+
/**
|
|
10181
|
+
* The partial-config override merged into `config` for this session, or null when the config ran unmodified. `config` is the merged result; this is the diff.
|
|
10182
|
+
*/
|
|
10183
|
+
override: {
|
|
10184
|
+
[k: string]: unknown;
|
|
10185
|
+
} | null;
|
|
10186
|
+
source: AgentConfigSource;
|
|
10187
|
+
}
|
|
10188
|
+
/**
|
|
10189
|
+
* The agent config the session actually ran, frozen when the session was created.
|
|
10190
|
+
*/
|
|
10191
|
+
interface AgentConfig {
|
|
10192
|
+
budget: AgentConfigBudget;
|
|
10193
|
+
claude: AgentConfigClaude;
|
|
10194
|
+
codex: AgentConfigCodex | null;
|
|
10195
|
+
ellipsis: AgentConfigEllipsis;
|
|
10196
|
+
environment: AgentConfigEnvironment;
|
|
10197
|
+
input: AgentConfigInput | null;
|
|
10198
|
+
llm: AgentConfigLlm;
|
|
10199
|
+
mcp_servers: (string | AgentConfigMcpServer)[];
|
|
10200
|
+
output: AgentConfigOutput | null;
|
|
10201
|
+
permissions: AgentConfigPermissions;
|
|
10202
|
+
skills: AgentConfigSkill[];
|
|
10203
|
+
trigger: (AgentConfigCronTrigger | AgentConfigReactTrigger | AgentConfigMentionTrigger) | null;
|
|
10204
|
+
}
|
|
10205
|
+
interface AgentConfigBudget {
|
|
10206
|
+
day: number | null;
|
|
10207
|
+
month: number | null;
|
|
10208
|
+
session: number | null;
|
|
10209
|
+
week: number | null;
|
|
10210
|
+
}
|
|
10211
|
+
interface AgentConfigClaude {
|
|
10212
|
+
effort: EffortLevel | null;
|
|
10213
|
+
fallback_model: string | null;
|
|
10214
|
+
max_turns: number | null;
|
|
10215
|
+
model: string;
|
|
10216
|
+
settings: AgentConfigSettingsRef | null;
|
|
10217
|
+
system: string | AgentConfigSystemFileRef | (string | AgentConfigSystemFileRef)[];
|
|
10218
|
+
}
|
|
10219
|
+
/**
|
|
10220
|
+
* A config-declared Claude Code settings.json, resolved at run start and
|
|
10221
|
+
* passed to `claude --settings <path>`. That is the CLI settings tier — BELOW
|
|
10222
|
+
* Ellipsis's managed-settings.json floor — so it customizes behavior (model
|
|
10223
|
+
* permissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a
|
|
10224
|
+
* security setting. Lets a team point the cloud agent at the same settings file
|
|
10225
|
+
* they already use with Claude Code locally instead of re-encoding it as YAML.
|
|
10226
|
+
*/
|
|
10227
|
+
interface AgentConfigSettingsRef {
|
|
10228
|
+
path: string;
|
|
10229
|
+
repository: AgentConfigRepository | null;
|
|
10230
|
+
}
|
|
10231
|
+
interface AgentConfigRepository {
|
|
10232
|
+
name: string;
|
|
10233
|
+
owner: string | null;
|
|
10234
|
+
ref: string | null;
|
|
10235
|
+
}
|
|
10236
|
+
interface AgentConfigSystemFileRef {
|
|
10237
|
+
file: string;
|
|
10238
|
+
repository: AgentConfigRepository | null;
|
|
10239
|
+
}
|
|
10240
|
+
/**
|
|
10241
|
+
* The `codex:` block — run this agent on OpenAI's Codex CLI instead of
|
|
10242
|
+
* Claude Code. Declaring the block at all is what selects the harness
|
|
10243
|
+
* (`AgentConfig.harness`).
|
|
10244
|
+
*
|
|
10245
|
+
* Deliberately a small subset of `AgentConfigClaude`: the fields omitted here
|
|
10246
|
+
* are ones Codex has no equivalent for (`effort`, `fallback_model`,
|
|
10247
|
+
* `settings`) or that the platform does not yet wire through for this harness
|
|
10248
|
+
* (`max_turns`, `skills`, MCP servers). They are omitted rather than
|
|
10249
|
+
* accepted-and-ignored, because `StrictConfigModel` forbids extra keys — so a
|
|
10250
|
+
* config that sets one fails loudly at parse time instead of silently not doing
|
|
10251
|
+
* it. The budget still bounds a run regardless.
|
|
10252
|
+
*/
|
|
10253
|
+
interface AgentConfigCodex {
|
|
10254
|
+
model: string;
|
|
10255
|
+
system: string | AgentConfigSystemFileRef | (string | AgentConfigSystemFileRef)[];
|
|
10256
|
+
}
|
|
10257
|
+
/**
|
|
10258
|
+
* The Ellipsis product namespace for a config file: which schema this is
|
|
10259
|
+
* (`version`), the human-facing identity (`name`/`description`), freeform
|
|
10260
|
+
* organizational `metadata`, whether the agent is `enabled`, and the
|
|
10261
|
+
* human-access flag `interactive`. The presence of a top-level `ellipsis:`
|
|
10262
|
+
* mapping is what marks a YAML file as an Ellipsis agent config (vs arbitrary
|
|
10263
|
+
* YAML that merely lives under a config directory) — see
|
|
10264
|
+
* `yaml_is_ellipsis_config`.
|
|
10265
|
+
*
|
|
10266
|
+
* `enabled`/`interactive` are agent behavior, not freeform metadata, so they
|
|
10267
|
+
* stay inside the config `sha` (only `metadata` is sha-excluded).
|
|
10268
|
+
* `interactive` lets a human `agent session connect` to a live session (CLI
|
|
10269
|
+
* relay). It does not decide whether a session is ephemeral or durable — that
|
|
10270
|
+
* is the trigger's job.
|
|
10271
|
+
*/
|
|
10272
|
+
interface AgentConfigEllipsis {
|
|
10273
|
+
description: string | null;
|
|
10274
|
+
enabled: boolean;
|
|
10275
|
+
interactive: boolean;
|
|
10276
|
+
metadata: AgentConfigMetadata;
|
|
10277
|
+
name: string | null;
|
|
10278
|
+
version: string;
|
|
10279
|
+
}
|
|
10280
|
+
interface AgentConfigMetadata {
|
|
10281
|
+
annotations: {
|
|
10282
|
+
[k: string]: string;
|
|
10283
|
+
};
|
|
10284
|
+
labels: string[];
|
|
10285
|
+
}
|
|
10286
|
+
/**
|
|
10287
|
+
* Everything about the environment (the sandbox) the agent runs in: which
|
|
10288
|
+
* `repositories` are cloned into it, which environment `variables` it gets,
|
|
10289
|
+
* its `compute` sizing, how its `image` is customized, and lifecycle `hooks`.
|
|
10290
|
+
* What the agent may *do* from that environment is the top-level
|
|
10291
|
+
* `permissions:` block, not this one.
|
|
10292
|
+
*
|
|
10293
|
+
* Each `variables` entry names a variable to inject; with an inline `value` it
|
|
10294
|
+
* is hardcoded, without one it is resolved from the account's sandbox-secrets
|
|
10295
|
+
* store. Only the named variables reach this agent; the rest of the account's
|
|
10296
|
+
* stored variables never do. This is how a config brings in the config and
|
|
10297
|
+
* credentials a custom CLI needs.
|
|
10298
|
+
*/
|
|
10299
|
+
interface AgentConfigEnvironment {
|
|
10300
|
+
compute: AgentConfigCompute;
|
|
10301
|
+
hooks: AgentConfigEnvironmentHooks;
|
|
10302
|
+
image: AgentConfigEnvironmentImage;
|
|
10303
|
+
repositories: AgentConfigRepository[];
|
|
10304
|
+
variables: AgentConfigEnvironmentVariable[];
|
|
10305
|
+
}
|
|
10306
|
+
/**
|
|
10307
|
+
* Sandbox compute sizing. Every field is optional; None inherits the
|
|
10308
|
+
* platform default (1 vCPU / 4096 MiB / 3600s — see DEFAULT_MODAL_* in
|
|
10309
|
+
* models/ellipsis/sandboxes/sandbox.py). A resolved value outside the platform
|
|
10310
|
+
* bounds fails validation loudly (a sync error on the config) rather than
|
|
10311
|
+
* being clamped silently.
|
|
10312
|
+
*
|
|
10313
|
+
* `memory` and `timeout` each accept a shorthand string ("8GB", "30m") or an
|
|
10314
|
+
* explicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /
|
|
10315
|
+
* `timeout_seconds` properties resolve either form to the canonical integer
|
|
10316
|
+
* the sandbox driver consumes.
|
|
10317
|
+
*
|
|
10318
|
+
* `timeout` is the max wall-clock the agent may run before the sandbox is
|
|
10319
|
+
* killed, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS — equal to the default, so
|
|
10320
|
+
* today the knob only shortens a session; the cap matches the 1-hour validity
|
|
10321
|
+
* of the sandbox's GitHub token). The worker's lease/visibility heartbeat
|
|
10322
|
+
* ceiling is derived from that cap, so a run at the max stays owned by its
|
|
10323
|
+
* worker for its whole life.
|
|
10324
|
+
*
|
|
10325
|
+
* Compute is billed on the requested allocation over the sandbox's
|
|
10326
|
+
* wall-clock lifetime, so a bigger/longer box costs proportionally more.
|
|
10327
|
+
*/
|
|
10328
|
+
interface AgentConfigCompute {
|
|
10329
|
+
cpu: number | null;
|
|
10330
|
+
memory: string | AgentConfigMemorySize | null;
|
|
10331
|
+
timeout: string | AgentConfigDuration | null;
|
|
10332
|
+
}
|
|
10333
|
+
/**
|
|
10334
|
+
* A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).
|
|
10335
|
+
* Set any of `gb`/`mb` (at least one). The alternative to the `8GB`-style
|
|
10336
|
+
* shorthand string.
|
|
10337
|
+
*/
|
|
10338
|
+
interface AgentConfigMemorySize {
|
|
10339
|
+
gb: number | null;
|
|
10340
|
+
mb: number | null;
|
|
10341
|
+
}
|
|
10342
|
+
/**
|
|
10343
|
+
* A duration as explicit units, summed. Set any of `hours`/`minutes`/
|
|
10344
|
+
* `seconds` (at least one). The alternative to the `30m`-style shorthand
|
|
10345
|
+
* string wherever a duration is accepted.
|
|
10346
|
+
*/
|
|
10347
|
+
interface AgentConfigDuration {
|
|
10348
|
+
hours: number | null;
|
|
10349
|
+
minutes: number | null;
|
|
10350
|
+
seconds: number | null;
|
|
10351
|
+
}
|
|
10352
|
+
/**
|
|
10353
|
+
* Shell scripts run at points in the sandbox lifecycle, each as the sandbox
|
|
10354
|
+
* user with the sandbox's environment variables available. A non-zero exit
|
|
10355
|
+
* fails the run (exit_status = LIFECYCLE_HOOK_FAILED) and is not retried.
|
|
10356
|
+
*
|
|
10357
|
+
* `post_start` runs after the container starts, before any repo is cloned —
|
|
10358
|
+
* repo-independent setup (authenticate a CLI, e.g. `doppler setup`). On Modal
|
|
10359
|
+
* the repo is baked into the image so it is incidentally present, but
|
|
10360
|
+
* `post_start` must not depend on repo contents (that's `post_clone`).
|
|
10361
|
+
*
|
|
10362
|
+
* `post_clone` runs after all repos are cloned/checked out, before the agent —
|
|
10363
|
+
* repo-dependent setup (`pip install -r requirements.txt`, codegen).
|
|
10364
|
+
*
|
|
10365
|
+
* Hooks run on every run and their output is never cached. A dependency
|
|
10366
|
+
* install whose result should be reused across runs belongs in `image.setup`
|
|
10367
|
+
* (baked into the cached image) instead; keep hooks for per-run work — e.g.
|
|
10368
|
+
* anything that touches run-scoped credentials.
|
|
10369
|
+
*/
|
|
10370
|
+
interface AgentConfigEnvironmentHooks {
|
|
10371
|
+
post_clone: string | null;
|
|
10372
|
+
post_start: string | null;
|
|
10373
|
+
}
|
|
10374
|
+
/**
|
|
10375
|
+
* How to customize the container image the agent runs in. You
|
|
10376
|
+
* contribute appended layers (`dockerfile_append`) and a build-time script
|
|
10377
|
+
* (`setup`) only — Ellipsis owns FROM / base tooling / entrypoint / user.
|
|
10378
|
+
* Today only inline bodies are supported; a file reference (resolved at the
|
|
10379
|
+
* run's SHA) will come later.
|
|
10380
|
+
*
|
|
10381
|
+
* The split: `dockerfile_append` runs when the image is assembled, before any
|
|
10382
|
+
* repo exists — toolchain installs (a package manager binary, apt packages).
|
|
10383
|
+
* `setup` runs at image-build time *after* the configured repositories are
|
|
10384
|
+
* checked out, and its output is captured by the filesystem snapshot that
|
|
10385
|
+
* becomes the cached image — dependency installs (`poetry install`,
|
|
10386
|
+
* `npm install`), so later runs start with deps already on disk. Neither runs
|
|
10387
|
+
* per run; that's `hooks.post_start` / `hooks.post_clone`.
|
|
10388
|
+
*/
|
|
10389
|
+
interface AgentConfigEnvironmentImage {
|
|
10390
|
+
dockerfile_append: string | null;
|
|
10391
|
+
setup: string | null;
|
|
10392
|
+
}
|
|
10393
|
+
/**
|
|
10394
|
+
* One environment variable injected into the agent's sandbox.
|
|
10395
|
+
*
|
|
10396
|
+
* `value`, when set, is a literal injected as-is — use it for non-secret
|
|
10397
|
+
* config (LOG_LEVEL, an API base URL). When `value` is omitted the value is
|
|
10398
|
+
* resolved at run time from the account's sandbox-secrets store (dashboard
|
|
10399
|
+
* / `PUT /v1/secrets`) by `name`, so a secret can be injected without
|
|
10400
|
+
* ever putting it in the config file. Either way the variable only reaches
|
|
10401
|
+
* agents that name it.
|
|
10402
|
+
*/
|
|
10403
|
+
interface AgentConfigEnvironmentVariable {
|
|
10404
|
+
name: string;
|
|
10405
|
+
value: string | null;
|
|
10406
|
+
}
|
|
10407
|
+
/**
|
|
10408
|
+
* The typed input contract: what goes INTO a session (the trigger is
|
|
10409
|
+
* when it happens; this is what goes in).
|
|
10410
|
+
*
|
|
10411
|
+
* `json_schema` types the payload a caller-started session takes
|
|
10412
|
+
* (`POST /v1/sessions` `input`, validated at the door; required when
|
|
10413
|
+
* declared). It is illegal on a react-triggered agent — react payloads are
|
|
10414
|
+
* platform-shaped (the published surface field sets), not caller-shaped.
|
|
10415
|
+
*
|
|
10416
|
+
* `message` is the initial-message template: exact `{{path}}` substitution
|
|
10417
|
+
* over the caller payload (or, on a react agent, over the surface's
|
|
10418
|
+
* published fields), no conditionals/loops/filters. Refs are validated at
|
|
10419
|
+
* deploy time against the governing field set (see AgentConfig's
|
|
10420
|
+
* `_check_input`).
|
|
10421
|
+
*/
|
|
10422
|
+
interface AgentConfigInput {
|
|
10423
|
+
json_schema: {
|
|
10424
|
+
[k: string]: unknown;
|
|
10425
|
+
} | null;
|
|
10426
|
+
message: string | null;
|
|
10427
|
+
}
|
|
10428
|
+
/**
|
|
10429
|
+
* Where this agent's completions go.
|
|
10430
|
+
*
|
|
10431
|
+
* Defaults to Ellipsis's own LLM proxy (our Anthropic/Bedrock account, or the
|
|
10432
|
+
* account-wide BYO provider if one is enabled). Setting `proxy` to the id of a
|
|
10433
|
+
* proxy registered on the models settings page routes THIS agent's
|
|
10434
|
+
* completions through that gateway instead.
|
|
10435
|
+
*
|
|
10436
|
+
* Opt-in per agent by design: registering a proxy does not silently move any
|
|
10437
|
+
* existing agent's traffic. The id is account-scoped, so naming another
|
|
10438
|
+
* account's id is a terminal config error, not a route.
|
|
10439
|
+
*/
|
|
10440
|
+
interface AgentConfigLlm {
|
|
10441
|
+
proxy: string | null;
|
|
10442
|
+
}
|
|
10443
|
+
/**
|
|
10444
|
+
* One built-in MCP server this agent opts into by name (`linear`/`slack`).
|
|
10445
|
+
* This is a name reference over the connected built-in set, NOT a custom-server
|
|
10446
|
+
* definition — there is no command/url/headers shape (that was the old,
|
|
10447
|
+
* removed field, and Ellipsis does not support bring-your-own MCP servers).
|
|
10448
|
+
* It only matters when the named integration is set to `opt_in` inclusion; an
|
|
10449
|
+
* integration in the default `all_sessions` mode is added regardless.
|
|
10450
|
+
*/
|
|
10451
|
+
interface AgentConfigMcpServer {
|
|
10452
|
+
name: string;
|
|
10453
|
+
}
|
|
10454
|
+
/**
|
|
10455
|
+
* The typed output contract: the JSON Schema the agent must exit through
|
|
10456
|
+
* (the StructuredOutput exit tool). Read back via
|
|
10457
|
+
* GET /v1/sessions/{id}/output.
|
|
10458
|
+
*/
|
|
10459
|
+
interface AgentConfigOutput {
|
|
10460
|
+
json_schema: {
|
|
10461
|
+
[k: string]: unknown;
|
|
10462
|
+
};
|
|
10463
|
+
}
|
|
10464
|
+
/**
|
|
10465
|
+
* What the agent is allowed to touch, per credential the platform mints
|
|
10466
|
+
* into its sandbox. Distinct from `environment:`, which is where the agent
|
|
10467
|
+
* runs; this is what it may do from there.
|
|
10468
|
+
*
|
|
10469
|
+
* `ellipsis` scopes the sandbox's Ellipsis API token
|
|
10470
|
+
* (`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates
|
|
10471
|
+
* with). `true` / the string `all` (the default) grant the full sandbox
|
|
10472
|
+
* ceiling — everything a sandbox token can ever do. A map narrows it per
|
|
10473
|
+
* resource (see `AgentConfigEllipsisPermissions`); the minted token carries
|
|
10474
|
+
* the intersection, so a config can only ever reduce access. `false` fails
|
|
10475
|
+
* validation — an agent with no API token cannot report its own progress.
|
|
10476
|
+
*
|
|
10477
|
+
* `github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) —
|
|
10478
|
+
* see `AgentConfigGithubPermissions`. GitHub enforces it at mint time.
|
|
10479
|
+
*/
|
|
10480
|
+
interface AgentConfigPermissions {
|
|
10481
|
+
ellipsis: (true | 'all') | AgentConfigEllipsisPermissions;
|
|
10482
|
+
github: AgentConfigGithubPermissions;
|
|
10483
|
+
}
|
|
10484
|
+
/**
|
|
10485
|
+
* `permissions.ellipsis` as a map: resource → level | grant | list of
|
|
10486
|
+
* grants. Levels are hierarchical (read < write < delete), so `write`
|
|
10487
|
+
* includes `read`. An unlisted resource is denied. The whole block is
|
|
10488
|
+
* intersected with the platform's sandbox ceiling at token mint — it can
|
|
10489
|
+
* narrow what a sandbox token may do, never exceed it.
|
|
10490
|
+
*/
|
|
10491
|
+
interface AgentConfigEllipsisPermissions {
|
|
10492
|
+
[k: string]: Level | EllipsisGrant | (Level | EllipsisGrant)[];
|
|
10493
|
+
}
|
|
10494
|
+
/**
|
|
10495
|
+
* One grant entry: a level, optionally narrowed to instances whose
|
|
10496
|
+
* natural key (a file's name, a memory's path, a secret's name, a config's
|
|
10497
|
+
* name, a session's id) matches any of the `match` globs.
|
|
10498
|
+
*/
|
|
10499
|
+
interface EllipsisGrant {
|
|
10500
|
+
level: Level;
|
|
10501
|
+
match: string[] | null;
|
|
10502
|
+
}
|
|
10503
|
+
/**
|
|
10504
|
+
* The agent's GitHub access: the scope of the installation token minted for
|
|
10505
|
+
* its sandbox — the credential `git`, `gh`, and the GitHub MCP server
|
|
10506
|
+
* authenticate with.
|
|
10507
|
+
*
|
|
10508
|
+
* By default the token carries the installation's full permissions on all of
|
|
10509
|
+
* the installation's repositories. `permissions` narrows what it may do:
|
|
10510
|
+
* the string `read_only` grants read access to contents, issues, metadata and
|
|
10511
|
+
* pull requests; a map requests explicit levels per GitHub App permission
|
|
10512
|
+
* scope (e.g. `{contents: read, pull_requests: write}`) and may never exceed
|
|
10513
|
+
* what the installation granted. `repositories` scopes the token to exactly
|
|
10514
|
+
* the listed repos, by name (they must belong to the installation).
|
|
10515
|
+
*
|
|
10516
|
+
* Restriction is enforced by GitHub, not by Ellipsis: the token itself is
|
|
10517
|
+
* minted with the reduced scope, so nothing running in the sandbox can
|
|
10518
|
+
* exceed it.
|
|
10519
|
+
*/
|
|
10520
|
+
interface AgentConfigGithubPermissions {
|
|
10521
|
+
permissions: 'read_only' | {
|
|
10522
|
+
[k: string]: string;
|
|
10523
|
+
} | null;
|
|
10524
|
+
repositories: string[] | null;
|
|
10525
|
+
}
|
|
10526
|
+
/**
|
|
10527
|
+
* One config-declared Claude Code skill: a repository directory containing
|
|
10528
|
+
* a SKILL.md, resolved at run start and installed at the sandbox's personal
|
|
10529
|
+
* skill level (`~/.claude/skills/<basename(path)>/`). This is how a config
|
|
10530
|
+
* brings in skills its cloned repositories don't provide — cross-repo refs
|
|
10531
|
+
* (an org-wide skills repo), public third-party repos, and repo-less runs.
|
|
10532
|
+
* Skills under a cloned repo's own `.claude/skills/` load by themselves and
|
|
10533
|
+
* don't need an entry here.
|
|
10534
|
+
*/
|
|
10535
|
+
interface AgentConfigSkill {
|
|
10536
|
+
path: string;
|
|
10537
|
+
repository: AgentConfigRepository | null;
|
|
10538
|
+
}
|
|
10539
|
+
interface AgentConfigCronTrigger {
|
|
10540
|
+
schedule: string;
|
|
10541
|
+
type: 'cron';
|
|
10542
|
+
}
|
|
10543
|
+
interface AgentConfigReactTrigger {
|
|
10544
|
+
issue: ReactIssue | null;
|
|
10545
|
+
linear_issue: ReactLinearIssue | null;
|
|
10546
|
+
pull_request: ReactPullRequest | null;
|
|
10547
|
+
push: ReactPush | null;
|
|
10548
|
+
sentry: ReactSentry | null;
|
|
10549
|
+
slack_channel: ReactSlackChannel | null;
|
|
10550
|
+
type: 'react';
|
|
10551
|
+
}
|
|
10552
|
+
interface ReactIssue {
|
|
10553
|
+
for: GithubAccountSelector;
|
|
10554
|
+
labels: string[];
|
|
10555
|
+
on: IssueAction[];
|
|
10556
|
+
repositories: RepositoryFilter;
|
|
10557
|
+
}
|
|
10558
|
+
/**
|
|
10559
|
+
* A selector of GitHub accounts — the `for:` audience gate on react
|
|
10560
|
+
* surfaces and code review pipelines, classified on the stable entity author
|
|
10561
|
+
* (the pusher for `push`, the PR author for a review). `users` selects human
|
|
10562
|
+
* accounts, `bots` selects bot accounts; each is a `GithubAccountFilter`
|
|
10563
|
+
* (include minus exclude, with bare bool/list shorthand).
|
|
10564
|
+
*/
|
|
10565
|
+
interface GithubAccountSelector {
|
|
10566
|
+
bots: GithubAccountFilter;
|
|
10567
|
+
users: GithubAccountFilter;
|
|
10568
|
+
}
|
|
10569
|
+
interface ReactLinearIssue {
|
|
10570
|
+
for: GithubAccountSelector;
|
|
10571
|
+
on: LinearIssueAction[];
|
|
10572
|
+
}
|
|
10573
|
+
interface ReactPullRequest {
|
|
10574
|
+
base: string[];
|
|
10575
|
+
draft: boolean | null;
|
|
10576
|
+
for: GithubAccountSelector;
|
|
10577
|
+
head: string[];
|
|
10578
|
+
labels: string[];
|
|
10579
|
+
on: PullRequestAction[];
|
|
10580
|
+
paths: string[];
|
|
10581
|
+
repositories: RepositoryFilter;
|
|
10582
|
+
}
|
|
10583
|
+
interface ReactPush {
|
|
10584
|
+
branch: string[];
|
|
10585
|
+
for: GithubAccountSelector;
|
|
10586
|
+
paths: string[];
|
|
10587
|
+
repositories: RepositoryFilter;
|
|
10588
|
+
}
|
|
10589
|
+
interface ReactSentry {
|
|
10590
|
+
on: SentryAction[];
|
|
10591
|
+
projects: string[];
|
|
10592
|
+
}
|
|
10593
|
+
interface ReactSlackChannel {
|
|
10594
|
+
}
|
|
10595
|
+
interface AgentConfigMentionTrigger {
|
|
10596
|
+
platforms: AgentConfigMentionPlatform[];
|
|
10597
|
+
type: 'mention';
|
|
10598
|
+
}
|
|
10376
10599
|
/**
|
|
10377
10600
|
* The principal this session is attributed to.
|
|
10378
10601
|
*/
|
|
@@ -10494,7 +10717,21 @@ interface SessionStopped {
|
|
|
10494
10717
|
by_user: GithubAccountSnippet | null;
|
|
10495
10718
|
}
|
|
10496
10719
|
/**
|
|
10497
|
-
*
|
|
10720
|
+
* A live one-line summary of what the session is working on, refreshed
|
|
10721
|
+
* every few steps while it runs.
|
|
10722
|
+
*/
|
|
10723
|
+
interface SessionSummary {
|
|
10724
|
+
/**
|
|
10725
|
+
* When this summary line was generated. Null on summaries written before generation time was tracked.
|
|
10726
|
+
*/
|
|
10727
|
+
created_at: string | null;
|
|
10728
|
+
/**
|
|
10729
|
+
* One-line description of what the session is working on.
|
|
10730
|
+
*/
|
|
10731
|
+
description: string;
|
|
10732
|
+
}
|
|
10733
|
+
/**
|
|
10734
|
+
* The three fields we expose.
|
|
10498
10735
|
*
|
|
10499
10736
|
* `use_enum_values=True` (from CustomBaseModel) stores the members as their
|
|
10500
10737
|
* string values, so this serializes to `{"session": "alive", "run": "waiting",
|
|
@@ -10651,12 +10888,9 @@ interface SessionFrame {
|
|
|
10651
10888
|
* The session's current state.
|
|
10652
10889
|
*/
|
|
10653
10890
|
interface Session1 {
|
|
10891
|
+
agent: SessionAgent;
|
|
10654
10892
|
attribution: SessionAttribution;
|
|
10655
10893
|
budget: SessionBudget;
|
|
10656
|
-
/**
|
|
10657
|
-
* Identifier of the saved agent config the session ran on, if any.
|
|
10658
|
-
*/
|
|
10659
|
-
config_id: string | null;
|
|
10660
10894
|
/**
|
|
10661
10895
|
* The "owner/name" repository context the session was started in, if any.
|
|
10662
10896
|
*/
|
|
@@ -10666,10 +10900,6 @@ interface Session1 {
|
|
|
10666
10900
|
* When the session was created.
|
|
10667
10901
|
*/
|
|
10668
10902
|
created_at: string;
|
|
10669
|
-
/**
|
|
10670
|
-
* How the session's config was resolved from the account's defaults, when no explicit config was given.
|
|
10671
|
-
*/
|
|
10672
|
-
default_resolution: DefaultResolution | null;
|
|
10673
10903
|
/**
|
|
10674
10904
|
* How the session ended; null until it is terminal.
|
|
10675
10905
|
*/
|
|
@@ -10687,10 +10917,6 @@ interface Session1 {
|
|
|
10687
10917
|
* When the session last received a message.
|
|
10688
10918
|
*/
|
|
10689
10919
|
last_message_at: string | null;
|
|
10690
|
-
/**
|
|
10691
|
-
* A live summary of the session's progress while it runs.
|
|
10692
|
-
*/
|
|
10693
|
-
live_summary: string | null;
|
|
10694
10920
|
/**
|
|
10695
10921
|
* Caller-supplied metadata key-value pairs.
|
|
10696
10922
|
*/
|
|
@@ -10719,7 +10945,11 @@ interface Session1 {
|
|
|
10719
10945
|
status_reason: string | null;
|
|
10720
10946
|
stopped: SessionStopped;
|
|
10721
10947
|
/**
|
|
10722
|
-
* The
|
|
10948
|
+
* The latest live summary of the session's progress while it runs, and when it was generated.
|
|
10949
|
+
*/
|
|
10950
|
+
summary: SessionSummary | null;
|
|
10951
|
+
/**
|
|
10952
|
+
* The public status projection; null on list/search responses, which do not derive it.
|
|
10723
10953
|
*/
|
|
10724
10954
|
surface: SessionSurface | null;
|
|
10725
10955
|
tokens: SessionTokens;
|
|
@@ -10807,4 +11037,4 @@ type ReviewRequester = components['schemas']['ReviewRequester'];
|
|
|
10807
11037
|
type ReviewFinding = components['schemas']['ReviewFinding'];
|
|
10808
11038
|
type Finding = ReviewFinding;
|
|
10809
11039
|
|
|
10810
|
-
export type {
|
|
11040
|
+
export type { AgentConfigSource as A, BudgetSource as B, CreateReviewRequest as C, DeltaFrame as D, ErrorFrame as E, Finding as F, GithubAccountSnippet as G, Harness as H, SessionPr as I, SessionPrompting as J, SessionRecord as K, SessionRecordsListResponse as L, SessionResponse as M, SessionSource as N, SessionState as O, ParentKind as P, SessionStatus as Q, RecordsAppendFrame as R, SendSessionMessageRequest as S, SessionStreamFrame as T, SessionSurface as U, SessionsListResponse as V, SnapshotFrame as W, StreamFrame as X, TokensInfo as Y, paths as Z, AttributionType as a, DoneFrame as b, components as c, GithubAccountType as d, HeartbeatFrame as e, PromptBlockedReason as f, ResolvedReviewScope as g, Review as h, ReviewConfiguration as i, ReviewCounters as j, ReviewFinding as k, ReviewRequester as l, ReviewScope as m, ReviewScopeKind as n, ReviewStage as o, ReviewedCommit as p, ReviewsListResponse as q, Session as r, SessionExecution as s, SessionExecutionsListResponse as t, SessionExitStatus as u, SessionFrame as v, SessionLiveness as w, SessionMessage as x, SessionMessageResponse as y, SessionMessageStatus as z };
|