@ellipsis-dev/sdk 0.27.0 → 0.30.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 CHANGED
@@ -1,5 +1,1241 @@
1
- import { c as components } from './types-ClEF_IA9.js';
2
- export { A as AttributionType, B as BudgetSource, C as ClaudeSessionRecord, a as CodexEvent, b as CodexItem, d as CodexSessionRecord, e as CreateReviewRequest, D as DeltaFrame, f as DoneFrame, E as ErrorFrame, F as Finding, G as GithubAccountSnippet, g as GithubAccountType, H as Harness, h as HeartbeatFrame, L as LifecycleSessionRecord, P as ParentKind, i as PromptBlockedReason, R as RecordsAppendFrame, j as ResolvedReviewScope, k as Review, l as ReviewConfiguration, m as ReviewCounters, n as ReviewFinding, o as ReviewRequester, p as ReviewScope, q as ReviewScopeKind, r as ReviewStage, s as ReviewedCommit, t as ReviewsListResponse, S as SdkAssistantRecord, u as SdkContentBlock, v as SdkRateLimitRecord, w as SdkRecord, x as SdkResultRecord, y as SdkSystemRecord, z as SdkUserRecord, I as SendSessionMessageRequest, J as Session, K as SessionExitStatus, M as SessionFrame, N as SessionGit, O as SessionLiveness, Q as SessionMessage, T as SessionMessageResponse, U as SessionMessageStatus, V as SessionPrompting, W as SessionRecord, X as SessionRecordsListResponse, Y as SessionResponse, Z as SessionSource, _ as SessionState, $ as SessionStatus, a0 as SessionStreamFrame, a1 as SessionSurface, a2 as SessionsListResponse, a3 as SnapshotFrame, a4 as StreamFrame, a5 as TokensInfo, a6 as paths } from './types-ClEF_IA9.js';
1
+ import { c as components } from './types-DrPhhfOb.js';
2
+ export { A as AgentConfig, a as AgentIdentity, b as AttributionType, B as BudgetConfig, C as ClaudeAssistantEvent, d as ClaudeAssistantMessage, e as ClaudeConfig, f as ClaudeConversationResetEvent, g as ClaudeNativeEvent, h as ClaudeNativeSessionRecord, i as ClaudeNativeUsage, j as ClaudeRateLimitEvent, k as ClaudeRateLimitInfo, l as ClaudeResultEvent, m as ClaudeSessionRecord, n as ClaudeSystemEvent, o as ClaudeUserEvent, p as ClaudeUserMessage, q as CodexAgentMessage, r as CodexAgentMessageItem, s as CodexAppServerError, t as CodexAppServerEvent, u as CodexAppServerItem, v as CodexAppServerNotification, w as CodexAppServerSessionRecord, x as CodexCommandExecution, y as CodexCommandExecutionItem, z as CodexConfig, D as CodexContextCompaction, E as CodexEffortLevel, F as CodexErrorEvent, G as CodexErrorItem, H as CodexErrorParams, I as CodexEvent, J as CodexFileChange, K as CodexFileChangeItem, L as CodexFileUpdate, M as CodexItem, N as CodexItemCompleted, O as CodexItemCompletedEvent, P as CodexItemParams, Q as CodexItemStarted, R as CodexItemStartedEvent, S as CodexItemUpdatedEvent, T as CodexLocalImageInput, U as CodexMcpToolCall, V as CodexMcpToolCallAppContext, W as CodexMcpToolCallError, X as CodexMcpToolCallItem, Y as CodexMcpToolCallResult, Z as CodexPlan, _ as CodexReasoning, $ as CodexReasoningItem, a0 as CodexSessionRecord, a1 as CodexTextInput, a2 as CodexThread, a3 as CodexThreadStarted, a4 as CodexThreadStartedEvent, a5 as CodexThreadStartedParams, a6 as CodexThreadTokenUsage, a7 as CodexTodoListItem, a8 as CodexTokenUsageBreakdown, a9 as CodexTokenUsageParams, aa as CodexTokenUsageUpdated, ab as CodexTurn, ac as CodexTurnCompleted, ad as CodexTurnCompletedEvent, ae as CodexTurnError, af as CodexTurnFailedEvent, ag as CodexTurnParams, ah as CodexTurnStarted, ai as CodexTurnStartedEvent, aj as CodexUsage, ak as CodexUserInput, al as CodexUserMessage, am as CodexWebSearch, an as CodexWebSearchItem, ao as ComputeConfig, ap as ComputeConfig1, aq as ConfigMetadata, ar as ConversationState, as as CreateReviewRequest, at as CronTrigger, au as DeltaFrame, av as DoneFrame, aw as Duration, ax as EffortLevel, ay as EllipsisGrant, az as EllipsisPermissions, aA as EnvironmentBaseBuild, aB as EnvironmentConfig, aC as EnvironmentHooks, aD as EnvironmentHooks1, aE as EnvironmentScript, aF as EnvironmentSource, aG as EnvironmentVariable, aH as ErrorFrame, aI as ExecutionResult, aJ as Finding, aK as GithubAccountFilter, aL as GithubAccountSelector, aM as GithubAccountSnippet, aN as GithubAccountType, aO as GithubIssueEvent, aP as GithubPermissions, aQ as GithubPullRequestEvent, aR as GithubPushEvent, aS as HandlerService, aT as HeartbeatFrame, aU as InputContract, aV as IssueAction, aW as LegacyAssistantPayload, aX as LegacyNativeUsage, aY as LegacyResultPayload, aZ as Level, a_ as LifecycleSessionRecord, a$ as LinearIssueAction, b0 as LinearIssueEvent, b1 as McpRemoteServer, b2 as McpServerRef, b3 as McpStdioServer, b4 as MemorySize, b5 as MessageDeliveredPayload, b6 as MessageDeliveredRecord, b7 as MessageReceivedPayload, b8 as MessageReceivedRecord, b9 as MessageRequeuedPayload, ba as MessageRequeuedRecord, bb as OutboxCollectedPayload, bc as OutboxCollectedRecord, bd as OutputConfig, be as PermissionsConfig, bf as PermissionsConfig1, bg as PlatformSessionRecord, bh as PromptBlockedReason, bi as PullRequestAction, bj as ReactIssue, bk as ReactLinearIssue, bl as ReactPullRequest, bm as ReactPush, bn as ReactSentry, bo as ReactSlackChannel, bp as ReactTrigger, bq as RecordsAppendFrame, br as RepositoryFilter, bs as RepositoryRef, bt as ResolvedReviewScope, bu as Review, bv as ReviewConfiguration, bw as ReviewCounters, bx as ReviewFinding, by as ReviewRequester, bz as ReviewScope, bA as ReviewScopeKind, bB as ReviewStage, bC as ReviewedCommit, bD as ReviewsListResponse, bE as SandboxOutputPayload, bF as SandboxOutputRecord, bG as SandboxPhasePayload, bH as SandboxPhaseRecord, bI as SandboxReadyPayload, bJ as SandboxReadyRecord, bK as SandboxStartingPayload, bL as SandboxStartingRecord, bM as SdkAssistantRecord, bN as SdkCacheCreation, bO as SdkContentBlock, bP as SdkRateLimitRecord, bQ as SdkRecord, bR as SdkResultRecord, bS as SdkServerToolResultBlock, bT as SdkServerToolUseBlock, bU as SdkSystemRecord, bV as SdkTextBlock, bW as SdkThinkingBlock, bX as SdkToolResultBlock, bY as SdkToolUseBlock, bZ as SdkUserRecord, b_ as SendSessionMessageRequest, b$ as SentryAction, c0 as SentryAlertEvent, c1 as Session, c2 as Session1, c3 as SessionAgent, c4 as SessionArchived, c5 as SessionAttribution, c6 as SessionCancelledPayload, c7 as SessionCancelledRecord, c8 as SessionClosedPayload, c9 as SessionClosedRecord, ca as SessionConfig, cb as SessionCost, cc as SessionEnvironment, cd as SessionEventActor, ce as SessionExecution, cf as SessionExecutionResult, cg as SessionExecutionsListResponse, ch as SessionExitStatus, ci as SessionFrame, cj as SessionGit, ck as SessionGitCommit, cl as SessionGitFile, cm as SessionGitPr, cn as SessionGitRepo, co as SessionHandler, cp as SessionIdlePayload, cq as SessionIdleRecord, cr as SessionLifecycle, cs as SessionLifecycleStatus, ct as SessionMessage, cu as SessionMessageImage, cv as SessionMessageResponse, cw as SessionMessageStatus, cx as SessionParent, cy as SessionPrompting, cz as SessionRecord, cA as SessionRecordsListResponse, cB as SessionResponse, cC as SessionResumedPayload, cD as SessionResumedRecord, cE as SessionRetryingPayload, cF as SessionRetryingRecord, cG as SessionScheduledPayload, cH as SessionScheduledRecord, cI as SessionSource, cJ as SessionStartingPayload, cK as SessionStartingRecord, cL as SessionStopped, cM as SessionStreamFrame, cN as SessionSummary, cO as SessionTimestamps, cP as SessionTokens, cQ as SessionsListResponse, cR as SettingsRef, cS as SkillRef, cT as SlackChannelCreatedEvent, cU as SlackMessageEvent, cV as SnapshotFrame, cW as StreamFrame, cX as TokensInfo, cY as TurnCompletedPayload, cZ as TurnCompletedRecord, c_ as TurnFailedPayload, c$ as TurnFailedRecord, d0 as TurnStartedPayload, d1 as TurnStartedRecord, d2 as UnknownSessionRecord, d3 as UpdateSessionRequest, d4 as paths } from './types-DrPhhfOb.js';
3
+
4
+ /**
5
+ * Frames on /v1/sessions/stream, /v1/agents/stream and /v1/vm-executions/{id}/stream. Ignore unknown frame types.
6
+ */
7
+ type CollectionStreamFrame = SessionListStreamMessage | AgentListStreamMessage | CollectionStreamHeartbeat | SandboxSnapshotFrame | SandboxUpdateFrame;
8
+ /**
9
+ * An agent session: one conversation with an agent, from trigger to
10
+ * terminal state. Returned by `GET /v1/sessions/{id}` and carried by the
11
+ * session stream's `session`/`snapshot` frames — REST and stream never
12
+ * disagree about what a session looks like.
13
+ */
14
+ type Session = {
15
+ /**
16
+ * The agent the session was started from, or null for a raw session started with POST /v1/sessions.
17
+ */
18
+ agent: SessionAgent | null;
19
+ attribution: SessionAttribution;
20
+ /**
21
+ * The spend budget enforced for this session, in US dollars, after resolving defaults and ceilings.
22
+ */
23
+ budget: number;
24
+ /**
25
+ * Claude Code input and native options. Set exactly one of claude_code or codex.
26
+ */
27
+ claude_code: ClaudeConfig | null;
28
+ /**
29
+ * Codex input and native options. Set exactly one of claude_code or codex.
30
+ */
31
+ codex: CodexConfig | null;
32
+ cost: SessionCost;
33
+ environment: SessionEnvironment;
34
+ /**
35
+ * The typed external event that started the session; null for direct and scheduled starts.
36
+ */
37
+ event: (GithubPullRequestEvent | GithubIssueEvent | GithubPushEvent | LinearIssueEvent | SlackMessageEvent | SlackChannelCreatedEvent | SentryAlertEvent) | null;
38
+ /**
39
+ * What the session did to git, one entry per repository in its workspace: the commit and branch it sits on, per-file line counts for its uncommitted changes, and the pull requests it opened. Null if nothing was ever captured.
40
+ */
41
+ git: SessionGit | null;
42
+ /**
43
+ * The saved handler and its effective display name when this session started, frozen at creation. Null for built-in responders, legacy sessions, and sessions started without a handler.
44
+ */
45
+ handler: SessionHandler | null;
46
+ /**
47
+ * Unique identifier of the session.
48
+ */
49
+ id: string;
50
+ lifecycle: SessionLifecycle;
51
+ /**
52
+ * Caller-supplied metadata key-value pairs.
53
+ */
54
+ metadata: {
55
+ [k: string]: string;
56
+ };
57
+ /**
58
+ * The structured-output exit contract for this session.
59
+ */
60
+ output: OutputConfig | null;
61
+ /**
62
+ * The predecessor session this session continues; null when there is none.
63
+ */
64
+ parent: SessionParent | null;
65
+ permissions: PermissionsConfig1;
66
+ /**
67
+ * Skills installed for this session.
68
+ */
69
+ skills: SkillRef[];
70
+ source: SessionSource;
71
+ /**
72
+ * The latest live summary of the session's progress while it runs, and when it was generated.
73
+ */
74
+ summary: SessionSummary | null;
75
+ tokens: SessionTokens;
76
+ } & ({
77
+ claude_code: {
78
+ [k: string]: unknown;
79
+ };
80
+ codex: null;
81
+ } | {
82
+ claude_code: null;
83
+ codex: {
84
+ [k: string]: unknown;
85
+ };
86
+ });
87
+ /**
88
+ * What one session runs on: its selected harness, where it runs, what it
89
+ * may touch, its skills, its exit contract, and its spend cap. Every session
90
+ * freezes one of these (`sessions.session_config`); an agent
91
+ * carries one under `session:` (`AgentConfig.session`); and
92
+ * `POST /v1/sessions` is this shape flattened onto the request body, plus the
93
+ * run settings. Nothing in here is an agent's identity or trigger —
94
+ * those belong to `AgentConfig`.
95
+ *
96
+ * Field order is the canonical key order for `session:` blocks and YAML
97
+ * exports: what runs (`claude_code` or `codex`), where (`environment`), what it may
98
+ * touch (`permissions`), then the rest.
99
+ */
100
+ type SessionConfig = {
101
+ budget: BudgetConfig;
102
+ /**
103
+ * Claude Code input and native options. Set exactly one of claude_code or codex.
104
+ */
105
+ claude_code: ClaudeConfig | null;
106
+ /**
107
+ * Codex input and native options. Set exactly one of claude_code or codex.
108
+ */
109
+ codex: CodexConfig | null;
110
+ environment: string | EnvironmentConfig;
111
+ output: OutputConfig | null;
112
+ permissions: PermissionsConfig;
113
+ skills: SkillRef[];
114
+ } & ({
115
+ claude_code: {
116
+ [k: string]: unknown;
117
+ };
118
+ codex: null;
119
+ } | {
120
+ claude_code: null;
121
+ codex: {
122
+ [k: string]: unknown;
123
+ };
124
+ });
125
+ type EffortLevel = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
126
+ type CodexEffortLevel = 'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
127
+ /**
128
+ * What may be done to a resource. Strictly ordered: a grant at one level
129
+ * includes every level below it (write-only would be a phantom capability —
130
+ * no real client can create what it cannot read back).
131
+ */
132
+ type Level = 'read' | 'write' | 'delete';
133
+ type GithubAccountFilter = {
134
+ exclude: string[];
135
+ include: string[] | boolean;
136
+ } | boolean | string[];
137
+ type IssueAction = 'opened' | 'closed' | 'commented';
138
+ type RepositoryFilter = {
139
+ exclude: string[];
140
+ include: string[];
141
+ } | string[];
142
+ type LinearIssueAction = 'opened';
143
+ type PullRequestAction = 'opened' | 'pushed' | 'merged' | 'closed' | 'review_submitted' | 'commented';
144
+ type SentryAction = 'issue_alert' | 'metric_alert';
145
+ type AttributionType = 'github_user' | 'linear_user' | 'slack_user' | 'api_key';
146
+ type GithubAccountType = 'User' | 'Organization' | 'Bot' | 'Mannequin';
147
+ /**
148
+ * How a session's environment was chosen. None (the field is nullable)
149
+ * when the config carried an inline environment block and no resolution ran —
150
+ * an inline environment is not a reference, so there is nothing to record.
151
+ *
152
+ * Not derivable from the row: `environment_id` says WHICH environment, not
153
+ * how it was chosen, and is null for the built-in basic sandbox.
154
+ */
155
+ type EnvironmentSource = 'request' | 'agent' | 'repo_default' | 'account_default' | 'platform_default';
156
+ /**
157
+ * The service the handler responds to.
158
+ */
159
+ type HandlerService = 'slack' | 'github' | 'linear' | 'sentry';
160
+ /**
161
+ * Whether the conversation is open or permanently closed. Open does not imply direct messages are permitted.
162
+ */
163
+ type ConversationState = 'open' | 'closed';
164
+ /**
165
+ * Why the last execution ended; completed also includes parking an open conversation.
166
+ */
167
+ 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';
168
+ /**
169
+ * Why direct prompting is refused. Absent when prompting is allowed.
170
+ */
171
+ type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'harness_single_turn' | 'closed';
172
+ /**
173
+ * Canonical current activity. working means a turn is in progress; waiting means the worker is warm and awaiting input; idle means parked. A failed, stopped, or cancelled execution may leave an open conversation.
174
+ */
175
+ type SessionLifecycleStatus = 'scheduled' | 'starting' | 'working' | 'waiting' | 'retrying' | 'idle' | 'closed' | 'failed' | 'stopped' | 'cancelled';
176
+ /**
177
+ * Where the session came from (e.g. react, web, api, cli, mention, cron).
178
+ */
179
+ type SessionSource = 'react' | 'web' | 'api' | 'cli' | 'mention' | 'cron';
180
+ /**
181
+ * Which writer owns this agent. "github" agents are defined by a file in a repository and are changed by editing that file; "api" agents have no file and are changed through this API.
182
+ */
183
+ type ConfigManagedBy = 'github' | 'api';
184
+ /**
185
+ * Which image-cache tier a sandbox creation took — the customer-facing
186
+ * names for `create_sandbox_from_default`'s exact / latest / default tiers.
187
+ * Rides on `Sandbox.cache_tier` and the sandbox_ready lifecycle record.
188
+ */
189
+ type SandboxCacheTier = 'exact' | 'incremental' | 'full';
190
+ type SandboxSource = 'cli' | 'web_ui' | 'ingest_pull_request_job_run' | 'session' | 'image_refresh' | 'test' | 'script';
191
+ type SandboxStatus = 'scheduled' | 'building' | 'running' | 'released' | 'terminating' | 'terminated' | 'failed';
192
+ type SandboxType = 'claude_code';
193
+ interface SessionListStreamMessage {
194
+ session: Session;
195
+ type: 'session';
196
+ }
197
+ /**
198
+ * The agent this session was started from: the definition frozen
199
+ * when the session was created, and the saved agent it came from as it
200
+ * exists NOW. They diverge legitimately — a YAML edit after the session
201
+ * started leaves the pointer describing something the session never ran.
202
+ */
203
+ interface SessionAgent {
204
+ config: AgentConfig;
205
+ /**
206
+ * Identifier of the saved agent this session's snapshot was taken from. Null for a routing-file agent, a code-review stage agent, or the built-in mention agent, which have no saved agent behind them. Points at the agent as it exists now, which may have changed since.
207
+ */
208
+ id: string | null;
209
+ }
210
+ /**
211
+ * The agent definition the session was started from, frozen when the session was created.
212
+ */
213
+ interface AgentConfig {
214
+ ellipsis: AgentIdentity;
215
+ input: InputContract | null;
216
+ session: SessionConfig;
217
+ trigger: (CronTrigger | ReactTrigger) | null;
218
+ }
219
+ /**
220
+ * The Ellipsis product namespace for a config file: which schema this is
221
+ * (`version`), the human-facing identity (`name`/`description`), freeform
222
+ * organizational `metadata`, and whether the agent is `enabled`. The
223
+ * presence of a top-level `ellipsis:` mapping is what marks a YAML file as
224
+ * an Ellipsis agent (vs arbitrary YAML that merely lives under a
225
+ * config directory) — see `yaml_is_ellipsis_config`.
226
+ *
227
+ * `enabled` is agent behavior, not freeform metadata, so it stays inside
228
+ * the config `sha` (only `metadata` is sha-excluded). Whether a session
229
+ * accepts messages is a per-run choice (POST /v1/sessions `interactive`),
230
+ * not a config one.
231
+ */
232
+ interface AgentIdentity {
233
+ description: string | null;
234
+ enabled: boolean;
235
+ kind: 'agent';
236
+ metadata: ConfigMetadata;
237
+ name: string | null;
238
+ version: string;
239
+ }
240
+ interface ConfigMetadata {
241
+ annotations: {
242
+ [k: string]: string;
243
+ };
244
+ labels: string[];
245
+ }
246
+ /**
247
+ * The typed input contract: what goes INTO a session (the trigger is
248
+ * when it happens; this is what goes in).
249
+ *
250
+ * `json_schema` validates customer data sent as `input` to
251
+ * `POST /v1/agents/{id}/sessions` and stored as `session.input`.
252
+ * Invocations require input when a schema is declared. React agents
253
+ * cannot declare schemas: the platform defines their event payloads.
254
+ *
255
+ * `message` is the initial-message template: exact `{{path}}` substitution
256
+ * over the caller payload (or, on a react agent, over the surface's
257
+ * published fields), no conditionals/loops/filters. Refs are validated at
258
+ * deploy time against the governing field set (see AgentConfig's
259
+ * `_check_input`).
260
+ */
261
+ interface InputContract {
262
+ json_schema: {
263
+ [k: string]: unknown;
264
+ } | null;
265
+ message: string | null;
266
+ }
267
+ interface BudgetConfig {
268
+ day: number | null;
269
+ month: number | null;
270
+ session: number | null;
271
+ week: number | null;
272
+ }
273
+ /**
274
+ * Native Claude Code options for an explicitly selected harness.
275
+ */
276
+ interface ClaudeConfig {
277
+ effort: EffortLevel | null;
278
+ fallback_model: string | null;
279
+ max_turns: number | null;
280
+ model: string | null;
281
+ /**
282
+ * The initial user message, passed verbatim. Omit to start an interactive session idle.
283
+ */
284
+ prompt: string | null;
285
+ settings: SettingsRef | null;
286
+ }
287
+ /**
288
+ * A config-declared Claude Code settings.json, resolved at run start and
289
+ * passed to `claude --settings <path>`. That is the CLI settings tier — BELOW
290
+ * Ellipsis's managed-settings.json floor — so it customizes behavior (model
291
+ * permissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a
292
+ * security setting. Lets a team point the cloud agent at the same settings file
293
+ * they already use with Claude Code locally instead of re-encoding it as YAML.
294
+ */
295
+ interface SettingsRef {
296
+ path: string;
297
+ repository: RepositoryRef | null;
298
+ }
299
+ interface RepositoryRef {
300
+ name: string;
301
+ owner: string | null;
302
+ ref: string | null;
303
+ }
304
+ /**
305
+ * Native options supported by the current Codex adapter.
306
+ *
307
+ * Options and capabilities expand only when their runtime behavior is tested.
308
+ * Unknown options are rejected instead of silently ignored.
309
+ */
310
+ interface CodexConfig {
311
+ /**
312
+ * Reasoning effort for every turn. Omit to use the model default.
313
+ */
314
+ effort: CodexEffortLevel | null;
315
+ model: string;
316
+ /**
317
+ * The initial user message, passed verbatim. Omit to start an interactive session idle.
318
+ */
319
+ prompt: string | null;
320
+ }
321
+ /**
322
+ * Everything about the environment (the sandbox) the agent runs in: which
323
+ * `repositories` are cloned into it, which environment `variables` it gets,
324
+ * its `compute` sizing, and lifecycle `hooks`.
325
+ * What the agent may *do* from that environment is the top-level
326
+ * `permissions:` block, not this one.
327
+ *
328
+ * Each `variables` entry names a variable to inject; with an inline `value` it
329
+ * is hardcoded, without one it is resolved from the account's sandbox-secrets
330
+ * store. Only the named variables reach this agent; the rest of the account's
331
+ * stored variables never do. This is how a config brings in the config and
332
+ * credentials a custom CLI needs.
333
+ */
334
+ interface EnvironmentConfig {
335
+ compute: ComputeConfig;
336
+ hooks: EnvironmentHooks;
337
+ mcp_servers: (string | McpServerRef | McpStdioServer | McpRemoteServer)[];
338
+ repositories: RepositoryRef[];
339
+ variables: EnvironmentVariable[];
340
+ }
341
+ /**
342
+ * Sandbox compute sizing. Every field is optional; None inherits the
343
+ * platform default (2 vCPU / 4096 MiB / 3600s — see DEFAULT_SANDBOX_* in
344
+ * models/ellipsis/vms/vm_execution.py). A resolved value outside the platform
345
+ * bounds fails validation loudly (a sync error on the config) rather than
346
+ * being clamped silently.
347
+ *
348
+ * `memory` and `timeout` each accept a shorthand string ("8GB", "30m") or an
349
+ * explicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /
350
+ * `timeout_seconds` properties resolve either form to the canonical integer
351
+ * the sandbox driver consumes.
352
+ *
353
+ * `timeout` is the max wall-clock the agent may run before its execution is
354
+ * stopped, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS — equal to the default, so
355
+ * today the knob only shortens a session; the cap matches the 1-hour validity
356
+ * of the sandbox's GitHub token). The worker's lease/visibility heartbeat
357
+ * ceiling is derived from that cap, so a run at the max stays owned by its
358
+ * worker for its whole life.
359
+ *
360
+ * Compute currently uses a temporary flat one-cent amount per allocated
361
+ * execution, subject to the account's existing free-compute exemptions.
362
+ */
363
+ interface ComputeConfig {
364
+ cpu: number | null;
365
+ memory: string | MemorySize | null;
366
+ timeout: string | Duration | null;
367
+ }
368
+ /**
369
+ * A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).
370
+ * Set any of `gb`/`mb` (at least one). The alternative to the `8GB`-style
371
+ * shorthand string.
372
+ */
373
+ interface MemorySize {
374
+ gb: number | null;
375
+ mb: number | null;
376
+ }
377
+ /**
378
+ * A duration as explicit units, summed. Set any of `hours`/`minutes`/
379
+ * `seconds` (at least one). The alternative to the `30m`-style shorthand
380
+ * string wherever a duration is accepted.
381
+ */
382
+ interface Duration {
383
+ hours: number | null;
384
+ minutes: number | null;
385
+ seconds: number | null;
386
+ }
387
+ /**
388
+ * Environment lifecycle scripts, in order: build_base, after_checkout,
389
+ * before_start. The first two produce reusable snapshots; before_start runs
390
+ * before an agent starts or resumes its session. Scripts run as the sandbox
391
+ * user in /sandbox. A nonzero exit fails the session.
392
+ *
393
+ * Legacy post_start/post_clone scripts remain supported for existing configs;
394
+ * both run after workspace preparation, before the agent starts or resumes.
395
+ * They cannot be combined with the new lifecycle fields.
396
+ */
397
+ interface EnvironmentHooks {
398
+ /**
399
+ * Prepare the requested source revision after Ellipsis checks out all repositories, before saving the prepared sandbox. Skipped when that prepared sandbox is reused.
400
+ */
401
+ after_checkout: EnvironmentScript | string | null;
402
+ /**
403
+ * Run before the agent starts or resumes a session, after the sandbox is ready. This hook is not cached and adds to session startup time.
404
+ */
405
+ before_start: EnvironmentScript | string | null;
406
+ /**
407
+ * Build a reusable environment before full checkout. Cached by declared inputs, script, toolchain, resources, and build configuration. A string is shorthand for run with all repositories as inputs.
408
+ */
409
+ build_base: EnvironmentBaseBuild | string | null;
410
+ /**
411
+ * Legacy session startup script. Use before_start for session setup or after_checkout for cached source preparation.
412
+ */
413
+ post_clone: string | null;
414
+ /**
415
+ * Legacy session startup script. Use before_start in new configurations.
416
+ */
417
+ post_start: string | null;
418
+ }
419
+ /**
420
+ * An inline shell script run as the sandbox user, with /sandbox as cwd.
421
+ */
422
+ interface EnvironmentScript {
423
+ /**
424
+ * Shell script to run in /sandbox.
425
+ */
426
+ run: string;
427
+ }
428
+ /**
429
+ * Create a reusable base, optionally using only selected repository files.
430
+ */
431
+ interface EnvironmentBaseBuild {
432
+ /**
433
+ * Exact files relative to /sandbox, including the repository name. Only these files are available during build_base and their contents and modes determine reuse. Omit to use all repositories and invalidate on any source change; [] means no repository files.
434
+ */
435
+ inputs: string[] | null;
436
+ /**
437
+ * Shell script to run in /sandbox.
438
+ */
439
+ run: string;
440
+ }
441
+ /**
442
+ * One built-in MCP server this agent opts into by name (`linear`/`slack`).
443
+ * A name reference over the connected built-in set — the platform manages the
444
+ * server's transport and credentials. It only matters when the named
445
+ * integration is set to `opt_in` inclusion; an integration in the default
446
+ * `all_sessions` mode is added regardless. For a server the platform does not
447
+ * provide, define it instead (`McpStdioServer` /
448
+ * `McpRemoteServer`).
449
+ */
450
+ interface McpServerRef {
451
+ name: string;
452
+ }
453
+ /**
454
+ * A bring-your-own stdio MCP server: the harness spawns `command` inside
455
+ * the sandbox and speaks JSON-RPC over its stdin/stdout. The command must be
456
+ * runnable in the sandbox image — install its runtime via `hooks.build_base` /
457
+ * `hooks.after_checkout` if the managed environment lacks it.
458
+ *
459
+ * `env` values may embed `${NAME}` references, resolved at run time from the
460
+ * account's secrets store (see `mcp_secret_refs`); everything else is passed
461
+ * literally.
462
+ */
463
+ interface McpStdioServer {
464
+ args: string[];
465
+ command: string;
466
+ env: {
467
+ [k: string]: string;
468
+ };
469
+ name: string;
470
+ }
471
+ /**
472
+ * A bring-your-own remote MCP server: the harness talks HTTP to `url`.
473
+ * Nothing runs in the sandbox image. `headers` carry static auth (e.g.
474
+ * `Authorization: Bearer ${TOKEN}`); values may embed `${NAME}` secret
475
+ * references, resolved at run time from the account's secrets store.
476
+ */
477
+ interface McpRemoteServer {
478
+ headers: {
479
+ [k: string]: string;
480
+ };
481
+ name: string;
482
+ url: string;
483
+ }
484
+ /**
485
+ * One environment variable injected into the agent's sandbox.
486
+ *
487
+ * `value`, when set, is a literal injected as-is — use it for non-secret
488
+ * config (LOG_LEVEL, an API base URL). When `value` is omitted the value is
489
+ * resolved at run time from the account's sandbox-secrets store (dashboard
490
+ * / `PUT /v1/secrets`) by `name`, so a secret can be injected without
491
+ * ever putting it in the config file. Either way the variable only reaches
492
+ * agents that name it.
493
+ */
494
+ interface EnvironmentVariable {
495
+ name: string;
496
+ value: string | null;
497
+ }
498
+ /**
499
+ * JSON Schema for the harness's structured result, when certified.
500
+ */
501
+ interface OutputConfig {
502
+ json_schema: {
503
+ [k: string]: unknown;
504
+ };
505
+ }
506
+ /**
507
+ * What the agent is allowed to touch, per credential the platform mints
508
+ * into its sandbox. Distinct from `environment:`, which is where the agent
509
+ * runs; this is what it may do from there.
510
+ *
511
+ * `ellipsis` scopes the sandbox's Ellipsis API token
512
+ * (`ELLIPSIS_API_TOKEN`, what the in-sandbox `agent` CLI authenticates
513
+ * with). `true` / the string `all` (the default) grant the full sandbox
514
+ * ceiling — everything a sandbox token can ever do. A map narrows it per
515
+ * resource (see `EllipsisPermissions`); the minted token carries
516
+ * the intersection, so a config can only ever reduce access. `false` fails
517
+ * validation — an agent with no API token cannot report its own progress.
518
+ *
519
+ * `github` scopes the sandbox's GitHub installation token (`GH_TOKEN`) —
520
+ * see `GithubPermissions`. GitHub enforces it at mint time.
521
+ */
522
+ interface PermissionsConfig {
523
+ ellipsis: (true | 'all') | EllipsisPermissions;
524
+ github: GithubPermissions;
525
+ }
526
+ /**
527
+ * `permissions.ellipsis` as a map: resource → level | grant | list of
528
+ * grants. Levels are hierarchical (read < write < delete), so `write`
529
+ * includes `read`. An unlisted resource is denied. The whole block is
530
+ * intersected with the platform's sandbox ceiling at token mint — it can
531
+ * narrow what a sandbox token may do, never exceed it.
532
+ */
533
+ interface EllipsisPermissions {
534
+ [k: string]: Level | EllipsisGrant | (Level | EllipsisGrant)[];
535
+ }
536
+ /**
537
+ * One grant entry: a level, optionally narrowed to instances whose
538
+ * natural key (a file's name, a memory's path, a secret's name, a config's
539
+ * name, a session's id) matches any of the `match` globs.
540
+ */
541
+ interface EllipsisGrant {
542
+ level: Level;
543
+ match: string[] | null;
544
+ }
545
+ /**
546
+ * The agent's GitHub access: the scope of the installation token minted for
547
+ * its sandbox — the credential `git`, `gh`, and the GitHub MCP server
548
+ * authenticate with.
549
+ *
550
+ * By default the token carries the installation's full permissions on all of
551
+ * the installation's repositories. `permissions` narrows what it may do:
552
+ * the string `read_only` grants read access to contents, issues, metadata and
553
+ * pull requests; a map requests explicit levels per GitHub App permission
554
+ * scope (e.g. `{contents: read, pull_requests: write}`) and may never exceed
555
+ * what the installation granted. `repositories` scopes the token to exactly
556
+ * the listed repos, by name (they must belong to the installation).
557
+ *
558
+ * Restriction is enforced by GitHub, not by Ellipsis: the token itself is
559
+ * minted with the reduced scope, so nothing running in the sandbox can
560
+ * exceed it.
561
+ */
562
+ interface GithubPermissions {
563
+ permissions: 'read_only' | {
564
+ [k: string]: string;
565
+ } | null;
566
+ repositories: string[] | null;
567
+ }
568
+ /**
569
+ * A repository directory containing SKILL.md and supporting UTF-8 files.
570
+ * Resolved at run start and installed in the selected harness's skill directory.
571
+ * Explicit skill references require a model with the skills capability.
572
+ */
573
+ interface SkillRef {
574
+ path: string;
575
+ repository: RepositoryRef | null;
576
+ }
577
+ interface CronTrigger {
578
+ schedule: string;
579
+ type: 'cron';
580
+ }
581
+ interface ReactTrigger {
582
+ issue: ReactIssue | null;
583
+ linear_issue: ReactLinearIssue | null;
584
+ pull_request: ReactPullRequest | null;
585
+ push: ReactPush | null;
586
+ sentry: ReactSentry | null;
587
+ slack_channel: ReactSlackChannel | null;
588
+ type: 'react';
589
+ }
590
+ interface ReactIssue {
591
+ for: GithubAccountSelector;
592
+ labels: string[];
593
+ on: IssueAction[];
594
+ repositories: RepositoryFilter;
595
+ }
596
+ /**
597
+ * A selector of GitHub accounts — the `for:` audience gate on react
598
+ * surfaces and code review pipelines, classified on the stable entity author
599
+ * (the pusher for `push`, the PR author for a review). `users` selects human
600
+ * accounts, `bots` selects bot accounts; each is a `GithubAccountFilter`
601
+ * (include minus exclude, with bare bool/list shorthand).
602
+ */
603
+ interface GithubAccountSelector {
604
+ bots: GithubAccountFilter;
605
+ users: GithubAccountFilter;
606
+ }
607
+ interface ReactLinearIssue {
608
+ for: GithubAccountSelector;
609
+ on: LinearIssueAction[];
610
+ }
611
+ interface ReactPullRequest {
612
+ base: string[];
613
+ draft: boolean | null;
614
+ for: GithubAccountSelector;
615
+ head: string[];
616
+ labels: string[];
617
+ on: PullRequestAction[];
618
+ paths: string[];
619
+ repositories: RepositoryFilter;
620
+ }
621
+ interface ReactPush {
622
+ branch: string[];
623
+ for: GithubAccountSelector;
624
+ paths: string[];
625
+ repositories: RepositoryFilter;
626
+ }
627
+ interface ReactSentry {
628
+ on: SentryAction[];
629
+ projects: string[];
630
+ }
631
+ interface ReactSlackChannel {
632
+ }
633
+ /**
634
+ * The principal this session is attributed to.
635
+ */
636
+ interface SessionAttribution {
637
+ /**
638
+ * Identifier of the principal the session is attributed to.
639
+ */
640
+ id: string | null;
641
+ /**
642
+ * Kind of principal the session is attributed to (e.g. a GitHub user or an API key).
643
+ */
644
+ type: AttributionType | null;
645
+ /**
646
+ * The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user.
647
+ */
648
+ user: GithubAccountSnippet | null;
649
+ }
650
+ /**
651
+ * Sometimes the GitHub API returns a user of github (can include bots)
652
+ * using this snippet instead of the full GithubAccount model. One example,
653
+ * is when the API returns a pull request.
654
+ *
655
+ * This is the least amount of info we need to represent a GitHub account.
656
+ */
657
+ interface GithubAccountSnippet {
658
+ avatar_url: string;
659
+ id: number;
660
+ login: string;
661
+ type: GithubAccountType;
662
+ }
663
+ /**
664
+ * What the session cost, in millicents, broken down by leg and carrying its own total.
665
+ */
666
+ interface SessionCost {
667
+ /**
668
+ * Sandbox CPU spend in millicents.
669
+ */
670
+ cpu: number;
671
+ /**
672
+ * Platform fee in millicents.
673
+ */
674
+ fee: number;
675
+ /**
676
+ * LLM spend in millicents.
677
+ */
678
+ llm: number;
679
+ /**
680
+ * Sandbox memory spend in millicents.
681
+ */
682
+ memory: number;
683
+ /**
684
+ * The grand total in millicents: llm + cpu + memory + fee.
685
+ */
686
+ total: number;
687
+ }
688
+ /**
689
+ * The full environment configuration frozen when the session was created, with the saved environment's id and how it was chosen.
690
+ */
691
+ interface SessionEnvironment {
692
+ compute: ComputeConfig1;
693
+ hooks: EnvironmentHooks1;
694
+ /**
695
+ * Identifier of the saved environment the session's config resolved. Null for an inline environment block or the built-in basic sandbox.
696
+ */
697
+ id: string | null;
698
+ mcp_servers: (string | McpServerRef | McpStdioServer | McpRemoteServer)[];
699
+ repositories: RepositoryRef[];
700
+ /**
701
+ * How the environment was chosen (request, agent, platform_default; repo_default and account_default on sessions from before those ladders were removed). An inline request uses request; an inline environment declared in session configuration has no source.
702
+ */
703
+ source: EnvironmentSource | null;
704
+ variables: EnvironmentVariable[];
705
+ }
706
+ /**
707
+ * Sandbox compute sizing. Every field is optional; None inherits the
708
+ * platform default (2 vCPU / 4096 MiB / 3600s — see DEFAULT_SANDBOX_* in
709
+ * models/ellipsis/vms/vm_execution.py). A resolved value outside the platform
710
+ * bounds fails validation loudly (a sync error on the config) rather than
711
+ * being clamped silently.
712
+ *
713
+ * `memory` and `timeout` each accept a shorthand string ("8GB", "30m") or an
714
+ * explicit units object ({gb: 8}, {minutes: 30}); the `memory_mib` /
715
+ * `timeout_seconds` properties resolve either form to the canonical integer
716
+ * the sandbox driver consumes.
717
+ *
718
+ * `timeout` is the max wall-clock the agent may run before its execution is
719
+ * stopped, capped at 1h (MAX_SANDBOX_TIMEOUT_SECONDS — equal to the default, so
720
+ * today the knob only shortens a session; the cap matches the 1-hour validity
721
+ * of the sandbox's GitHub token). The worker's lease/visibility heartbeat
722
+ * ceiling is derived from that cap, so a run at the max stays owned by its
723
+ * worker for its whole life.
724
+ *
725
+ * Compute currently uses a temporary flat one-cent amount per allocated
726
+ * execution, subject to the account's existing free-compute exemptions.
727
+ */
728
+ interface ComputeConfig1 {
729
+ cpu: number | null;
730
+ memory: string | MemorySize | null;
731
+ timeout: string | Duration | null;
732
+ }
733
+ /**
734
+ * Environment lifecycle scripts, in order: build_base, after_checkout,
735
+ * before_start. The first two produce reusable snapshots; before_start runs
736
+ * before an agent starts or resumes its session. Scripts run as the sandbox
737
+ * user in /sandbox. A nonzero exit fails the session.
738
+ *
739
+ * Legacy post_start/post_clone scripts remain supported for existing configs;
740
+ * both run after workspace preparation, before the agent starts or resumes.
741
+ * They cannot be combined with the new lifecycle fields.
742
+ */
743
+ interface EnvironmentHooks1 {
744
+ /**
745
+ * Prepare the requested source revision after Ellipsis checks out all repositories, before saving the prepared sandbox. Skipped when that prepared sandbox is reused.
746
+ */
747
+ after_checkout: EnvironmentScript | string | null;
748
+ /**
749
+ * Run before the agent starts or resumes a session, after the sandbox is ready. This hook is not cached and adds to session startup time.
750
+ */
751
+ before_start: EnvironmentScript | string | null;
752
+ /**
753
+ * Build a reusable environment before full checkout. Cached by declared inputs, script, toolchain, resources, and build configuration. A string is shorthand for run with all repositories as inputs.
754
+ */
755
+ build_base: EnvironmentBaseBuild | string | null;
756
+ /**
757
+ * Legacy session startup script. Use before_start for session setup or after_checkout for cached source preparation.
758
+ */
759
+ post_clone: string | null;
760
+ /**
761
+ * Legacy session startup script. Use before_start in new configurations.
762
+ */
763
+ post_start: string | null;
764
+ }
765
+ interface GithubPullRequestEvent {
766
+ action: PullRequestAction | 'review_commented';
767
+ actor: SessionEventActor | null;
768
+ branch: string;
769
+ number: number;
770
+ repository: string;
771
+ title: string;
772
+ type: 'github.pull_request';
773
+ url: string;
774
+ }
775
+ /**
776
+ * The event's initiator, when known; never inferred from resource ownership.
777
+ */
778
+ interface SessionEventActor {
779
+ avatar_url: string | null;
780
+ is_bot: boolean | null;
781
+ name: string;
782
+ }
783
+ interface GithubIssueEvent {
784
+ action: IssueAction;
785
+ actor: SessionEventActor | null;
786
+ number: number;
787
+ repository: string;
788
+ title: string;
789
+ type: 'github.issue';
790
+ url: string;
791
+ }
792
+ interface GithubPushEvent {
793
+ actor: SessionEventActor | null;
794
+ after: string;
795
+ before: string;
796
+ branch: string;
797
+ repository: string;
798
+ type: 'github.push';
799
+ url: string;
800
+ }
801
+ interface LinearIssueEvent {
802
+ action: LinearIssueAction | 'commented';
803
+ actor: SessionEventActor | null;
804
+ identifier: string | null;
805
+ number: number;
806
+ title: string;
807
+ type: 'linear.issue';
808
+ url: string;
809
+ }
810
+ interface SlackMessageEvent {
811
+ action: 'message' | 'app_mention';
812
+ actor: SessionEventActor | null;
813
+ channel_id: string;
814
+ channel_name: string | null;
815
+ message_ts: string;
816
+ thread_ts: string | null;
817
+ type: 'slack.message';
818
+ url: string;
819
+ }
820
+ interface SlackChannelCreatedEvent {
821
+ actor: SessionEventActor | null;
822
+ channel_id: string;
823
+ channel_name: string | null;
824
+ type: 'slack.channel_created';
825
+ url: string;
826
+ }
827
+ interface SentryAlertEvent {
828
+ action: SentryAction;
829
+ actor: SessionEventActor | null;
830
+ organization_slug: string;
831
+ project_slug: string | null;
832
+ title: string | null;
833
+ type: 'sentry.alert';
834
+ url: string | null;
835
+ }
836
+ /**
837
+ * Every repo the session touched. Small enough to ride on `sessions`
838
+ * and be returned by every session read.
839
+ */
840
+ interface SessionGit {
841
+ repos: SessionGitRepo[];
842
+ }
843
+ /**
844
+ * One checkout in the session's sandbox and everything the session did to
845
+ * it, split by whether it survived the sandbox.
846
+ */
847
+ interface SessionGitRepo {
848
+ commits: SessionGitCommit[];
849
+ commits_total: number;
850
+ full_name: string;
851
+ local_commit: string | null;
852
+ local_uncommitted_files: SessionGitFile[];
853
+ prs: SessionGitPr[];
854
+ remote_branch: string | null;
855
+ remote_commit: string | null;
856
+ }
857
+ /**
858
+ * One commit the session created in this repo (everything past the
859
+ * provisioning checkout's sha), captured from the sandbox rather than the
860
+ * transcript so it stays correct through amends, rebases, and commits made by
861
+ * scripts. The repo is the parent object, so it is not repeated here.
862
+ */
863
+ interface SessionGitCommit {
864
+ committed_at: string;
865
+ pushed: boolean;
866
+ sha: string;
867
+ subject: string;
868
+ }
869
+ /**
870
+ * One file's uncommitted change, as `git diff HEAD --numstat` reports it
871
+ * (with intent-to-add, so a brand-new file still counts).
872
+ */
873
+ interface SessionGitFile {
874
+ additions: number;
875
+ deletions: number;
876
+ path: string;
877
+ status: string;
878
+ }
879
+ /**
880
+ * A pull request the session opened in this repo, written the moment the
881
+ * creating tool call's result lands (see extract_session_prs.PrCreateWatcher).
882
+ * Live PR state (open/merged/closed) is not stored — it lives on gh_prs,
883
+ * joined via `gh_pr_id` (GET /frontend/agents/sessions/{id}/git). The repo is
884
+ * the parent object, so it is not repeated here.
885
+ */
886
+ interface SessionGitPr {
887
+ gh_pr_id: number | null;
888
+ number: number;
889
+ title: string | null;
890
+ url: string;
891
+ }
892
+ /**
893
+ * The saved handler and its display name when the session started.
894
+ */
895
+ interface SessionHandler {
896
+ /**
897
+ * The handler's effective display name when the session started: ellipsis.name, or the service default (Slack, GitHub, Linear, or sentry).
898
+ */
899
+ agent_name: string;
900
+ /**
901
+ * Identifier of the saved handler.
902
+ */
903
+ id: string;
904
+ service: HandlerService;
905
+ /**
906
+ * Content fingerprint of the validated handler configuration used when the session started. This is not the Git commit SHA.
907
+ */
908
+ sha: string;
909
+ }
910
+ /**
911
+ * The session's activity, conversation state, messaging policy, outcomes, and timestamps.
912
+ */
913
+ interface SessionLifecycle {
914
+ /**
915
+ * When and by whom the session was archived; null when unarchived. Archiving does not stop or close a session.
916
+ */
917
+ archived: SessionArchived | null;
918
+ conversation: ConversationState;
919
+ /**
920
+ * Explanation of the current status, when applicable.
921
+ */
922
+ detail: string | null;
923
+ /**
924
+ * Whether the session stays open after its first turn.
925
+ */
926
+ interactive: boolean;
927
+ /**
928
+ * The last finished execution's outcome, retained across resumes; null until an outcome has been recorded.
929
+ */
930
+ last_execution_result: SessionExecutionResult | null;
931
+ prompting: SessionPrompting;
932
+ status: SessionLifecycleStatus;
933
+ /**
934
+ * When and by whom a stop was requested; null when no stop is pending for this execution.
935
+ */
936
+ stopped: SessionStopped | null;
937
+ timestamps: SessionTimestamps;
938
+ }
939
+ /**
940
+ * When the session was archived and the GitHub user who archived it.
941
+ */
942
+ interface SessionArchived {
943
+ /**
944
+ * When the session was archived.
945
+ */
946
+ at: string;
947
+ /**
948
+ * The GitHub user who archived the session; null if unknown or unavailable.
949
+ */
950
+ by: GithubAccountSnippet | null;
951
+ }
952
+ /**
953
+ * Outcome of the last finished execution, retained across subsequent resumes.
954
+ *
955
+ * An execution spans a start or resume through parking or termination, and may
956
+ * contain several turns. Admission failures also produce a result, even when
957
+ * provisioning never starts.
958
+ */
959
+ interface SessionExecutionResult {
960
+ completion_reason: SessionExitStatus;
961
+ /**
962
+ * Human-readable explanation of that outcome.
963
+ */
964
+ detail: string | null;
965
+ }
966
+ /**
967
+ * The session's policy for direct messages. Caller authorization and message validation are checked separately.
968
+ */
969
+ interface SessionPrompting {
970
+ blocked_reason: PromptBlockedReason | null;
971
+ detail: string | null;
972
+ enabled: boolean;
973
+ surface_name: string | null;
974
+ }
975
+ /**
976
+ * When a stop was requested and the GitHub user who requested it.
977
+ */
978
+ interface SessionStopped {
979
+ /**
980
+ * When a stop was requested.
981
+ */
982
+ at: string;
983
+ /**
984
+ * The GitHub user who stopped the session, resolved at read time. Null if the user is unknown or unavailable.
985
+ */
986
+ by: GithubAccountSnippet | null;
987
+ }
988
+ interface SessionTimestamps {
989
+ /**
990
+ * When the session was created.
991
+ */
992
+ created_at: string;
993
+ /**
994
+ * When the session last showed agent activity.
995
+ */
996
+ last_activity_at: string | null;
997
+ /**
998
+ * When the session last received a message.
999
+ */
1000
+ last_message_at: string | null;
1001
+ /**
1002
+ * When the session was last updated.
1003
+ */
1004
+ updated_at: string;
1005
+ }
1006
+ /**
1007
+ * The predecessor session this session continues.
1008
+ */
1009
+ interface SessionParent {
1010
+ /**
1011
+ * Identifier of the predecessor session this session continues, if any.
1012
+ */
1013
+ session_id: string | null;
1014
+ }
1015
+ /**
1016
+ * What the session may touch, per minted credential.
1017
+ */
1018
+ interface PermissionsConfig1 {
1019
+ ellipsis: (true | 'all') | EllipsisPermissions;
1020
+ github: GithubPermissions;
1021
+ }
1022
+ /**
1023
+ * A live one-line summary of what the session is working on, refreshed
1024
+ * every few steps while it runs.
1025
+ */
1026
+ interface SessionSummary {
1027
+ /**
1028
+ * When this summary line was generated. Null on summaries written before generation time was tracked.
1029
+ */
1030
+ created_at: string | null;
1031
+ /**
1032
+ * One-line description of what the session is working on.
1033
+ */
1034
+ description: string;
1035
+ }
1036
+ /**
1037
+ * The tokens the session spent and the model they went to. `total` includes the prompt-cache lanes.
1038
+ */
1039
+ interface SessionTokens {
1040
+ /**
1041
+ * Tokens written to the prompt cache.
1042
+ */
1043
+ cache_creation: number;
1044
+ /**
1045
+ * Tokens read from the prompt cache.
1046
+ */
1047
+ cache_read: number;
1048
+ /**
1049
+ * Input tokens used.
1050
+ */
1051
+ input: number;
1052
+ /**
1053
+ * The model the token counts are attributed to.
1054
+ */
1055
+ model: string;
1056
+ /**
1057
+ * Output tokens used.
1058
+ */
1059
+ output: number;
1060
+ /**
1061
+ * Total tokens consumed, INCLUDING the prompt-cache reads and writes — the same basis the token cost is priced on.
1062
+ */
1063
+ total: number;
1064
+ }
1065
+ interface AgentListStreamMessage {
1066
+ agents: Agent[];
1067
+ type: 'agents';
1068
+ }
1069
+ /**
1070
+ * An agent: a saved agent definition that runs on its trigger or
1071
+ * when invoked, plus where it syncs from and the state of that sync.
1072
+ */
1073
+ interface Agent {
1074
+ config: AgentConfig1;
1075
+ /**
1076
+ * When the agent was created.
1077
+ */
1078
+ created_at: string;
1079
+ /**
1080
+ * The raw ellipsis.name display text from the config file.
1081
+ */
1082
+ display_name: string | null;
1083
+ /**
1084
+ * The GitHub account that last edited the agent, when the edit came from a known user.
1085
+ */
1086
+ edited_by: GithubAccountSnippet | null;
1087
+ /**
1088
+ * Unique identifier of the agent.
1089
+ */
1090
+ id: string;
1091
+ /**
1092
+ * When that most recent session was created.
1093
+ */
1094
+ last_session_created_at: string | null;
1095
+ /**
1096
+ * The most recent session this agent started, or null if it has never run.
1097
+ */
1098
+ last_session_id: string | null;
1099
+ /**
1100
+ * The parse or validation error from the most recent sync attempt, or null when it succeeded. A non-null value means the agent is not running the YAML currently on the branch.
1101
+ */
1102
+ last_sync_error: string | null;
1103
+ /**
1104
+ * The last commit the agent was synced from.
1105
+ */
1106
+ last_synced_commit_sha: string | null;
1107
+ managed_by: ConfigManagedBy;
1108
+ /**
1109
+ * The agent's account-unique addressable name (a slug of its display name); usable anywhere an agent is referenced, interchangeably with the id.
1110
+ */
1111
+ name: string | null;
1112
+ /**
1113
+ * The open pull request that adds this agent's file. Non-null means the agent is not live yet: it starts running once the pull request merges and syncs.
1114
+ */
1115
+ pending_pull_request_url: string | null;
1116
+ /**
1117
+ * The definition's content identity: the version fingerprint frozen onto each session that runs it.
1118
+ */
1119
+ sha: string;
1120
+ /**
1121
+ * The repository, path, and branch the agent syncs from. Null only transiently, before the creating pull request's file lands on the branch.
1122
+ */
1123
+ source_details: GithubSourceDetails | null;
1124
+ /**
1125
+ * When the agent was last updated.
1126
+ */
1127
+ updated_at: string;
1128
+ }
1129
+ /**
1130
+ * The agent definition itself, in the same schema as its YAML file: identity, trigger, input contract, and the session block.
1131
+ */
1132
+ interface AgentConfig1 {
1133
+ ellipsis: AgentIdentity;
1134
+ input: InputContract | null;
1135
+ session: SessionConfig;
1136
+ trigger: (CronTrigger | ReactTrigger) | null;
1137
+ }
1138
+ /**
1139
+ * Identifies the file a GitHub-sourced agent is synced from.
1140
+ *
1141
+ * Keyed on the repository ID (not owner/name) so repository and org renames
1142
+ * don't orphan the config; resolve display names from gh_repositories at
1143
+ * read time.
1144
+ */
1145
+ interface GithubSourceDetails {
1146
+ branch: string;
1147
+ path: string;
1148
+ repo_id: number;
1149
+ }
1150
+ interface CollectionStreamHeartbeat {
1151
+ type: 'heartbeat';
1152
+ }
1153
+ interface SandboxSnapshotFrame {
1154
+ sandbox: VMExecutionResponse;
1155
+ type: 'snapshot';
1156
+ }
1157
+ interface VMExecutionResponse {
1158
+ cache_tier: SandboxCacheTier | null;
1159
+ cost_sandbox_cpu: number;
1160
+ cost_sandbox_memory: number;
1161
+ cpu: number;
1162
+ encrypted_ports: number[];
1163
+ environment_variable_keys: string[];
1164
+ failed_at: string | null;
1165
+ hooks: EnvironmentHooks2;
1166
+ id: string;
1167
+ memory_mib: number;
1168
+ phase_timings: {
1169
+ [k: string]: number;
1170
+ };
1171
+ post_clone: string | null;
1172
+ post_start: string | null;
1173
+ repositories: SandboxRepository[];
1174
+ running_at: string | null;
1175
+ scheduled_at: string;
1176
+ source: SandboxSource;
1177
+ source_session_id: string | null;
1178
+ status: SandboxStatus;
1179
+ terminated_at: string | null;
1180
+ terminating_at: string | null;
1181
+ timeout_seconds: number;
1182
+ tunnels: SandboxPort[];
1183
+ type: SandboxType;
1184
+ unencrypted_ports: number[];
1185
+ }
1186
+ /**
1187
+ * Environment lifecycle scripts, in order: build_base, after_checkout,
1188
+ * before_start. The first two produce reusable snapshots; before_start runs
1189
+ * before an agent starts or resumes its session. Scripts run as the sandbox
1190
+ * user in /sandbox. A nonzero exit fails the session.
1191
+ *
1192
+ * Legacy post_start/post_clone scripts remain supported for existing configs;
1193
+ * both run after workspace preparation, before the agent starts or resumes.
1194
+ * They cannot be combined with the new lifecycle fields.
1195
+ */
1196
+ interface EnvironmentHooks2 {
1197
+ /**
1198
+ * Prepare the requested source revision after Ellipsis checks out all repositories, before saving the prepared sandbox. Skipped when that prepared sandbox is reused.
1199
+ */
1200
+ after_checkout: EnvironmentScript | string | null;
1201
+ /**
1202
+ * Run before the agent starts or resumes a session, after the sandbox is ready. This hook is not cached and adds to session startup time.
1203
+ */
1204
+ before_start: EnvironmentScript | string | null;
1205
+ /**
1206
+ * Build a reusable environment before full checkout. Cached by declared inputs, script, toolchain, resources, and build configuration. A string is shorthand for run with all repositories as inputs.
1207
+ */
1208
+ build_base: EnvironmentBaseBuild | string | null;
1209
+ /**
1210
+ * Legacy session startup script. Use before_start for session setup or after_checkout for cached source preparation.
1211
+ */
1212
+ post_clone: string | null;
1213
+ /**
1214
+ * Legacy session startup script. Use before_start in new configurations.
1215
+ */
1216
+ post_start: string | null;
1217
+ }
1218
+ interface SandboxRepository {
1219
+ id: number;
1220
+ name: string;
1221
+ owner_id: number;
1222
+ owner_name: string;
1223
+ sha: string;
1224
+ }
1225
+ interface SandboxPort {
1226
+ port: number;
1227
+ tcp_host: string | null;
1228
+ tcp_port: number | null;
1229
+ tls_host: string;
1230
+ tls_port: number;
1231
+ tunnel_url: string;
1232
+ unencrypted_host: string | null;
1233
+ unencrypted_port: number | null;
1234
+ }
1235
+ interface SandboxUpdateFrame {
1236
+ sandbox: VMExecutionResponse;
1237
+ type: 'sandbox';
1238
+ }
3
1239
 
4
1240
  interface CursorResponse {
5
1241
  has_more: boolean;
@@ -31,46 +1267,798 @@ interface SessionsApi {
31
1267
  limit?: number;
32
1268
  }): Promise<unknown>;
33
1269
  }
34
- declare function isSettled(session: S$1['Session']): boolean;
35
- declare class SessionHandle {
36
- private readonly sessions;
37
- readonly id: string;
38
- session: S$1['Session'];
39
- constructor(sessions: SessionsApi, session: S$1['Session']);
40
- refresh(): Promise<S$1['Session']>;
41
- wait(options?: {
42
- timeoutMs?: number;
43
- pollIntervalMs?: number;
44
- }): Promise<S$1['Session']>;
45
- send(message: string, options?: {
46
- images?: S$1['ImageAttachment'][];
47
- idempotencyKey?: string;
48
- }): Promise<S$1['SessionMessage']>;
49
- stop(): Promise<S$1['Session']>;
1270
+ declare function isSettled(session: S$1['Session']): boolean;
1271
+ declare class SessionHandle {
1272
+ private readonly sessions;
1273
+ readonly id: string;
1274
+ session: S$1['Session'];
1275
+ constructor(sessions: SessionsApi, session: S$1['Session']);
1276
+ refresh(): Promise<S$1['Session']>;
1277
+ wait(options?: {
1278
+ timeoutMs?: number;
1279
+ pollIntervalMs?: number;
1280
+ }): Promise<S$1['Session']>;
1281
+ send(message: string, options?: {
1282
+ images?: S$1['ImageAttachment'][];
1283
+ idempotencyKey?: string;
1284
+ }): Promise<S$1['SessionMessage']>;
1285
+ stop(): Promise<S$1['Session']>;
1286
+ }
1287
+
1288
+ declare const DEFAULT_BASE_URL = "https://api.ellipsis.dev";
1289
+ interface TransportOptions {
1290
+ apiKey: string;
1291
+ baseUrl?: string;
1292
+ timeoutMs?: number;
1293
+ maxRetries?: number;
1294
+ fetch?: typeof globalThis.fetch;
1295
+ }
1296
+ declare class Transport {
1297
+ private readonly baseUrl;
1298
+ private readonly headers;
1299
+ private readonly timeoutMs;
1300
+ private readonly maxRetries;
1301
+ private readonly fetchImpl;
1302
+ constructor(options: TransportOptions);
1303
+ request<T>(method: string, path: string, options?: {
1304
+ query?: string;
1305
+ body?: unknown;
1306
+ }): Promise<T>;
1307
+ }
1308
+
1309
+ type S = components['schemas'];
1310
+ declare class EllipsisAccountApiKeys {
1311
+ private readonly transport;
1312
+ constructor(transport: Transport);
1313
+ /**
1314
+ * Create Api Key
1315
+ *
1316
+ * Create an organization key. Requires a verified GitHub administrator.
1317
+ *
1318
+ * Authenticate as a dashboard user or with a user token. An organization
1319
+ * API key cannot create other keys. The secret is returned only once.
1320
+ *
1321
+ * Required permissions: write:tokens.
1322
+ * API key: Requires a CLI user token belonging to an account administrator.
1323
+ * CLI user token: Requires an account administrator.
1324
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1325
+ * Higher permission levels include lower levels: read < write < delete.
1326
+ */
1327
+ create(options: {
1328
+ name: string;
1329
+ }): Promise<S['CreateApiKeyResponse']>;
1330
+ /**
1331
+ * List Api Keys
1332
+ *
1333
+ * Required permissions: read:tokens.
1334
+ * API key: Supported.
1335
+ * CLI user token: Supported.
1336
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1337
+ * Higher permission levels include lower levels: read < write < delete.
1338
+ */
1339
+ list(): Promise<S['ListApiKeysResponse']>;
1340
+ /**
1341
+ * Revoke Api Key
1342
+ *
1343
+ * Revoke an organization key as a verified GitHub administrator.
1344
+ *
1345
+ * Required permissions: delete:tokens.
1346
+ * API key: Requires a CLI user token belonging to an account administrator.
1347
+ * CLI user token: Requires an account administrator.
1348
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1349
+ * Higher permission levels include lower levels: read < write < delete.
1350
+ */
1351
+ revoke(api_key_id: string): Promise<S['TokenRevokedResponse']>;
1352
+ }
1353
+ declare class EllipsisAccountBillingAutoRecharge {
1354
+ private readonly transport;
1355
+ constructor(transport: Transport);
1356
+ /**
1357
+ * Get Auto Recharge
1358
+ *
1359
+ * Get your automatic credit recharge settings.
1360
+ *
1361
+ * An account without saved settings returns disabled defaults and no
1362
+ * card. No payment-method identifier or card details are exposed.
1363
+ *
1364
+ * Required permissions: read:account.
1365
+ * API key: Supported.
1366
+ * CLI user token: Supported.
1367
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1368
+ * Higher permission levels include lower levels: read < write < delete.
1369
+ */
1370
+ get(): Promise<S['AutoRechargeSettings']>;
1371
+ /**
1372
+ * Update Auto Recharge
1373
+ *
1374
+ * Set your automatic credit recharge policy.
1375
+ *
1376
+ * Requires a human account administrator; API keys and sandbox tokens
1377
+ * cannot change this policy. Supply enabled explicitly. Saving amounts
1378
+ * with enabled=false keeps recharge off; enabling requires a saved card.
1379
+ * A recharge buys amount_cents of credit and charges the platform fee
1380
+ * in addition. Amounts and thresholds preserve exact cents.
1381
+ *
1382
+ * Required permissions: write:account.
1383
+ * API key: Requires a CLI user token belonging to an account administrator.
1384
+ * CLI user token: Requires an account administrator.
1385
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1386
+ * Higher permission levels include lower levels: read < write < delete.
1387
+ */
1388
+ set(options: {
1389
+ amount_cents: number;
1390
+ enabled: boolean;
1391
+ threshold_cents: number;
1392
+ }): Promise<S['AutoRechargeSettings']>;
1393
+ }
1394
+ declare class EllipsisAccountBilling {
1395
+ private readonly transport;
1396
+ readonly autoRecharge: EllipsisAccountBillingAutoRecharge;
1397
+ constructor(transport: Transport);
1398
+ /**
1399
+ * Create Card Setup Session
1400
+ *
1401
+ * Save a card through Stripe's hosted setup flow.
1402
+ *
1403
+ * Requires a human account administrator. Open the returned URL to
1404
+ * finish setup and return to Billing. Saving a card does not enable
1405
+ * auto-recharge or buy credit.
1406
+ *
1407
+ * Required permissions: write:account.
1408
+ * API key: Requires a CLI user token belonging to an account administrator.
1409
+ * CLI user token: Requires an account administrator.
1410
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1411
+ * Higher permission levels include lower levels: read < write < delete.
1412
+ */
1413
+ cardSetup(): Promise<S['BillingCheckout']>;
1414
+ /**
1415
+ * Create Credit Checkout Session
1416
+ *
1417
+ * Buy prepaid credit through Stripe's hosted checkout.
1418
+ *
1419
+ * Requires a human account administrator. Open the returned URL to
1420
+ * complete payment. Credit is granted only after payment succeeds;
1421
+ * the platform fee is charged in addition to amount_cents. Returning
1422
+ * to Billing carries the checkout session ID for receipt lookup.
1423
+ *
1424
+ * Required permissions: write:account.
1425
+ * API key: Requires a CLI user token belonging to an account administrator.
1426
+ * CLI user token: Requires an account administrator.
1427
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1428
+ * Higher permission levels include lower levels: read < write < delete.
1429
+ */
1430
+ checkout(options: {
1431
+ amount_cents: number;
1432
+ }): Promise<S['BillingCheckout']>;
1433
+ /**
1434
+ * Claim Signup Credit
1435
+ *
1436
+ * The "Claim $100" button. Runs the same idempotent billing
1437
+ * bootstrap that otherwise fires lazily at the first session (Stripe
1438
+ * customer + usage subscription + the signup grant). A repeat call is
1439
+ * a no-op that returns the current state.
1440
+ *
1441
+ * Required permissions: write:account.
1442
+ * API key: Supported.
1443
+ * CLI user token: Supported.
1444
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1445
+ * Higher permission levels include lower levels: read < write < delete.
1446
+ */
1447
+ claimSignupCredit(): Promise<S['BillingStatus']>;
1448
+ /**
1449
+ * Get Fee Schedule
1450
+ *
1451
+ * Get the account's rate card, in US dollars.
1452
+ *
1453
+ * Required permissions: read:account.
1454
+ * API key: Supported.
1455
+ * CLI user token: Supported.
1456
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1457
+ * Higher permission levels include lower levels: read < write < delete.
1458
+ */
1459
+ feeSchedule(): Promise<S['FeeScheduleResponse']>;
1460
+ /**
1461
+ * List Credit Grants
1462
+ *
1463
+ * List your confirmed credit grants and reversals.
1464
+ *
1465
+ * Returns only your account's grants. The total is before usage;
1466
+ * /v1/account/budget reports the available balance.
1467
+ *
1468
+ * Required permissions: read:account.
1469
+ * API key: Supported.
1470
+ * CLI user token: Supported.
1471
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1472
+ * Higher permission levels include lower levels: read < write < delete.
1473
+ */
1474
+ grants(): Promise<S['CreditGrantsResponse']>;
1475
+ /**
1476
+ * Get Credit Purchase
1477
+ *
1478
+ * Read the amount collected for a credit purchase.
1479
+ *
1480
+ * The amount includes the platform fee and comes from Stripe. An
1481
+ * incomplete, missing, or other-account purchase returns 404.
1482
+ *
1483
+ * Required permissions: read:account.
1484
+ * API key: Supported.
1485
+ * CLI user token: Supported.
1486
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1487
+ * Higher permission levels include lower levels: read < write < delete.
1488
+ */
1489
+ purchase(checkout_id: string): Promise<S['CreditPurchaseReceipt']>;
1490
+ /**
1491
+ * Get Credit Purchase Options
1492
+ *
1493
+ * Get credit purchase bounds and the platform fee.
1494
+ *
1495
+ * All amounts are integer US cents. The fee is added to the credit
1496
+ * amount; it does not reduce the credit granted.
1497
+ *
1498
+ * Required permissions: read:account.
1499
+ * API key: Supported.
1500
+ * CLI user token: Supported.
1501
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1502
+ * Higher permission levels include lower levels: read < write < delete.
1503
+ */
1504
+ purchaseOptions(): Promise<S['CreditPurchaseOptions']>;
1505
+ /**
1506
+ * Get Account Billing
1507
+ *
1508
+ * Explain whether your account can start sessions.
1509
+ *
1510
+ * Uses the same account gate as session admission, including credit,
1511
+ * contact email, and personal Claude subscription eligibility. Scoped
1512
+ * spend limits are reported separately by /v1/account/budget.
1513
+ *
1514
+ * Required permissions: read:account.
1515
+ * API key: Supported.
1516
+ * CLI user token: Supported.
1517
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1518
+ * Higher permission levels include lower levels: read < write < delete.
1519
+ */
1520
+ status(): Promise<S['BillingStatus']>;
1521
+ }
1522
+ declare class EllipsisAccountModels {
1523
+ private readonly transport;
1524
+ constructor(transport: Transport);
1525
+ /**
1526
+ * List Account Models
1527
+ *
1528
+ * List selectable agent models.
1529
+ *
1530
+ * Grouped by manufacturer and model family, newest versions first
1531
+ * within each family, with the organization's default model
1532
+ * flagged (`is_default_agent_model`: the `default_model` of
1533
+ * `GET /v1/account/settings`).
1534
+ *
1535
+ * Reads the same registry as the dashboard's rate table, so a
1536
+ * client's model picker can never drift from what's offered. The
1537
+ * selectable set is global; only the flag is account-scoped.
1538
+ *
1539
+ * Required permissions: read:templates.
1540
+ * API key: Supported.
1541
+ * CLI user token: Supported.
1542
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1543
+ * Higher permission levels include lower levels: read < write < delete.
1544
+ */
1545
+ list(): Promise<S['ModelsListResponse']>;
1546
+ }
1547
+ declare class EllipsisAccountNotifications {
1548
+ private readonly transport;
1549
+ constructor(transport: Transport);
1550
+ /**
1551
+ * Send Test Notification Email
1552
+ *
1553
+ * Send the alert email template to one address with sample data,
1554
+ * so a typo'd finance alias is caught by a human instead of failing
1555
+ * silently when a real alert fires.
1556
+ *
1557
+ * Required permissions: write:account.
1558
+ * API key: Supported.
1559
+ * CLI user token: Supported.
1560
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1561
+ * Higher permission levels include lower levels: read < write < delete.
1562
+ */
1563
+ testEmail(options: {
1564
+ email: string;
1565
+ }): Promise<S['AccountActionResponse']>;
1566
+ }
1567
+ declare class EllipsisAccountOnboarding {
1568
+ private readonly transport;
1569
+ constructor(transport: Transport);
1570
+ /**
1571
+ * Get Account Onboarding
1572
+ *
1573
+ * Read the account's saved onboarding answers, or null before setup.
1574
+ *
1575
+ * Required permissions: read:account.
1576
+ * API key: Supported.
1577
+ * CLI user token: Supported.
1578
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1579
+ * Higher permission levels include lower levels: read < write < delete.
1580
+ */
1581
+ get(): Promise<S['AccountOnboardingResponse']>;
1582
+ /**
1583
+ * Update Account Onboarding
1584
+ *
1585
+ * Save supplied onboarding answers, preserving omitted answers.
1586
+ *
1587
+ * Organizations can save their work email before selecting use cases.
1588
+ * Saving use cases requires a valid organization work email and at
1589
+ * least one choice. When Other is the only choice, describe it.
1590
+ * Personal accounts save a null work email. This does not change the
1591
+ * billing contact email. Sandbox credentials cannot update answers.
1592
+ * Supplying an organization work email requires a human user and sends
1593
+ * a Slack Connect invitation. Slack failures do not undo saved answers.
1594
+ *
1595
+ * Required permissions: write:account.
1596
+ * API key: Supported.
1597
+ * CLI user token: Supported.
1598
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1599
+ * Higher permission levels include lower levels: read < write < delete.
1600
+ */
1601
+ update(options?: {
1602
+ other_use_case?: string | null;
1603
+ use_cases?: (S['AccountOnboardingUseCase'])[];
1604
+ work_email?: string | null;
1605
+ }): Promise<S['AccountOnboardingResponse']>;
1606
+ }
1607
+ declare class EllipsisAccountProvidersAnthropic {
1608
+ private readonly transport;
1609
+ constructor(transport: Transport);
1610
+ /**
1611
+ * Delete Anthropic Config
1612
+ *
1613
+ * Required permissions: delete:account.
1614
+ * API key: Supported.
1615
+ * CLI user token: Supported.
1616
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1617
+ * Higher permission levels include lower levels: read < write < delete.
1618
+ */
1619
+ delete(): Promise<void>;
1620
+ /**
1621
+ * Get Anthropic Config
1622
+ *
1623
+ * Required permissions: read:account.
1624
+ * API key: Supported.
1625
+ * CLI user token: Supported.
1626
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1627
+ * Higher permission levels include lower levels: read < write < delete.
1628
+ */
1629
+ get(): Promise<S['AnthropicConfigResponse']>;
1630
+ /**
1631
+ * Put Anthropic Config
1632
+ *
1633
+ * Required permissions: write:account.
1634
+ * API key: Supported.
1635
+ * CLI user token: Supported.
1636
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1637
+ * Higher permission levels include lower levels: read < write < delete.
1638
+ */
1639
+ set(options: {
1640
+ api_key: string;
1641
+ }): Promise<S['AnthropicConfigResponse']>;
1642
+ /**
1643
+ * Validate Anthropic Config
1644
+ *
1645
+ * Required permissions: write:account.
1646
+ * API key: Supported.
1647
+ * CLI user token: Supported.
1648
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1649
+ * Higher permission levels include lower levels: read < write < delete.
1650
+ */
1651
+ validate(): Promise<S['ValidateAnthropicConfigResponse']>;
1652
+ }
1653
+ declare class EllipsisAccountProvidersBedrock {
1654
+ private readonly transport;
1655
+ constructor(transport: Transport);
1656
+ /**
1657
+ * Delete Bedrock Config
1658
+ *
1659
+ * Required permissions: delete:account.
1660
+ * API key: Supported.
1661
+ * CLI user token: Supported.
1662
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1663
+ * Higher permission levels include lower levels: read < write < delete.
1664
+ */
1665
+ delete(): Promise<void>;
1666
+ /**
1667
+ * Get Bedrock Config
1668
+ *
1669
+ * Required permissions: read:account.
1670
+ * API key: Supported.
1671
+ * CLI user token: Supported.
1672
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1673
+ * Higher permission levels include lower levels: read < write < delete.
1674
+ */
1675
+ get(): Promise<S['BedrockConfigResponse']>;
1676
+ /**
1677
+ * Put Bedrock Config
1678
+ *
1679
+ * Required permissions: write:account.
1680
+ * API key: Supported.
1681
+ * CLI user token: Supported.
1682
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1683
+ * Higher permission levels include lower levels: read < write < delete.
1684
+ */
1685
+ set(options: {
1686
+ model_map: Record<string, string>;
1687
+ region: string;
1688
+ role_arn: string;
1689
+ }): Promise<S['BedrockConfigResponse']>;
1690
+ /**
1691
+ * Validate Bedrock Config
1692
+ *
1693
+ * Required permissions: write:account.
1694
+ * API key: Supported.
1695
+ * CLI user token: Supported.
1696
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1697
+ * Higher permission levels include lower levels: read < write < delete.
1698
+ */
1699
+ validate(): Promise<S['ValidateBedrockConfigResponse']>;
1700
+ }
1701
+ declare class EllipsisAccountProviders {
1702
+ private readonly transport;
1703
+ readonly anthropic: EllipsisAccountProvidersAnthropic;
1704
+ readonly bedrock: EllipsisAccountProvidersBedrock;
1705
+ constructor(transport: Transport);
50
1706
  }
51
-
52
- declare const DEFAULT_BASE_URL = "https://api.ellipsis.dev";
53
- interface TransportOptions {
54
- apiKey: string;
55
- baseUrl?: string;
56
- timeoutMs?: number;
57
- maxRetries?: number;
58
- fetch?: typeof globalThis.fetch;
1707
+ declare class EllipsisAccountSettings {
1708
+ private readonly transport;
1709
+ constructor(transport: Transport);
1710
+ /**
1711
+ * Get Account Settings
1712
+ *
1713
+ * Get the organization settings.
1714
+ *
1715
+ * Session model and budget defaults, code review and mention behavior,
1716
+ * analytics, retention, and notification contacts. PATCH replaces
1717
+ * supplied sections; PUT preserves its model-and-budget-only behavior.
1718
+ *
1719
+ * Required permissions: read:defaults.
1720
+ * API key: Supported.
1721
+ * CLI user token: Supported.
1722
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1723
+ * Higher permission levels include lower levels: read < write < delete.
1724
+ */
1725
+ get(): Promise<S['AccountSettings']>;
1726
+ /**
1727
+ * Set Organization Settings
1728
+ *
1729
+ * Set the organization settings.
1730
+ *
1731
+ * Replaces both: `default_model` accepts an alias or canonical id
1732
+ * and is stored canonical, and cannot be cleared (it is the only
1733
+ * default a session's model resolves against);
1734
+ * `budget_ceiling.session` is in US dollars, at most the platform
1735
+ * ceiling, and null clears it.
1736
+ * Refused for sandbox tokens (potentially prompt-injected code must
1737
+ * not repoint the organization's defaults).
1738
+ *
1739
+ * Required permissions: write:defaults.
1740
+ * API key: Requires a CLI user token belonging to an account administrator.
1741
+ * CLI user token: Requires an account administrator.
1742
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1743
+ * Higher permission levels include lower levels: read < write < delete.
1744
+ */
1745
+ set(options: {
1746
+ budget_ceiling?: S['BudgetCeiling'];
1747
+ default_model: string;
1748
+ }): Promise<S['OrganizationSettings']>;
1749
+ /**
1750
+ * Patch Account Settings
1751
+ *
1752
+ * Replace supplied settings sections without changing omitted sections.
1753
+ *
1754
+ * Changes to model or budget defaults require a GitHub administrator.
1755
+ *
1756
+ * Required permissions: write:defaults.
1757
+ * API key: Cannot set budget_ceiling, default_model to a non-null value; those changes require a CLI user token belonging to an account administrator.
1758
+ * CLI user token: Requires an account administrator when setting budget_ceiling, default_model to a non-null value.
1759
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1760
+ * Higher permission levels include lower levels: read < write < delete.
1761
+ */
1762
+ update(options?: {
1763
+ analytics?: S['AnalyticsSettings'] | null;
1764
+ budget_ceiling?: S['BudgetCeiling'] | null;
1765
+ code_review?: S['CodeReviewSettings'] | null;
1766
+ data_retention?: S['DataRetentionSettings'] | null;
1767
+ default_model?: string | null;
1768
+ notifications?: S['NotificationSettings'] | null;
1769
+ }): Promise<S['AccountSettings']>;
59
1770
  }
60
- declare class Transport {
61
- private readonly baseUrl;
62
- private readonly headers;
63
- private readonly timeoutMs;
64
- private readonly maxRetries;
65
- private readonly fetchImpl;
66
- constructor(options: TransportOptions);
67
- request<T>(method: string, path: string, options?: {
68
- query?: string;
69
- body?: unknown;
70
- }): Promise<T>;
1771
+ declare class EllipsisAccount {
1772
+ private readonly transport;
1773
+ readonly apiKeys: EllipsisAccountApiKeys;
1774
+ readonly billing: EllipsisAccountBilling;
1775
+ readonly models: EllipsisAccountModels;
1776
+ readonly notifications: EllipsisAccountNotifications;
1777
+ readonly onboarding: EllipsisAccountOnboarding;
1778
+ readonly providers: EllipsisAccountProviders;
1779
+ readonly settings: EllipsisAccountSettings;
1780
+ constructor(transport: Transport);
1781
+ /**
1782
+ * Get Customer Activity
1783
+ *
1784
+ * All-time per-surface activity flags: the dashboards' demo-data
1785
+ * fallback reads these instead of inferring "no history" from a
1786
+ * windowed, filtered response.
1787
+ *
1788
+ * Required permissions: read:account.
1789
+ * API key: Supported.
1790
+ * CLI user token: Supported.
1791
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1792
+ * Higher permission levels include lower levels: read < write < delete.
1793
+ */
1794
+ activity(): Promise<S['AccountActivity']>;
1795
+ /**
1796
+ * Get Customer Audit Log
1797
+ *
1798
+ * Required permissions: read:account.
1799
+ * API key: Supported.
1800
+ * CLI user token: Supported.
1801
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1802
+ * Higher permission levels include lower levels: read < write < delete.
1803
+ */
1804
+ auditLog(): Promise<S['AccountAuditLogResponse']>;
1805
+ /**
1806
+ * Get Account Budget
1807
+ *
1808
+ * Get prepaid credit, actual trailing budgets, and developer/API-key limits.
1809
+ *
1810
+ * Budgets cover the trailing 1, 7 and 28 days; they do not replenish
1811
+ * prepaid credit. Amounts include measured usage from active sessions.
1812
+ * Each paid LLM request requires positive credit and budget headroom.
1813
+ * An admitted request can overshoot; concurrent paid requests are limited
1814
+ * by your account and per-session allowances.
1815
+ *
1816
+ * Required permissions: read:account.
1817
+ * API key: Supported.
1818
+ * CLI user token: Supported.
1819
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1820
+ * Higher permission levels include lower levels: read < write < delete.
1821
+ */
1822
+ budget(): Promise<S['BudgetSummary']>;
1823
+ /**
1824
+ * Update Customer
1825
+ *
1826
+ * Required permissions: write:account.
1827
+ * API key: Supported.
1828
+ * CLI user token: Supported.
1829
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1830
+ * Higher permission levels include lower levels: read < write < delete.
1831
+ */
1832
+ update(options?: {
1833
+ can_start_job_runs?: boolean | null;
1834
+ contact_email?: string | null;
1835
+ }): Promise<S['AccountResponse']>;
1836
+ /**
1837
+ * Update Budget
1838
+ *
1839
+ * Update spending policy or budget alerts as an account administrator.
1840
+ *
1841
+ * Each supplied section replaces that section; omitted sections are
1842
+ * preserved. Set policy.developer_defaults to null to disable developer
1843
+ * limits. Null override windows inherit their default. API keys use
1844
+ * their stable ID, not their secret. Changes apply to the next paid
1845
+ * request, including sessions already running. API keys and sandbox
1846
+ * credentials cannot edit budgets. The session ceiling remains at
1847
+ * /account/settings; purchasing credits is separate from budget policy.
1848
+ *
1849
+ * Required permissions: write:defaults.
1850
+ * API key: Requires a CLI user token belonging to an account administrator.
1851
+ * CLI user token: Requires an account administrator.
1852
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1853
+ * Higher permission levels include lower levels: read < write < delete.
1854
+ */
1855
+ updateBudget(options?: {
1856
+ alerts?: S['BudgetAlerts'] | null;
1857
+ policy?: S['BudgetPolicy'] | null;
1858
+ }): Promise<S['BudgetSummary']>;
1859
+ /**
1860
+ * Get Usage
1861
+ *
1862
+ * Get usage for a calendar month, including its funding sources.
1863
+ *
1864
+ * Omit period_start for the current UTC month; select a period returned
1865
+ * in billing_periods to view history. Credit debits are distinct from
1866
+ * rated token usage through BYOK, customer Bedrock, or a developer's
1867
+ * Claude subscription. Rated usage estimates are not provider invoices.
1868
+ * Pending and unresolved requests identify missing measurements.
1869
+ *
1870
+ * Required permissions: read:account.
1871
+ * API key: Supported.
1872
+ * CLI user token: Supported.
1873
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1874
+ * Higher permission levels include lower levels: read < write < delete.
1875
+ */
1876
+ usage(options?: {
1877
+ period_start?: string | null;
1878
+ }): Promise<S['GetUsageOverTimeResponse']>;
1879
+ }
1880
+ declare class EllipsisAgents {
1881
+ private readonly transport;
1882
+ constructor(transport: Transport);
1883
+ /**
1884
+ * Create Agent
1885
+ *
1886
+ * Create an agent, managed through the API: no file, live
1887
+ * immediately. To put its definition in a repository instead, create
1888
+ * it here and then POST /v1/agents/{agent_id}/link.
1889
+ *
1890
+ * 409 when another live agent already holds the name.
1891
+ *
1892
+ * Required permissions: write:configs.
1893
+ * API key: Supported.
1894
+ * CLI user token: Supported.
1895
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1896
+ * Higher permission levels include lower levels: read < write < delete.
1897
+ * Grant match patterns can further restrict access to individual resources.
1898
+ */
1899
+ create(options: {
1900
+ agent: S['AgentConfig-Input'];
1901
+ }): Promise<S['AgentResponse']>;
1902
+ /**
1903
+ * Delete Agent
1904
+ *
1905
+ * Delete an agent, by id or by name.
1906
+ *
1907
+ * It stops running and its name is freed immediately; its past
1908
+ * sessions remain readable. Only for agents managed through
1909
+ * this API — delete the file to remove one defined by a repository.
1910
+ *
1911
+ * Required permissions: write:configs.
1912
+ * API key: Supported.
1913
+ * CLI user token: Supported.
1914
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1915
+ * Higher permission levels include lower levels: read < write < delete.
1916
+ * Grant match patterns can further restrict access to individual resources.
1917
+ */
1918
+ delete(agent_id: string): Promise<void>;
1919
+ /**
1920
+ * Get Agent
1921
+ *
1922
+ * Return one agent, by id or by name.
1923
+ *
1924
+ * Required permissions: read:configs.
1925
+ * API key: Supported.
1926
+ * CLI user token: Supported.
1927
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1928
+ * Higher permission levels include lower levels: read < write < delete.
1929
+ * Grant match patterns can further restrict access to individual resources.
1930
+ */
1931
+ get(agent_id: string): Promise<S['AgentResponse']>;
1932
+ /**
1933
+ * Link Agent
1934
+ *
1935
+ * Move an agent into a repository, by id or by name.
1936
+ *
1937
+ * Opens a pull request adding its definition file. The agent
1938
+ * keeps running unchanged meanwhile; merging hands it over to the
1939
+ * file, after which the file is what changes it. Nothing happens
1940
+ * if the pull request is never merged.
1941
+ *
1942
+ * Required permissions: write:configs.
1943
+ * API key: Supported.
1944
+ * CLI user token: Supported.
1945
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
1946
+ * Higher permission levels include lower levels: read < write < delete.
1947
+ * Grant match patterns can further restrict access to individual resources.
1948
+ */
1949
+ link(agent_id: string, options: {
1950
+ path?: string | null;
1951
+ repository: string;
1952
+ }): Promise<S['LinkAgentResponse']>;
1953
+ /**
1954
+ * List Agents
1955
+ *
1956
+ * List agents.
1957
+ *
1958
+ * Required permissions: read:configs.
1959
+ * API key: Supported.
1960
+ * CLI user token: Supported.
1961
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1962
+ * Higher permission levels include lower levels: read < write < delete.
1963
+ * Grant match patterns can further restrict access to individual resources.
1964
+ */
1965
+ list(): Promise<S['AgentsListResponse']>;
1966
+ /**
1967
+ * Get Agent Metrics
1968
+ *
1969
+ * Return an agent's session distribution and trailing spend,
1970
+ * by id or by name.
1971
+ *
1972
+ * `samples` carries one entry per finished session (duration, cost,
1973
+ * tokens) for distributions; `spend_windows` carries what the
1974
+ * agent's sessions cost over the last 1, 7, and 28 days against
1975
+ * its budget for each window.
1976
+ *
1977
+ * Required permissions: read:configs.
1978
+ * API key: Supported.
1979
+ * CLI user token: Supported.
1980
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1981
+ * Higher permission levels include lower levels: read < write < delete.
1982
+ * Grant match patterns can further restrict access to individual resources.
1983
+ */
1984
+ metrics(agent_id: string): Promise<S['AgentMetricsResponse']>;
1985
+ /**
1986
+ * Start Agent Session
1987
+ *
1988
+ * Invoke an agent.
1989
+ *
1990
+ * Runs a certified agent with its configured instructions, model,
1991
+ * environment, permissions, skills, and budget, and returns
1992
+ * the session it started. The session runs once and does not accept
1993
+ * follow-up messages. If the agent declares input.json_schema,
1994
+ * send only `input` for its initial message. Otherwise send a non-empty
1995
+ * `prompt`, which becomes the initial message verbatim. Both fields
1996
+ * together, neither field, and input that renders an empty message are
1997
+ * rejected with 422. An optional `budget` lowers the session cap;
1998
+ * `metadata` tags the session. Codex invocations are not supported.
1999
+ *
2000
+ * Required permissions: write:sessions.
2001
+ * API key: Supported.
2002
+ * CLI user token: Supported.
2003
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2004
+ * Higher permission levels include lower levels: read < write < delete.
2005
+ * Grant match patterns can further restrict access to individual resources.
2006
+ */
2007
+ run(agent_id: string, options?: {
2008
+ budget?: number | null;
2009
+ input?: Record<string, unknown> | null;
2010
+ metadata?: Record<string, string>;
2011
+ prompt?: string | null;
2012
+ }): Promise<S['SessionResponse']>;
2013
+ /**
2014
+ * Get Agents Stream Ticket
2015
+ *
2016
+ * Required permissions: read:configs.
2017
+ * API key: Supported.
2018
+ * CLI user token: Supported.
2019
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2020
+ * Higher permission levels include lower levels: read < write < delete.
2021
+ * Grant match patterns can further restrict access to individual resources.
2022
+ */
2023
+ streamTicket(): Promise<S['StreamTicketResponse']>;
2024
+ /**
2025
+ * Unlink Agent
2026
+ *
2027
+ * Take over an agent from its file, by id or by name.
2028
+ *
2029
+ * The file stops governing it immediately and further changes go
2030
+ * through this API. The file is left in place, inert — delete it
2031
+ * whenever you like.
2032
+ *
2033
+ * Required permissions: write:configs.
2034
+ * API key: Supported.
2035
+ * CLI user token: Supported.
2036
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2037
+ * Higher permission levels include lower levels: read < write < delete.
2038
+ * Grant match patterns can further restrict access to individual resources.
2039
+ */
2040
+ unlink(agent_id: string): Promise<S['AgentResponse']>;
2041
+ /**
2042
+ * Update Agent
2043
+ *
2044
+ * Replace an agent's definition, by id or by name.
2045
+ *
2046
+ * The whole definition is replaced, and the change is live at
2047
+ * once. Only for agents managed through this API: one defined
2048
+ * by a repository file is a 409, since the next push to that file
2049
+ * would revert the change — unlink it first to take ownership.
2050
+ *
2051
+ * Required permissions: write:configs.
2052
+ * API key: Supported.
2053
+ * CLI user token: Supported.
2054
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2055
+ * Higher permission levels include lower levels: read < write < delete.
2056
+ * Grant match patterns can further restrict access to individual resources.
2057
+ */
2058
+ update(agent_id: string, options: {
2059
+ agent: S['AgentConfig-Input'];
2060
+ }): Promise<S['AgentResponse']>;
71
2061
  }
72
-
73
- type S = components['schemas'];
74
2062
  declare class EllipsisAlerts {
75
2063
  private readonly transport;
76
2064
  constructor(transport: Transport);
@@ -80,6 +2068,12 @@ declare class EllipsisAlerts {
80
2068
  * Dismiss an open alert and return it.
81
2069
  *
82
2070
  * 409 when the alert is not open; 404 when it doesn't exist.
2071
+ *
2072
+ * Required permissions: write:alerts.
2073
+ * API key: Supported.
2074
+ * CLI user token: Supported.
2075
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2076
+ * Higher permission levels include lower levels: read < write < delete.
83
2077
  */
84
2078
  dismiss(alert_id: string): Promise<S['AlertResponse']>;
85
2079
  /**
@@ -88,6 +2082,12 @@ declare class EllipsisAlerts {
88
2082
  * Return one alert by id.
89
2083
  *
90
2084
  * 404 if it doesn't exist or belongs to another organization.
2085
+ *
2086
+ * Required permissions: read:alerts.
2087
+ * API key: Supported.
2088
+ * CLI user token: Supported.
2089
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2090
+ * Higher permission levels include lower levels: read < write < delete.
91
2091
  */
92
2092
  get(alert_id: string): Promise<S['AlertResponse']>;
93
2093
  /**
@@ -99,6 +2099,12 @@ declare class EllipsisAlerts {
99
2099
  *
100
2100
  * Available to all credential types, so an agent can check "is
101
2101
  * this org near budget?" mid-task.
2102
+ *
2103
+ * Required permissions: read:alerts.
2104
+ * API key: Supported.
2105
+ * CLI user token: Supported.
2106
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2107
+ * Higher permission levels include lower levels: read < write < delete.
102
2108
  */
103
2109
  list(options?: {
104
2110
  status?: S['AlertStatus'] | null;
@@ -122,6 +2128,12 @@ declare class EllipsisAnalytics {
122
2128
  * the apps/agents). Available to all credential types: the
123
2129
  * responses expose the organization's own GitHub PR/review activity,
124
2130
  * no secrets.
2131
+ *
2132
+ * Required permissions: read:account.
2133
+ * API key: Supported.
2134
+ * CLI user token: Supported.
2135
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2136
+ * Higher permission levels include lower levels: read < write < delete.
125
2137
  */
126
2138
  metrics(options?: {
127
2139
  days?: number | null;
@@ -139,6 +2151,12 @@ declare class EllipsisAnalytics {
139
2151
  *
140
2152
  * Windowing: pass explicit start/end, or days (default: the last
141
2153
  * 30 days). account_type in all|user|bot scopes the authors.
2154
+ *
2155
+ * Required permissions: read:account.
2156
+ * API key: Supported.
2157
+ * CLI user token: Supported.
2158
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2159
+ * Higher permission levels include lower levels: read < write < delete.
142
2160
  */
143
2161
  pullRequests(options?: {
144
2162
  days?: number | null;
@@ -158,6 +2176,12 @@ declare class EllipsisAnalytics {
158
2176
  * review the most PRs?" is the reviewer facets here with
159
2177
  * account_type=bot. Windowing: pass explicit start/end, or days
160
2178
  * (default: the last 30 days).
2179
+ *
2180
+ * Required permissions: read:account.
2181
+ * API key: Supported.
2182
+ * CLI user token: Supported.
2183
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2184
+ * Higher permission levels include lower levels: read < write < delete.
161
2185
  */
162
2186
  reviews(options?: {
163
2187
  days?: number | null;
@@ -178,6 +2202,8 @@ declare class EllipsisAuthCli {
178
2202
  * Poll a device-code auth flow for its token.
179
2203
  *
180
2204
  * Unauthenticated; the device code identifies the flow.
2205
+ *
2206
+ * Authentication: No token required.
181
2207
  */
182
2208
  poll(options: {
183
2209
  device_code: string;
@@ -190,6 +2216,8 @@ declare class EllipsisAuthCli {
190
2216
  * Unauthenticated: the CLI has no credential yet — that's what
191
2217
  * it's obtaining. The human authorizes out-of-band in the
192
2218
  * dashboard.
2219
+ *
2220
+ * Authentication: No token required.
193
2221
  */
194
2222
  start(): Promise<S['StartCliAuthResponse']>;
195
2223
  }
@@ -198,110 +2226,6 @@ declare class EllipsisAuth {
198
2226
  readonly cli: EllipsisAuthCli;
199
2227
  constructor(transport: Transport);
200
2228
  }
201
- declare class EllipsisAutomations {
202
- private readonly transport;
203
- constructor(transport: Transport);
204
- /**
205
- * Create Automation
206
- *
207
- * Create an automation, managed through the API: no file, live
208
- * immediately. To put its definition in a repository instead, create
209
- * it here and then POST /v1/automations/{automation_id}/link.
210
- *
211
- * 409 when another live automation already holds the name.
212
- */
213
- create(options: {
214
- automation: S['AutomationConfig'];
215
- }): Promise<S['AutomationResponse']>;
216
- /**
217
- * Delete Automation
218
- *
219
- * Delete an automation, by id or by name.
220
- *
221
- * It stops running and its name is freed immediately; its past
222
- * sessions remain readable. Only for automations managed through
223
- * this API — delete the file to remove one defined by a repository.
224
- */
225
- delete(automation_id: string): Promise<void>;
226
- /**
227
- * Get Automation
228
- *
229
- * Return one automation, by id or by name.
230
- */
231
- get(automation_id: string): Promise<S['AutomationResponse']>;
232
- /**
233
- * Link Automation
234
- *
235
- * Move an automation into a repository, by id or by name.
236
- *
237
- * Opens a pull request adding its definition file. The automation
238
- * keeps running unchanged meanwhile; merging hands it over to the
239
- * file, after which the file is what changes it. Nothing happens
240
- * if the pull request is never merged.
241
- */
242
- link(automation_id: string, options: {
243
- path?: string | null;
244
- repository: string;
245
- }): Promise<S['LinkAutomationResponse']>;
246
- /**
247
- * List Automations
248
- *
249
- * List automations.
250
- */
251
- list(): Promise<S['AutomationsListResponse']>;
252
- /**
253
- * Get Automation Metrics
254
- *
255
- * Return an automation's session distribution and trailing spend,
256
- * by id or by name.
257
- *
258
- * `samples` carries one entry per finished session (duration, cost,
259
- * tokens) for distributions; `spend_windows` carries what the
260
- * automation's sessions cost over the last 1, 7, and 28 days against
261
- * its budget for each window.
262
- */
263
- metrics(automation_id: string): Promise<S['AutomationMetricsResponse']>;
264
- /**
265
- * Start Automation Session
266
- *
267
- * Invoke an automation.
268
- *
269
- * Runs the automation exactly as defined — its persona, model,
270
- * environment, permissions, skills, and budget bind — and returns
271
- * the session it started. The body carries only what a caller may
272
- * supply: the typed `input` its schema demands, an optional tighter
273
- * `budget`, and `metadata`. For a different persona or environment,
274
- * start a raw session with POST /v1/sessions instead.
275
- */
276
- run(automation_id: string, options?: {
277
- budget?: number | null;
278
- input?: Record<string, unknown> | null;
279
- metadata?: Record<string, string>;
280
- }): Promise<S['SessionResponse']>;
281
- /**
282
- * Unlink Automation
283
- *
284
- * Take over an automation from its file, by id or by name.
285
- *
286
- * The file stops governing it immediately and further changes go
287
- * through this API. The file is left in place, inert — delete it
288
- * whenever you like.
289
- */
290
- unlink(automation_id: string): Promise<S['AutomationResponse']>;
291
- /**
292
- * Update Automation
293
- *
294
- * Replace an automation's definition, by id or by name.
295
- *
296
- * The whole definition is replaced, and the change is live at
297
- * once. Only for automations managed through this API: one defined
298
- * by a repository file is a 409, since the next push to that file
299
- * would revert the change — unlink it first to take ownership.
300
- */
301
- update(automation_id: string, options: {
302
- automation: S['AutomationConfig'];
303
- }): Promise<S['AutomationResponse']>;
304
- }
305
2229
  declare class EllipsisEnvironments {
306
2230
  private readonly transport;
307
2231
  constructor(transport: Transport);
@@ -313,9 +2237,15 @@ declare class EllipsisEnvironments {
313
2237
  * `kind: environment` YAML under an agents directory.
314
2238
  *
315
2239
  * 409 when another live environment already holds the name.
2240
+ *
2241
+ * Required permissions: write:environments.
2242
+ * API key: Supported.
2243
+ * CLI user token: Supported.
2244
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2245
+ * Higher permission levels include lower levels: read < write < delete.
316
2246
  */
317
2247
  create(options: {
318
- environment: S['EnvironmentDocument'];
2248
+ environment: S['EnvironmentDocument-Input'];
319
2249
  }): Promise<S['EnvironmentResponse']>;
320
2250
  /**
321
2251
  * Delete Environment
@@ -327,18 +2257,36 @@ declare class EllipsisEnvironments {
327
2257
  * environment. Past sessions remain readable. Only for environments
328
2258
  * managed through this API — delete the file to remove one defined
329
2259
  * by a repository.
2260
+ *
2261
+ * Required permissions: delete:environments.
2262
+ * API key: Supported.
2263
+ * CLI user token: Supported.
2264
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2265
+ * Higher permission levels include lower levels: read < write < delete.
330
2266
  */
331
2267
  delete(environment_id: string): Promise<void>;
332
2268
  /**
333
2269
  * Get Environment
334
2270
  *
335
2271
  * Return one saved environment, by id or by name.
2272
+ *
2273
+ * Required permissions: read:environments.
2274
+ * API key: Supported.
2275
+ * CLI user token: Supported.
2276
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2277
+ * Higher permission levels include lower levels: read < write < delete.
336
2278
  */
337
2279
  get(environment_id: string): Promise<S['EnvironmentResponse']>;
338
2280
  /**
339
2281
  * List Environments
340
2282
  *
341
2283
  * List saved environments.
2284
+ *
2285
+ * Required permissions: read:environments.
2286
+ * API key: Supported.
2287
+ * CLI user token: Supported.
2288
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2289
+ * Higher permission levels include lower levels: read < write < delete.
342
2290
  */
343
2291
  list(): Promise<S['EnvironmentsListResponse']>;
344
2292
  /**
@@ -350,9 +2298,15 @@ declare class EllipsisEnvironments {
350
2298
  * resolve the new body; running sessions keep the one frozen at
351
2299
  * their start. Only for environments managed through this API: one
352
2300
  * defined by a repository file is a 409.
2301
+ *
2302
+ * Required permissions: write:environments.
2303
+ * API key: Supported.
2304
+ * CLI user token: Supported.
2305
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2306
+ * Higher permission levels include lower levels: read < write < delete.
353
2307
  */
354
2308
  update(environment_id: string, options: {
355
- environment: S['EnvironmentDocument'];
2309
+ environment: S['EnvironmentDocument-Input'];
356
2310
  }): Promise<S['EnvironmentResponse']>;
357
2311
  }
358
2312
  declare class EllipsisFiles {
@@ -368,6 +2322,13 @@ declare class EllipsisFiles {
368
2322
  * agent persisting a screenshot to link on a PR), but all
369
2323
  * credential types work. Returns the org-membership-gated
370
2324
  * dashboard URL so callers never hard-code URL shapes.
2325
+ *
2326
+ * Required permissions: write:files.
2327
+ * API key: Supported.
2328
+ * CLI user token: Supported.
2329
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2330
+ * Higher permission levels include lower levels: read < write < delete.
2331
+ * Grant match patterns can further restrict access to individual resources.
371
2332
  */
372
2333
  create(options: {
373
2334
  content_type: string;
@@ -385,6 +2346,13 @@ declare class EllipsisFiles {
385
2346
  * potentially-untrusted code and must not be able to destroy the
386
2347
  * account's files — uploading is fine, destruction is not); API
387
2348
  * keys and user tokens may delete.
2349
+ *
2350
+ * Required permissions: delete:files.
2351
+ * API key: Supported.
2352
+ * CLI user token: Supported.
2353
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2354
+ * Higher permission levels include lower levels: read < write < delete.
2355
+ * Grant match patterns can further restrict access to individual resources.
388
2356
  */
389
2357
  delete(file_id: string): Promise<void>;
390
2358
  /**
@@ -393,26 +2361,103 @@ declare class EllipsisFiles {
393
2361
  * Return one file's metadata and download link.
394
2362
  *
395
2363
  * Includes the gated dashboard URL and a short-lived presigned
396
- * `download_url`.
2364
+ * `download_url`, plus the owning account's GitHub login.
2365
+ *
2366
+ * Signed-in dashboard users are checked against the file's owning
2367
+ * account, regardless of their selected organization. API keys,
2368
+ * CLI user tokens, and sandbox tokens remain restricted to their
2369
+ * own account. Missing, deleted, and inaccessible files return 404.
397
2370
  *
398
2371
  * To fetch the bytes locally, call this and then GET download_url
399
2372
  * immediately — the JSON API never carries the file. The CLI's
400
2373
  * `agent file get` wraps exactly that two-step.
2374
+ *
2375
+ * Required permissions: read:files.
2376
+ * API key: Supported.
2377
+ * CLI user token: Supported.
2378
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2379
+ * Higher permission levels include lower levels: read < write < delete.
2380
+ * Grant match patterns can further restrict access to individual resources.
401
2381
  */
402
2382
  get(file_id: string): Promise<S['GetFileResponse']>;
403
2383
  /**
404
2384
  * List Files
405
2385
  *
406
- * List uploaded files, newest first.
2386
+ * List uploaded files, newest first.
2387
+ *
2388
+ * Metadata only by default. Set include_download_urls=true to get
2389
+ * a download_urls map keyed by file id for thumbnails or batch
2390
+ * downloads. URLs expire within about a minute. session_id scopes
2391
+ * the list to one session's uploads.
2392
+ *
2393
+ * Required permissions: read:files.
2394
+ * API key: Supported.
2395
+ * CLI user token: Supported.
2396
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2397
+ * Higher permission levels include lower levels: read < write < delete.
2398
+ * Grant match patterns can further restrict access to individual resources.
2399
+ */
2400
+ list(options?: {
2401
+ session_id?: string | null;
2402
+ limit?: number;
2403
+ cursor?: string | null;
2404
+ include_download_urls?: boolean;
2405
+ }): Promise<Page<S['File'], S['FilesListResponse']>>;
2406
+ }
2407
+ declare class EllipsisHandlers {
2408
+ private readonly transport;
2409
+ constructor(transport: Transport);
2410
+ /**
2411
+ * List Handlers
2412
+ *
2413
+ * List the account's Slack, GitHub, Linear, and Sentry handlers.
2414
+ *
2415
+ * Returns at most one handler per service, from the current .ellipsis
2416
+ * repository. Disabled handlers and last valid definitions with sync
2417
+ * errors are included. Missing handlers are omitted. This reads saved
2418
+ * state without fetching GitHub or triggering synchronization.
2419
+ *
2420
+ * Requires configs:read; scoped grants match handlers/{service}.
2421
+ * Sandbox credentials with that grant may read handlers.
407
2422
  *
408
- * Metadata only — download URLs are minted per explicit GET, not
409
- * per row. session_id scopes the list to one run's uploads.
2423
+ * Required permissions: read:configs.
2424
+ * API key: Supported.
2425
+ * CLI user token: Supported.
2426
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2427
+ * Higher permission levels include lower levels: read < write < delete.
2428
+ * Grant match patterns can further restrict access to individual resources.
410
2429
  */
411
- list(options?: {
412
- session_id?: string | null;
413
- limit?: number;
414
- cursor?: string | null;
415
- }): Promise<Page<S['File'], S['FilesListResponse']>>;
2430
+ list(): Promise<S['HandlersListResponse']>;
2431
+ /**
2432
+ * Get Handler Metrics
2433
+ *
2434
+ * Return session counts and accumulated spend for a saved handler.
2435
+ *
2436
+ * Filters only by session creation time. Omitted bounds include all
2437
+ * history. Counts use the current conversation outcome, so an idle
2438
+ * session remains active. Spend includes the selected sessions' full
2439
+ * accumulated cost, including activity after the creation-time window.
2440
+ * Only sessions carrying this exact saved handler id are counted;
2441
+ * legacy sessions without handler provenance are excluded.
2442
+ *
2443
+ * spend_windows reports current trailing 1-, 7-, and 28-day credit
2444
+ * debits and effective handler budgets across all attributed sessions.
2445
+ * Those windows use usage timestamps and are independent of start/end.
2446
+ *
2447
+ * Requires configs:read matching handlers/{service} and unrestricted
2448
+ * sessions:read. Sandbox tokens with both grants may read metrics.
2449
+ *
2450
+ * Required permissions: read:sessions, read:configs.
2451
+ * API key: Supported.
2452
+ * CLI user token: Supported.
2453
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2454
+ * Higher permission levels include lower levels: read < write < delete.
2455
+ * Grant match patterns can further restrict access to individual resources.
2456
+ */
2457
+ metrics(handler_id: string, options?: {
2458
+ start?: string | null;
2459
+ end?: string | null;
2460
+ }): Promise<S['HandlerMetricsResponse']>;
416
2461
  }
417
2462
  declare class EllipsisIntegrationsGithub {
418
2463
  private readonly transport;
@@ -427,32 +2472,101 @@ declare class EllipsisIntegrationsGithub {
427
2472
  *
428
2473
  * Members carry their linked Slack identity when a Slack-GitHub
429
2474
  * link exists, and /slack/members carries the reverse link.
2475
+ *
2476
+ * Required permissions: read:integrations.
2477
+ * API key: Supported.
2478
+ * CLI user token: Supported.
2479
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2480
+ * Higher permission levels include lower levels: read < write < delete.
430
2481
  */
431
2482
  members(): Promise<S['GithubMembersListResponse']>;
432
2483
  /**
433
2484
  * List Github Repositories
434
2485
  *
435
2486
  * List GitHub repositories connected to the installation.
2487
+ *
2488
+ * Required permissions: read:integrations.
2489
+ * API key: Supported.
2490
+ * CLI user token: Supported.
2491
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2492
+ * Higher permission levels include lower levels: read < write < delete.
436
2493
  */
437
2494
  repos(): Promise<S['GithubRepositoriesListResponse']>;
2495
+ /**
2496
+ * Uninstall Github App
2497
+ *
2498
+ * Required permissions: write:integrations.
2499
+ * API key: Supported.
2500
+ * CLI user token: Supported.
2501
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2502
+ * Higher permission levels include lower levels: read < write < delete.
2503
+ */
2504
+ uninstall(options: {
2505
+ confirm_account_login: string;
2506
+ }): Promise<S['AccountActionResponse']>;
438
2507
  }
439
2508
  declare class EllipsisIntegrationsLinear {
440
2509
  private readonly transport;
441
2510
  constructor(transport: Transport);
2511
+ /**
2512
+ * Delete Linear Integration
2513
+ *
2514
+ * Required permissions: delete:integrations.
2515
+ * API key: Supported.
2516
+ * CLI user token: Supported.
2517
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2518
+ * Higher permission levels include lower levels: read < write < delete.
2519
+ */
2520
+ delete(): Promise<S['AccountActionResponse']>;
442
2521
  /**
443
2522
  * List Linear Teams
444
2523
  *
445
2524
  * List the teams of the connected Linear workspace.
2525
+ *
2526
+ * Required permissions: read:integrations.
2527
+ * API key: Supported.
2528
+ * CLI user token: Supported.
2529
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2530
+ * Higher permission levels include lower levels: read < write < delete.
446
2531
  */
447
2532
  teams(): Promise<S['LinearTeamsListResponse']>;
2533
+ /**
2534
+ * Update Linear Teams
2535
+ *
2536
+ * Required permissions: write:integrations.
2537
+ * API key: Supported.
2538
+ * CLI user token: Supported.
2539
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2540
+ * Higher permission levels include lower levels: read < write < delete.
2541
+ */
2542
+ updateSettings(options: {
2543
+ mcp_inclusion?: S['McpInclusionMode'] | null;
2544
+ teams: (S['LinearTeamUpdate'])[];
2545
+ }): Promise<S['AccountActionResponse']>;
448
2546
  }
449
2547
  declare class EllipsisIntegrationsSentry {
450
2548
  private readonly transport;
451
2549
  constructor(transport: Transport);
2550
+ /**
2551
+ * Delete Sentry Integration
2552
+ *
2553
+ * Required permissions: delete:integrations.
2554
+ * API key: Supported.
2555
+ * CLI user token: Supported.
2556
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2557
+ * Higher permission levels include lower levels: read < write < delete.
2558
+ */
2559
+ delete(integration_id: string): Promise<S['AccountActionResponse']>;
452
2560
  /**
453
2561
  * List Sentry Organizations
454
2562
  *
455
2563
  * List the connected Sentry organizations.
2564
+ *
2565
+ * Required permissions: read:integrations.
2566
+ * API key: Supported.
2567
+ * CLI user token: Supported.
2568
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2569
+ * Higher permission levels include lower levels: read < write < delete.
456
2570
  */
457
2571
  organizations(): Promise<S['SentryOrganizationsListResponse']>;
458
2572
  }
@@ -464,15 +2578,59 @@ declare class EllipsisIntegrationsSlack {
464
2578
  *
465
2579
  * List the channels of the connected Slack workspace, fetched
466
2580
  * live from the Slack API.
2581
+ *
2582
+ * Required permissions: read:integrations.
2583
+ * API key: Supported.
2584
+ * CLI user token: Supported.
2585
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2586
+ * Higher permission levels include lower levels: read < write < delete.
467
2587
  */
468
2588
  channels(): Promise<S['SlackChannelsListResponse']>;
2589
+ /**
2590
+ * Create Operations Channel
2591
+ *
2592
+ * Required permissions: write:integrations.
2593
+ * API key: Supported.
2594
+ * CLI user token: Supported.
2595
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2596
+ * Higher permission levels include lower levels: read < write < delete.
2597
+ */
2598
+ createOperationsChannel(): Promise<S['SlackChannel']>;
2599
+ /**
2600
+ * Delete Slack Integration
2601
+ *
2602
+ * Required permissions: delete:integrations.
2603
+ * API key: Supported.
2604
+ * CLI user token: Supported.
2605
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2606
+ * Higher permission levels include lower levels: read < write < delete.
2607
+ */
2608
+ delete(): Promise<S['AccountActionResponse']>;
469
2609
  /**
470
2610
  * List Slack Members
471
2611
  *
472
2612
  * List the members of the connected Slack workspace, fetched
473
2613
  * live from the Slack API.
2614
+ *
2615
+ * Required permissions: read:integrations.
2616
+ * API key: Supported.
2617
+ * CLI user token: Supported.
2618
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2619
+ * Higher permission levels include lower levels: read < write < delete.
474
2620
  */
475
2621
  members(): Promise<S['SlackMembersListResponse']>;
2622
+ /**
2623
+ * Update Slack Settings
2624
+ *
2625
+ * Required permissions: write:integrations.
2626
+ * API key: Supported.
2627
+ * CLI user token: Supported.
2628
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2629
+ * Higher permission levels include lower levels: read < write < delete.
2630
+ */
2631
+ updateSettings(options: {
2632
+ mcp_inclusion: S['McpInclusionMode'];
2633
+ }): Promise<S['AccountActionResponse']>;
476
2634
  }
477
2635
  declare class EllipsisIntegrations {
478
2636
  private readonly transport;
@@ -488,10 +2646,16 @@ declare class EllipsisIntegrations {
488
2646
  *
489
2647
  * A read-only view, so an agent authoring another agent's
490
2648
  * config can learn which repositories, channels, teams, and
491
- * organizations it may name before POST /automations.
2649
+ * organizations it may name before POST /agents.
492
2650
  *
493
2651
  * Available to all credential types including sandbox tokens: the
494
2652
  * responses never include OAuth tokens or any other secret.
2653
+ *
2654
+ * Required permissions: read:integrations.
2655
+ * API key: Supported.
2656
+ * CLI user token: Supported.
2657
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2658
+ * Higher permission levels include lower levels: read < write < delete.
495
2659
  */
496
2660
  list(): Promise<S['GetIntegrationsResponse']>;
497
2661
  }
@@ -510,6 +2674,13 @@ declare class EllipsisMemories {
510
2674
  *
511
2675
  * Creating never overwrites: a path that already exists is a 409, so
512
2676
  * correcting an existing memory is an explicit edit.
2677
+ *
2678
+ * Required permissions: write:memories.
2679
+ * API key: Supported.
2680
+ * CLI user token: Supported.
2681
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2682
+ * Higher permission levels include lower levels: read < write < delete.
2683
+ * Grant match patterns can further restrict access to individual resources.
513
2684
  */
514
2685
  create(options: {
515
2686
  content: string;
@@ -524,6 +2695,13 @@ declare class EllipsisMemories {
524
2695
  * Available to every credential type, agents included — a wrong
525
2696
  * memory is worse than a missing one. The deleted content is kept in
526
2697
  * the memory's history for forensics, not for an undo API.
2698
+ *
2699
+ * Required permissions: delete:memories.
2700
+ * API key: Supported.
2701
+ * CLI user token: Supported.
2702
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2703
+ * Higher permission levels include lower levels: read < write < delete.
2704
+ * Grant match patterns can further restrict access to individual resources.
527
2705
  */
528
2706
  delete(memory_id: string, options?: {
529
2707
  if_sha256?: string | null;
@@ -539,6 +2717,13 @@ declare class EllipsisMemories {
539
2717
  *
540
2718
  * Pass `if_sha256` (from a previous read) to make a concurrent write
541
2719
  * a 409 instead of silently overwriting it.
2720
+ *
2721
+ * Required permissions: write:memories.
2722
+ * API key: Supported.
2723
+ * CLI user token: Supported.
2724
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2725
+ * Higher permission levels include lower levels: read < write < delete.
2726
+ * Grant match patterns can further restrict access to individual resources.
542
2727
  */
543
2728
  edit(memory_id: string, options?: {
544
2729
  content?: string | null;
@@ -551,6 +2736,13 @@ declare class EllipsisMemories {
551
2736
  * Read one memory's full content.
552
2737
  *
553
2738
  * The id comes from the index returned by listing memories.
2739
+ *
2740
+ * Required permissions: read:memories.
2741
+ * API key: Supported.
2742
+ * CLI user token: Supported.
2743
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2744
+ * Higher permission levels include lower levels: read < write < delete.
2745
+ * Grant match patterns can further restrict access to individual resources.
554
2746
  */
555
2747
  get(memory_id: string): Promise<S['MemoryResponse']>;
556
2748
  /**
@@ -562,31 +2754,31 @@ declare class EllipsisMemories {
562
2754
  * memory, carrying its id, path, and description) plus the same
563
2755
  * entries structured, each with every field except `content`. Read
564
2756
  * the index, then fetch the ids whose content you want.
2757
+ *
2758
+ * Required permissions: read:memories.
2759
+ * API key: Supported.
2760
+ * CLI user token: Supported.
2761
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2762
+ * Higher permission levels include lower levels: read < write < delete.
2763
+ * Grant match patterns can further restrict access to individual resources.
565
2764
  */
566
2765
  list(options?: {
567
2766
  prefix?: string | null;
568
2767
  }): Promise<S['MemoriesListResponse']>;
569
2768
  }
570
- declare class EllipsisModels {
2769
+ declare class EllipsisReviews {
571
2770
  private readonly transport;
572
2771
  constructor(transport: Transport);
573
2772
  /**
574
- * List Supported Models
575
- *
576
- * List selectable agent models.
577
- *
578
- * Most expensive first, with the platform default flagged.
2773
+ * List Review Configs
579
2774
  *
580
- * Reads the same registry as the dashboard's rate table, so a
581
- * client's model picker can never drift from what's offered.
582
- * Behind auth but not account-scoped — the selectable set is
583
- * global.
2775
+ * Required permissions: read:reviews.
2776
+ * API key: Supported.
2777
+ * CLI user token: Supported.
2778
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2779
+ * Higher permission levels include lower levels: read < write < delete.
584
2780
  */
585
- list(): Promise<S['ModelsListResponse']>;
586
- }
587
- declare class EllipsisReviews {
588
- private readonly transport;
589
- constructor(transport: Transport);
2781
+ configs(): Promise<S['GetCodeReviewConfigsResponse']>;
590
2782
  /**
591
2783
  * Create Review
592
2784
  *
@@ -602,6 +2794,12 @@ declare class EllipsisReviews {
602
2794
  * `stages[].session_id` is where a client streams
603
2795
  * (/sessions/{id}/stream on a stage session), since the review
604
2796
  * itself is a pipeline rather than one process.
2797
+ *
2798
+ * Required permissions: write:reviews.
2799
+ * API key: Supported.
2800
+ * CLI user token: Supported.
2801
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2802
+ * Higher permission levels include lower levels: read < write < delete.
605
2803
  */
606
2804
  create(options: {
607
2805
  owner: string;
@@ -621,6 +2819,12 @@ declare class EllipsisReviews {
621
2819
  * Findings only exist after a stage session finalizes — a running
622
2820
  * review honestly reports [] / null, which is why a client
623
2821
  * streams a stage session and then re-fetches the review.
2822
+ *
2823
+ * Required permissions: read:reviews.
2824
+ * API key: Supported.
2825
+ * CLI user token: Supported.
2826
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2827
+ * Higher permission levels include lower levels: read < write < delete.
624
2828
  */
625
2829
  get(review_id: string): Promise<S['Review']>;
626
2830
  /**
@@ -635,6 +2839,12 @@ declare class EllipsisReviews {
635
2839
  *
636
2840
  * Webhook-created reviews appear here too, so this answers "show
637
2841
  * me every review on this PR".
2842
+ *
2843
+ * Required permissions: read:reviews.
2844
+ * API key: Supported.
2845
+ * CLI user token: Supported.
2846
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2847
+ * Higher permission levels include lower levels: read < write < delete.
638
2848
  */
639
2849
  list(options?: {
640
2850
  repository?: (string)[];
@@ -656,6 +2866,13 @@ declare class EllipsisSecrets {
656
2866
  *
657
2867
  * Refused for sandbox tokens; mutations require an API key or
658
2868
  * user token.
2869
+ *
2870
+ * Required permissions: delete:secrets.
2871
+ * API key: Supported.
2872
+ * CLI user token: Supported.
2873
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2874
+ * Higher permission levels include lower levels: read < write < delete.
2875
+ * Grant match patterns can further restrict access to individual resources.
659
2876
  */
660
2877
  delete(name: string): Promise<void>;
661
2878
  /**
@@ -665,6 +2882,13 @@ declare class EllipsisSecrets {
665
2882
  *
666
2883
  * Values are write-only: the response carries only names and
667
2884
  * timestamps, never the stored value.
2885
+ *
2886
+ * Required permissions: read:secrets.
2887
+ * API key: Supported.
2888
+ * CLI user token: Supported.
2889
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2890
+ * Higher permission levels include lower levels: read < write < delete.
2891
+ * Grant match patterns can further restrict access to individual resources.
668
2892
  */
669
2893
  list(): Promise<S['SecretsListResponse']>;
670
2894
  /**
@@ -676,6 +2900,13 @@ declare class EllipsisSecrets {
676
2900
  * only — values are write-only. Refused for sandbox tokens (held by
677
2901
  * potentially-untrusted in-sandbox code); mutations require an
678
2902
  * API key or user token.
2903
+ *
2904
+ * Required permissions: write:secrets.
2905
+ * API key: Supported.
2906
+ * CLI user token: Supported.
2907
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
2908
+ * Higher permission levels include lower levels: read < write < delete.
2909
+ * Grant match patterns can further restrict access to individual resources.
679
2910
  */
680
2911
  set(options: {
681
2912
  secrets: (S['SecretInput'])[];
@@ -685,7 +2916,28 @@ declare class EllipsisSessions {
685
2916
  private readonly transport;
686
2917
  constructor(transport: Transport);
687
2918
  /**
688
- * Get Agent Session Diff
2919
+ * Get Session Analytics
2920
+ *
2921
+ * Measured tokens and spend over time, plus estimated content cost.
2922
+ *
2923
+ * Token lanes use the request's saved rates. Content attribution
2924
+ * apportions input/cache spend by text size, counting carried context
2925
+ * on every request. It is an estimate, not a tool execution fee.
2926
+ * Only the latest 200 retained request bodies are inspected; missing
2927
+ * or unsupported context remains explicitly unattributed. No raw
2928
+ * prompts or tool results are returned. Sandbox tokens may read only
2929
+ * their own session's analytics.
2930
+ *
2931
+ * Required permissions: read:sessions.
2932
+ * API key: Supported.
2933
+ * CLI user token: Supported.
2934
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own session.
2935
+ * Higher permission levels include lower levels: read < write < delete.
2936
+ * Grant match patterns can further restrict access to individual resources.
2937
+ */
2938
+ analytics(session_id: string): Promise<S['SessionAnalytics']>;
2939
+ /**
2940
+ * Get Session Diff
689
2941
  *
690
2942
  * Return the session's uncommitted changes as a patch.
691
2943
  *
@@ -694,12 +2946,19 @@ declare class EllipsisSessions {
694
2946
  * counts ride on the session itself (`git.repos[].files`); this
695
2947
  * is the text behind them. Empty when the tree was clean. A
696
2948
  * sandbox token may read only its own session's diff.
2949
+ *
2950
+ * Required permissions: read:sessions.
2951
+ * API key: Supported.
2952
+ * CLI user token: Supported.
2953
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own session.
2954
+ * Higher permission levels include lower levels: read < write < delete.
2955
+ * Grant match patterns can further restrict access to individual resources.
697
2956
  */
698
2957
  diff(session_id: string): Promise<S['SessionDiffResponse']>;
699
2958
  /**
700
- * Export Agent Session
2959
+ * Download Session
701
2960
  *
702
- * Export the complete session history.
2961
+ * Download the complete session history.
703
2962
  *
704
2963
  * The complete, ordered history of the session (agent output, tool calls, thinking,
705
2964
  * lifecycle events, sandbox output, message events) as an ordered
@@ -709,23 +2968,71 @@ declare class EllipsisSessions {
709
2968
  * for one file. The JSON API never carries the bytes (same
710
2969
  * two-step as files). /records is the paged live view of the
711
2970
  * same data.
2971
+ *
2972
+ * Required permissions: read:sessions.
2973
+ * API key: Supported.
2974
+ * CLI user token: Supported.
2975
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2976
+ * Higher permission levels include lower levels: read < write < delete.
2977
+ * Grant match patterns can further restrict access to individual resources.
712
2978
  */
713
- export(session_id: string): Promise<S['GetSessionLogResponse']>;
2979
+ download(session_id: string): Promise<S['GetSessionLogResponse']>;
714
2980
  /**
715
- * Get Agent Session
2981
+ * List Session Executions
2982
+ *
2983
+ * Return the session's execution attempts, oldest first.
2984
+ *
2985
+ * Includes the selected harness, model, resolved instructions, initial
2986
+ * query, and common result summary. Complete native outputs remain in
2987
+ * the session's records. Internal launch options and checkpoint storage
2988
+ * references are excluded.
2989
+ *
2990
+ * Required permissions: read:sessions.
2991
+ * API key: Supported.
2992
+ * CLI user token: Supported.
2993
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2994
+ * Higher permission levels include lower levels: read < write < delete.
2995
+ * Grant match patterns can further restrict access to individual resources.
2996
+ */
2997
+ executions(session_id: string): Promise<S['SessionExecutionsListResponse']>;
2998
+ /**
2999
+ * Get Session
716
3000
  *
717
3001
  * Return one session.
718
3002
  *
719
3003
  * The public wire shape — the same shape the stream's session
720
- * frames carry, with attributed_user and stopped_by_user resolved
3004
+ * frames carry, with attribution, stop, and archive actors resolved
721
3005
  * at read time.
722
3006
  *
723
3007
  * The heavy near-static blobs (config snapshot, input/output)
724
3008
  * live on the detail endpoints, not here.
3009
+ *
3010
+ * Required permissions: read:sessions.
3011
+ * API key: Supported.
3012
+ * CLI user token: Supported.
3013
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3014
+ * Higher permission levels include lower levels: read < write < delete.
3015
+ * Grant match patterns can further restrict access to individual resources.
725
3016
  */
726
3017
  get(session_id: string): Promise<S['SessionResponse']>;
727
3018
  /**
728
- * Ingest Agent Session Transcript
3019
+ * Get Session Git
3020
+ *
3021
+ * The session's GitHub-side git view: its commits, and each PR it
3022
+ * opened joined to the live gh_prs row and reviews. The identity list
3023
+ * (output_git) rides the session itself over the WebSocket; this is
3024
+ * the join a "run" notify tells an open pane to refetch.
3025
+ *
3026
+ * Required permissions: read:sessions.
3027
+ * API key: Supported.
3028
+ * CLI user token: Supported.
3029
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3030
+ * Higher permission levels include lower levels: read < write < delete.
3031
+ * Grant match patterns can further restrict access to individual resources.
3032
+ */
3033
+ git(session_id: string): Promise<S['SessionGitResponse']>;
3034
+ /**
3035
+ * Ingest Session Transcript
729
3036
  *
730
3037
  * Append transcript lines to a session's record.
731
3038
  *
@@ -733,23 +3040,39 @@ declare class EllipsisSessions {
733
3040
  *
734
3041
  * A sandbox token may only push its own session's transcript.
735
3042
  * Idempotent by transcript line uuid; tolerant of malformed lines.
3043
+ *
3044
+ * Required permissions: write:sessions.
3045
+ * API key: Supported.
3046
+ * CLI user token: Supported.
3047
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own session.
3048
+ * Higher permission levels include lower levels: read < write < delete.
3049
+ * Grant match patterns can further restrict access to individual resources.
736
3050
  */
737
3051
  ingestTranscript(session_id: string, options: {
738
3052
  lines: (string)[];
739
3053
  offset?: number;
740
3054
  }): Promise<S['TranscriptIngestResult']>;
741
3055
  /**
742
- * List Agent Sessions
3056
+ * List Sessions
743
3057
  *
744
3058
  * List cloud agent sessions, newest first.
745
3059
  *
746
- * Optionally filtered by automation (id or name), source, time
3060
+ * Optionally filtered by agent (id or name), source, service, handler, time
747
3061
  * window, attributed author, repository, and whether the session is
748
3062
  * still going.
3063
+ *
3064
+ * Required permissions: read:sessions.
3065
+ * API key: Supported.
3066
+ * CLI user token: Supported.
3067
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3068
+ * Higher permission levels include lower levels: read < write < delete.
3069
+ * Grant match patterns can further restrict access to individual resources.
749
3070
  */
750
3071
  list(options?: {
751
- automation?: string | null;
3072
+ agent?: string | null;
752
3073
  source?: (S['SessionSource'])[] | null;
3074
+ service?: S['HandlerService'] | null;
3075
+ handler?: string | null;
753
3076
  days?: number | null;
754
3077
  start?: string | null;
755
3078
  end?: string | null;
@@ -758,9 +3081,10 @@ declare class EllipsisSessions {
758
3081
  author_id?: number | null;
759
3082
  repo?: string | null;
760
3083
  unfinished?: boolean;
3084
+ exclude_code_review?: boolean;
761
3085
  }): Promise<Page<S['Session'], S['SessionsListResponse']>>;
762
3086
  /**
763
- * Get Agent Session Output
3087
+ * Get Session Output
764
3088
  *
765
3089
  * Return the session's typed output.
766
3090
  *
@@ -769,10 +3093,17 @@ declare class EllipsisSessions {
769
3093
  * while the session is still running (poll GET /v1/sessions/{id}),
770
3094
  * when the agent declares no output block, or when no execution
771
3095
  * produced output.
3096
+ *
3097
+ * Required permissions: read:sessions.
3098
+ * API key: Supported.
3099
+ * CLI user token: Supported.
3100
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3101
+ * Higher permission levels include lower levels: read < write < delete.
3102
+ * Grant match patterns can further restrict access to individual resources.
772
3103
  */
773
- output(session_id: string): Promise<void>;
3104
+ output(session_id: string): Promise<Record<string, unknown>>;
774
3105
  /**
775
- * Get Agent Session Records
3106
+ * Get Session Records
776
3107
  *
777
3108
  * Return the session's stored transcript records, oldest first.
778
3109
  *
@@ -781,13 +3112,45 @@ declare class EllipsisSessions {
781
3112
  * agent answering "did X look into Y?" needs to read the sessions
782
3113
  * it finds, and any org member sees the same transcript in the
783
3114
  * dashboard.
3115
+ *
3116
+ * Required permissions: read:sessions.
3117
+ * API key: Supported.
3118
+ * CLI user token: Supported.
3119
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3120
+ * Higher permission levels include lower levels: read < write < delete.
3121
+ * Grant match patterns can further restrict access to individual resources.
784
3122
  */
785
3123
  records(session_id: string, options?: {
786
3124
  cursor?: string | null;
787
3125
  limit?: number | null;
788
- }): Promise<Page<S['ClaudeSessionRecord'] | S['CodexSessionRecord'] | S['LifecycleSessionRecord'], S['SessionRecordsListResponse']>>;
3126
+ }): Promise<Page<S['SessionRecord'], S['SessionRecordsListResponse']>>;
3127
+ /**
3128
+ * Search Sessions
3129
+ *
3130
+ * Required permissions: read:sessions.
3131
+ * API key: Supported.
3132
+ * CLI user token: Supported.
3133
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3134
+ * Higher permission levels include lower levels: read < write < delete.
3135
+ * Grant match patterns can further restrict access to individual resources.
3136
+ */
3137
+ search(options?: {
3138
+ q?: string;
3139
+ scope?: S['SessionSearchScope'];
3140
+ source?: (S['SessionSource'])[] | null;
3141
+ service?: S['HandlerService'] | null;
3142
+ handler?: string | null;
3143
+ author_id?: (number)[] | null;
3144
+ agent_id?: (string)[] | null;
3145
+ session_ids?: (string)[] | null;
3146
+ repo?: (string)[] | null;
3147
+ status?: (S['SessionLifecycleStatus'])[] | null;
3148
+ start?: string | null;
3149
+ end?: string | null;
3150
+ limit?: number;
3151
+ }): Promise<S['SessionSearchResponse']>;
789
3152
  /**
790
- * Send Agent Session Message
3153
+ * Send Session Message
791
3154
  *
792
3155
  * Send a message to a session.
793
3156
  *
@@ -795,6 +3158,13 @@ declare class EllipsisSessions {
795
3158
  * Returns the created message so the caller can track it by id; a
796
3159
  * retried send with the same idempotency_key returns the original
797
3160
  * message.
3161
+ *
3162
+ * Required permissions: write:sessions.
3163
+ * API key: Supported.
3164
+ * CLI user token: Supported.
3165
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3166
+ * Higher permission levels include lower levels: read < write < delete.
3167
+ * Grant match patterns can further restrict access to individual resources.
798
3168
  */
799
3169
  sendMessage(session_id: string, options: {
800
3170
  idempotency_key?: string | null;
@@ -802,82 +3172,152 @@ declare class EllipsisSessions {
802
3172
  message: string;
803
3173
  }): Promise<S['SessionMessageResponse']>;
804
3174
  /**
805
- * Start Agent Session
3175
+ * Get Session Stream Ticket
3176
+ *
3177
+ * Required permissions: read:sessions.
3178
+ * API key: Supported.
3179
+ * CLI user token: Supported.
3180
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3181
+ * Higher permission levels include lower levels: read < write < delete.
3182
+ * Grant match patterns can further restrict access to individual resources.
3183
+ */
3184
+ sessionStreamTicket(session_id: string): Promise<S['StreamTicketResponse']>;
3185
+ /**
3186
+ * Start Session
806
3187
  *
807
3188
  * Start a cloud agent session.
808
3189
  *
809
3190
  * The daily driver: a prompt, optionally where to run it
810
- * (`environment`) and the run's own settings, in the AutomationConfig
3191
+ * (`environment`) and the run's own settings, in the AgentConfig
811
3192
  * vocabulary. What you send is what runs: omit `environment` and the
812
3193
  * session runs in the built-in basic sandbox. A missing model or
813
3194
  * budget comes from the organization's settings, so
814
- * `{"prompt": "..."}` alone is a complete request. `prompt` is the
815
- * first message; omit it and the session starts idle, waiting for
816
- * one. 400 when `interactive` is false and there is no prompt, or
3195
+ * `{"claude_code": {"prompt": "..."}}` is a complete request.
3196
+ * Set exactly one of `claude_code` or `codex`. Its `prompt` is the
3197
+ * first message; omit the prompt and the session starts idle, waiting for
3198
+ * one. 400 when `lifecycle.interactive` is false and there is no prompt, or
817
3199
  * when `budget` exceeds the organization's per-session ceiling. To
818
- * run a saved automation, use POST /v1/automations/{automation_id}/sessions.
3200
+ * run a saved agent, use POST /v1/agents/{agent_id}/sessions.
3201
+ *
3202
+ * Required permissions: write:sessions.
3203
+ * API key: Supported.
3204
+ * CLI user token: Supported.
3205
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3206
+ * Higher permission levels include lower levels: read < write < delete.
3207
+ * Grant match patterns can further restrict access to individual resources.
819
3208
  */
820
3209
  start(options?: {
821
3210
  budget?: number | null;
822
- claude?: S['ClaudeConfig'] | null;
823
- codex?: S['CodexConfig'] | null;
824
- environment?: string | S['EnvironmentConfig'] | null;
3211
+ claude_code?: S['ClaudeConfig-Input'] | null;
3212
+ codex?: S['CodexConfig-Input'] | null;
3213
+ environment?: string | S['EnvironmentConfig-Input'] | null;
825
3214
  force_rebuild?: boolean;
826
3215
  images?: (S['ImageAttachment'])[];
827
- interactive?: boolean;
3216
+ lifecycle?: S['SessionLifecycleConfig'];
828
3217
  metadata?: Record<string, string>;
829
3218
  output?: S['OutputConfig'] | null;
830
- permissions?: S['PermissionsConfig'] | null;
831
- prompt?: string | null;
3219
+ permissions?: S['PermissionsConfig-Input'] | null;
832
3220
  repositories?: (string)[] | null;
833
- skills?: (S['SkillRef'])[] | null;
3221
+ skills?: (S['SkillRef-Input'])[] | null;
834
3222
  }): Promise<S['SessionResponse']>;
835
3223
  /**
836
- * Stop Agent Session
3224
+ * Stop Session
837
3225
  *
838
3226
  * Stop an in-flight session and return it.
839
3227
  *
840
3228
  * stopped_by is recorded only when the caller's credential maps
841
3229
  * to a GitHub account.
3230
+ *
3231
+ * Required permissions: write:sessions.
3232
+ * API key: Supported.
3233
+ * CLI user token: Supported.
3234
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3235
+ * Higher permission levels include lower levels: read < write < delete.
3236
+ * Grant match patterns can further restrict access to individual resources.
842
3237
  */
843
3238
  stop(session_id: string): Promise<S['SessionResponse']>;
3239
+ /**
3240
+ * Get Sessions Stream Ticket
3241
+ *
3242
+ * Required permissions: read:sessions.
3243
+ * API key: Supported.
3244
+ * CLI user token: Supported.
3245
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3246
+ * Higher permission levels include lower levels: read < write < delete.
3247
+ * Grant match patterns can further restrict access to individual resources.
3248
+ */
3249
+ streamTicket(): Promise<S['StreamTicketResponse']>;
3250
+ /**
3251
+ * Update Session
3252
+ *
3253
+ * Archive or unarchive a session and return it.
3254
+ *
3255
+ * Set archived to true to record the current server time and the
3256
+ * authenticated GitHub user. API-key requests record no user.
3257
+ * Repeated archive requests preserve the original time and user.
3258
+ * Set archived to false to clear both fields. Archiving is available
3259
+ * in any session state and does not stop a running session.
3260
+ *
3261
+ * Changes are delivered to session and session-list streams.
3262
+ *
3263
+ * Required permissions: write:sessions.
3264
+ * API key: Supported.
3265
+ * CLI user token: Supported.
3266
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3267
+ * Higher permission levels include lower levels: read < write < delete.
3268
+ * Grant match patterns can further restrict access to individual resources.
3269
+ */
3270
+ update(session_id: string, options: {
3271
+ archived: boolean;
3272
+ }): Promise<S['SessionResponse']>;
844
3273
  /** Start a session and return a handle over it. */
845
3274
  run(options: Parameters<EllipsisSessions['start']>[0]): Promise<SessionHandle>;
846
3275
  /** A handle over an existing session. */
847
3276
  handle(sessionId: string): Promise<SessionHandle>;
848
3277
  }
849
- declare class EllipsisSettingsOrganization {
3278
+ declare class EllipsisSupportSlack {
850
3279
  private readonly transport;
851
3280
  constructor(transport: Transport);
852
3281
  /**
853
- * Get Organization Settings
854
- *
855
- * Get the organization settings.
3282
+ * Request Slack Help
856
3283
  *
857
- * The default model every session falls back to when neither its
858
- * request nor its automation names one, and the per-session budget
859
- * ceiling no session may exceed.
3284
+ * Required permissions: write:account.
3285
+ * API key: Requires a CLI user token.
3286
+ * CLI user token: Supported.
3287
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3288
+ * Higher permission levels include lower levels: read < write < delete.
860
3289
  */
861
- get(): Promise<S['OrganizationSettings']>;
3290
+ create(options: {
3291
+ emails: (string)[];
3292
+ resend?: boolean;
3293
+ }): Promise<S['SlackHelpResponse']>;
862
3294
  /**
863
- * Set Organization Settings
3295
+ * Get Slack Help
864
3296
  *
865
- * Set the organization settings.
3297
+ * Required permissions: read:account.
3298
+ * API key: Supported.
3299
+ * CLI user token: Supported.
3300
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3301
+ * Higher permission levels include lower levels: read < write < delete.
3302
+ */
3303
+ get(): Promise<void>;
3304
+ /**
3305
+ * Invite To Slack Help
866
3306
  *
867
- * Replaces both: `default_model` accepts an alias or canonical id
868
- * and is stored canonical; `budget_ceiling.session` is in US
869
- * dollars, at most the platform ceiling. Null clears each.
870
- * Refused for sandbox tokens (potentially prompt-injected code must
871
- * not repoint the organization's defaults).
3307
+ * Required permissions: write:account.
3308
+ * API key: Requires a CLI user token.
3309
+ * CLI user token: Supported.
3310
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3311
+ * Higher permission levels include lower levels: read < write < delete.
872
3312
  */
873
- set(options?: {
874
- budget_ceiling?: S['BudgetCeiling'];
875
- default_model?: string | null;
876
- }): Promise<S['OrganizationSettings']>;
3313
+ invite(options: {
3314
+ emails: (string)[];
3315
+ resend?: boolean;
3316
+ }): Promise<S['SlackHelpResponse']>;
877
3317
  }
878
- declare class EllipsisSettings {
3318
+ declare class EllipsisSupport {
879
3319
  private readonly transport;
880
- readonly organization: EllipsisSettingsOrganization;
3320
+ readonly slack: EllipsisSupportSlack;
881
3321
  constructor(transport: Transport);
882
3322
  }
883
3323
  declare class EllipsisTemplates {
@@ -887,6 +3327,12 @@ declare class EllipsisTemplates {
887
3327
  * Get Agent Template
888
3328
  *
889
3329
  * Return one built-in agent template by slug.
3330
+ *
3331
+ * Required permissions: read:templates.
3332
+ * API key: Supported.
3333
+ * CLI user token: Supported.
3334
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3335
+ * Higher permission levels include lower levels: read < write < delete.
890
3336
  */
891
3337
  get(template_id: string): Promise<S['AgentTemplate']>;
892
3338
  /**
@@ -896,44 +3342,431 @@ declare class EllipsisTemplates {
896
3342
  *
897
3343
  * Behind auth but not account-scoped — the data is static
898
3344
  * product content shared by the dashboard, landing site, and CLI.
3345
+ *
3346
+ * Required permissions: read:templates.
3347
+ * API key: Supported.
3348
+ * CLI user token: Supported.
3349
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3350
+ * Higher permission levels include lower levels: read < write < delete.
899
3351
  */
900
3352
  list(): Promise<S['AgentTemplatesListResponse']>;
901
3353
  }
3354
+ declare class EllipsisUserSubscriptionTokens {
3355
+ private readonly transport;
3356
+ constructor(transport: Transport);
3357
+ /**
3358
+ * Delete Subscription Token
3359
+ *
3360
+ * Delete your subscription token for a provider.
3361
+ *
3362
+ * Your sessions stop billing your subscription immediately, and the
3363
+ * usage reading goes with it — it described that token's plan.
3364
+ *
3365
+ * Required permissions: delete:user.
3366
+ * API key: Requires a CLI user token.
3367
+ * CLI user token: Supported.
3368
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3369
+ * Higher permission levels include lower levels: read < write < delete.
3370
+ */
3371
+ delete(provider: S['SubscriptionProvider']): Promise<void>;
3372
+ /**
3373
+ * Get Subscription Token
3374
+ *
3375
+ * Get one provider's subscription token.
3376
+ *
3377
+ * `configured` is false when nothing is saved. The token itself is
3378
+ * never returned, only `token_last4`.
3379
+ *
3380
+ * Required permissions: read:user.
3381
+ * API key: Requires a CLI user token.
3382
+ * CLI user token: Supported.
3383
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3384
+ * Higher permission levels include lower levels: read < write < delete.
3385
+ */
3386
+ get(provider: S['SubscriptionProvider']): Promise<S['SubscriptionToken']>;
3387
+ /**
3388
+ * List Subscription Tokens
3389
+ *
3390
+ * List your subscription tokens.
3391
+ *
3392
+ * One entry per supported provider, whether or not you have saved a
3393
+ * token for it. Tokens are write-only: the response carries only
3394
+ * `token_last4`, never the token.
3395
+ *
3396
+ * Required permissions: read:user.
3397
+ * API key: Requires a CLI user token.
3398
+ * CLI user token: Supported.
3399
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3400
+ * Higher permission levels include lower levels: read < write < delete.
3401
+ */
3402
+ list(): Promise<S['SubscriptionTokensListResponse']>;
3403
+ /**
3404
+ * Set Subscription Token
3405
+ *
3406
+ * Save your subscription token for a provider.
3407
+ *
3408
+ * Replaces whatever was stored. The token is saved DISABLED and
3409
+ * routes nothing until `POST /v1/user/subscription_tokens/{provider}/verify`
3410
+ * succeeds. For Claude, use `claude setup-token`. For Codex, paste
3411
+ * the auth.json credentials from a ChatGPT login. Each subscription
3412
+ * pays only for models from its corresponding provider.
3413
+ *
3414
+ * Required permissions: write:user.
3415
+ * API key: Requires a CLI user token.
3416
+ * CLI user token: Supported.
3417
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3418
+ * Higher permission levels include lower levels: read < write < delete.
3419
+ */
3420
+ set(provider: S['SubscriptionProvider'], options: {
3421
+ token: string;
3422
+ }): Promise<S['SubscriptionToken']>;
3423
+ /**
3424
+ * Get Subscription Usage
3425
+ *
3426
+ * Get your plan's last-observed rate-limit windows.
3427
+ *
3428
+ * Display-only, and only as fresh as your last call through Ellipsis
3429
+ * (`observed_at`) — the same plan used outside Ellipsis moves the
3430
+ * real windows without us seeing them. Null unless a token is
3431
+ * enabled for the provider: a disabled token routes nothing, so any
3432
+ * reading behind it is stale by construction.
3433
+ *
3434
+ * Required permissions: read:user.
3435
+ * API key: Requires a CLI user token.
3436
+ * CLI user token: Supported.
3437
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3438
+ * Higher permission levels include lower levels: read < write < delete.
3439
+ */
3440
+ usage(provider: S['SubscriptionProvider']): Promise<S['SubscriptionUsageResponse']>;
3441
+ /**
3442
+ * Verify Subscription Token
3443
+ *
3444
+ * Verify the stored token by using it.
3445
+ *
3446
+ * Makes one minimal call on the exact runtime path, so a pass proves
3447
+ * the token is what will pay. This is the gate on routing: success
3448
+ * enables the token, failure disables it, so verifying a revoked
3449
+ * token is how you stop it routing. A 200 with `ok: false` is the
3450
+ * normal way a bad token is reported — it is an answer, not a
3451
+ * transport failure.
3452
+ *
3453
+ * Required permissions: write:user.
3454
+ * API key: Requires a CLI user token.
3455
+ * CLI user token: Supported.
3456
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3457
+ * Higher permission levels include lower levels: read < write < delete.
3458
+ */
3459
+ verify(provider: S['SubscriptionProvider']): Promise<S['VerifySubscriptionTokenResponse']>;
3460
+ }
3461
+ declare class EllipsisUserTokens {
3462
+ private readonly transport;
3463
+ constructor(transport: Transport);
3464
+ /**
3465
+ * List User Tokens
3466
+ *
3467
+ * Required permissions: read:user.
3468
+ * API key: Requires a CLI user token.
3469
+ * CLI user token: Supported.
3470
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3471
+ * Higher permission levels include lower levels: read < write < delete.
3472
+ */
3473
+ list(): Promise<S['ListUserTokensResponse']>;
3474
+ /**
3475
+ * Revoke User Token
3476
+ *
3477
+ * Required permissions: delete:user.
3478
+ * API key: Requires a CLI user token.
3479
+ * CLI user token: Supported.
3480
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3481
+ * Higher permission levels include lower levels: read < write < delete.
3482
+ */
3483
+ revoke(token_id: string): Promise<S['TokenRevokedResponse']>;
3484
+ }
3485
+ declare class EllipsisUser {
3486
+ private readonly transport;
3487
+ readonly subscriptionTokens: EllipsisUserSubscriptionTokens;
3488
+ readonly tokens: EllipsisUserTokens;
3489
+ constructor(transport: Transport);
3490
+ }
3491
+ declare class EllipsisVmExecutions {
3492
+ private readonly transport;
3493
+ constructor(transport: Transport);
3494
+ /**
3495
+ * Get Single Vm Execution
3496
+ *
3497
+ * Required permissions: read:environments.
3498
+ * API key: Supported.
3499
+ * CLI user token: Supported.
3500
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own sandbox.
3501
+ * Higher permission levels include lower levels: read < write < delete.
3502
+ */
3503
+ get(vm_execution_id: string): Promise<S['VMExecutionResponse']>;
3504
+ /**
3505
+ * Get Vm Executions
3506
+ *
3507
+ * Required permissions: read:environments.
3508
+ * API key: Supported.
3509
+ * CLI user token: Supported.
3510
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own sandbox.
3511
+ * Higher permission levels include lower levels: read < write < delete.
3512
+ */
3513
+ list(): Promise<void>;
3514
+ /**
3515
+ * Get Vm Execution Stream Ticket
3516
+ *
3517
+ * Required permissions: read:environments.
3518
+ * API key: Supported.
3519
+ * CLI user token: Supported.
3520
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own sandbox.
3521
+ * Higher permission levels include lower levels: read < write < delete.
3522
+ */
3523
+ streamTicket(vm_execution_id: string): Promise<S['StreamTicketResponse']>;
3524
+ }
3525
+ declare class EllipsisVmImages {
3526
+ private readonly transport;
3527
+ constructor(transport: Transport);
3528
+ /**
3529
+ * Get Vm Image
3530
+ *
3531
+ * Get metadata for a reusable VM image.
3532
+ *
3533
+ * Required permissions: read:environments.
3534
+ * API key: Supported.
3535
+ * CLI user token: Supported.
3536
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3537
+ * Higher permission levels include lower levels: read < write < delete.
3538
+ */
3539
+ get(image_id: string): Promise<S['VMImageResponse']>;
3540
+ /**
3541
+ * List Vm Images
3542
+ *
3543
+ * List reusable VM images.
3544
+ *
3545
+ * Includes expiration, repository revisions, and build identity.
3546
+ *
3547
+ * Required permissions: read:environments.
3548
+ * API key: Supported.
3549
+ * CLI user token: Supported.
3550
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3551
+ * Higher permission levels include lower levels: read < write < delete.
3552
+ */
3553
+ list(options?: {
3554
+ limit?: number;
3555
+ offset?: number;
3556
+ }): Promise<S['VMImageListResponse']>;
3557
+ }
3558
+ declare class EllipsisVms {
3559
+ private readonly transport;
3560
+ constructor(transport: Transport);
3561
+ /**
3562
+ * Get Vm
3563
+ *
3564
+ * Get a VM and its most recent execution.
3565
+ *
3566
+ * Required permissions: read:environments.
3567
+ * API key: Supported.
3568
+ * CLI user token: Supported.
3569
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own VM.
3570
+ * Higher permission levels include lower levels: read < write < delete.
3571
+ */
3572
+ get(vm_id: string): Promise<S['VM']>;
3573
+ /**
3574
+ * List Vms
3575
+ *
3576
+ * List VMs and their last recorded state.
3577
+ *
3578
+ * Each machine appears once, including paused and deleted VMs, newest execution first.
3579
+ *
3580
+ * Required permissions: read:environments.
3581
+ * API key: Supported.
3582
+ * CLI user token: Supported.
3583
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration. Only the token's own VM.
3584
+ * Higher permission levels include lower levels: read < write < delete.
3585
+ */
3586
+ list(options?: {
3587
+ limit?: number;
3588
+ offset?: number;
3589
+ }): Promise<S['VMListResponse']>;
3590
+ }
3591
+ declare class EllipsisWebhooksDeliveries {
3592
+ private readonly transport;
3593
+ constructor(transport: Transport);
3594
+ /**
3595
+ * Get Webhook Delivery
3596
+ *
3597
+ * Inspect a delivery's payload and attempts.
3598
+ *
3599
+ * Payloads are immutable across retries. Attempt details include HTTP
3600
+ * status, timing, and errors. Response bodies are not retained.
3601
+ *
3602
+ * Required permissions: read:webhooks.
3603
+ * API key: Supported.
3604
+ * CLI user token: Supported.
3605
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3606
+ * Higher permission levels include lower levels: read < write < delete.
3607
+ */
3608
+ get(delivery_id: string): Promise<S['WebhookDeliveryResponse']>;
3609
+ /**
3610
+ * List Webhook Deliveries
3611
+ *
3612
+ * List webhook deliveries, newest first.
3613
+ *
3614
+ * Includes verification pings and deliveries for deleted webhooks.
3615
+ * History is retained for 30 days. Retries belong to the same delivery.
3616
+ *
3617
+ * Required permissions: read:webhooks.
3618
+ * API key: Supported.
3619
+ * CLI user token: Supported.
3620
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3621
+ * Higher permission levels include lower levels: read < write < delete.
3622
+ */
3623
+ list(options?: {
3624
+ webhook_id?: string | null;
3625
+ event_type?: S['WebhookEventType'] | null;
3626
+ status?: S['WebhookDeliveryStatus'] | null;
3627
+ start?: string | null;
3628
+ end?: string | null;
3629
+ limit?: number;
3630
+ cursor?: string | null;
3631
+ }): Promise<Page<S['WebhookDelivery'], S['WebhookDeliveriesListResponse']>>;
3632
+ }
3633
+ declare class EllipsisWebhooks {
3634
+ private readonly transport;
3635
+ readonly deliveries: EllipsisWebhooksDeliveries;
3636
+ constructor(transport: Transport);
3637
+ /**
3638
+ * Create Webhook
3639
+ *
3640
+ * Create a webhook and send a verification ping.
3641
+ *
3642
+ * Save the signing secret from this response; it is returned once.
3643
+ * Accounts default to three webhook slots, including unverified and
3644
+ * pending ones; your account may have a custom allowance. A ping returning HTTP 200 moves unverified to pending. Contact
3645
+ * Ellipsis to activate it and receive session.create events.
3646
+ *
3647
+ * Required permissions: write:webhooks.
3648
+ * API key: Supported.
3649
+ * CLI user token: Supported.
3650
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3651
+ * Higher permission levels include lower levels: read < write < delete.
3652
+ */
3653
+ create(options: {
3654
+ description?: string | null;
3655
+ events: ("session.create")[];
3656
+ url: string;
3657
+ }): Promise<S['CreateWebhookResponse']>;
3658
+ /**
3659
+ * Delete Webhook
3660
+ *
3661
+ * Delete a webhook and cancel outstanding deliveries.
3662
+ *
3663
+ * An HTTP request already in flight may finish. Delivery history remains
3664
+ * available for 30 days. Deletion frees a webhook slot.
3665
+ *
3666
+ * Required permissions: delete:webhooks.
3667
+ * API key: Supported.
3668
+ * CLI user token: Supported.
3669
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3670
+ * Higher permission levels include lower levels: read < write < delete.
3671
+ */
3672
+ delete(webhook_id: string): Promise<void>;
3673
+ /**
3674
+ * Get Webhook
3675
+ *
3676
+ * Get a webhook's configuration and approval state.
3677
+ *
3678
+ * Required permissions: read:webhooks.
3679
+ * API key: Supported.
3680
+ * CLI user token: Supported.
3681
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3682
+ * Higher permission levels include lower levels: read < write < delete.
3683
+ */
3684
+ get(webhook_id: string): Promise<S['WebhookResponse']>;
3685
+ /**
3686
+ * List Webhooks
3687
+ *
3688
+ * List your webhooks and their delivery summaries.
3689
+ *
3690
+ * Required permissions: read:webhooks.
3691
+ * API key: Supported.
3692
+ * CLI user token: Supported.
3693
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3694
+ * Higher permission levels include lower levels: read < write < delete.
3695
+ */
3696
+ list(): Promise<S['WebhooksListResponse']>;
3697
+ /**
3698
+ * Ping Webhook
3699
+ *
3700
+ * Send a signed verification or test ping.
3701
+ *
3702
+ * Available in every state. Only HTTP 200 verifies a destination;
3703
+ * successful pings never activate it. The default limit is five pings per
3704
+ * account per minute, including creation and URL changes. Custom
3705
+ * account allowances apply.
3706
+ *
3707
+ * Required permissions: write:webhooks.
3708
+ * API key: Supported.
3709
+ * CLI user token: Supported.
3710
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3711
+ * Higher permission levels include lower levels: read < write < delete.
3712
+ */
3713
+ ping(webhook_id: string): Promise<void>;
3714
+ /**
3715
+ * Update Webhook
3716
+ *
3717
+ * Replace a webhook's configuration.
3718
+ *
3719
+ * Changing the URL cancels outstanding deliveries, clears verification
3720
+ * and approval, and sends another ping. State and signing secret cannot
3721
+ * be set here. Updating description or subscriptions preserves approval.
3722
+ *
3723
+ * Required permissions: write:webhooks.
3724
+ * API key: Supported.
3725
+ * CLI user token: Supported.
3726
+ * Sandbox token: Not supported by sandbox tokens, even with permissions.ellipsis enabled.
3727
+ * Higher permission levels include lower levels: read < write < delete.
3728
+ */
3729
+ update(webhook_id: string, options: {
3730
+ description?: string | null;
3731
+ events: ("session.create")[];
3732
+ url: string;
3733
+ }): Promise<S['WebhookResponse']>;
3734
+ }
902
3735
  declare class Ellipsis {
903
3736
  private readonly transport;
3737
+ readonly account: EllipsisAccount;
3738
+ readonly agents: EllipsisAgents;
904
3739
  readonly alerts: EllipsisAlerts;
905
3740
  readonly analytics: EllipsisAnalytics;
906
3741
  readonly auth: EllipsisAuth;
907
- readonly automations: EllipsisAutomations;
908
3742
  readonly environments: EllipsisEnvironments;
909
3743
  readonly files: EllipsisFiles;
3744
+ readonly handlers: EllipsisHandlers;
910
3745
  readonly integrations: EllipsisIntegrations;
911
3746
  readonly memories: EllipsisMemories;
912
- readonly models: EllipsisModels;
913
3747
  readonly reviews: EllipsisReviews;
914
3748
  readonly secrets: EllipsisSecrets;
915
3749
  readonly sessions: EllipsisSessions;
916
- readonly settings: EllipsisSettings;
3750
+ readonly support: EllipsisSupport;
917
3751
  readonly templates: EllipsisTemplates;
3752
+ readonly user: EllipsisUser;
3753
+ readonly vmExecutions: EllipsisVmExecutions;
3754
+ readonly vmImages: EllipsisVmImages;
3755
+ readonly vms: EllipsisVms;
3756
+ readonly webhooks: EllipsisWebhooks;
918
3757
  constructor(options: TransportOptions);
919
- /**
920
- * Get Budget
921
- *
922
- * Return the caller's current budget summary.
923
- */
924
- budget(): Promise<S['BudgetSummary']>;
925
3758
  /**
926
3759
  * Current Identity
927
3760
  *
928
3761
  * Return the identity behind the caller's credential.
929
- */
930
- me(): Promise<S['WhoAmIResponse']>;
931
- /**
932
- * Get Usage
933
3762
  *
934
- * Return the caller's usage dashboard data.
3763
+ * Required permissions: read:account.
3764
+ * API key: Supported.
3765
+ * CLI user token: Supported.
3766
+ * Sandbox token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
3767
+ * Higher permission levels include lower levels: read < write < delete.
935
3768
  */
936
- usage(): Promise<S['GetUsageDashboardResponse']>;
3769
+ identity(): Promise<S['Identity']>;
937
3770
  }
938
3771
 
939
3772
  declare class EllipsisError extends Error {
@@ -968,4 +3801,4 @@ declare class RateLimitError extends APIError {
968
3801
  declare class ServerError extends APIError {
969
3802
  }
970
3803
 
971
- export { APIError, AuthenticationError, ConflictError, DEFAULT_BASE_URL, Ellipsis, EllipsisError, ForbiddenError, NotFoundError, Page, RateLimitError, ServerError, SessionHandle, TERMINAL_STATUSES, Transport, TransportError, type TransportOptions, UnprocessableError, components, isSettled };
3804
+ export { APIError, type AgentListStreamMessage, AuthenticationError, type CollectionStreamFrame, type CollectionStreamHeartbeat, ConflictError, DEFAULT_BASE_URL, Ellipsis, EllipsisError, ForbiddenError, NotFoundError, Page, RateLimitError, type SandboxSnapshotFrame, type SandboxUpdateFrame, ServerError, SessionHandle, type SessionListStreamMessage, TERMINAL_STATUSES, Transport, TransportError, type TransportOptions, UnprocessableError, components, isSettled };