@ellipsis-dev/sdk 0.38.0 → 0.43.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/README.md CHANGED
@@ -40,8 +40,8 @@ types and unknown `source`/`record_type`/`kind` values**.
40
40
  ## Shared chat work sections
41
41
 
42
42
  Web and CLI renderers can use `splitLedger(groupRecordsToChatTurns(records))`
43
- and `entryBody(entry, { live, now, liveText, liveSummary })` from `@ellipsis-dev/sdk/store`.
44
- `now` is epoch milliseconds. The returned `items` are the collapsed view:
43
+ and `entryBody(entry, { live, now, liveText, liveSummary, harness })` from `@ellipsis-dev/sdk/store`.
44
+ `now` is epoch milliseconds, and `harness` is `harnessName(session)`. The returned `items` are the collapsed view:
45
45
  one `isWorkFold(item)` section for progress, thinking and tools, with final
46
46
  replies, turn outcome and closing notices kept visible.
47
47
  `members.get(item.key)` contains
@@ -49,7 +49,8 @@ that section's rows; nested tool folds use the same map and `isToolFold`.
49
49
  Renderers own expansion state and can recursively display the members.
50
50
 
51
51
  The work key stays stable as records stream in and after replay. The live
52
- label advances from `Preparing environment` to `Starting agent` to `Working`
52
+ label advances from `Preparing environment` to `Starting Claude Code` (the
53
+ harness's name, or `Starting agent` without one) to `Working`
53
54
  as the platform and native turn events arrive. While the agent works, the heading
54
55
  from `store.getSnapshot().liveSummary` replaces `Working` when available.
55
56
  Pass the summary only to the entry being answered (`loading: true`, add a loading
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as components } from './types-D4cLMGUn.js';
2
- export { A as AgentConfig, a as AgentIdentity, b as AttributionType, B as BudgetConfig, C as CheckRunAction, d as CheckSuiteAction, e as ClaudeAssistantEvent, f as ClaudeAssistantMessage, g as ClaudeConfig, h as ClaudeConversationResetEvent, i as ClaudeNativeEvent, j as ClaudeNativeSessionRecord, k as ClaudeNativeUsage, l as ClaudeRateLimitEvent, m as ClaudeRateLimitInfo, n as ClaudeResultEvent, o as ClaudeSessionRecord, p as ClaudeSystemEvent, q as ClaudeUserEvent, r as ClaudeUserMessage, s as CodexAgentMessage, t as CodexAgentMessageItem, u as CodexAppServerError, v as CodexAppServerEvent, w as CodexAppServerItem, x as CodexAppServerNotification, y as CodexAppServerSessionRecord, z as CodexCollabAgentToolCall, D as CodexCommandExecution, E as CodexCommandExecutionItem, F as CodexConfig, G as CodexContextCompaction, H as CodexEffortLevel, I as CodexErrorEvent, J as CodexErrorItem, K as CodexErrorParams, L as CodexEvent, M as CodexFileChange, N as CodexFileChangeItem, O as CodexFileUpdate, P as CodexItem, Q as CodexItemCompleted, R as CodexItemCompletedEvent, S as CodexItemParams, T as CodexItemStarted, U as CodexItemStartedEvent, V as CodexItemUpdatedEvent, W as CodexLocalImageInput, X as CodexMcpToolCall, Y as CodexMcpToolCallAppContext, Z as CodexMcpToolCallError, _ as CodexMcpToolCallItem, $ as CodexMcpToolCallResult, a0 as CodexPlan, a1 as CodexReasoning, a2 as CodexReasoningItem, a3 as CodexSessionRecord, a4 as CodexSubAgentActivity, a5 as CodexTextInput, a6 as CodexThread, a7 as CodexThreadStarted, a8 as CodexThreadStartedEvent, a9 as CodexThreadStartedParams, aa as CodexThreadTokenUsage, ab as CodexTodoListItem, ac as CodexTokenUsageBreakdown, ad as CodexTokenUsageParams, ae as CodexTokenUsageUpdated, af as CodexTurn, ag as CodexTurnCompleted, ah as CodexTurnCompletedEvent, ai as CodexTurnError, aj as CodexTurnFailedEvent, ak as CodexTurnParams, al as CodexTurnStarted, am as CodexTurnStartedEvent, an as CodexUsage, ao as CodexUserInput, ap as CodexUserMessage, aq as CodexWebSearch, ar as CodexWebSearchItem, as as ComputeConfig, at as ComputeConfig1, au as ConfigMetadata, av as Cost, aw as Cost1, ax as CronTrigger, ay as DeltaFrame, az as Duration, aA as EffortLevel, aB as EllipsisGrant, aC as EllipsisPermissions, aD as EnvironmentBaseBuild, aE as EnvironmentConfig, aF as EnvironmentHooks, aG as EnvironmentHooks1, aH as EnvironmentOutputPayload, aI as EnvironmentOutputRecord, aJ as EnvironmentPhasePayload, aK as EnvironmentPhaseRecord, aL as EnvironmentReadyPayload, aM as EnvironmentReadyRecord, aN as EnvironmentScript, aO as EnvironmentSource, aP as EnvironmentVariable, aQ as ErrorFrame, aR as ErrorReason, aS as GeminiConfig, aT as GeminiErrorEvent, aU as GeminiInitEvent, aV as GeminiMessageEvent, aW as GeminiModelStats, aX as GeminiResultEvent, aY as GeminiSessionRecord, aZ as GeminiStreamEvent, a_ as GeminiStreamStats, a$ as GeminiToolError, b0 as GeminiToolResultEvent, b1 as GeminiToolUseEvent, b2 as GithubAccountFilter, b3 as GithubAccountSelector, b4 as GithubAccountSnippet, b5 as GithubAccountType, b6 as GithubCheckRunEvent, b7 as GithubCheckSuiteEvent, b8 as GithubIssueEvent, b9 as GithubPermissions, ba as GithubPullRequestEvent, bb as GithubPushEvent, bc as GithubReleaseEvent, bd as GithubStatusEvent, be as GithubWorkflowRunEvent, bf as HandlerService, bg as HeartbeatFrame, bh as InputContract, bi as IssueAction, bj as LegacyAssistantPayload, bk as LegacyNativeUsage, bl as LegacyResultPayload, bm as Level, bn as LifecycleSessionRecord, bo as LinearIssueAction, bp as LinearIssueChanged, bq as LinearIssueEvent, br as LinearLabelsChange, bs as LinearValueChange, bt as LinearValueFilter, bu as LlmCost, bv as LlmCostSplit, bw as McpRemoteServer, bx as McpServerRef, by as McpStdioServer, bz as MemorySize, bA as MessageEndedPayload, bB as MessageEndedRecord, bC as MessageQueuedPayload, bD as MessageQueuedRecord, bE as MessageRecord, bF as MessageRequeuedPayload, bG as MessageRequeuedRecord, bH as MessageStartedPayload, bI as MessageStartedRecord, bJ as ModelLlmCostSplit, bK as ModelTokenCounts, bL as OutputConfig, bM as PermissionsConfig, bN as PermissionsConfig1, bO as PlatformSessionRecord, bP as PromptBlockedReason, bQ as PullRequest, bR as PullRequestAction, bS as ReactCheckRun, bT as ReactCheckSuite, bU as ReactIssue, bV as ReactLinearIssue, bW as ReactPullRequest, bX as ReactPush, bY as ReactRelease, bZ as ReactSentry, b_ as ReactSlackChannel, b$ as ReactStatus, c0 as ReactTrigger, c1 as ReactWorkflowRun, c2 as RecordsFrame, c3 as ReleaseAction, c4 as RepositoryFilter, c5 as RepositoryRef, c6 as Review, c7 as ReviewComment, c8 as ReviewConfig, c9 as ReviewConfigsListResponse, ca as ReviewReviewer, cb as ReviewSummary, cc as ReviewsListResponse, cd as SdkAssistantRecord, ce as SdkCacheCreation, cf as SdkContentBlock, cg as SdkRateLimitRecord, ch as SdkRecord, ci as SdkResultRecord, cj as SdkServerToolResultBlock, ck as SdkServerToolUseBlock, cl as SdkSystemRecord, cm as SdkTextBlock, cn as SdkThinkingBlock, co as SdkToolResultBlock, cp as SdkToolUseBlock, cq as SdkUserRecord, cr as SendSessionMessageRequest, cs as SentryAction, ct as SentryAlertEvent, cu as Session, cv as SessionAgent, cw as SessionArchived, cx as SessionAttribution, cy as SessionClosedPayload, cz as SessionClosedRecord, cA as SessionConfig, cB as SessionConversation, cC as SessionConversationConfig, cD as SessionEnvironment, cE as SessionError, cF as SessionEventActor, cG as SessionFrame, cH as SessionGit, cI as SessionGitCommit, cJ as SessionGitFile, cK as SessionGitPr, cL as SessionGitRepo, cM as SessionHandler, cN as SessionMessage, cO as SessionMessageImage, cP as SessionMessageResponse, cQ as SessionOutput, cR as SessionParent, cS as SessionPrompting, cT as SessionRecord, cU as SessionRecordsListResponse, cV as SessionResponse, cW as SessionReview, cX as SessionSource, cY as SessionStatus, cZ as SessionStreamFrame, c_ as SessionSummary, c$ as SessionSummarySource, d0 as SessionsListResponse, d1 as SettingsRef, d2 as SkillRef, d3 as SlackChannelCreatedEvent, d4 as SlackMessageEvent, d5 as StatusAction, d6 as StreamFrame, d7 as TokenCounts, d8 as Tokens, d9 as Tokens1, da as TokensInfo, db as UnknownSessionRecord, dc as UpdateSessionRequest, dd as WorkflowRunAction, de as paths } from './types-D4cLMGUn.js';
1
+ import { c as components } from './types-BAJ82SH6.js';
2
+ export { A as AgentConfig, a as AgentIdentity, b as AttributionType, B as BudgetConfig, C as CheckRunAction, d as CheckSuiteAction, e as ClaudeAssistantEvent, f as ClaudeAssistantMessage, g as ClaudeConfig, h as ClaudeConversationResetEvent, i as ClaudeNativeEvent, j as ClaudeNativeSessionRecord, k as ClaudeNativeUsage, l as ClaudeRateLimitEvent, m as ClaudeRateLimitInfo, n as ClaudeResultEvent, o as ClaudeSessionRecord, p as ClaudeSystemEvent, q as ClaudeUserEvent, r as ClaudeUserMessage, s as CodexAgentMessage, t as CodexAgentMessageItem, u as CodexAppServerError, v as CodexAppServerEvent, w as CodexAppServerItem, x as CodexAppServerNotification, y as CodexAppServerSessionRecord, z as CodexCollabAgentToolCall, D as CodexCommandExecution, E as CodexCommandExecutionItem, F as CodexConfig, G as CodexContextCompaction, H as CodexEffortLevel, I as CodexErrorEvent, J as CodexErrorItem, K as CodexErrorParams, L as CodexEvent, M as CodexFileChange, N as CodexFileChangeItem, O as CodexFileUpdate, P as CodexItem, Q as CodexItemCompleted, R as CodexItemCompletedEvent, S as CodexItemParams, T as CodexItemStarted, U as CodexItemStartedEvent, V as CodexItemUpdatedEvent, W as CodexLocalImageInput, X as CodexMcpToolCall, Y as CodexMcpToolCallAppContext, Z as CodexMcpToolCallError, _ as CodexMcpToolCallItem, $ as CodexMcpToolCallResult, a0 as CodexPlan, a1 as CodexReasoning, a2 as CodexReasoningItem, a3 as CodexSessionRecord, a4 as CodexSubAgentActivity, a5 as CodexTextInput, a6 as CodexThread, a7 as CodexThreadStarted, a8 as CodexThreadStartedEvent, a9 as CodexThreadStartedParams, aa as CodexThreadTokenUsage, ab as CodexTodoListItem, ac as CodexTokenUsageBreakdown, ad as CodexTokenUsageParams, ae as CodexTokenUsageUpdated, af as CodexTurn, ag as CodexTurnCompleted, ah as CodexTurnCompletedEvent, ai as CodexTurnError, aj as CodexTurnFailedEvent, ak as CodexTurnParams, al as CodexTurnStarted, am as CodexTurnStartedEvent, an as CodexUsage, ao as CodexUserInput, ap as CodexUserMessage, aq as CodexWebSearch, ar as CodexWebSearchItem, as as ComputeConfig, at as ComputeConfig1, au as ConfigMetadata, av as Cost, aw as Cost1, ax as CronTrigger, ay as DeltaFrame, az as Duration, aA as EffortLevel, aB as EllipsisGrant, aC as EllipsisPermissions, aD as EnvironmentBaseBuild, aE as EnvironmentConfig, aF as EnvironmentHooks, aG as EnvironmentHooks1, aH as EnvironmentOutputPayload, aI as EnvironmentOutputRecord, aJ as EnvironmentPhasePayload, aK as EnvironmentPhaseRecord, aL as EnvironmentReadyPayload, aM as EnvironmentReadyRecord, aN as EnvironmentScript, aO as EnvironmentSource, aP as EnvironmentVariable, aQ as ErrorFrame, aR as ErrorReason, aS as GeminiConfig, aT as GeminiErrorEvent, aU as GeminiInitEvent, aV as GeminiMessageEvent, aW as GeminiModelStats, aX as GeminiResultEvent, aY as GeminiSessionRecord, aZ as GeminiStreamEvent, a_ as GeminiStreamStats, a$ as GeminiToolError, b0 as GeminiToolResultEvent, b1 as GeminiToolUseEvent, b2 as GithubAccountFilter, b3 as GithubAccountSelector, b4 as GithubAccountSnippet, b5 as GithubAccountType, b6 as GithubCheckRunEvent, b7 as GithubCheckSuiteEvent, b8 as GithubIssueEvent, b9 as GithubPermissions, ba as GithubPullRequestEvent, bb as GithubPushEvent, bc as GithubReleaseEvent, bd as GithubStatusEvent, be as GithubWorkflowRunEvent, bf as HandlerService, bg as HeartbeatFrame, bh as InputContract, bi as IssueAction, bj as LegacyAssistantPayload, bk as LegacyNativeUsage, bl as LegacyResultPayload, bm as Level, bn as LifecycleSessionRecord, bo as LinearIssueAction, bp as LinearIssueChanged, bq as LinearIssueEvent, br as LinearLabelsChange, bs as LinearValueChange, bt as LinearValueFilter, bu as LlmCost, bv as LlmCostSplit, bw as McpRemoteServer, bx as McpServerRef, by as McpStdioServer, bz as MemorySize, bA as MessageEndedPayload, bB as MessageEndedRecord, bC as MessageQueuedPayload, bD as MessageQueuedRecord, bE as MessageRecord, bF as MessageRequeuedPayload, bG as MessageRequeuedRecord, bH as MessageStartedPayload, bI as MessageStartedRecord, bJ as ModelLlmCostSplit, bK as ModelTokenCounts, bL as OutputConfig, bM as PermissionsConfig, bN as PermissionsConfig1, bO as PlatformSessionRecord, bP as PromptBlockedReason, bQ as PullRequest, bR as PullRequestAction, bS as ReactCheckRun, bT as ReactCheckSuite, bU as ReactIssue, bV as ReactLinearIssue, bW as ReactPullRequest, bX as ReactPush, bY as ReactRelease, bZ as ReactSentry, b_ as ReactSlackChannel, b$ as ReactStatus, c0 as ReactTrigger, c1 as ReactWorkflowRun, c2 as RecordsFrame, c3 as ReleaseAction, c4 as RepositoryFilter, c5 as RepositoryRef, c6 as Review, c7 as ReviewComment, c8 as ReviewConfig, c9 as ReviewConfigsListResponse, ca as ReviewReviewer, cb as ReviewSummary, cc as ReviewsListResponse, cd as SdkAssistantRecord, ce as SdkCacheCreation, cf as SdkContentBlock, cg as SdkRateLimitRecord, ch as SdkRecord, ci as SdkResultRecord, cj as SdkServerToolResultBlock, ck as SdkServerToolUseBlock, cl as SdkSystemRecord, cm as SdkTextBlock, cn as SdkThinkingBlock, co as SdkToolResultBlock, cp as SdkToolUseBlock, cq as SdkUserRecord, cr as SendSessionMessageRequest, cs as SentryAction, ct as SentryAlertEvent, cu as Session, cv as SessionAgent, cw as SessionArchived, cx as SessionAttribution, cy as SessionClosedPayload, cz as SessionClosedRecord, cA as SessionConfig, cB as SessionConversation, cC as SessionConversationConfig, cD as SessionEnvironment, cE as SessionError, cF as SessionEventActor, cG as SessionFrame, cH as SessionGit, cI as SessionGitCommit, cJ as SessionGitFile, cK as SessionGitPr, cL as SessionGitRepo, cM as SessionHandler, cN as SessionMessage, cO as SessionMessageImage, cP as SessionMessageResponse, cQ as SessionOutput, cR as SessionParent, cS as SessionPrompting, cT as SessionRecord, cU as SessionRecordsListResponse, cV as SessionResponse, cW as SessionReview, cX as SessionSource, cY as SessionStatus, cZ as SessionStreamFrame, c_ as SessionSummary, c$ as SessionSummarySource, d0 as SessionsListResponse, d1 as SettingsRef, d2 as SkillRef, d3 as SlackChannelCreatedEvent, d4 as SlackMessageEvent, d5 as StatusAction, d6 as StreamFrame, d7 as TokenCounts, d8 as Tokens, d9 as Tokens1, da as TokensInfo, db as UnknownSessionRecord, dc as UpdateSessionRequest, dd as WorkflowRunAction, de as paths } from './types-BAJ82SH6.js';
3
3
 
4
4
  /**
5
5
  * Frames on /v1/sessions/stream, /v1/agents/stream and /v1/vm-executions/{id}/stream. Ignore unknown frame types.
@@ -2895,6 +2895,21 @@ declare class EllipsisSessions {
2895
2895
  * Grant match patterns can further restrict access to individual resources.
2896
2896
  */
2897
2897
  git(id: string): Promise<S['SessionGitResponse']>;
2898
+ /**
2899
+ * Get Session Image
2900
+ *
2901
+ * Return an image sent with a message to the session.
2902
+ *
2903
+ * Each message lists its images, with their IDs, in `images`.
2904
+ *
2905
+ * Required permissions: read:sessions.
2906
+ * API key: Supported.
2907
+ * CLI user token: Supported.
2908
+ * Session token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
2909
+ * Higher permission levels include lower levels: read < write < delete.
2910
+ * Grant match patterns can further restrict access to individual resources.
2911
+ */
2912
+ image(session_id: string, id: string): Promise<S['ImageAttachment']>;
2898
2913
  /**
2899
2914
  * List Sessions
2900
2915
  *
@@ -3066,7 +3081,7 @@ declare class EllipsisSessions {
3066
3081
  /**
3067
3082
  * Update Session
3068
3083
  *
3069
- * Archive or unarchive a session and return it.
3084
+ * Archive or unarchive a session, or set its summary, and return it.
3070
3085
  *
3071
3086
  * Set archived to true to record the current server time and the
3072
3087
  * authenticated GitHub user. API-key requests record no user.
@@ -3084,6 +3099,11 @@ declare class EllipsisSessions {
3084
3099
  * take messages again. 409 `session_superseded` when a newer session
3085
3100
  * now answers the same thread.
3086
3101
  *
3102
+ * Set summary to name the session. The summary's source becomes
3103
+ * `user`, and Ellipsis never replaces it with a generated one. With
3104
+ * both fields, the archive change applies first, and a refused
3105
+ * archive change leaves the summary as it was.
3106
+ *
3087
3107
  * Changes are delivered to session and session-list streams.
3088
3108
  *
3089
3109
  * Required permissions: write:sessions.
@@ -3093,14 +3113,47 @@ declare class EllipsisSessions {
3093
3113
  * Higher permission levels include lower levels: read < write < delete.
3094
3114
  * Grant match patterns can further restrict access to individual resources.
3095
3115
  */
3096
- update(id: string, options: {
3097
- archived: boolean;
3116
+ update(id: string, options?: {
3117
+ archived?: boolean | null;
3118
+ summary?: string | null;
3098
3119
  }): Promise<S['SessionResponse']>;
3099
3120
  /** Start a session and return a handle over it. */
3100
3121
  run(options: Parameters<EllipsisSessions['start']>[0]): Promise<SessionHandle>;
3101
3122
  /** A handle over an existing session. */
3102
3123
  handle(sessionId: string): Promise<SessionHandle>;
3103
3124
  }
3125
+ declare class EllipsisUserSettings {
3126
+ private readonly transport;
3127
+ constructor(transport: Transport);
3128
+ /**
3129
+ * Get User Settings
3130
+ *
3131
+ * Get the signed in user's own settings.
3132
+ *
3133
+ * Required permissions: read:user.
3134
+ * API key: Requires a CLI user token.
3135
+ * CLI user token: Supported.
3136
+ * Session token: Not supported by session tokens, even with permissions.ellipsis enabled.
3137
+ * Higher permission levels include lower levels: read < write < delete.
3138
+ */
3139
+ get(): Promise<S['UserSettings']>;
3140
+ /**
3141
+ * Patch User Settings
3142
+ *
3143
+ * Change the signed in user's own settings.
3144
+ *
3145
+ * Only the keys sent change, and the response is every setting.
3146
+ *
3147
+ * Required permissions: write:user.
3148
+ * API key: Requires a CLI user token.
3149
+ * CLI user token: Supported.
3150
+ * Session token: Not supported by session tokens, even with permissions.ellipsis enabled.
3151
+ * Higher permission levels include lower levels: read < write < delete.
3152
+ */
3153
+ update(options?: {
3154
+ web?: S['PatchUserSettingsWeb'] | null;
3155
+ }): Promise<S['UserSettings']>;
3156
+ }
3104
3157
  declare class EllipsisUserTokens {
3105
3158
  private readonly transport;
3106
3159
  constructor(transport: Transport);
@@ -3127,6 +3180,7 @@ declare class EllipsisUserTokens {
3127
3180
  }
3128
3181
  declare class EllipsisUser {
3129
3182
  private readonly transport;
3183
+ readonly settings: EllipsisUserSettings;
3130
3184
  readonly tokens: EllipsisUserTokens;
3131
3185
  constructor(transport: Transport);
3132
3186
  }
package/dist/index.js CHANGED
@@ -1626,6 +1626,24 @@ var EllipsisSessions = class {
1626
1626
  const path = `/v1/sessions/${enc(id)}/git`;
1627
1627
  return await this.transport.request("GET", path);
1628
1628
  }
1629
+ /**
1630
+ * Get Session Image
1631
+ *
1632
+ * Return an image sent with a message to the session.
1633
+ *
1634
+ * Each message lists its images, with their IDs, in `images`.
1635
+ *
1636
+ * Required permissions: read:sessions.
1637
+ * API key: Supported.
1638
+ * CLI user token: Supported.
1639
+ * Session token: Requires the ellipsis:api scope and the required grants in the token's permissions.ellipsis configuration.
1640
+ * Higher permission levels include lower levels: read < write < delete.
1641
+ * Grant match patterns can further restrict access to individual resources.
1642
+ */
1643
+ async image(session_id, id) {
1644
+ const path = `/v1/sessions/${enc(session_id)}/images/${enc(id)}`;
1645
+ return await this.transport.request("GET", path);
1646
+ }
1629
1647
  /**
1630
1648
  * List Sessions
1631
1649
  *
@@ -1801,7 +1819,7 @@ var EllipsisSessions = class {
1801
1819
  /**
1802
1820
  * Update Session
1803
1821
  *
1804
- * Archive or unarchive a session and return it.
1822
+ * Archive or unarchive a session, or set its summary, and return it.
1805
1823
  *
1806
1824
  * Set archived to true to record the current server time and the
1807
1825
  * authenticated GitHub user. API-key requests record no user.
@@ -1819,6 +1837,11 @@ var EllipsisSessions = class {
1819
1837
  * take messages again. 409 `session_superseded` when a newer session
1820
1838
  * now answers the same thread.
1821
1839
  *
1840
+ * Set summary to name the session. The summary's source becomes
1841
+ * `user`, and Ellipsis never replaces it with a generated one. With
1842
+ * both fields, the archive change applies first, and a refused
1843
+ * archive change leaves the summary as it was.
1844
+ *
1822
1845
  * Changes are delivered to session and session-list streams.
1823
1846
  *
1824
1847
  * Required permissions: write:sessions.
@@ -1828,9 +1851,9 @@ var EllipsisSessions = class {
1828
1851
  * Higher permission levels include lower levels: read < write < delete.
1829
1852
  * Grant match patterns can further restrict access to individual resources.
1830
1853
  */
1831
- async update(id, options) {
1854
+ async update(id, options = {}) {
1832
1855
  const path = `/v1/sessions/${enc(id)}`;
1833
- const body = buildBody({ archived: options.archived });
1856
+ const body = buildBody({ archived: options.archived, summary: options.summary });
1834
1857
  return await this.transport.request("PUT", path, { body });
1835
1858
  }
1836
1859
  // ---- lifecycle sugar (hand-written layer over the generated core) ----
@@ -1845,6 +1868,45 @@ var EllipsisSessions = class {
1845
1868
  return new SessionHandle(this, response.session);
1846
1869
  }
1847
1870
  };
1871
+ var EllipsisUserSettings = class {
1872
+ constructor(transport) {
1873
+ this.transport = transport;
1874
+ }
1875
+ transport;
1876
+ /**
1877
+ * Get User Settings
1878
+ *
1879
+ * Get the signed in user's own settings.
1880
+ *
1881
+ * Required permissions: read:user.
1882
+ * API key: Requires a CLI user token.
1883
+ * CLI user token: Supported.
1884
+ * Session token: Not supported by session tokens, even with permissions.ellipsis enabled.
1885
+ * Higher permission levels include lower levels: read < write < delete.
1886
+ */
1887
+ async get() {
1888
+ const path = "/v1/user/settings";
1889
+ return await this.transport.request("GET", path);
1890
+ }
1891
+ /**
1892
+ * Patch User Settings
1893
+ *
1894
+ * Change the signed in user's own settings.
1895
+ *
1896
+ * Only the keys sent change, and the response is every setting.
1897
+ *
1898
+ * Required permissions: write:user.
1899
+ * API key: Requires a CLI user token.
1900
+ * CLI user token: Supported.
1901
+ * Session token: Not supported by session tokens, even with permissions.ellipsis enabled.
1902
+ * Higher permission levels include lower levels: read < write < delete.
1903
+ */
1904
+ async update(options = {}) {
1905
+ const path = "/v1/user/settings";
1906
+ const body = buildBody({ web: options.web });
1907
+ return await this.transport.request("PATCH", path, { body });
1908
+ }
1909
+ };
1848
1910
  var EllipsisUserTokens = class {
1849
1911
  constructor(transport) {
1850
1912
  this.transport = transport;
@@ -1880,9 +1942,11 @@ var EllipsisUserTokens = class {
1880
1942
  var EllipsisUser = class {
1881
1943
  constructor(transport) {
1882
1944
  this.transport = transport;
1945
+ this.settings = new EllipsisUserSettings(transport);
1883
1946
  this.tokens = new EllipsisUserTokens(transport);
1884
1947
  }
1885
1948
  transport;
1949
+ settings;
1886
1950
  tokens;
1887
1951
  };
1888
1952
  var EllipsisVmExecutions = class {
@@ -1,4 +1,4 @@
1
- import { s as CodexAgentMessage, cT as SessionRecord, N as CodexFileChangeItem, L as CodexEvent, _ as CodexMcpToolCallItem, ch as SdkRecord, cu as Session, d6 as StreamFrame } from '../types-D4cLMGUn.js';
1
+ import { s as CodexAgentMessage, cT as SessionRecord, N as CodexFileChangeItem, L as CodexEvent, _ as CodexMcpToolCallItem, ch as SdkRecord, cu as Session, d6 as StreamFrame } from '../types-BAJ82SH6.js';
2
2
 
3
3
  type WorkPhase = 'queued' | 'preparing' | 'starting' | 'working';
4
4
  interface MessageTiming {
@@ -192,11 +192,17 @@ type EntryBody = {
192
192
  };
193
193
  declare function isWorkFold(item: TranscriptItem): boolean;
194
194
  declare function reasoningSummaryTitle(summary: string): string;
195
- declare function entryBody(entry: LedgerEntry, { live, now, liveText, liveSummary, }: {
195
+ declare function harnessName(session: {
196
+ claude_code?: unknown;
197
+ codex?: unknown;
198
+ gemini?: unknown;
199
+ }): string | null;
200
+ declare function entryBody(entry: LedgerEntry, { live, now, liveText, liveSummary, harness, }: {
196
201
  live: boolean;
197
202
  now: number;
198
203
  liveText?: string;
199
204
  liveSummary?: string;
205
+ harness?: string | null;
200
206
  }): EntryBody;
201
207
 
202
208
  interface ToolActivity {
@@ -252,4 +258,4 @@ declare class SessionTranscriptStore {
252
258
  ingest: (rawFrame: StreamFrame) => void;
253
259
  }
254
260
 
255
- export { BRANCH_GLYPH, type ChatNode, type ChatToolNode, type ChatTurn, type EntryBody, type EnvironmentLogKind, type EnvironmentLogLine, type EnvironmentState, type EventToItemsOptions, type ItemKind, LIVE_GLYPH, type LedgerEntry, type MessageProgress, type MessageTiming, type PlacedItem, type RecordSlice, type SessionTranscriptSnapshot, SessionTranscriptStore, StreamFrame, type ToolActivity, type TranscriptItem, USER_BAR, type WorkPhase, activitySummary, awaitingAgentPhase, cacheTierLabel, chatTurnsToItems, clampLines, claudePayload, codexChangedPaths, codexEventToItems, codexMcpToolName, codexSubagentThreads, collapseToolRuns, deliveredUnechoedSends, deriveEnvironmentState, emptySessionTranscriptSnapshot, entryBody, entrySeconds, environmentOutputLine, environmentOutputLines, environmentOutputStep, environmentPhaseLabel, environmentSummary, eventToItems, foldCosts, foldGutter, foldRun, formatDuration, groupRecordsToChatTurns, gutterFor, hookPhrase, humanDuration, isCodexSubagentRecord, isConnectVisibleRecord, isConversationOver, isFoldable, isToolActivity, isToolFold, isWorkFold, lastLines, layOutItems, lifecycleText, messageEndedText, oneLine, pendingToolCalls, reasoningSummaryTitle, recordSlice, recordToItems, resultCostUsd, seedTranscriptStore, sessionLogText, splitLedger, startupHeadline, startupSettled, statusActivityText, summarizeToolInput, tailLines, toolActivities, toolResultText, toolRunMembers };
261
+ export { BRANCH_GLYPH, type ChatNode, type ChatToolNode, type ChatTurn, type EntryBody, type EnvironmentLogKind, type EnvironmentLogLine, type EnvironmentState, type EventToItemsOptions, type ItemKind, LIVE_GLYPH, type LedgerEntry, type MessageProgress, type MessageTiming, type PlacedItem, type RecordSlice, type SessionTranscriptSnapshot, SessionTranscriptStore, StreamFrame, type ToolActivity, type TranscriptItem, USER_BAR, type WorkPhase, activitySummary, awaitingAgentPhase, cacheTierLabel, chatTurnsToItems, clampLines, claudePayload, codexChangedPaths, codexEventToItems, codexMcpToolName, codexSubagentThreads, collapseToolRuns, deliveredUnechoedSends, deriveEnvironmentState, emptySessionTranscriptSnapshot, entryBody, entrySeconds, environmentOutputLine, environmentOutputLines, environmentOutputStep, environmentPhaseLabel, environmentSummary, eventToItems, foldCosts, foldGutter, foldRun, formatDuration, groupRecordsToChatTurns, gutterFor, harnessName, hookPhrase, humanDuration, isCodexSubagentRecord, isConnectVisibleRecord, isConversationOver, isFoldable, isToolActivity, isToolFold, isWorkFold, lastLines, layOutItems, lifecycleText, messageEndedText, oneLine, pendingToolCalls, reasoningSummaryTitle, recordSlice, recordToItems, resultCostUsd, seedTranscriptStore, sessionLogText, splitLedger, startupHeadline, startupSettled, statusActivityText, summarizeToolInput, tailLines, toolActivities, toolResultText, toolRunMembers };
@@ -1829,11 +1829,18 @@ function reasoningSummaryTitle(summary) {
1829
1829
  const title = line.replace(/^#{1,6}\s+/, "").replace(/^[*_`]+|[*_`]+$/g, "").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").trim();
1830
1830
  return title.length > 120 ? `${title.slice(0, 119).trimEnd()}\u2026` : title;
1831
1831
  }
1832
+ function harnessName(session) {
1833
+ if (session.claude_code) return "Claude Code";
1834
+ if (session.codex) return "Codex";
1835
+ if (session.gemini) return "Gemini CLI";
1836
+ return null;
1837
+ }
1832
1838
  function entryBody(entry, {
1833
1839
  live,
1834
1840
  now,
1835
1841
  liveText = "",
1836
- liveSummary = ""
1842
+ liveSummary = "",
1843
+ harness = null
1837
1844
  }) {
1838
1845
  live = live && (entry.progress === void 0 || entry.progress.phase !== null);
1839
1846
  const raw = chatTurnsToItems(entry.turns);
@@ -1847,7 +1854,7 @@ function entryBody(entry, {
1847
1854
  const header = {
1848
1855
  key,
1849
1856
  kind: "summary",
1850
- text: live ? phase === "preparing" ? "Preparing environment" : phase === "starting" ? "Starting agent" : phase === "queued" ? "Queued" : reasoningSummaryTitle(liveSummary) || "Working" : seconds == null ? "Session startup" : `Worked for ${humanDuration(seconds)}`,
1857
+ text: live ? phase === "preparing" ? "Preparing environment" : phase === "starting" ? `Starting ${harness ?? "agent"}` : phase === "queued" ? "Queued" : reasoningSummaryTitle(liveSummary) || "Working" : seconds == null ? "Session startup" : `Worked for ${humanDuration(seconds)}`,
1851
1858
  spaceBefore: true,
1852
1859
  ...entry.cancelled || entry.turns.some((turn) => turn.isError) ? { isError: true } : {},
1853
1860
  ...live ? { loading: true } : {}
@@ -2173,6 +2180,7 @@ export {
2173
2180
  formatDuration,
2174
2181
  groupRecordsToChatTurns,
2175
2182
  gutterFor,
2183
+ harnessName,
2176
2184
  hookPhrase,
2177
2185
  humanDuration,
2178
2186
  isCodexSubagentRecord,
@@ -1,4 +1,4 @@
1
- import { cu as Session, d6 as StreamFrame } from '../types-D4cLMGUn.js';
1
+ import { cu as Session, d6 as StreamFrame } from '../types-BAJ82SH6.js';
2
2
 
3
3
  declare const WS_CLOSE_NORMAL = 1000;
4
4
  declare const WS_CLOSE_GOING_AWAY = 1001;