@ellipsis-dev/sdk 0.28.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,12 +1,127 @@
1
- import { c as components } from './types-B-jIFh4_.js';
2
- export { A as AttributionType, a as AutomationConfig, b as AutomationIdentity, B as BudgetConfig, d as BudgetSource, C as ClaudeAssistantEvent, e as ClaudeAssistantMessage, f as ClaudeConfig, g as ClaudeConversationResetEvent, h as ClaudeNativeEvent, i as ClaudeNativeSessionRecord, j as ClaudeNativeUsage, k as ClaudeRateLimitEvent, l as ClaudeRateLimitInfo, m as ClaudeResultEvent, n as ClaudeSessionRecord, o as ClaudeSystemEvent, p as ClaudeUserEvent, q as ClaudeUserMessage, r as CodexAgentMessage, s as CodexAgentMessageItem, t as CodexAppServerError, u as CodexAppServerEvent, v as CodexAppServerItem, w as CodexAppServerNotification, x as CodexAppServerSessionRecord, y as CodexCommandExecution, z as CodexCommandExecutionItem, D as CodexConfig, E as CodexContextCompaction, F as CodexEffortLevel, G as CodexErrorEvent, H as CodexErrorItem, I as CodexErrorParams, J as CodexEvent, K as CodexFileChange, L as CodexFileChangeItem, M as CodexFileUpdate, N as CodexItem, O as CodexItemCompleted, P as CodexItemCompletedEvent, Q as CodexItemParams, R as CodexItemStarted, S as CodexItemStartedEvent, T as CodexItemUpdatedEvent, U as CodexLocalImageInput, V as CodexMcpToolCall, W as CodexMcpToolCallAppContext, X as CodexMcpToolCallError, Y as CodexMcpToolCallItem, Z as CodexMcpToolCallResult, _ as CodexPlan, $ as CodexReasoning, a0 as CodexReasoningItem, a1 as CodexSessionRecord, a2 as CodexTextInput, a3 as CodexThread, a4 as CodexThreadStarted, a5 as CodexThreadStartedEvent, a6 as CodexThreadStartedParams, a7 as CodexThreadTokenUsage, a8 as CodexTodoListItem, a9 as CodexTokenUsageBreakdown, aa as CodexTokenUsageParams, ab as CodexTokenUsageUpdated, ac as CodexTurn, ad as CodexTurnCompleted, ae as CodexTurnCompletedEvent, af as CodexTurnError, ag as CodexTurnFailedEvent, ah as CodexTurnParams, ai as CodexTurnStarted, aj as CodexTurnStartedEvent, ak as CodexUsage, al as CodexUserInput, am as CodexUserMessage, an as CodexWebSearch, ao as CodexWebSearchItem, ap as ComputeConfig, aq as ConfigMetadata, ar as CreateReviewRequest, as as CronTrigger, at as DeltaFrame, au as DoneFrame, av as Duration, aw as EffortLevel, ax as EllipsisGrant, ay as EllipsisPermissions, az as EnvironmentConfig, aA as EnvironmentHooks, aB as EnvironmentImage, aC as EnvironmentSource, aD as EnvironmentVariable, aE as ErrorFrame, aF as ExecutionResult, aG as Finding, aH as GithubAccountFilter, aI as GithubAccountSelector, aJ as GithubAccountSnippet, aK as GithubAccountType, aL as GithubPermissions, aM as Harness, aN as HeartbeatFrame, aO as InputContract, aP as IssueAction, aQ as LegacyAssistantPayload, aR as LegacyNativeUsage, aS as LegacyResultPayload, aT as Level, aU as LifecycleSessionRecord, aV as LinearIssueAction, aW as McpRemoteServer, aX as McpServerRef, aY as McpStdioServer, aZ as MemorySize, a_ as MessageDeliveredPayload, a$ as MessageDeliveredRecord, b0 as MessageReceivedPayload, b1 as MessageReceivedRecord, b2 as MessageRequeuedPayload, b3 as MessageRequeuedRecord, b4 as OutboxCollectedPayload, b5 as OutboxCollectedRecord, b6 as OutputConfig, b7 as ParentKind, b8 as PermissionsConfig, b9 as PlatformSessionRecord, ba as PromptBlockedReason, bb as PullRequestAction, bc as ReactIssue, bd as ReactLinearIssue, be as ReactPullRequest, bf as ReactPush, bg as ReactSentry, bh as ReactSlackChannel, bi as ReactTrigger, bj as RecordsAppendFrame, bk as RepositoryFilter, bl as RepositoryRef, bm as ResolvedReviewScope, bn as Review, bo as ReviewConfiguration, bp as ReviewCounters, bq as ReviewFinding, br as ReviewRequester, bs as ReviewScope, bt as ReviewScopeKind, bu as ReviewStage, bv as ReviewedCommit, bw as ReviewsListResponse, bx as RunStatus, by as SandboxOutputPayload, bz as SandboxOutputRecord, bA as SandboxPhasePayload, bB as SandboxPhaseRecord, bC as SandboxReadyPayload, bD as SandboxReadyRecord, bE as SandboxStartingPayload, bF as SandboxStartingRecord, bG as SdkAssistantRecord, bH as SdkCacheCreation, bI as SdkContentBlock, bJ as SdkRateLimitRecord, bK as SdkRecord, bL as SdkResultRecord, bM as SdkServerToolResultBlock, bN as SdkServerToolUseBlock, bO as SdkSystemRecord, bP as SdkTextBlock, bQ as SdkThinkingBlock, bR as SdkToolResultBlock, bS as SdkToolUseBlock, bT as SdkUserRecord, bU as SendSessionMessageRequest, bV as SentryAction, bW as Session, bX as Session1, bY as SessionAttribution, bZ as SessionAutomation, b_ as SessionBudget, b$ as SessionCancelledPayload, c0 as SessionCancelledRecord, c1 as SessionClosedPayload, c2 as SessionClosedRecord, c3 as SessionConfig, c4 as SessionConfig1, c5 as SessionCost, c6 as SessionEnvironment, c7 as SessionExecution, c8 as SessionExecutionsListResponse, c9 as SessionExitStatus, ca as SessionFrame, cb as SessionGit, cc as SessionGitCommit, cd as SessionGitFile, ce as SessionGitPr, cf as SessionGitRepo, cg as SessionIdlePayload, ch as SessionIdleRecord, ci as SessionLiveness, cj as SessionMessage, ck as SessionMessageImage, cl as SessionMessageResponse, cm as SessionMessageStatus, cn as SessionParent, co as SessionPrompting, cp as SessionRecord, cq as SessionRecordsListResponse, cr as SessionResponse, cs as SessionResumedPayload, ct as SessionResumedRecord, cu as SessionRetryingPayload, cv as SessionRetryingRecord, cw as SessionScheduledPayload, cx as SessionScheduledRecord, cy as SessionSource, cz as SessionStartingPayload, cA as SessionStartingRecord, cB as SessionState, cC as SessionStatus, cD as SessionStopped, cE as SessionStreamFrame, cF as SessionSummary, cG as SessionSurface, cH as SessionTokens, cI as SessionTrigger, cJ as SessionTriggerActor, cK as SessionsListResponse, cL as SettingsRef, cM as SkillRef, cN as SnapshotFrame, cO as StreamFrame, cP as SystemFileRef, cQ as TokensInfo, cR as TurnCompletedPayload, cS as TurnCompletedRecord, cT as TurnFailedPayload, cU as TurnFailedRecord, cV as TurnStartedPayload, cW as TurnStartedRecord, cX as UnknownSessionRecord, cY as paths } from './types-B-jIFh4_.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
3
 
4
4
  /**
5
- * Frames on /v1/sessions/stream, /v1/automations/stream and /v1/sandboxes/{id}/stream. Ignore unknown frame types.
5
+ * Frames on /v1/sessions/stream, /v1/agents/stream and /v1/vm-executions/{id}/stream. Ignore unknown frame types.
6
6
  */
7
- type CollectionStreamFrame = SessionListStreamMessage | AutomationListStreamMessage | CollectionStreamHeartbeat | SandboxSnapshotFrame | SandboxUpdateFrame;
8
- type AttributionType = 'github_user' | 'linear_user' | 'slack_user' | 'api_key';
9
- type GithubAccountType = 'User' | 'Organization' | 'Bot' | 'Mannequin';
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
+ });
10
125
  type EffortLevel = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
11
126
  type CodexEffortLevel = 'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
12
127
  /**
@@ -16,21 +131,19 @@ type CodexEffortLevel = 'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
16
131
  */
17
132
  type Level = 'read' | 'write' | 'delete';
18
133
  type GithubAccountFilter = {
19
- exclude?: string[];
20
- include?: string[] | boolean;
134
+ exclude: string[];
135
+ include: string[] | boolean;
21
136
  } | boolean | string[];
22
137
  type IssueAction = 'opened' | 'closed' | 'commented';
23
138
  type RepositoryFilter = {
24
- exclude?: string[];
25
- include?: string[];
139
+ exclude: string[];
140
+ include: string[];
26
141
  } | string[];
27
142
  type LinearIssueAction = 'opened';
28
143
  type PullRequestAction = 'opened' | 'pushed' | 'merged' | 'closed' | 'review_submitted' | 'commented';
29
144
  type SentryAction = 'issue_alert' | 'metric_alert';
30
- /**
31
- * Where the resolved budget came from.
32
- */
33
- type BudgetSource = 'system' | 'account' | 'config' | 'run';
145
+ type AttributionType = 'github_user' | 'linear_user' | 'slack_user' | 'api_key';
146
+ type GithubAccountType = 'User' | 'Organization' | 'Bot' | 'Mannequin';
34
147
  /**
35
148
  * How a session's environment was chosen. None (the field is nullable)
36
149
  * when the config carried an inline environment block and no resolution ran —
@@ -39,61 +152,33 @@ type BudgetSource = 'system' | 'account' | 'config' | 'run';
39
152
  * Not derivable from the row: `environment_id` says WHICH environment, not
40
153
  * how it was chosen, and is null for the built-in basic sandbox.
41
154
  */
42
- type EnvironmentSource = 'request' | 'automation' | 'repo_default' | 'account_default' | 'platform_default';
155
+ type EnvironmentSource = 'request' | 'agent' | 'repo_default' | 'account_default' | 'platform_default';
43
156
  /**
44
- * Why a terminal agent session ended — a finer-grained reason than `status`.
45
- *
46
- * `status` (SessionStatus) is the lifecycle state: COMPLETED / ERROR /
47
- * CANCELLED. `exit_status` explains *why* a run reached that terminal state, so
48
- * the UI and metrics can tell a budget cutoff apart from a crashed tool call or
49
- * a deliberate cancellation. It is None until the run reaches a terminal state.
157
+ * The service the handler responds to.
50
158
  */
51
- 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';
159
+ type HandlerService = 'slack' | 'github' | 'linear' | 'sentry';
52
160
  /**
53
- * The coding-agent harness the session runs on.
161
+ * Whether the conversation is open or permanently closed. Open does not imply direct messages are permitted.
54
162
  */
55
- type Harness = 'claude_code' | 'codex';
163
+ type ConversationState = 'open' | 'closed';
56
164
  /**
57
- * How a session relates to its predecessor (parent_agent_session_id) —
58
- * the ONE "preceded-by" chain for every predecessor relationship. Routing
59
- * reads this when the distinction matters.
60
- *
61
- * CONTINUATION — a follow-up in the same conversation surface (e.g. a Slack
62
- * thread reply spawning a fresh session on the same thread).
63
- * RESUME — a conversation re-hosted on a new box after its sandbox was torn
64
- * down (interactive platform; later phase).
165
+ * Why the last execution ended; completed also includes parking an open conversation.
65
166
  */
66
- type ParentKind = 'continuation' | 'resume';
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';
67
168
  /**
68
169
  * Why direct prompting is refused. Absent when prompting is allowed.
69
170
  */
70
171
  type PromptBlockedReason = 'mention_surface' | 'ephemeral_trigger' | 'non_interactive' | 'harness_single_turn' | 'closed';
71
172
  /**
72
- * Lifecycle of a keyed (multi-turn) session — the durable conversation.
73
- * Distinct from SessionStatus, which is per-execution (one turn's run) and
74
- * moves to agent_turns in a later slice. IDLE: alive, waiting for the next
75
- * message. RUNNING: a turn is executing. CLOSED: the conversation is done and
76
- * its sandbox/snapshots are torn down.
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.
77
174
  */
78
- type SessionState = 'idle' | 'running' | 'closed';
175
+ type SessionLifecycleStatus = 'scheduled' | 'starting' | 'working' | 'waiting' | 'retrying' | 'idle' | 'closed' | 'failed' | 'stopped' | 'cancelled';
79
176
  /**
80
177
  * Where the session came from (e.g. react, web, api, cli, mention, cron).
81
178
  */
82
179
  type SessionSource = 'react' | 'web' | 'api' | 'cli' | 'mention' | 'cron';
83
180
  /**
84
- * Execution status of the session.
85
- */
86
- type SessionStatus = 'scheduled' | 'creating_sandbox' | 'running' | 'retrying' | 'completed' | 'error' | 'cancelled' | 'stopped';
87
- /**
88
- * What the current (or most recent) execution is doing (backs `run`).
89
- */
90
- type RunStatus = 'scheduled' | 'starting' | 'working' | 'waiting' | 'done' | 'failed' | 'stopped' | 'cancelled' | 'retrying';
91
- /**
92
- * The durable conversation axis (backs the surfaced `session` field).
93
- */
94
- type SessionLiveness = 'alive' | 'idle' | 'closed';
95
- /**
96
- * Which writer owns this automation. "github" automations are defined by a file in a repository and are changed by editing that file; "api" automations have no file and are changed through this API.
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.
97
182
  */
98
183
  type ConfigManagedBy = 'github' | 'api';
99
184
  /**
@@ -102,7 +187,7 @@ type ConfigManagedBy = 'github' | 'api';
102
187
  * Rides on `Sandbox.cache_tier` and the sandbox_ready lifecycle record.
103
188
  */
104
189
  type SandboxCacheTier = 'exact' | 'incremental' | 'full';
105
- type SandboxSource = 'cli' | 'web_ui' | 'ingest_pull_request_job_run' | 'agent_session' | 'image_refresh' | 'test' | 'script';
190
+ type SandboxSource = 'cli' | 'web_ui' | 'ingest_pull_request_job_run' | 'session' | 'image_refresh' | 'test' | 'script';
106
191
  type SandboxStatus = 'scheduled' | 'building' | 'running' | 'released' | 'terminating' | 'terminated' | 'failed';
107
192
  type SandboxType = 'claude_code';
108
193
  interface SessionListStreamMessage {
@@ -110,136 +195,23 @@ interface SessionListStreamMessage {
110
195
  type: 'session';
111
196
  }
112
197
  /**
113
- * An agent session: one conversation with an agent, from trigger to
114
- * terminal state. Returned by `GET /v1/sessions/{id}` and carried by the
115
- * session stream's `session`/`snapshot` frames — REST and stream never
116
- * disagree about what a session looks like.
117
- */
118
- interface Session {
119
- attribution: SessionAttribution;
120
- /**
121
- * The automation the session was started from, or null for a raw session started with POST /v1/sessions.
122
- */
123
- automation: SessionAutomation | null;
124
- budget: SessionBudget;
125
- config: SessionConfig1;
126
- /**
127
- * The "owner/name" repository context the session was started in, if any.
128
- */
129
- context_repository: string | null;
130
- cost: SessionCost;
131
- /**
132
- * When the session was created.
133
- */
134
- created_at: string;
135
- environment: SessionEnvironment;
136
- /**
137
- * How the session ended; null until it is terminal.
138
- */
139
- exit_status: SessionExitStatus | null;
140
- /**
141
- * 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.
142
- */
143
- git: SessionGit | null;
144
- harness: Harness;
145
- /**
146
- * Unique identifier of the session.
147
- */
148
- id: string;
149
- /**
150
- * When the session last showed activity.
151
- */
152
- last_activity_at: string | null;
153
- /**
154
- * When the session last received a message.
155
- */
156
- last_message_at: string | null;
157
- /**
158
- * Caller-supplied metadata key-value pairs.
159
- */
160
- metadata: {
161
- [k: string]: string;
162
- };
163
- parent: SessionParent;
164
- /**
165
- * The per-session prompt the session was started with.
166
- */
167
- prompt: string | null;
168
- prompting: SessionPrompting;
169
- /**
170
- * Lifecycle state of the durable conversation, or null for sessions without one.
171
- */
172
- session_state: SessionState | null;
173
- source: SessionSource;
174
- status: SessionStatus;
175
- /**
176
- * Human-readable reason for the current status, when there is one.
177
- */
178
- status_reason: string | null;
179
- stopped: SessionStopped;
180
- /**
181
- * The latest live summary of the session's progress while it runs, and when it was generated.
182
- */
183
- summary: SessionSummary | null;
184
- surface: SessionSurface;
185
- tokens: SessionTokens;
186
- /**
187
- * The external event that started the session.
188
- */
189
- trigger: SessionTrigger | null;
190
- /**
191
- * When the session was last updated.
192
- */
193
- updated_at: string;
194
- }
195
- /**
196
- * The principal this session is attributed to.
197
- */
198
- interface SessionAttribution {
199
- /**
200
- * Identifier of the principal the session is attributed to.
201
- */
202
- id: string | null;
203
- /**
204
- * Kind of principal the session is attributed to (e.g. a GitHub user or an API key).
205
- */
206
- type: AttributionType | null;
207
- /**
208
- * The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user.
209
- */
210
- user: GithubAccountSnippet | null;
211
- }
212
- /**
213
- * Sometimes the GitHub API returns a user of github (can include bots)
214
- * using this snippet instead of the full GithubAccount model. One example,
215
- * is when the API returns a pull request.
216
- *
217
- * This is the least amount of info we need to represent a GitHub account.
218
- */
219
- interface GithubAccountSnippet {
220
- avatar_url: string;
221
- id: number;
222
- login: string;
223
- type: GithubAccountType;
224
- }
225
- /**
226
- * The automation this session was started from: the definition frozen
227
- * when the session was created, and the saved automation it came from as it
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
228
200
  * exists NOW. They diverge legitimately — a YAML edit after the session
229
201
  * started leaves the pointer describing something the session never ran.
230
202
  */
231
- interface SessionAutomation {
232
- config: AutomationConfig;
203
+ interface SessionAgent {
204
+ config: AgentConfig;
233
205
  /**
234
- * Identifier of the saved automation this session's snapshot was taken from. Null for a routing-file agent, a code-review stage agent, or the built-in mention agent, which have no saved automation behind them. Points at the automation as it exists now, which may have changed since.
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.
235
207
  */
236
208
  id: string | null;
237
209
  }
238
210
  /**
239
- * The automation definition the session was started from, frozen when the session was created.
211
+ * The agent definition the session was started from, frozen when the session was created.
240
212
  */
241
- interface AutomationConfig {
242
- ellipsis: AutomationIdentity;
213
+ interface AgentConfig {
214
+ ellipsis: AgentIdentity;
243
215
  input: InputContract | null;
244
216
  session: SessionConfig;
245
217
  trigger: (CronTrigger | ReactTrigger) | null;
@@ -249,7 +221,7 @@ interface AutomationConfig {
249
221
  * (`version`), the human-facing identity (`name`/`description`), freeform
250
222
  * organizational `metadata`, and whether the agent is `enabled`. The
251
223
  * presence of a top-level `ellipsis:` mapping is what marks a YAML file as
252
- * an Ellipsis automation (vs arbitrary YAML that merely lives under a
224
+ * an Ellipsis agent (vs arbitrary YAML that merely lives under a
253
225
  * config directory) — see `yaml_is_ellipsis_config`.
254
226
  *
255
227
  * `enabled` is agent behavior, not freeform metadata, so it stays inside
@@ -257,9 +229,10 @@ interface AutomationConfig {
257
229
  * accepts messages is a per-run choice (POST /v1/sessions `interactive`),
258
230
  * not a config one.
259
231
  */
260
- interface AutomationIdentity {
232
+ interface AgentIdentity {
261
233
  description: string | null;
262
234
  enabled: boolean;
235
+ kind: 'agent';
263
236
  metadata: ConfigMetadata;
264
237
  name: string | null;
265
238
  version: string;
@@ -274,15 +247,15 @@ interface ConfigMetadata {
274
247
  * The typed input contract: what goes INTO a session (the trigger is
275
248
  * when it happens; this is what goes in).
276
249
  *
277
- * `json_schema` types the payload a caller-started session takes
278
- * (`POST /v1/sessions` `input`, validated at the door; required when
279
- * declared). It is illegal on a react-triggered agent — react payloads are
280
- * platform-shaped (the published surface field sets), not caller-shaped.
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.
281
254
  *
282
255
  * `message` is the initial-message template: exact `{{path}}` substitution
283
256
  * over the caller payload (or, on a react agent, over the surface's
284
257
  * published fields), no conditionals/loops/filters. Refs are validated at
285
- * deploy time against the governing field set (see AutomationConfig's
258
+ * deploy time against the governing field set (see AgentConfig's
286
259
  * `_check_input`).
287
260
  */
288
261
  interface InputContract {
@@ -291,44 +264,64 @@ interface InputContract {
291
264
  } | null;
292
265
  message: string | null;
293
266
  }
267
+ interface BudgetConfig {
268
+ day: number | null;
269
+ month: number | null;
270
+ session: number | null;
271
+ week: number | null;
272
+ }
294
273
  /**
295
- * What one session runs on: its selected harness, where it runs, what it
296
- * may touch, its skills, its exit contract, and its spend cap. Every session
297
- * freezes one of these (`agent_sessions.session_config`); an automation
298
- * carries one under `session:` (`AutomationConfig.session`); and
299
- * `POST /v1/sessions` is this shape flattened onto the request body, plus the
300
- * run settings. Nothing in here is an automation's identity or trigger —
301
- * those belong to `AutomationConfig`.
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.
302
306
  *
303
- * Field order is the canonical key order for `session:` blocks and YAML
304
- * exports: what runs (`harness`, `instructions`), where (`environment`), what it may
305
- * touch (`permissions`), then the rest.
307
+ * Options and capabilities expand only when their runtime behavior is tested.
308
+ * Unknown options are rejected instead of silently ignored.
306
309
  */
307
- interface SessionConfig {
308
- budget: BudgetConfig;
309
- environment: string | EnvironmentConfig;
310
+ interface CodexConfig {
310
311
  /**
311
- * The explicitly selected harness and its native options.
312
+ * Reasoning effort for every turn. Omit to use the model default.
312
313
  */
313
- harness: ClaudeConfig | CodexConfig;
314
+ effort: CodexEffortLevel | null;
315
+ model: string;
314
316
  /**
315
- * Instructions appended to the harness's own prompt. Text and repository file references are resolved in order.
317
+ * The initial user message, passed verbatim. Omit to start an interactive session idle.
316
318
  */
317
- instructions: string | SystemFileRef | (string | SystemFileRef)[];
318
- output: OutputConfig | null;
319
- permissions: PermissionsConfig;
320
- skills: SkillRef[];
321
- }
322
- interface BudgetConfig {
323
- day: number | null;
324
- month: number | null;
325
- session: number | null;
326
- week: number | null;
319
+ prompt: string | null;
327
320
  }
328
321
  /**
329
322
  * Everything about the environment (the sandbox) the agent runs in: which
330
323
  * `repositories` are cloned into it, which environment `variables` it gets,
331
- * its `compute` sizing, how its `image` is customized, and lifecycle `hooks`.
324
+ * its `compute` sizing, and lifecycle `hooks`.
332
325
  * What the agent may *do* from that environment is the top-level
333
326
  * `permissions:` block, not this one.
334
327
  *
@@ -341,7 +334,6 @@ interface BudgetConfig {
341
334
  interface EnvironmentConfig {
342
335
  compute: ComputeConfig;
343
336
  hooks: EnvironmentHooks;
344
- image: EnvironmentImage;
345
337
  mcp_servers: (string | McpServerRef | McpStdioServer | McpRemoteServer)[];
346
338
  repositories: RepositoryRef[];
347
339
  variables: EnvironmentVariable[];
@@ -349,7 +341,7 @@ interface EnvironmentConfig {
349
341
  /**
350
342
  * Sandbox compute sizing. Every field is optional; None inherits the
351
343
  * platform default (2 vCPU / 4096 MiB / 3600s — see DEFAULT_SANDBOX_* in
352
- * models/ellipsis/sandboxes/sandbox.py). A resolved value outside the platform
344
+ * models/ellipsis/vms/vm_execution.py). A resolved value outside the platform
353
345
  * bounds fails validation loudly (a sync error on the config) rather than
354
346
  * being clamped silently.
355
347
  *
@@ -393,45 +385,58 @@ interface Duration {
393
385
  seconds: number | null;
394
386
  }
395
387
  /**
396
- * Shell scripts run at points in the sandbox lifecycle, each as the sandbox
397
- * user with the sandbox's environment variables available. A non-zero exit
398
- * fails the run (exit_status = LIFECYCLE_HOOK_FAILED) and is not retried.
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.
399
392
  *
400
- * `post_start` runs after the container starts, before any repo is cloned —
401
- * repo-independent setup (authenticate a CLI, e.g. `doppler setup`). On Freestyle
402
- * the repo is baked into the image so it is incidentally present, but
403
- * `post_start` must not depend on repo contents (that's `post_clone`).
404
- *
405
- * `post_clone` runs after all repos are cloned/checked out, before the agent —
406
- * repo-dependent setup (`pip install -r requirements.txt`, codegen).
407
- *
408
- * Hooks run on every run and their output is never cached. A dependency
409
- * install whose result should be reused across runs belongs in `image.setup`
410
- * (baked into the cached image) instead; keep hooks for per-run work — e.g.
411
- * anything that touches run-scoped credentials.
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.
412
396
  */
413
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
+ */
414
413
  post_clone: string | null;
414
+ /**
415
+ * Legacy session startup script. Use before_start in new configurations.
416
+ */
415
417
  post_start: string | null;
416
418
  }
417
419
  /**
418
- * How to customize the container image the agent runs in. You
419
- * contribute appended layers (`dockerfile_append`) and a build-time script
420
- * (`setup`) only — Ellipsis owns FROM / base tooling / entrypoint / user.
421
- * Today only inline bodies are supported; a file reference (resolved at the
422
- * run's SHA) will come later.
423
- *
424
- * The split: `dockerfile_append` runs when the image is assembled, before any
425
- * repo exists — toolchain installs (a package manager binary, apt packages).
426
- * `setup` runs at image-build time *after* the configured repositories are
427
- * checked out, and its output is captured by the filesystem snapshot that
428
- * becomes the cached image — dependency installs (`poetry install`,
429
- * `npm install`), so later runs start with deps already on disk. Neither runs
430
- * per run; that's `hooks.post_start` / `hooks.post_clone`.
420
+ * An inline shell script run as the sandbox user, with /sandbox as cwd.
431
421
  */
432
- interface EnvironmentImage {
433
- dockerfile_append: string | null;
434
- setup: string | null;
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;
435
440
  }
436
441
  /**
437
442
  * One built-in MCP server this agent opts into by name (`linear`/`slack`).
@@ -448,8 +453,8 @@ interface McpServerRef {
448
453
  /**
449
454
  * A bring-your-own stdio MCP server: the harness spawns `command` inside
450
455
  * the sandbox and speaks JSON-RPC over its stdin/stdout. The command must be
451
- * runnable in the sandbox image — install its runtime via `image.setup` /
452
- * `image.dockerfile_append` if the base image lacks it.
456
+ * runnable in the sandbox image — install its runtime via `hooks.build_base` /
457
+ * `hooks.after_checkout` if the managed environment lacks it.
453
458
  *
454
459
  * `env` values may embed `${NAME}` references, resolved at run time from the
455
460
  * account's secrets store (see `mcp_secret_refs`); everything else is passed
@@ -476,11 +481,6 @@ interface McpRemoteServer {
476
481
  name: string;
477
482
  url: string;
478
483
  }
479
- interface RepositoryRef {
480
- name: string;
481
- owner: string | null;
482
- ref: string | null;
483
- }
484
484
  /**
485
485
  * One environment variable injected into the agent's sandbox.
486
486
  *
@@ -495,47 +495,6 @@ interface EnvironmentVariable {
495
495
  name: string;
496
496
  value: string | null;
497
497
  }
498
- /**
499
- * Native Claude Code options for an explicitly selected harness.
500
- */
501
- interface ClaudeConfig {
502
- effort: EffortLevel | null;
503
- fallback_model: string | null;
504
- max_turns: number | null;
505
- model: string | null;
506
- settings: SettingsRef | null;
507
- type: 'claude_code';
508
- }
509
- /**
510
- * A config-declared Claude Code settings.json, resolved at run start and
511
- * passed to `claude --settings <path>`. That is the CLI settings tier — BELOW
512
- * Ellipsis's managed-settings.json floor — so it customizes behavior (model
513
- * permissions, includeCoAuthoredBy, statusLine, ...) but can never weaken a
514
- * security setting. Lets a team point the cloud agent at the same settings file
515
- * they already use with Claude Code locally instead of re-encoding it as YAML.
516
- */
517
- interface SettingsRef {
518
- path: string;
519
- repository: RepositoryRef | null;
520
- }
521
- /**
522
- * Native options supported by the current Codex adapter.
523
- *
524
- * Options and capabilities expand only when their runtime behavior is tested.
525
- * Unknown options are rejected instead of silently ignored.
526
- */
527
- interface CodexConfig {
528
- /**
529
- * Reasoning effort for every turn. Omit to use the model default.
530
- */
531
- effort: CodexEffortLevel | null;
532
- model: string;
533
- type: 'codex';
534
- }
535
- interface SystemFileRef {
536
- file: string;
537
- repository: RepositoryRef | null;
538
- }
539
498
  /**
540
499
  * JSON Schema for the harness's structured result, when certified.
541
500
  */
@@ -672,83 +631,210 @@ interface ReactSentry {
672
631
  interface ReactSlackChannel {
673
632
  }
674
633
  /**
675
- * The spend budget enforced for this session.
634
+ * The principal this session is attributed to.
676
635
  */
677
- interface SessionBudget {
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;
678
645
  /**
679
- * The spend budget resolved for this session, in cents.
646
+ * The GitHub user the session is attributed to, resolved at read time. Null when the attribution is not a GitHub user.
680
647
  */
681
- cents: number;
682
- source: BudgetSource;
648
+ user: GithubAccountSnippet | null;
683
649
  }
684
650
  /**
685
- * What one session runs on: its selected harness, where it runs, what it
686
- * may touch, its skills, its exit contract, and its spend cap. Every session
687
- * freezes one of these (`agent_sessions.session_config`); an automation
688
- * carries one under `session:` (`AutomationConfig.session`); and
689
- * `POST /v1/sessions` is this shape flattened onto the request body, plus the
690
- * run settings. Nothing in here is an automation's identity or trigger —
691
- * those belong to `AutomationConfig`.
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.
692
654
  *
693
- * Field order is the canonical key order for `session:` blocks and YAML
694
- * exports: what runs (`harness`, `instructions`), where (`environment`), what it may
695
- * touch (`permissions`), then the rest.
655
+ * This is the least amount of info we need to represent a GitHub account.
696
656
  */
697
- interface SessionConfig1 {
698
- budget: BudgetConfig;
699
- environment: string | EnvironmentConfig;
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 {
700
667
  /**
701
- * The explicitly selected harness and its native options.
668
+ * Sandbox CPU spend in millicents.
702
669
  */
703
- harness: ClaudeConfig | CodexConfig;
670
+ cpu: number;
704
671
  /**
705
- * Instructions appended to the harness's own prompt. Text and repository file references are resolved in order.
672
+ * Platform fee in millicents.
706
673
  */
707
- instructions: string | SystemFileRef | (string | SystemFileRef)[];
708
- output: OutputConfig | null;
709
- permissions: PermissionsConfig;
710
- skills: SkillRef[];
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;
711
732
  }
712
733
  /**
713
- * What the session cost, in millicents, broken down by leg and carrying its own total.
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.
714
742
  */
715
- interface SessionCost {
743
+ interface EnvironmentHooks1 {
716
744
  /**
717
- * Platform fee in millicents.
745
+ * Prepare the requested source revision after Ellipsis checks out all repositories, before saving the prepared sandbox. Skipped when that prepared sandbox is reused.
718
746
  */
719
- fee: number;
747
+ after_checkout: EnvironmentScript | string | null;
720
748
  /**
721
- * LLM spend in millicents.
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.
722
750
  */
723
- llm: number;
751
+ before_start: EnvironmentScript | string | null;
724
752
  /**
725
- * Sandbox CPU spend in millicents.
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.
726
754
  */
727
- sandbox_cpu: number;
755
+ build_base: EnvironmentBaseBuild | string | null;
728
756
  /**
729
- * Sandbox memory spend in millicents.
757
+ * Legacy session startup script. Use before_start for session setup or after_checkout for cached source preparation.
730
758
  */
731
- sandbox_memory: number;
759
+ post_clone: string | null;
732
760
  /**
733
- * The grand total in millicents: llm + sandbox_cpu + sandbox_memory + fee.
761
+ * Legacy session startup script. Use before_start in new configurations.
734
762
  */
735
- total: number;
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;
736
774
  }
737
775
  /**
738
- * The environment the session resolved: the saved environment's id and how it was chosen. The environment's frozen body is `config.environment`.
776
+ * The event's initiator, when known; never inferred from resource ownership.
739
777
  */
740
- interface SessionEnvironment {
741
- /**
742
- * Identifier of the saved environment the session's config resolved. Null for an inline environment block or the built-in basic sandbox.
743
- */
744
- environment_id: string | null;
745
- /**
746
- * How the environment was chosen (request, automation, platform_default; repo_default and account_default on sessions from before those ladders were removed). Null when the config carried its own inline environment.
747
- */
748
- source: EnvironmentSource | null;
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;
749
835
  }
750
836
  /**
751
- * Every repo the session touched. Small enough to ride on `agent_sessions`
837
+ * Every repo the session touched. Small enough to ride on `sessions`
752
838
  * and be returned by every session read.
753
839
  */
754
840
  interface SessionGit {
@@ -804,24 +890,81 @@ interface SessionGitPr {
804
890
  url: string;
805
891
  }
806
892
  /**
807
- * What preceded this session, if anything.
893
+ * The saved handler and its display name when the session started.
808
894
  */
809
- interface SessionParent {
895
+ interface SessionHandler {
810
896
  /**
811
- * How this session relates to its parent session, if any.
897
+ * The handler's effective display name when the session started: ellipsis.name, or the service default (Slack, GitHub, Linear, or sentry).
812
898
  */
813
- kind: ParentKind | null;
899
+ agent_name: string;
814
900
  /**
815
- * Identifier of the original session this one was replayed from, if it was started via replay.
901
+ * Identifier of the saved handler.
816
902
  */
817
- replayed_from_session_id: string | null;
903
+ id: string;
904
+ service: HandlerService;
818
905
  /**
819
- * Identifier of the parent session that spawned this one, if any.
906
+ * Content fingerprint of the validated handler configuration used when the session started. This is not the Git commit SHA.
820
907
  */
821
- session_id: string | null;
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;
822
938
  }
823
939
  /**
824
- * Whether a client may send this session a message and, when it may not, the reason to show instead of a composer.
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.
825
968
  */
826
969
  interface SessionPrompting {
827
970
  blocked_reason: PromptBlockedReason | null;
@@ -830,21 +973,51 @@ interface SessionPrompting {
830
973
  surface_name: string | null;
831
974
  }
832
975
  /**
833
- * The stop request, if the session was stopped.
976
+ * When a stop was requested and the GitHub user who requested it.
834
977
  */
835
978
  interface SessionStopped {
836
979
  /**
837
- * When a stop was requested, if one was.
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.
838
985
  */
839
- at: string | null;
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;
840
997
  /**
841
- * GitHub account id of the user who stopped the session, if known.
998
+ * When the session last received a message.
999
+ */
1000
+ last_message_at: string | null;
1001
+ /**
1002
+ * When the session was last updated.
842
1003
  */
843
- by: number | null;
1004
+ updated_at: string;
1005
+ }
1006
+ /**
1007
+ * The predecessor session this session continues.
1008
+ */
1009
+ interface SessionParent {
844
1010
  /**
845
- * The GitHub user who stopped the session, resolved at read time.
1011
+ * Identifier of the predecessor session this session continues, if any.
846
1012
  */
847
- by_user: GithubAccountSnippet | null;
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;
848
1021
  }
849
1022
  /**
850
1023
  * A live one-line summary of what the session is working on, refreshed
@@ -860,14 +1033,6 @@ interface SessionSummary {
860
1033
  */
861
1034
  description: string;
862
1035
  }
863
- /**
864
- * The public status projection: the durable conversation (`session`), the current execution (`run`), and the one derived `status` word.
865
- */
866
- interface SessionSurface {
867
- run: RunStatus | null;
868
- session: SessionLiveness | null;
869
- status: string | null;
870
- }
871
1036
  /**
872
1037
  * The tokens the session spent and the model they went to. `total` includes the prompt-cache lanes.
873
1038
  */
@@ -897,36 +1062,18 @@ interface SessionTokens {
897
1062
  */
898
1063
  total: number;
899
1064
  }
900
- /**
901
- * The external event that started a session, without raw webhook payloads.
902
- */
903
- interface SessionTrigger {
904
- action: string | null;
905
- actor: SessionTriggerActor | null;
906
- branch: string | null;
907
- number: number | null;
908
- repository: string | null;
909
- surface: string | null;
910
- title: string | null;
911
- url: string | null;
912
- }
913
- interface SessionTriggerActor {
914
- avatar_url: string | null;
915
- is_bot: boolean;
916
- name: string;
917
- }
918
- interface AutomationListStreamMessage {
919
- automations: Automation[];
920
- type: 'automations';
1065
+ interface AgentListStreamMessage {
1066
+ agents: Agent[];
1067
+ type: 'agents';
921
1068
  }
922
1069
  /**
923
- * An automation: a saved agent definition that runs on its trigger or
1070
+ * An agent: a saved agent definition that runs on its trigger or
924
1071
  * when invoked, plus where it syncs from and the state of that sync.
925
1072
  */
926
- interface Automation {
927
- config: AutomationConfig1;
1073
+ interface Agent {
1074
+ config: AgentConfig1;
928
1075
  /**
929
- * When the automation was created.
1076
+ * When the agent was created.
930
1077
  */
931
1078
  created_at: string;
932
1079
  /**
@@ -934,11 +1081,11 @@ interface Automation {
934
1081
  */
935
1082
  display_name: string | null;
936
1083
  /**
937
- * The GitHub account that last edited the automation, when the edit came from a known user.
1084
+ * The GitHub account that last edited the agent, when the edit came from a known user.
938
1085
  */
939
1086
  edited_by: GithubAccountSnippet | null;
940
1087
  /**
941
- * Unique identifier of the automation.
1088
+ * Unique identifier of the agent.
942
1089
  */
943
1090
  id: string;
944
1091
  /**
@@ -946,24 +1093,24 @@ interface Automation {
946
1093
  */
947
1094
  last_session_created_at: string | null;
948
1095
  /**
949
- * The most recent session this automation started, or null if it has never run.
1096
+ * The most recent session this agent started, or null if it has never run.
950
1097
  */
951
1098
  last_session_id: string | null;
952
1099
  /**
953
- * The parse or validation error from the most recent sync attempt, or null when it succeeded. A non-null value means the automation is not running the YAML currently on the branch.
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.
954
1101
  */
955
1102
  last_sync_error: string | null;
956
1103
  /**
957
- * The last commit the automation was synced from.
1104
+ * The last commit the agent was synced from.
958
1105
  */
959
1106
  last_synced_commit_sha: string | null;
960
1107
  managed_by: ConfigManagedBy;
961
1108
  /**
962
- * The automation's account-unique addressable name (a slug of its display name); usable anywhere an automation is referenced, interchangeably with the id.
1109
+ * The agent's account-unique addressable name (a slug of its display name); usable anywhere an agent is referenced, interchangeably with the id.
963
1110
  */
964
1111
  name: string | null;
965
1112
  /**
966
- * The open pull request that adds this automation's file. Non-null means the automation is not live yet: it starts running once the pull request merges and syncs.
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.
967
1114
  */
968
1115
  pending_pull_request_url: string | null;
969
1116
  /**
@@ -971,25 +1118,25 @@ interface Automation {
971
1118
  */
972
1119
  sha: string;
973
1120
  /**
974
- * The repository, path, and branch the automation syncs from. Null only transiently, before the creating pull request's file lands on the branch.
1121
+ * The repository, path, and branch the agent syncs from. Null only transiently, before the creating pull request's file lands on the branch.
975
1122
  */
976
1123
  source_details: GithubSourceDetails | null;
977
1124
  /**
978
- * When the automation was last updated.
1125
+ * When the agent was last updated.
979
1126
  */
980
1127
  updated_at: string;
981
1128
  }
982
1129
  /**
983
- * The automation definition itself, in the same schema as its YAML file: identity, trigger, input contract, and the session block.
1130
+ * The agent definition itself, in the same schema as its YAML file: identity, trigger, input contract, and the session block.
984
1131
  */
985
- interface AutomationConfig1 {
986
- ellipsis: AutomationIdentity;
1132
+ interface AgentConfig1 {
1133
+ ellipsis: AgentIdentity;
987
1134
  input: InputContract | null;
988
1135
  session: SessionConfig;
989
1136
  trigger: (CronTrigger | ReactTrigger) | null;
990
1137
  }
991
1138
  /**
992
- * Identifies the file a GitHub-sourced automation is synced from.
1139
+ * Identifies the file a GitHub-sourced agent is synced from.
993
1140
  *
994
1141
  * Keyed on the repository ID (not owner/name) so repository and org renames
995
1142
  * don't orphan the config; resolve display names from gh_repositories at
@@ -1004,20 +1151,19 @@ interface CollectionStreamHeartbeat {
1004
1151
  type: 'heartbeat';
1005
1152
  }
1006
1153
  interface SandboxSnapshotFrame {
1007
- sandbox: SandboxResponse;
1154
+ sandbox: VMExecutionResponse;
1008
1155
  type: 'snapshot';
1009
1156
  }
1010
- interface SandboxResponse {
1157
+ interface VMExecutionResponse {
1011
1158
  cache_tier: SandboxCacheTier | null;
1012
1159
  cost_sandbox_cpu: number;
1013
1160
  cost_sandbox_memory: number;
1014
1161
  cpu: number;
1015
- dockerfile: string | null;
1016
1162
  encrypted_ports: number[];
1017
1163
  environment_variable_keys: string[];
1018
1164
  failed_at: string | null;
1165
+ hooks: EnvironmentHooks2;
1019
1166
  id: string;
1020
- image_setup: string | null;
1021
1167
  memory_mib: number;
1022
1168
  phase_timings: {
1023
1169
  [k: string]: number;
@@ -1037,6 +1183,38 @@ interface SandboxResponse {
1037
1183
  type: SandboxType;
1038
1184
  unencrypted_ports: number[];
1039
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
+ }
1040
1218
  interface SandboxRepository {
1041
1219
  id: number;
1042
1220
  name: string;
@@ -1055,7 +1233,7 @@ interface SandboxPort {
1055
1233
  unencrypted_port: number | null;
1056
1234
  }
1057
1235
  interface SandboxUpdateFrame {
1058
- sandbox: SandboxResponse;
1236
+ sandbox: VMExecutionResponse;
1059
1237
  type: 'sandbox';
1060
1238
  }
1061
1239
 
@@ -1139,18 +1317,36 @@ declare class EllipsisAccountApiKeys {
1139
1317
  *
1140
1318
  * Authenticate as a dashboard user or with a user token. An organization
1141
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.
1142
1326
  */
1143
1327
  create(options: {
1144
1328
  name: string;
1145
1329
  }): Promise<S['CreateApiKeyResponse']>;
1146
1330
  /**
1147
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.
1148
1338
  */
1149
1339
  list(): Promise<S['ListApiKeysResponse']>;
1150
1340
  /**
1151
1341
  * Revoke Api Key
1152
1342
  *
1153
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.
1154
1350
  */
1155
1351
  revoke(api_key_id: string): Promise<S['TokenRevokedResponse']>;
1156
1352
  }
@@ -1164,6 +1360,12 @@ declare class EllipsisAccountBillingAutoRecharge {
1164
1360
  *
1165
1361
  * An account without saved settings returns disabled defaults and no
1166
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.
1167
1369
  */
1168
1370
  get(): Promise<S['AutoRechargeSettings']>;
1169
1371
  /**
@@ -1176,6 +1378,12 @@ declare class EllipsisAccountBillingAutoRecharge {
1176
1378
  * with enabled=false keeps recharge off; enabling requires a saved card.
1177
1379
  * A recharge buys amount_cents of credit and charges the platform fee
1178
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.
1179
1387
  */
1180
1388
  set(options: {
1181
1389
  amount_cents: number;
@@ -1195,6 +1403,12 @@ declare class EllipsisAccountBilling {
1195
1403
  * Requires a human account administrator. Open the returned URL to
1196
1404
  * finish setup and return to Billing. Saving a card does not enable
1197
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.
1198
1412
  */
1199
1413
  cardSetup(): Promise<S['BillingCheckout']>;
1200
1414
  /**
@@ -1206,6 +1420,12 @@ declare class EllipsisAccountBilling {
1206
1420
  * complete payment. Credit is granted only after payment succeeds;
1207
1421
  * the platform fee is charged in addition to amount_cents. Returning
1208
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.
1209
1429
  */
1210
1430
  checkout(options: {
1211
1431
  amount_cents: number;
@@ -1217,12 +1437,24 @@ declare class EllipsisAccountBilling {
1217
1437
  * bootstrap that otherwise fires lazily at the first session (Stripe
1218
1438
  * customer + usage subscription + the signup grant). A repeat call is
1219
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.
1220
1446
  */
1221
1447
  claimSignupCredit(): Promise<S['BillingStatus']>;
1222
1448
  /**
1223
1449
  * Get Fee Schedule
1224
1450
  *
1225
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.
1226
1458
  */
1227
1459
  feeSchedule(): Promise<S['FeeScheduleResponse']>;
1228
1460
  /**
@@ -1232,6 +1464,12 @@ declare class EllipsisAccountBilling {
1232
1464
  *
1233
1465
  * Returns only your account's grants. The total is before usage;
1234
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.
1235
1473
  */
1236
1474
  grants(): Promise<S['CreditGrantsResponse']>;
1237
1475
  /**
@@ -1241,6 +1479,12 @@ declare class EllipsisAccountBilling {
1241
1479
  *
1242
1480
  * The amount includes the platform fee and comes from Stripe. An
1243
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.
1244
1488
  */
1245
1489
  purchase(checkout_id: string): Promise<S['CreditPurchaseReceipt']>;
1246
1490
  /**
@@ -1250,6 +1494,12 @@ declare class EllipsisAccountBilling {
1250
1494
  *
1251
1495
  * All amounts are integer US cents. The fee is added to the credit
1252
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.
1253
1503
  */
1254
1504
  purchaseOptions(): Promise<S['CreditPurchaseOptions']>;
1255
1505
  /**
@@ -1260,6 +1510,12 @@ declare class EllipsisAccountBilling {
1260
1510
  * Uses the same account gate as session admission, including credit,
1261
1511
  * contact email, and personal Claude subscription eligibility. Scoped
1262
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.
1263
1519
  */
1264
1520
  status(): Promise<S['BillingStatus']>;
1265
1521
  }
@@ -1279,6 +1535,12 @@ declare class EllipsisAccountModels {
1279
1535
  * Reads the same registry as the dashboard's rate table, so a
1280
1536
  * client's model picker can never drift from what's offered. The
1281
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.
1282
1544
  */
1283
1545
  list(): Promise<S['ModelsListResponse']>;
1284
1546
  }
@@ -1291,30 +1553,100 @@ declare class EllipsisAccountNotifications {
1291
1553
  * Send the alert email template to one address with sample data,
1292
1554
  * so a typo'd finance alias is caught by a human instead of failing
1293
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.
1294
1562
  */
1295
1563
  testEmail(options: {
1296
1564
  email: string;
1297
1565
  }): Promise<S['AccountActionResponse']>;
1298
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
+ }
1299
1607
  declare class EllipsisAccountProvidersAnthropic {
1300
1608
  private readonly transport;
1301
1609
  constructor(transport: Transport);
1302
1610
  /**
1303
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.
1304
1618
  */
1305
1619
  delete(): Promise<void>;
1306
1620
  /**
1307
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.
1308
1628
  */
1309
1629
  get(): Promise<S['AnthropicConfigResponse']>;
1310
1630
  /**
1311
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.
1312
1638
  */
1313
1639
  set(options: {
1314
1640
  api_key: string;
1315
1641
  }): Promise<S['AnthropicConfigResponse']>;
1316
1642
  /**
1317
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.
1318
1650
  */
1319
1651
  validate(): Promise<S['ValidateAnthropicConfigResponse']>;
1320
1652
  }
@@ -1323,14 +1655,32 @@ declare class EllipsisAccountProvidersBedrock {
1323
1655
  constructor(transport: Transport);
1324
1656
  /**
1325
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.
1326
1664
  */
1327
1665
  delete(): Promise<void>;
1328
1666
  /**
1329
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.
1330
1674
  */
1331
1675
  get(): Promise<S['BedrockConfigResponse']>;
1332
1676
  /**
1333
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.
1334
1684
  */
1335
1685
  set(options: {
1336
1686
  model_map: Record<string, string>;
@@ -1339,6 +1689,12 @@ declare class EllipsisAccountProvidersBedrock {
1339
1689
  }): Promise<S['BedrockConfigResponse']>;
1340
1690
  /**
1341
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.
1342
1698
  */
1343
1699
  validate(): Promise<S['ValidateBedrockConfigResponse']>;
1344
1700
  }
@@ -1359,6 +1715,12 @@ declare class EllipsisAccountSettings {
1359
1715
  * Session model and budget defaults, code review and mention behavior,
1360
1716
  * analytics, retention, and notification contacts. PATCH replaces
1361
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.
1362
1724
  */
1363
1725
  get(): Promise<S['AccountSettings']>;
1364
1726
  /**
@@ -1373,6 +1735,12 @@ declare class EllipsisAccountSettings {
1373
1735
  * ceiling, and null clears it.
1374
1736
  * Refused for sandbox tokens (potentially prompt-injected code must
1375
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.
1376
1744
  */
1377
1745
  set(options: {
1378
1746
  budget_ceiling?: S['BudgetCeiling'];
@@ -1384,6 +1752,12 @@ declare class EllipsisAccountSettings {
1384
1752
  * Replace supplied settings sections without changing omitted sections.
1385
1753
  *
1386
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.
1387
1761
  */
1388
1762
  update(options?: {
1389
1763
  analytics?: S['AnalyticsSettings'] | null;
@@ -1391,7 +1765,6 @@ declare class EllipsisAccountSettings {
1391
1765
  code_review?: S['CodeReviewSettings'] | null;
1392
1766
  data_retention?: S['DataRetentionSettings'] | null;
1393
1767
  default_model?: string | null;
1394
- mention?: S['MentionSettings'] | null;
1395
1768
  notifications?: S['NotificationSettings'] | null;
1396
1769
  }): Promise<S['AccountSettings']>;
1397
1770
  }
@@ -1401,6 +1774,7 @@ declare class EllipsisAccount {
1401
1774
  readonly billing: EllipsisAccountBilling;
1402
1775
  readonly models: EllipsisAccountModels;
1403
1776
  readonly notifications: EllipsisAccountNotifications;
1777
+ readonly onboarding: EllipsisAccountOnboarding;
1404
1778
  readonly providers: EllipsisAccountProviders;
1405
1779
  readonly settings: EllipsisAccountSettings;
1406
1780
  constructor(transport: Transport);
@@ -1410,10 +1784,22 @@ declare class EllipsisAccount {
1410
1784
  * All-time per-surface activity flags: the dashboards' demo-data
1411
1785
  * fallback reads these instead of inferring "no history" from a
1412
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.
1413
1793
  */
1414
1794
  activity(): Promise<S['AccountActivity']>;
1415
1795
  /**
1416
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.
1417
1803
  */
1418
1804
  auditLog(): Promise<S['AccountAuditLogResponse']>;
1419
1805
  /**
@@ -1424,12 +1810,24 @@ declare class EllipsisAccount {
1424
1810
  * Budgets cover the trailing 1, 7 and 28 days; they do not replenish
1425
1811
  * prepaid credit. Amounts include measured usage from active sessions.
1426
1812
  * Each paid LLM request requires positive credit and budget headroom.
1427
- * An admitted request can overshoot; concurrency is limited to five
1428
- * paid requests per account and one per session.
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.
1429
1821
  */
1430
1822
  budget(): Promise<S['BudgetSummary']>;
1431
1823
  /**
1432
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.
1433
1831
  */
1434
1832
  update(options?: {
1435
1833
  can_start_job_runs?: boolean | null;
@@ -1447,6 +1845,12 @@ declare class EllipsisAccount {
1447
1845
  * request, including sessions already running. API keys and sandbox
1448
1846
  * credentials cannot edit budgets. The session ceiling remains at
1449
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.
1450
1854
  */
1451
1855
  updateBudget(options?: {
1452
1856
  alerts?: S['BudgetAlerts'] | null;
@@ -1462,11 +1866,199 @@ declare class EllipsisAccount {
1462
1866
  * rated token usage through BYOK, customer Bedrock, or a developer's
1463
1867
  * Claude subscription. Rated usage estimates are not provider invoices.
1464
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.
1465
1875
  */
1466
1876
  usage(options?: {
1467
1877
  period_start?: string | null;
1468
1878
  }): Promise<S['GetUsageOverTimeResponse']>;
1469
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']>;
2061
+ }
1470
2062
  declare class EllipsisAlerts {
1471
2063
  private readonly transport;
1472
2064
  constructor(transport: Transport);
@@ -1476,6 +2068,12 @@ declare class EllipsisAlerts {
1476
2068
  * Dismiss an open alert and return it.
1477
2069
  *
1478
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.
1479
2077
  */
1480
2078
  dismiss(alert_id: string): Promise<S['AlertResponse']>;
1481
2079
  /**
@@ -1484,6 +2082,12 @@ declare class EllipsisAlerts {
1484
2082
  * Return one alert by id.
1485
2083
  *
1486
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.
1487
2091
  */
1488
2092
  get(alert_id: string): Promise<S['AlertResponse']>;
1489
2093
  /**
@@ -1495,6 +2099,12 @@ declare class EllipsisAlerts {
1495
2099
  *
1496
2100
  * Available to all credential types, so an agent can check "is
1497
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.
1498
2108
  */
1499
2109
  list(options?: {
1500
2110
  status?: S['AlertStatus'] | null;
@@ -1518,6 +2128,12 @@ declare class EllipsisAnalytics {
1518
2128
  * the apps/agents). Available to all credential types: the
1519
2129
  * responses expose the organization's own GitHub PR/review activity,
1520
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.
1521
2137
  */
1522
2138
  metrics(options?: {
1523
2139
  days?: number | null;
@@ -1535,6 +2151,12 @@ declare class EllipsisAnalytics {
1535
2151
  *
1536
2152
  * Windowing: pass explicit start/end, or days (default: the last
1537
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.
1538
2160
  */
1539
2161
  pullRequests(options?: {
1540
2162
  days?: number | null;
@@ -1554,6 +2176,12 @@ declare class EllipsisAnalytics {
1554
2176
  * review the most PRs?" is the reviewer facets here with
1555
2177
  * account_type=bot. Windowing: pass explicit start/end, or days
1556
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.
1557
2185
  */
1558
2186
  reviews(options?: {
1559
2187
  days?: number | null;
@@ -1574,6 +2202,8 @@ declare class EllipsisAuthCli {
1574
2202
  * Poll a device-code auth flow for its token.
1575
2203
  *
1576
2204
  * Unauthenticated; the device code identifies the flow.
2205
+ *
2206
+ * Authentication: No token required.
1577
2207
  */
1578
2208
  poll(options: {
1579
2209
  device_code: string;
@@ -1586,6 +2216,8 @@ declare class EllipsisAuthCli {
1586
2216
  * Unauthenticated: the CLI has no credential yet — that's what
1587
2217
  * it's obtaining. The human authorizes out-of-band in the
1588
2218
  * dashboard.
2219
+ *
2220
+ * Authentication: No token required.
1589
2221
  */
1590
2222
  start(): Promise<S['StartCliAuthResponse']>;
1591
2223
  }
@@ -1594,118 +2226,6 @@ declare class EllipsisAuth {
1594
2226
  readonly cli: EllipsisAuthCli;
1595
2227
  constructor(transport: Transport);
1596
2228
  }
1597
- declare class EllipsisAutomations {
1598
- private readonly transport;
1599
- constructor(transport: Transport);
1600
- /**
1601
- * Create Automation
1602
- *
1603
- * Create an automation, managed through the API: no file, live
1604
- * immediately. To put its definition in a repository instead, create
1605
- * it here and then POST /v1/automations/{automation_id}/link.
1606
- *
1607
- * 409 when another live automation already holds the name.
1608
- */
1609
- create(options: {
1610
- automation: S['AutomationConfig'];
1611
- }): Promise<S['AutomationResponse']>;
1612
- /**
1613
- * Delete Automation
1614
- *
1615
- * Delete an automation, by id or by name.
1616
- *
1617
- * It stops running and its name is freed immediately; its past
1618
- * sessions remain readable. Only for automations managed through
1619
- * this API — delete the file to remove one defined by a repository.
1620
- */
1621
- delete(automation_id: string): Promise<void>;
1622
- /**
1623
- * Get Automation
1624
- *
1625
- * Return one automation, by id or by name.
1626
- */
1627
- get(automation_id: string): Promise<S['AutomationResponse']>;
1628
- /**
1629
- * Link Automation
1630
- *
1631
- * Move an automation into a repository, by id or by name.
1632
- *
1633
- * Opens a pull request adding its definition file. The automation
1634
- * keeps running unchanged meanwhile; merging hands it over to the
1635
- * file, after which the file is what changes it. Nothing happens
1636
- * if the pull request is never merged.
1637
- */
1638
- link(automation_id: string, options: {
1639
- path?: string | null;
1640
- repository: string;
1641
- }): Promise<S['LinkAutomationResponse']>;
1642
- /**
1643
- * List Automations
1644
- *
1645
- * List automations.
1646
- */
1647
- list(): Promise<S['AutomationsListResponse']>;
1648
- /**
1649
- * Get Automation Metrics
1650
- *
1651
- * Return an automation's session distribution and trailing spend,
1652
- * by id or by name.
1653
- *
1654
- * `samples` carries one entry per finished session (duration, cost,
1655
- * tokens) for distributions; `spend_windows` carries what the
1656
- * automation's sessions cost over the last 1, 7, and 28 days against
1657
- * its budget for each window.
1658
- */
1659
- metrics(automation_id: string): Promise<S['AutomationMetricsResponse']>;
1660
- /**
1661
- * Start Automation Session
1662
- *
1663
- * Invoke an automation.
1664
- *
1665
- * Runs a certified automation with its configured instructions, model,
1666
- * environment, permissions, skills, and budget, and returns
1667
- * the session it started. The session runs once and does not accept
1668
- * follow-up messages. If the automation declares input.json_schema,
1669
- * send only `input` for its initial message. Otherwise send a non-empty
1670
- * `prompt`, which becomes the initial message verbatim. Both fields
1671
- * together, neither field, and input that renders an empty message are
1672
- * rejected with 422. An optional `budget` lowers the session cap;
1673
- * `metadata` tags the session. Codex invocations are not supported.
1674
- */
1675
- run(automation_id: string, options?: {
1676
- budget?: number | null;
1677
- input?: Record<string, unknown> | null;
1678
- metadata?: Record<string, string>;
1679
- prompt?: string | null;
1680
- }): Promise<S['SessionResponse']>;
1681
- /**
1682
- * Get Automations Stream Ticket
1683
- */
1684
- streamTicket(): Promise<S['StreamTicketResponse']>;
1685
- /**
1686
- * Unlink Automation
1687
- *
1688
- * Take over an automation from its file, by id or by name.
1689
- *
1690
- * The file stops governing it immediately and further changes go
1691
- * through this API. The file is left in place, inert — delete it
1692
- * whenever you like.
1693
- */
1694
- unlink(automation_id: string): Promise<S['AutomationResponse']>;
1695
- /**
1696
- * Update Automation
1697
- *
1698
- * Replace an automation's definition, by id or by name.
1699
- *
1700
- * The whole definition is replaced, and the change is live at
1701
- * once. Only for automations managed through this API: one defined
1702
- * by a repository file is a 409, since the next push to that file
1703
- * would revert the change — unlink it first to take ownership.
1704
- */
1705
- update(automation_id: string, options: {
1706
- automation: S['AutomationConfig'];
1707
- }): Promise<S['AutomationResponse']>;
1708
- }
1709
2229
  declare class EllipsisEnvironments {
1710
2230
  private readonly transport;
1711
2231
  constructor(transport: Transport);
@@ -1717,9 +2237,15 @@ declare class EllipsisEnvironments {
1717
2237
  * `kind: environment` YAML under an agents directory.
1718
2238
  *
1719
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.
1720
2246
  */
1721
2247
  create(options: {
1722
- environment: S['EnvironmentDocument'];
2248
+ environment: S['EnvironmentDocument-Input'];
1723
2249
  }): Promise<S['EnvironmentResponse']>;
1724
2250
  /**
1725
2251
  * Delete Environment
@@ -1731,18 +2257,36 @@ declare class EllipsisEnvironments {
1731
2257
  * environment. Past sessions remain readable. Only for environments
1732
2258
  * managed through this API — delete the file to remove one defined
1733
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.
1734
2266
  */
1735
2267
  delete(environment_id: string): Promise<void>;
1736
2268
  /**
1737
2269
  * Get Environment
1738
2270
  *
1739
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.
1740
2278
  */
1741
2279
  get(environment_id: string): Promise<S['EnvironmentResponse']>;
1742
2280
  /**
1743
2281
  * List Environments
1744
2282
  *
1745
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.
1746
2290
  */
1747
2291
  list(): Promise<S['EnvironmentsListResponse']>;
1748
2292
  /**
@@ -1754,9 +2298,15 @@ declare class EllipsisEnvironments {
1754
2298
  * resolve the new body; running sessions keep the one frozen at
1755
2299
  * their start. Only for environments managed through this API: one
1756
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.
1757
2307
  */
1758
2308
  update(environment_id: string, options: {
1759
- environment: S['EnvironmentDocument'];
2309
+ environment: S['EnvironmentDocument-Input'];
1760
2310
  }): Promise<S['EnvironmentResponse']>;
1761
2311
  }
1762
2312
  declare class EllipsisFiles {
@@ -1772,6 +2322,13 @@ declare class EllipsisFiles {
1772
2322
  * agent persisting a screenshot to link on a PR), but all
1773
2323
  * credential types work. Returns the org-membership-gated
1774
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.
1775
2332
  */
1776
2333
  create(options: {
1777
2334
  content_type: string;
@@ -1789,6 +2346,13 @@ declare class EllipsisFiles {
1789
2346
  * potentially-untrusted code and must not be able to destroy the
1790
2347
  * account's files — uploading is fine, destruction is not); API
1791
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.
1792
2356
  */
1793
2357
  delete(file_id: string): Promise<void>;
1794
2358
  /**
@@ -1807,6 +2371,13 @@ declare class EllipsisFiles {
1807
2371
  * To fetch the bytes locally, call this and then GET download_url
1808
2372
  * immediately — the JSON API never carries the file. The CLI's
1809
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.
1810
2381
  */
1811
2382
  get(file_id: string): Promise<S['GetFileResponse']>;
1812
2383
  /**
@@ -1818,6 +2389,13 @@ declare class EllipsisFiles {
1818
2389
  * a download_urls map keyed by file id for thumbnails or batch
1819
2390
  * downloads. URLs expire within about a minute. session_id scopes
1820
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.
1821
2399
  */
1822
2400
  list(options?: {
1823
2401
  session_id?: string | null;
@@ -1826,6 +2404,61 @@ declare class EllipsisFiles {
1826
2404
  include_download_urls?: boolean;
1827
2405
  }): Promise<Page<S['File'], S['FilesListResponse']>>;
1828
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.
2422
+ *
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.
2429
+ */
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']>;
2461
+ }
1829
2462
  declare class EllipsisIntegrationsGithub {
1830
2463
  private readonly transport;
1831
2464
  constructor(transport: Transport);
@@ -1839,16 +2472,34 @@ declare class EllipsisIntegrationsGithub {
1839
2472
  *
1840
2473
  * Members carry their linked Slack identity when a Slack-GitHub
1841
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.
1842
2481
  */
1843
2482
  members(): Promise<S['GithubMembersListResponse']>;
1844
2483
  /**
1845
2484
  * List Github Repositories
1846
2485
  *
1847
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.
1848
2493
  */
1849
2494
  repos(): Promise<S['GithubRepositoriesListResponse']>;
1850
2495
  /**
1851
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.
1852
2503
  */
1853
2504
  uninstall(options: {
1854
2505
  confirm_account_login: string;
@@ -1859,16 +2510,34 @@ declare class EllipsisIntegrationsLinear {
1859
2510
  constructor(transport: Transport);
1860
2511
  /**
1861
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.
1862
2519
  */
1863
2520
  delete(): Promise<S['AccountActionResponse']>;
1864
2521
  /**
1865
2522
  * List Linear Teams
1866
2523
  *
1867
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.
1868
2531
  */
1869
2532
  teams(): Promise<S['LinearTeamsListResponse']>;
1870
2533
  /**
1871
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.
1872
2541
  */
1873
2542
  updateSettings(options: {
1874
2543
  mcp_inclusion?: S['McpInclusionMode'] | null;
@@ -1880,12 +2549,24 @@ declare class EllipsisIntegrationsSentry {
1880
2549
  constructor(transport: Transport);
1881
2550
  /**
1882
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.
1883
2558
  */
1884
2559
  delete(integration_id: string): Promise<S['AccountActionResponse']>;
1885
2560
  /**
1886
2561
  * List Sentry Organizations
1887
2562
  *
1888
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.
1889
2570
  */
1890
2571
  organizations(): Promise<S['SentryOrganizationsListResponse']>;
1891
2572
  }
@@ -1897,14 +2578,32 @@ declare class EllipsisIntegrationsSlack {
1897
2578
  *
1898
2579
  * List the channels of the connected Slack workspace, fetched
1899
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.
1900
2587
  */
1901
2588
  channels(): Promise<S['SlackChannelsListResponse']>;
1902
2589
  /**
1903
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.
1904
2597
  */
1905
2598
  createOperationsChannel(): Promise<S['SlackChannel']>;
1906
2599
  /**
1907
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.
1908
2607
  */
1909
2608
  delete(): Promise<S['AccountActionResponse']>;
1910
2609
  /**
@@ -1912,10 +2611,22 @@ declare class EllipsisIntegrationsSlack {
1912
2611
  *
1913
2612
  * List the members of the connected Slack workspace, fetched
1914
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.
1915
2620
  */
1916
2621
  members(): Promise<S['SlackMembersListResponse']>;
1917
2622
  /**
1918
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.
1919
2630
  */
1920
2631
  updateSettings(options: {
1921
2632
  mcp_inclusion: S['McpInclusionMode'];
@@ -1935,10 +2646,16 @@ declare class EllipsisIntegrations {
1935
2646
  *
1936
2647
  * A read-only view, so an agent authoring another agent's
1937
2648
  * config can learn which repositories, channels, teams, and
1938
- * organizations it may name before POST /automations.
2649
+ * organizations it may name before POST /agents.
1939
2650
  *
1940
2651
  * Available to all credential types including sandbox tokens: the
1941
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.
1942
2659
  */
1943
2660
  list(): Promise<S['GetIntegrationsResponse']>;
1944
2661
  }
@@ -1957,6 +2674,13 @@ declare class EllipsisMemories {
1957
2674
  *
1958
2675
  * Creating never overwrites: a path that already exists is a 409, so
1959
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.
1960
2684
  */
1961
2685
  create(options: {
1962
2686
  content: string;
@@ -1971,6 +2695,13 @@ declare class EllipsisMemories {
1971
2695
  * Available to every credential type, agents included — a wrong
1972
2696
  * memory is worse than a missing one. The deleted content is kept in
1973
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.
1974
2705
  */
1975
2706
  delete(memory_id: string, options?: {
1976
2707
  if_sha256?: string | null;
@@ -1986,6 +2717,13 @@ declare class EllipsisMemories {
1986
2717
  *
1987
2718
  * Pass `if_sha256` (from a previous read) to make a concurrent write
1988
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.
1989
2727
  */
1990
2728
  edit(memory_id: string, options?: {
1991
2729
  content?: string | null;
@@ -1998,6 +2736,13 @@ declare class EllipsisMemories {
1998
2736
  * Read one memory's full content.
1999
2737
  *
2000
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.
2001
2746
  */
2002
2747
  get(memory_id: string): Promise<S['MemoryResponse']>;
2003
2748
  /**
@@ -2009,6 +2754,13 @@ declare class EllipsisMemories {
2009
2754
  * memory, carrying its id, path, and description) plus the same
2010
2755
  * entries structured, each with every field except `content`. Read
2011
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.
2012
2764
  */
2013
2765
  list(options?: {
2014
2766
  prefix?: string | null;
@@ -2019,6 +2771,12 @@ declare class EllipsisReviews {
2019
2771
  constructor(transport: Transport);
2020
2772
  /**
2021
2773
  * List Review Configs
2774
+ *
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.
2022
2780
  */
2023
2781
  configs(): Promise<S['GetCodeReviewConfigsResponse']>;
2024
2782
  /**
@@ -2036,6 +2794,12 @@ declare class EllipsisReviews {
2036
2794
  * `stages[].session_id` is where a client streams
2037
2795
  * (/sessions/{id}/stream on a stage session), since the review
2038
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.
2039
2803
  */
2040
2804
  create(options: {
2041
2805
  owner: string;
@@ -2055,6 +2819,12 @@ declare class EllipsisReviews {
2055
2819
  * Findings only exist after a stage session finalizes — a running
2056
2820
  * review honestly reports [] / null, which is why a client
2057
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.
2058
2828
  */
2059
2829
  get(review_id: string): Promise<S['Review']>;
2060
2830
  /**
@@ -2069,6 +2839,12 @@ declare class EllipsisReviews {
2069
2839
  *
2070
2840
  * Webhook-created reviews appear here too, so this answers "show
2071
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.
2072
2848
  */
2073
2849
  list(options?: {
2074
2850
  repository?: (string)[];
@@ -2080,22 +2856,6 @@ declare class EllipsisReviews {
2080
2856
  cursor?: string | null;
2081
2857
  }): Promise<Page<S['Review'], S['ReviewsListResponse']>>;
2082
2858
  }
2083
- declare class EllipsisSandboxes {
2084
- private readonly transport;
2085
- constructor(transport: Transport);
2086
- /**
2087
- * Get Single Sandbox
2088
- */
2089
- get(sandbox_id: string): Promise<S['SandboxResponse']>;
2090
- /**
2091
- * Get Sandboxes
2092
- */
2093
- list(): Promise<void>;
2094
- /**
2095
- * Get Sandbox Stream Ticket
2096
- */
2097
- streamTicket(sandbox_id: string): Promise<S['StreamTicketResponse']>;
2098
- }
2099
2859
  declare class EllipsisSecrets {
2100
2860
  private readonly transport;
2101
2861
  constructor(transport: Transport);
@@ -2106,6 +2866,13 @@ declare class EllipsisSecrets {
2106
2866
  *
2107
2867
  * Refused for sandbox tokens; mutations require an API key or
2108
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.
2109
2876
  */
2110
2877
  delete(name: string): Promise<void>;
2111
2878
  /**
@@ -2115,6 +2882,13 @@ declare class EllipsisSecrets {
2115
2882
  *
2116
2883
  * Values are write-only: the response carries only names and
2117
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.
2118
2892
  */
2119
2893
  list(): Promise<S['SecretsListResponse']>;
2120
2894
  /**
@@ -2126,6 +2900,13 @@ declare class EllipsisSecrets {
2126
2900
  * only — values are write-only. Refused for sandbox tokens (held by
2127
2901
  * potentially-untrusted in-sandbox code); mutations require an
2128
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.
2129
2910
  */
2130
2911
  set(options: {
2131
2912
  secrets: (S['SecretInput'])[];
@@ -2135,7 +2916,7 @@ declare class EllipsisSessions {
2135
2916
  private readonly transport;
2136
2917
  constructor(transport: Transport);
2137
2918
  /**
2138
- * Get Agent Session Analytics
2919
+ * Get Session Analytics
2139
2920
  *
2140
2921
  * Measured tokens and spend over time, plus estimated content cost.
2141
2922
  *
@@ -2146,10 +2927,17 @@ declare class EllipsisSessions {
2146
2927
  * or unsupported context remains explicitly unattributed. No raw
2147
2928
  * prompts or tool results are returned. Sandbox tokens may read only
2148
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.
2149
2937
  */
2150
2938
  analytics(session_id: string): Promise<S['SessionAnalytics']>;
2151
2939
  /**
2152
- * Get Agent Session Diff
2940
+ * Get Session Diff
2153
2941
  *
2154
2942
  * Return the session's uncommitted changes as a patch.
2155
2943
  *
@@ -2158,23 +2946,19 @@ declare class EllipsisSessions {
2158
2946
  * counts ride on the session itself (`git.repos[].files`); this
2159
2947
  * is the text behind them. Empty when the tree was clean. A
2160
2948
  * sandbox token may read only its own session's diff.
2161
- */
2162
- diff(session_id: string): Promise<S['SessionDiffResponse']>;
2163
- /**
2164
- * List Session Executions
2165
- *
2166
- * Return the session's execution attempts, oldest first.
2167
2949
  *
2168
- * Includes the selected harness, model, resolved instructions, initial
2169
- * query, and common result summary. Complete native outputs remain in
2170
- * the session's records. Internal launch options and checkpoint storage
2171
- * references are excluded.
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.
2172
2956
  */
2173
- executions(session_id: string): Promise<S['SessionExecutionsListResponse']>;
2957
+ diff(session_id: string): Promise<S['SessionDiffResponse']>;
2174
2958
  /**
2175
- * Export Agent Session
2959
+ * Download Session
2176
2960
  *
2177
- * Export the complete session history.
2961
+ * Download the complete session history.
2178
2962
  *
2179
2963
  * The complete, ordered history of the session (agent output, tool calls, thinking,
2180
2964
  * lifecycle events, sandbox output, message events) as an ordered
@@ -2184,32 +2968,71 @@ declare class EllipsisSessions {
2184
2968
  * for one file. The JSON API never carries the bytes (same
2185
2969
  * two-step as files). /records is the paged live view of the
2186
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.
2978
+ */
2979
+ download(session_id: string): Promise<S['GetSessionLogResponse']>;
2980
+ /**
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.
2187
2996
  */
2188
- export(session_id: string): Promise<S['GetSessionLogResponse']>;
2997
+ executions(session_id: string): Promise<S['SessionExecutionsListResponse']>;
2189
2998
  /**
2190
- * Get Agent Session
2999
+ * Get Session
2191
3000
  *
2192
3001
  * Return one session.
2193
3002
  *
2194
3003
  * The public wire shape — the same shape the stream's session
2195
- * frames carry, with attributed_user and stopped_by_user resolved
3004
+ * frames carry, with attribution, stop, and archive actors resolved
2196
3005
  * at read time.
2197
3006
  *
2198
3007
  * The heavy near-static blobs (config snapshot, input/output)
2199
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.
2200
3016
  */
2201
3017
  get(session_id: string): Promise<S['SessionResponse']>;
2202
3018
  /**
2203
- * Get Agent Session Git
3019
+ * Get Session Git
2204
3020
  *
2205
3021
  * The session's GitHub-side git view: its commits, and each PR it
2206
3022
  * opened joined to the live gh_prs row and reviews. The identity list
2207
3023
  * (output_git) rides the session itself over the WebSocket; this is
2208
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.
2209
3032
  */
2210
3033
  git(session_id: string): Promise<S['SessionGitResponse']>;
2211
3034
  /**
2212
- * Ingest Agent Session Transcript
3035
+ * Ingest Session Transcript
2213
3036
  *
2214
3037
  * Append transcript lines to a session's record.
2215
3038
  *
@@ -2217,23 +3040,39 @@ declare class EllipsisSessions {
2217
3040
  *
2218
3041
  * A sandbox token may only push its own session's transcript.
2219
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.
2220
3050
  */
2221
3051
  ingestTranscript(session_id: string, options: {
2222
3052
  lines: (string)[];
2223
3053
  offset?: number;
2224
3054
  }): Promise<S['TranscriptIngestResult']>;
2225
3055
  /**
2226
- * List Agent Sessions
3056
+ * List Sessions
2227
3057
  *
2228
3058
  * List cloud agent sessions, newest first.
2229
3059
  *
2230
- * Optionally filtered by automation (id or name), source, time
3060
+ * Optionally filtered by agent (id or name), source, service, handler, time
2231
3061
  * window, attributed author, repository, and whether the session is
2232
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.
2233
3070
  */
2234
3071
  list(options?: {
2235
- automation?: string | null;
3072
+ agent?: string | null;
2236
3073
  source?: (S['SessionSource'])[] | null;
3074
+ service?: S['HandlerService'] | null;
3075
+ handler?: string | null;
2237
3076
  days?: number | null;
2238
3077
  start?: string | null;
2239
3078
  end?: string | null;
@@ -2245,7 +3084,7 @@ declare class EllipsisSessions {
2245
3084
  exclude_code_review?: boolean;
2246
3085
  }): Promise<Page<S['Session'], S['SessionsListResponse']>>;
2247
3086
  /**
2248
- * Get Agent Session Output
3087
+ * Get Session Output
2249
3088
  *
2250
3089
  * Return the session's typed output.
2251
3090
  *
@@ -2254,10 +3093,17 @@ declare class EllipsisSessions {
2254
3093
  * while the session is still running (poll GET /v1/sessions/{id}),
2255
3094
  * when the agent declares no output block, or when no execution
2256
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.
2257
3103
  */
2258
3104
  output(session_id: string): Promise<Record<string, unknown>>;
2259
3105
  /**
2260
- * Get Agent Session Records
3106
+ * Get Session Records
2261
3107
  *
2262
3108
  * Return the session's stored transcript records, oldest first.
2263
3109
  *
@@ -2266,29 +3112,45 @@ declare class EllipsisSessions {
2266
3112
  * agent answering "did X look into Y?" needs to read the sessions
2267
3113
  * it finds, and any org member sees the same transcript in the
2268
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.
2269
3122
  */
2270
3123
  records(session_id: string, options?: {
2271
3124
  cursor?: string | null;
2272
3125
  limit?: number | null;
2273
3126
  }): Promise<Page<S['SessionRecord'], S['SessionRecordsListResponse']>>;
2274
3127
  /**
2275
- * Search Agent Sessions
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.
2276
3136
  */
2277
3137
  search(options?: {
2278
3138
  q?: string;
2279
3139
  scope?: S['SessionSearchScope'];
2280
3140
  source?: (S['SessionSource'])[] | null;
3141
+ service?: S['HandlerService'] | null;
3142
+ handler?: string | null;
2281
3143
  author_id?: (number)[] | null;
2282
- automation_id?: (string)[] | null;
3144
+ agent_id?: (string)[] | null;
2283
3145
  session_ids?: (string)[] | null;
2284
3146
  repo?: (string)[] | null;
2285
- status?: (S['SessionStatus'])[] | null;
3147
+ status?: (S['SessionLifecycleStatus'])[] | null;
2286
3148
  start?: string | null;
2287
3149
  end?: string | null;
2288
3150
  limit?: number;
2289
3151
  }): Promise<S['SessionSearchResponse']>;
2290
3152
  /**
2291
- * Send Agent Session Message
3153
+ * Send Session Message
2292
3154
  *
2293
3155
  * Send a message to a session.
2294
3156
  *
@@ -2296,6 +3158,13 @@ declare class EllipsisSessions {
2296
3158
  * Returns the created message so the caller can track it by id; a
2297
3159
  * retried send with the same idempotency_key returns the original
2298
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.
2299
3168
  */
2300
3169
  sendMessage(session_id: string, options: {
2301
3170
  idempotency_key?: string | null;
@@ -2304,52 +3173,103 @@ declare class EllipsisSessions {
2304
3173
  }): Promise<S['SessionMessageResponse']>;
2305
3174
  /**
2306
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.
2307
3183
  */
2308
3184
  sessionStreamTicket(session_id: string): Promise<S['StreamTicketResponse']>;
2309
3185
  /**
2310
- * Start Agent Session
3186
+ * Start Session
2311
3187
  *
2312
3188
  * Start a cloud agent session.
2313
3189
  *
2314
3190
  * The daily driver: a prompt, optionally where to run it
2315
- * (`environment`) and the run's own settings, in the AutomationConfig
3191
+ * (`environment`) and the run's own settings, in the AgentConfig
2316
3192
  * vocabulary. What you send is what runs: omit `environment` and the
2317
3193
  * session runs in the built-in basic sandbox. A missing model or
2318
3194
  * budget comes from the organization's settings, so
2319
- * `{"prompt": "..."}` alone is a complete request. `prompt` is the
2320
- * first message; omit it and the session starts idle, waiting for
2321
- * 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
2322
3199
  * when `budget` exceeds the organization's per-session ceiling. To
2323
- * 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.
2324
3208
  */
2325
- start(options: {
3209
+ start(options?: {
2326
3210
  budget?: number | null;
2327
- 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;
2328
3214
  force_rebuild?: boolean;
2329
- harness: S['HarnessOptions'];
2330
3215
  images?: (S['ImageAttachment'])[];
2331
- instructions?: S['Instructions'];
2332
- interactive?: boolean;
3216
+ lifecycle?: S['SessionLifecycleConfig'];
2333
3217
  metadata?: Record<string, string>;
2334
3218
  output?: S['OutputConfig'] | null;
2335
- permissions?: S['PermissionsConfig'] | null;
2336
- prompt?: string | null;
3219
+ permissions?: S['PermissionsConfig-Input'] | null;
2337
3220
  repositories?: (string)[] | null;
2338
- skills?: (S['SkillRef'])[] | null;
3221
+ skills?: (S['SkillRef-Input'])[] | null;
2339
3222
  }): Promise<S['SessionResponse']>;
2340
3223
  /**
2341
- * Stop Agent Session
3224
+ * Stop Session
2342
3225
  *
2343
3226
  * Stop an in-flight session and return it.
2344
3227
  *
2345
3228
  * stopped_by is recorded only when the caller's credential maps
2346
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.
2347
3237
  */
2348
3238
  stop(session_id: string): Promise<S['SessionResponse']>;
2349
3239
  /**
2350
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.
2351
3248
  */
2352
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']>;
2353
3273
  /** Start a session and return a handle over it. */
2354
3274
  run(options: Parameters<EllipsisSessions['start']>[0]): Promise<SessionHandle>;
2355
3275
  /** A handle over an existing session. */
@@ -2360,6 +3280,12 @@ declare class EllipsisSupportSlack {
2360
3280
  constructor(transport: Transport);
2361
3281
  /**
2362
3282
  * Request Slack Help
3283
+ *
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.
2363
3289
  */
2364
3290
  create(options: {
2365
3291
  emails: (string)[];
@@ -2367,10 +3293,22 @@ declare class EllipsisSupportSlack {
2367
3293
  }): Promise<S['SlackHelpResponse']>;
2368
3294
  /**
2369
3295
  * Get Slack Help
3296
+ *
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.
2370
3302
  */
2371
3303
  get(): Promise<void>;
2372
3304
  /**
2373
3305
  * Invite To Slack Help
3306
+ *
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.
2374
3312
  */
2375
3313
  invite(options: {
2376
3314
  emails: (string)[];
@@ -2389,6 +3327,12 @@ declare class EllipsisTemplates {
2389
3327
  * Get Agent Template
2390
3328
  *
2391
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.
2392
3336
  */
2393
3337
  get(template_id: string): Promise<S['AgentTemplate']>;
2394
3338
  /**
@@ -2398,6 +3342,12 @@ declare class EllipsisTemplates {
2398
3342
  *
2399
3343
  * Behind auth but not account-scoped — the data is static
2400
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.
2401
3351
  */
2402
3352
  list(): Promise<S['AgentTemplatesListResponse']>;
2403
3353
  }
@@ -2411,6 +3361,12 @@ declare class EllipsisUserSubscriptionTokens {
2411
3361
  *
2412
3362
  * Your sessions stop billing your subscription immediately, and the
2413
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.
2414
3370
  */
2415
3371
  delete(provider: S['SubscriptionProvider']): Promise<void>;
2416
3372
  /**
@@ -2420,6 +3376,12 @@ declare class EllipsisUserSubscriptionTokens {
2420
3376
  *
2421
3377
  * `configured` is false when nothing is saved. The token itself is
2422
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.
2423
3385
  */
2424
3386
  get(provider: S['SubscriptionProvider']): Promise<S['SubscriptionToken']>;
2425
3387
  /**
@@ -2430,6 +3392,12 @@ declare class EllipsisUserSubscriptionTokens {
2430
3392
  * One entry per supported provider, whether or not you have saved a
2431
3393
  * token for it. Tokens are write-only: the response carries only
2432
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.
2433
3401
  */
2434
3402
  list(): Promise<S['SubscriptionTokensListResponse']>;
2435
3403
  /**
@@ -2442,6 +3410,12 @@ declare class EllipsisUserSubscriptionTokens {
2442
3410
  * succeeds. For Claude, use `claude setup-token`. For Codex, paste
2443
3411
  * the auth.json credentials from a ChatGPT login. Each subscription
2444
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.
2445
3419
  */
2446
3420
  set(provider: S['SubscriptionProvider'], options: {
2447
3421
  token: string;
@@ -2456,6 +3430,12 @@ declare class EllipsisUserSubscriptionTokens {
2456
3430
  * real windows without us seeing them. Null unless a token is
2457
3431
  * enabled for the provider: a disabled token routes nothing, so any
2458
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.
2459
3439
  */
2460
3440
  usage(provider: S['SubscriptionProvider']): Promise<S['SubscriptionUsageResponse']>;
2461
3441
  /**
@@ -2469,6 +3449,12 @@ declare class EllipsisUserSubscriptionTokens {
2469
3449
  * token is how you stop it routing. A 200 with `ok: false` is the
2470
3450
  * normal way a bad token is reported — it is an answer, not a
2471
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.
2472
3458
  */
2473
3459
  verify(provider: S['SubscriptionProvider']): Promise<S['VerifySubscriptionTokenResponse']>;
2474
3460
  }
@@ -2477,10 +3463,22 @@ declare class EllipsisUserTokens {
2477
3463
  constructor(transport: Transport);
2478
3464
  /**
2479
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.
2480
3472
  */
2481
3473
  list(): Promise<S['ListUserTokensResponse']>;
2482
3474
  /**
2483
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.
2484
3482
  */
2485
3483
  revoke(token_id: string): Promise<S['TokenRevokedResponse']>;
2486
3484
  }
@@ -2490,6 +3488,106 @@ declare class EllipsisUser {
2490
3488
  readonly tokens: EllipsisUserTokens;
2491
3489
  constructor(transport: Transport);
2492
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
+ }
2493
3591
  declare class EllipsisWebhooksDeliveries {
2494
3592
  private readonly transport;
2495
3593
  constructor(transport: Transport);
@@ -2500,6 +3598,12 @@ declare class EllipsisWebhooksDeliveries {
2500
3598
  *
2501
3599
  * Payloads are immutable across retries. Attempt details include HTTP
2502
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.
2503
3607
  */
2504
3608
  get(delivery_id: string): Promise<S['WebhookDeliveryResponse']>;
2505
3609
  /**
@@ -2509,6 +3613,12 @@ declare class EllipsisWebhooksDeliveries {
2509
3613
  *
2510
3614
  * Includes verification pings and deliveries for deleted webhooks.
2511
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.
2512
3622
  */
2513
3623
  list(options?: {
2514
3624
  webhook_id?: string | null;
@@ -2530,9 +3640,15 @@ declare class EllipsisWebhooks {
2530
3640
  * Create a webhook and send a verification ping.
2531
3641
  *
2532
3642
  * Save the signing secret from this response; it is returned once.
2533
- * Accounts can have three webhooks, including unverified and pending
2534
- * ones. A ping returning HTTP 200 moves unverified to pending. Contact
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
2535
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.
2536
3652
  */
2537
3653
  create(options: {
2538
3654
  description?: string | null;
@@ -2545,19 +3661,37 @@ declare class EllipsisWebhooks {
2545
3661
  * Delete a webhook and cancel outstanding deliveries.
2546
3662
  *
2547
3663
  * An HTTP request already in flight may finish. Delivery history remains
2548
- * available for 30 days. Deletion frees one of the account's three slots.
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.
2549
3671
  */
2550
3672
  delete(webhook_id: string): Promise<void>;
2551
3673
  /**
2552
3674
  * Get Webhook
2553
3675
  *
2554
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.
2555
3683
  */
2556
3684
  get(webhook_id: string): Promise<S['WebhookResponse']>;
2557
3685
  /**
2558
3686
  * List Webhooks
2559
3687
  *
2560
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.
2561
3695
  */
2562
3696
  list(): Promise<S['WebhooksListResponse']>;
2563
3697
  /**
@@ -2566,8 +3700,15 @@ declare class EllipsisWebhooks {
2566
3700
  * Send a signed verification or test ping.
2567
3701
  *
2568
3702
  * Available in every state. Only HTTP 200 verifies a destination;
2569
- * successful pings never activate it. At most five pings per account
2570
- * per minute, including pings from creation and URL changes.
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.
2571
3712
  */
2572
3713
  ping(webhook_id: string): Promise<void>;
2573
3714
  /**
@@ -2578,6 +3719,12 @@ declare class EllipsisWebhooks {
2578
3719
  * Changing the URL cancels outstanding deliveries, clears verification
2579
3720
  * and approval, and sends another ping. State and signing secret cannot
2580
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.
2581
3728
  */
2582
3729
  update(webhook_id: string, options: {
2583
3730
  description?: string | null;
@@ -2588,27 +3735,36 @@ declare class EllipsisWebhooks {
2588
3735
  declare class Ellipsis {
2589
3736
  private readonly transport;
2590
3737
  readonly account: EllipsisAccount;
3738
+ readonly agents: EllipsisAgents;
2591
3739
  readonly alerts: EllipsisAlerts;
2592
3740
  readonly analytics: EllipsisAnalytics;
2593
3741
  readonly auth: EllipsisAuth;
2594
- readonly automations: EllipsisAutomations;
2595
3742
  readonly environments: EllipsisEnvironments;
2596
3743
  readonly files: EllipsisFiles;
3744
+ readonly handlers: EllipsisHandlers;
2597
3745
  readonly integrations: EllipsisIntegrations;
2598
3746
  readonly memories: EllipsisMemories;
2599
3747
  readonly reviews: EllipsisReviews;
2600
- readonly sandboxes: EllipsisSandboxes;
2601
3748
  readonly secrets: EllipsisSecrets;
2602
3749
  readonly sessions: EllipsisSessions;
2603
3750
  readonly support: EllipsisSupport;
2604
3751
  readonly templates: EllipsisTemplates;
2605
3752
  readonly user: EllipsisUser;
3753
+ readonly vmExecutions: EllipsisVmExecutions;
3754
+ readonly vmImages: EllipsisVmImages;
3755
+ readonly vms: EllipsisVms;
2606
3756
  readonly webhooks: EllipsisWebhooks;
2607
3757
  constructor(options: TransportOptions);
2608
3758
  /**
2609
3759
  * Current Identity
2610
3760
  *
2611
3761
  * Return the identity behind the caller's credential.
3762
+ *
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.
2612
3768
  */
2613
3769
  identity(): Promise<S['Identity']>;
2614
3770
  }
@@ -2645,4 +3801,4 @@ declare class RateLimitError extends APIError {
2645
3801
  declare class ServerError extends APIError {
2646
3802
  }
2647
3803
 
2648
- export { APIError, AuthenticationError, type AutomationListStreamMessage, 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 };
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 };