@ellipsis-dev/sdk 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { c as components } from './types-BrLpRRde.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 CodexCommandExecution, D as CodexCommandExecutionItem, E as CodexConfig, F as CodexContextCompaction, G as CodexEffortLevel, H as CodexErrorEvent, I as CodexErrorItem, J as CodexErrorParams, K as CodexEvent, L as CodexFileChange, M as CodexFileChangeItem, N as CodexFileUpdate, O as CodexItem, P as CodexItemCompleted, Q as CodexItemCompletedEvent, R as CodexItemParams, S as CodexItemStarted, T as CodexItemStartedEvent, U as CodexItemUpdatedEvent, V as CodexLocalImageInput, W as CodexMcpToolCall, X as CodexMcpToolCallAppContext, Y as CodexMcpToolCallError, Z as CodexMcpToolCallItem, _ as CodexMcpToolCallResult, $ as CodexPlan, a0 as CodexReasoning, a1 as CodexReasoningItem, a2 as CodexSessionRecord, a3 as CodexTextInput, a4 as CodexThread, a5 as CodexThreadStarted, a6 as CodexThreadStartedEvent, a7 as CodexThreadStartedParams, a8 as CodexThreadTokenUsage, a9 as CodexTodoListItem, aa as CodexTokenUsageBreakdown, ab as CodexTokenUsageParams, ac as CodexTokenUsageUpdated, ad as CodexTurn, ae as CodexTurnCompleted, af as CodexTurnCompletedEvent, ag as CodexTurnError, ah as CodexTurnFailedEvent, ai as CodexTurnParams, aj as CodexTurnStarted, ak as CodexTurnStartedEvent, al as CodexUsage, am as CodexUserInput, an as CodexUserMessage, ao as CodexWebSearch, ap as CodexWebSearchItem, aq as ComputeConfig, ar as ComputeConfig1, as as ConfigMetadata, at as Cost, au as Cost1, av as CronTrigger, aw as DeltaFrame, ax as DoneFrame, ay as Duration, az as EffortLevel, aA as EllipsisGrant, aB as EllipsisPermissions, aC as EnvironmentBaseBuild, aD as EnvironmentConfig, aE as EnvironmentHooks, aF as EnvironmentHooks1, aG as EnvironmentOutputPayload, aH as EnvironmentOutputRecord, aI as EnvironmentPhasePayload, aJ as EnvironmentPhaseRecord, aK as EnvironmentReadyPayload, aL as EnvironmentReadyRecord, aM as EnvironmentScript, aN as EnvironmentSource, aO as EnvironmentVariable, aP as ErrorFrame, aQ as GeminiConfig, aR as GeminiErrorEvent, aS as GeminiInitEvent, aT as GeminiMessageEvent, aU as GeminiModelStats, aV as GeminiResultEvent, aW as GeminiSessionRecord, aX as GeminiStreamEvent, aY as GeminiStreamStats, aZ as GeminiToolError, a_ as GeminiToolResultEvent, a$ as GeminiToolUseEvent, b0 as GithubAccountFilter, b1 as GithubAccountSelector, b2 as GithubAccountSnippet, b3 as GithubAccountType, b4 as GithubCheckRunEvent, b5 as GithubCheckSuiteEvent, b6 as GithubIssueEvent, b7 as GithubPermissions, b8 as GithubPullRequestEvent, b9 as GithubPushEvent, ba as GithubReleaseEvent, bb as GithubStatusEvent, bc as GithubWorkflowRunEvent, bd as HandlerService, be as HeartbeatFrame, bf as InputContract, bg as IssueAction, bh as LegacyAssistantPayload, bi as LegacyNativeUsage, bj as LegacyResultPayload, bk as Level, bl as LifecycleSessionRecord, bm as LinearIssueAction, bn as LinearIssueEvent, bo as LlmCost, bp as LlmCostSplit, bq as McpRemoteServer, br as McpServerRef, bs as McpStdioServer, bt as MemorySize, bu as MessageDeliveredPayload, bv as MessageDeliveredRecord, bw as MessageReceivedPayload, bx as MessageReceivedRecord, by as MessageRequeuedPayload, bz as MessageRequeuedRecord, bA as ModelLlmCostSplit, bB as ModelTokenCounts, bC as OutputConfig, bD as PermissionsConfig, bE as PermissionsConfig1, bF as PlatformSessionRecord, bG as PromptBlockedReason, bH as PullRequestAction, bI as ReactCheckRun, bJ as ReactCheckSuite, bK as ReactIssue, bL as ReactLinearIssue, bM as ReactPullRequest, bN as ReactPush, bO as ReactRelease, bP as ReactSentry, bQ as ReactSlackChannel, bR as ReactStatus, bS as ReactTrigger, bT as ReactWorkflowRun, bU as RecordsAppendFrame, bV as ReleaseAction, bW as RepositoryFilter, bX as RepositoryRef, bY as Review, bZ as ReviewComment, b_ as ReviewConfig, b$ as ReviewConfigsListResponse, c0 as ReviewPullRequest, c1 as ReviewPullRequestAuthor, c2 as ReviewReviewer, c3 as ReviewSummary, c4 as ReviewsListResponse, c5 as SdkAssistantRecord, c6 as SdkCacheCreation, c7 as SdkContentBlock, c8 as SdkRateLimitRecord, c9 as SdkRecord, ca as SdkResultRecord, cb as SdkServerToolResultBlock, cc as SdkServerToolUseBlock, cd as SdkSystemRecord, ce as SdkTextBlock, cf as SdkThinkingBlock, cg as SdkToolResultBlock, ch as SdkToolUseBlock, ci as SdkUserRecord, cj as SendSessionMessageRequest, ck as SentryAction, cl as SentryAlertEvent, cm as Session, cn as Session1, co as SessionAgent, cp as SessionArchived, cq as SessionAttribution, cr as SessionClosedPayload, cs as SessionClosedRecord, ct as SessionConfig, cu as SessionConversation, cv as SessionConversationConfig, cw as SessionEnvironment, cx as SessionEventActor, cy as SessionFrame, cz as SessionGit, cA as SessionGitCommit, cB as SessionGitFile, cC as SessionGitPr, cD as SessionGitRepo, cE as SessionHandler, cF as SessionMessage, cG as SessionMessageImage, cH as SessionMessageResponse, cI as SessionMessageStatus, cJ as SessionOutput, cK as SessionParent, cL as SessionPrompting, cM as SessionRecord, cN as SessionRecordsListResponse, cO as SessionResponse, cP as SessionSource, cQ as SessionState, cR as SessionStopped, cS as SessionStreamFrame, cT as SessionSummary, cU as SessionTurn, cV as SessionTurnResponse, cW as SessionTurnsListResponse, cX as SessionsListResponse, cY as SettingsRef, cZ as SkillRef, c_ as SlackChannelCreatedEvent, c$ as SlackMessageEvent, d0 as SnapshotFrame, d1 as StatusAction, d2 as StreamFrame, d3 as TokenCounts, d4 as Tokens, d5 as Tokens1, d6 as TokensInfo, d7 as TurnEndedPayload, d8 as TurnEndedRecord, d9 as TurnQueuedPayload, da as TurnQueuedRecord, db as TurnReason, dc as TurnStartedPayload, dd as TurnStartedRecord, de as TurnStatus, df as UnknownSessionRecord, dg as UpdateSessionRequest, dh as WorkflowRunAction, di as paths } from './types-BrLpRRde.js';
1
+ import { c as components } from './types-CbePyY-S.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 DoneFrame, aA as Duration, aB as EffortLevel, aC as EllipsisGrant, aD as EllipsisPermissions, aE as EnvironmentBaseBuild, aF as EnvironmentConfig, aG as EnvironmentHooks, aH as EnvironmentHooks1, aI as EnvironmentOutputPayload, aJ as EnvironmentOutputRecord, aK as EnvironmentPhasePayload, aL as EnvironmentPhaseRecord, aM as EnvironmentReadyPayload, aN as EnvironmentReadyRecord, aO as EnvironmentScript, aP as EnvironmentSource, aQ as EnvironmentVariable, aR as ErrorFrame, 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 LinearIssueEvent, bq as LlmCost, br as LlmCostSplit, bs as McpRemoteServer, bt as McpServerRef, bu as McpStdioServer, bv as MemorySize, bw as MessageDeliveredPayload, bx as MessageDeliveredRecord, by as MessageReceivedPayload, bz as MessageReceivedRecord, bA as MessageRequeuedPayload, bB as MessageRequeuedRecord, bC as ModelLlmCostSplit, bD as ModelTokenCounts, bE as OutputConfig, bF as PermissionsConfig, bG as PermissionsConfig1, bH as PlatformSessionRecord, bI as PromptBlockedReason, bJ as PullRequestAction, bK as ReactCheckRun, bL as ReactCheckSuite, bM as ReactIssue, bN as ReactLinearIssue, bO as ReactPullRequest, bP as ReactPush, bQ as ReactRelease, bR as ReactSentry, bS as ReactSlackChannel, bT as ReactStatus, bU as ReactTrigger, bV as ReactWorkflowRun, bW as RecordsAppendFrame, bX as ReleaseAction, bY as RepositoryFilter, bZ as RepositoryRef, b_ as Review, b$ as ReviewComment, c0 as ReviewConfig, c1 as ReviewConfigsListResponse, c2 as ReviewPullRequest, c3 as ReviewPullRequestAuthor, c4 as ReviewReviewer, c5 as ReviewSummary, c6 as ReviewsListResponse, c7 as SdkAssistantRecord, c8 as SdkCacheCreation, c9 as SdkContentBlock, ca as SdkRateLimitRecord, cb as SdkRecord, cc as SdkResultRecord, cd as SdkServerToolResultBlock, ce as SdkServerToolUseBlock, cf as SdkSystemRecord, cg as SdkTextBlock, ch as SdkThinkingBlock, ci as SdkToolResultBlock, cj as SdkToolUseBlock, ck as SdkUserRecord, cl as SendSessionMessageRequest, cm as SentryAction, cn as SentryAlertEvent, co as Session, cp as Session1, cq as SessionAgent, cr as SessionArchived, cs as SessionAttribution, ct as SessionClosedPayload, cu as SessionClosedRecord, cv as SessionConfig, cw as SessionConversation, cx as SessionConversationConfig, cy as SessionEnvironment, cz as SessionEventActor, cA as SessionFrame, cB as SessionGit, cC as SessionGitCommit, cD as SessionGitFile, cE as SessionGitPr, cF as SessionGitRepo, cG as SessionHandler, cH as SessionMessage, cI as SessionMessageImage, cJ as SessionMessageResponse, cK as SessionMessageStatus, cL as SessionOutput, cM as SessionParent, cN as SessionPrompting, cO as SessionRecord, cP as SessionRecordsListResponse, cQ as SessionResponse, cR as SessionSource, cS as SessionState, cT as SessionStopped, cU as SessionStreamFrame, cV as SessionSummary, cW as SessionTurn, cX as SessionTurnResponse, cY as SessionTurnsListResponse, cZ as SessionsListResponse, c_ as SettingsRef, c$ as SkillRef, d0 as SlackChannelCreatedEvent, d1 as SlackMessageEvent, d2 as SnapshotFrame, d3 as StatusAction, d4 as StreamFrame, d5 as TokenCounts, d6 as Tokens, d7 as Tokens1, d8 as TokensInfo, d9 as TurnEndedPayload, da as TurnEndedRecord, db as TurnQueuedPayload, dc as TurnQueuedRecord, dd as TurnReason, de as TurnStartedPayload, df as TurnStartedRecord, dg as TurnStatus, dh as UnknownSessionRecord, di as UpdateSessionRequest, dj as WorkflowRunAction, dk as paths } from './types-CbePyY-S.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.
@@ -1,4 +1,4 @@
1
- import { s as CodexAgentMessage, cM as SessionRecord, M as CodexFileChangeItem, K as CodexEvent, Z as CodexMcpToolCallItem, c9 as SdkRecord, cm as Session, cF as SessionMessage, d2 as StreamFrame } from '../types-BrLpRRde.js';
1
+ import { s as CodexAgentMessage, cO as SessionRecord, N as CodexFileChangeItem, L as CodexEvent, _ as CodexMcpToolCallItem, cb as SdkRecord, co as Session, cH as SessionMessage, d4 as StreamFrame } from '../types-CbePyY-S.js';
2
2
 
3
3
  type WorkPhase = 'queued' | 'preparing' | 'starting' | 'working';
4
4
  interface TurnTiming {
@@ -224,6 +224,9 @@ declare function lifecycleText(recordType: string, payload: Record<string, unkno
224
224
 
225
225
  declare function claudePayload(record: SessionRecord): SdkRecord | null;
226
226
 
227
+ declare function codexSubagentThreads(records: readonly SessionRecord[]): Set<string>;
228
+ declare function isCodexSubagentRecord(threads: ReadonlySet<string>, record: SessionRecord): boolean;
229
+
227
230
  declare function isConversationOver(session: Session): boolean;
228
231
  interface SessionTranscriptSnapshot {
229
232
  session: Session | null;
@@ -263,4 +266,4 @@ declare class SessionTranscriptStore {
263
266
  ingest: (rawFrame: StreamFrame) => void;
264
267
  }
265
268
 
266
- 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 PlacedItem, type RecordSlice, type SessionTranscriptSnapshot, SessionTranscriptStore, StreamFrame, type ToolActivity, type TranscriptItem, type TurnTiming, USER_BAR, type WorkPhase, activitySummary, awaitingAgentPhase, cacheTierLabel, chatTurnsToItems, clampLines, claudePayload, codexChangedPaths, codexEventToItems, codexMcpToolName, collapseToolRuns, deliveredUnechoedSends, deriveEnvironmentState, emptySessionTranscriptSnapshot, entryBody, entrySeconds, environmentOutputLine, environmentOutputLines, environmentOutputStep, environmentPhaseLabel, environmentSummary, eventToItems, foldCosts, foldGutter, foldRun, formatDuration, groupRecordsToChatTurns, gutterFor, hookPhrase, humanDuration, isConnectVisibleRecord, isConversationOver, isFoldable, isToolActivity, isToolFold, isWorkFold, lastLines, layOutItems, lifecycleText, oneLine, pendingToolCalls, reasoningSummaryTitle, recordSlice, recordToItems, resultCostUsd, seedTranscriptStore, sessionLogText, splitLedger, startupHeadline, startupSettled, statusActivityText, summarizeToolInput, tailLines, toolActivities, toolResultText, toolRunMembers, turnEndedText };
269
+ 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 PlacedItem, type RecordSlice, type SessionTranscriptSnapshot, SessionTranscriptStore, StreamFrame, type ToolActivity, type TranscriptItem, type TurnTiming, 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, oneLine, pendingToolCalls, reasoningSummaryTitle, recordSlice, recordToItems, resultCostUsd, seedTranscriptStore, sessionLogText, splitLedger, startupHeadline, startupSettled, statusActivityText, summarizeToolInput, tailLines, toolActivities, toolResultText, toolRunMembers, turnEndedText };
@@ -47,6 +47,42 @@ function claudePayload(record) {
47
47
  }
48
48
 
49
49
  // src/store/codexAppServer.ts
50
+ function codexSubagentThreads(records) {
51
+ const threads = /* @__PURE__ */ new Set();
52
+ for (const record of records) addCodexSubagentThreads(threads, record);
53
+ return threads;
54
+ }
55
+ function addCodexSubagentThreads(threads, record) {
56
+ if (record.kind !== "codex_app_server") return false;
57
+ const event = record.payload;
58
+ if (event.method !== "item/started" && event.method !== "item/completed") {
59
+ return false;
60
+ }
61
+ const item = event.params.item;
62
+ if (item.type === "subAgentActivity") {
63
+ threads.add(item.agentThreadId);
64
+ return true;
65
+ }
66
+ if (item.type === "collabAgentToolCall") {
67
+ for (const thread of item.receiverThreadIds) threads.add(thread);
68
+ return true;
69
+ }
70
+ return false;
71
+ }
72
+ function isCodexSubagentSpawn(record) {
73
+ if (record.kind !== "codex_app_server") return false;
74
+ const event = record.payload;
75
+ if (event.method !== "item/started" && event.method !== "item/completed") {
76
+ return false;
77
+ }
78
+ const item = event.params.item;
79
+ return item.type === "subAgentActivity" && item.kind === "started";
80
+ }
81
+ function isCodexSubagentRecord(threads, record) {
82
+ if (record.kind !== "codex_app_server") return false;
83
+ const params = record.payload.params;
84
+ return "threadId" in params && typeof params.threadId === "string" && threads.has(params.threadId);
85
+ }
50
86
  function codexAppServerContent(event) {
51
87
  if (event.method === "turn/completed") {
52
88
  return { kind: "end", isError: event.params.turn.status !== "completed" };
@@ -86,6 +122,15 @@ function codexAppServerContent(event) {
86
122
  result: item.changes.map((change) => change.diff).join("\n"),
87
123
  isError: item.status === "failed" || item.status === "declined"
88
124
  };
125
+ case "subAgentActivity":
126
+ return {
127
+ kind: "tool",
128
+ name: "Agent",
129
+ input: { agentPath: item.agentPath ?? null, kind: item.kind },
130
+ summary: item.agentPath ?? item.agentThreadId,
131
+ result: item.kind,
132
+ isError: false
133
+ };
89
134
  case "webSearch":
90
135
  return {
91
136
  kind: "tool",
@@ -815,6 +860,7 @@ function groupRecordsToChatTurns(records, session) {
815
860
  const turns = [];
816
861
  const toolNodeByUseId = /* @__PURE__ */ new Map();
817
862
  const openGeminiTools = /* @__PURE__ */ new Map();
863
+ const codexSubagentThreads2 = /* @__PURE__ */ new Set();
818
864
  const userTurnByMessageId = /* @__PURE__ */ new Map();
819
865
  const turnByMessageId = /* @__PURE__ */ new Map();
820
866
  const unansweredTurnIds = /* @__PURE__ */ new Set();
@@ -850,6 +896,20 @@ function groupRecordsToChatTurns(records, session) {
850
896
  }
851
897
  return turns[openIdx];
852
898
  };
899
+ const subagentTurn = (record) => {
900
+ for (let i = turns.length - 1; i >= 0; i--) {
901
+ const turn = turns[i];
902
+ if (turn.role === "assistant" && turn.turnId === (record.turn_id ?? void 0))
903
+ return turn;
904
+ }
905
+ return null;
906
+ };
907
+ const newestAssistantTurn = () => {
908
+ for (let i = turns.length - 1; i >= 0; i--) {
909
+ if (turns[i].role === "assistant") return turns[i];
910
+ }
911
+ return null;
912
+ };
853
913
  for (const record of records) {
854
914
  if (record.kind === "platform") {
855
915
  const messageId = typeof record.payload.message_id === "string" ? record.payload.message_id : null;
@@ -1018,16 +1078,31 @@ function groupRecordsToChatTurns(records, session) {
1018
1078
  continue;
1019
1079
  }
1020
1080
  if (record.kind === "codex_app_server") {
1081
+ const fromSubagent = isCodexSubagentRecord(codexSubagentThreads2, record);
1082
+ const announces = addCodexSubagentThreads(codexSubagentThreads2, record);
1021
1083
  const content = codexAppServerContent(record.payload);
1022
1084
  if (!content) continue;
1085
+ const late = fromSubagent || announces && !isCodexSubagentSpawn(record);
1086
+ const turnFor = () => {
1087
+ if (!late) return openSessionTurn(record);
1088
+ const open = openIdx >= 0 ? turns[openIdx] : null;
1089
+ if (open !== null && open.turnId === (record.turn_id ?? void 0)) {
1090
+ return open;
1091
+ }
1092
+ if (record.turn_id == null) {
1093
+ return open ?? newestAssistantTurn() ?? openSessionTurn(record);
1094
+ }
1095
+ return subagentTurn(record) ?? openSessionTurn(record);
1096
+ };
1023
1097
  if (content.kind === "end") {
1098
+ if (fromSubagent) continue;
1024
1099
  if (openIdx >= 0) {
1025
1100
  turns[openIdx].completedAt = record.created_at;
1026
1101
  if (content.isError) turns[openIdx].isError = true;
1027
1102
  openIdx = -1;
1028
1103
  }
1029
1104
  } else if (content.kind === "tool") {
1030
- openSessionTurn(record).nodes.push({
1105
+ turnFor().nodes.push({
1031
1106
  key: nextKey(record.id),
1032
1107
  kind: "tool",
1033
1108
  name: content.name,
@@ -1039,8 +1114,8 @@ function groupRecordsToChatTurns(records, session) {
1039
1114
  completedAt: record.created_at
1040
1115
  });
1041
1116
  } else if (content.text.trim()) {
1042
- const turn2 = openSessionTurn(record);
1043
- if (content.kind === "error") turn2.isError = true;
1117
+ const turn2 = turnFor();
1118
+ if (content.kind === "error" && !fromSubagent) turn2.isError = true;
1044
1119
  turn2.nodes.push({
1045
1120
  key: nextKey(record.id),
1046
1121
  kind: content.kind === "error" ? "assistant" : content.kind,
@@ -2212,6 +2287,7 @@ export {
2212
2287
  codexChangedPaths,
2213
2288
  codexEventToItems,
2214
2289
  codexMcpToolName,
2290
+ codexSubagentThreads,
2215
2291
  collapseToolRuns,
2216
2292
  deliveredUnechoedSends,
2217
2293
  deriveEnvironmentState,
@@ -2232,6 +2308,7 @@ export {
2232
2308
  gutterFor,
2233
2309
  hookPhrase,
2234
2310
  humanDuration,
2311
+ isCodexSubagentRecord,
2235
2312
  isConnectVisibleRecord,
2236
2313
  isConversationOver,
2237
2314
  isFoldable,
@@ -1,4 +1,4 @@
1
- import { d2 as StreamFrame, cm as Session } from '../types-BrLpRRde.js';
1
+ import { d4 as StreamFrame, co as Session } from '../types-CbePyY-S.js';
2
2
 
3
3
  declare const WS_CLOSE_NORMAL = 1000;
4
4
  declare const WS_CLOSE_GOING_AWAY = 1001;
@@ -3777,7 +3777,7 @@ interface components {
3777
3777
  } & {
3778
3778
  [key: string]: unknown;
3779
3779
  };
3780
- CodexAppServerItem: components['schemas']['CodexUserMessage'] | components['schemas']['CodexAgentMessage'] | components['schemas']['CodexReasoning'] | components['schemas']['CodexPlan'] | components['schemas']['CodexCommandExecution'] | components['schemas']['CodexFileChange'] | components['schemas']['CodexWebSearch'] | components['schemas']['CodexMcpToolCall'] | components['schemas']['CodexContextCompaction'];
3780
+ CodexAppServerItem: components['schemas']['CodexUserMessage'] | components['schemas']['CodexAgentMessage'] | components['schemas']['CodexReasoning'] | components['schemas']['CodexPlan'] | components['schemas']['CodexCommandExecution'] | components['schemas']['CodexFileChange'] | components['schemas']['CodexWebSearch'] | components['schemas']['CodexMcpToolCall'] | components['schemas']['CodexContextCompaction'] | components['schemas']['CodexSubAgentActivity'] | components['schemas']['CodexCollabAgentToolCall'];
3781
3781
  CodexAppServerNotification: components['schemas']['CodexThreadStarted'] | components['schemas']['CodexTurnStarted'] | components['schemas']['CodexTurnCompleted'] | components['schemas']['CodexItemStarted'] | components['schemas']['CodexItemCompleted'] | components['schemas']['CodexTokenUsageUpdated'] | components['schemas']['CodexAppServerError'];
3782
3782
  /** CodexAppServerSessionRecord */
3783
3783
  CodexAppServerSessionRecord: {
@@ -3845,6 +3845,31 @@ interface components {
3845
3845
  */
3846
3846
  turn_id: string | null;
3847
3847
  };
3848
+ /** CodexCollabAgentToolCall */
3849
+ CodexCollabAgentToolCall: {
3850
+ /** Id */
3851
+ id: string;
3852
+ /** Prompt */
3853
+ prompt?: string | null;
3854
+ /** Receiverthreadids */
3855
+ receiverThreadIds: string[];
3856
+ /** Senderthreadid */
3857
+ senderThreadId: string;
3858
+ /**
3859
+ * Status
3860
+ * @enum {string}
3861
+ */
3862
+ status: 'inProgress' | 'completed' | 'failed';
3863
+ /** Tool */
3864
+ tool: string;
3865
+ /**
3866
+ * @description discriminator enum property added by openapi-typescript
3867
+ * @enum {string}
3868
+ */
3869
+ type: 'collabAgentToolCall';
3870
+ } & {
3871
+ [key: string]: unknown;
3872
+ };
3848
3873
  /** CodexCommandExecution */
3849
3874
  CodexCommandExecution: {
3850
3875
  /** Aggregatedoutput */
@@ -4345,6 +4370,27 @@ interface components {
4345
4370
  */
4346
4371
  turn_id: string | null;
4347
4372
  };
4373
+ /**
4374
+ * CodexSubAgentActivity
4375
+ * @description A subagent's spawn or completion, recorded on the spawning thread.
4376
+ */
4377
+ CodexSubAgentActivity: {
4378
+ /** Agentpath */
4379
+ agentPath?: string | null;
4380
+ /** Agentthreadid */
4381
+ agentThreadId: string;
4382
+ /** Id */
4383
+ id: string;
4384
+ /** Kind */
4385
+ kind: string;
4386
+ /**
4387
+ * @description discriminator enum property added by openapi-typescript
4388
+ * @enum {string}
4389
+ */
4390
+ type: 'subAgentActivity';
4391
+ } & {
4392
+ [key: string]: unknown;
4393
+ };
4348
4394
  /** CodexTextInput */
4349
4395
  CodexTextInput: {
4350
4396
  /** Text */
@@ -20122,7 +20168,7 @@ type TurnReason = 'error' | 'tool_call_failed' | 'budget_hit' | 'payment_require
20122
20168
  type TurnStatus = 'queued' | 'preparing' | 'running' | 'completed' | 'failed' | 'stopped' | 'cancelled';
20123
20169
  type SessionRecord$1 = ClaudeSessionRecord | ClaudeNativeSessionRecord | CodexSessionRecord | CodexAppServerSessionRecord | GeminiSessionRecord | PlatformSessionRecord | UnknownSessionRecord;
20124
20170
  type CodexAppServerNotification = CodexThreadStarted | CodexTurnStarted | CodexTurnCompleted | CodexItemStarted | CodexItemCompleted | CodexTokenUsageUpdated | CodexAppServerError;
20125
- type CodexAppServerItem = CodexUserMessage | CodexAgentMessage | CodexReasoning | CodexPlan | CodexCommandExecution | CodexFileChange | CodexWebSearch | CodexMcpToolCall | CodexContextCompaction;
20171
+ type CodexAppServerItem = CodexUserMessage | CodexAgentMessage | CodexReasoning | CodexPlan | CodexCommandExecution | CodexFileChange | CodexWebSearch | CodexMcpToolCall | CodexContextCompaction | CodexSubAgentActivity | CodexCollabAgentToolCall;
20126
20172
  type CodexUserInput = CodexTextInput | CodexLocalImageInput;
20127
20173
  type GeminiStreamEvent$1 = GeminiInitEvent | GeminiMessageEvent | GeminiToolUseEvent | GeminiToolResultEvent | GeminiErrorEvent | GeminiResultEvent;
20128
20174
  type PlatformSessionRecord = SessionClosedRecord | MessageReceivedRecord | MessageDeliveredRecord | MessageRequeuedRecord | TurnQueuedRecord | TurnStartedRecord | TurnEndedRecord | EnvironmentPhaseRecord | EnvironmentOutputRecord | EnvironmentReadyRecord;
@@ -22223,6 +22269,27 @@ interface CodexContextCompaction {
22223
22269
  type: 'contextCompaction';
22224
22270
  [k: string]: unknown;
22225
22271
  }
22272
+ /**
22273
+ * A subagent's spawn or completion, recorded on the spawning thread.
22274
+ */
22275
+ interface CodexSubAgentActivity {
22276
+ agentPath?: string | null;
22277
+ agentThreadId: string;
22278
+ id: string;
22279
+ kind: string;
22280
+ type: 'subAgentActivity';
22281
+ [k: string]: unknown;
22282
+ }
22283
+ interface CodexCollabAgentToolCall {
22284
+ id: string;
22285
+ prompt?: string | null;
22286
+ receiverThreadIds: string[];
22287
+ senderThreadId: string;
22288
+ status: 'inProgress' | 'completed' | 'failed';
22289
+ tool: string;
22290
+ type: 'collabAgentToolCall';
22291
+ [k: string]: unknown;
22292
+ }
22226
22293
  interface CodexTurnStarted {
22227
22294
  method: 'turn/started';
22228
22295
  params: CodexTurnParams;
@@ -22993,4 +23060,4 @@ type ReviewsListResponse = components['schemas']['ReviewsListResponse'];
22993
23060
  type ReviewConfig = components['schemas']['ReviewConfig'];
22994
23061
  type ReviewConfigsListResponse = components['schemas']['ReviewConfigsListResponse'];
22995
23062
 
22996
- export type { CodexPlan as $, AgentConfig as A, BudgetConfig as B, CheckRunAction as C, CodexCommandExecutionItem as D, CodexConfig as E, CodexContextCompaction as F, CodexEffortLevel as G, CodexErrorEvent as H, CodexErrorItem as I, CodexErrorParams as J, CodexEvent as K, CodexFileChange as L, CodexFileChangeItem as M, CodexFileUpdate as N, CodexItem as O, CodexItemCompleted as P, CodexItemCompletedEvent as Q, CodexItemParams as R, CodexItemStarted as S, CodexItemStartedEvent as T, CodexItemUpdatedEvent as U, CodexLocalImageInput as V, CodexMcpToolCall as W, CodexMcpToolCallAppContext as X, CodexMcpToolCallError as Y, CodexMcpToolCallItem as Z, CodexMcpToolCallResult as _, AgentIdentity as a, GeminiToolUseEvent as a$, CodexReasoning as a0, CodexReasoningItem as a1, CodexSessionRecord as a2, CodexTextInput as a3, CodexThread as a4, CodexThreadStarted as a5, CodexThreadStartedEvent as a6, CodexThreadStartedParams as a7, CodexThreadTokenUsage as a8, CodexTodoListItem as a9, EllipsisGrant as aA, EllipsisPermissions as aB, EnvironmentBaseBuild as aC, EnvironmentConfig as aD, EnvironmentHooks as aE, EnvironmentHooks1 as aF, EnvironmentOutputPayload as aG, EnvironmentOutputRecord as aH, EnvironmentPhasePayload as aI, EnvironmentPhaseRecord as aJ, EnvironmentReadyPayload as aK, EnvironmentReadyRecord as aL, EnvironmentScript as aM, EnvironmentSource as aN, EnvironmentVariable as aO, ErrorFrame as aP, GeminiConfig as aQ, GeminiErrorEvent as aR, GeminiInitEvent as aS, GeminiMessageEvent as aT, GeminiModelStats as aU, GeminiResultEvent as aV, GeminiSessionRecord as aW, GeminiStreamEvent as aX, GeminiStreamStats as aY, GeminiToolError as aZ, GeminiToolResultEvent as a_, CodexTokenUsageBreakdown as aa, CodexTokenUsageParams as ab, CodexTokenUsageUpdated as ac, CodexTurn as ad, CodexTurnCompleted as ae, CodexTurnCompletedEvent as af, CodexTurnError as ag, CodexTurnFailedEvent as ah, CodexTurnParams as ai, CodexTurnStarted as aj, CodexTurnStartedEvent as ak, CodexUsage as al, CodexUserInput as am, CodexUserMessage as an, CodexWebSearch as ao, CodexWebSearchItem as ap, ComputeConfig as aq, ComputeConfig1 as ar, ConfigMetadata as as, Cost as at, Cost1 as au, CronTrigger as av, DeltaFrame as aw, DoneFrame as ax, Duration as ay, EffortLevel as az, AttributionType as b, ReviewConfigsListResponse as b$, GithubAccountFilter as b0, GithubAccountSelector as b1, GithubAccountSnippet as b2, GithubAccountType as b3, GithubCheckRunEvent as b4, GithubCheckSuiteEvent as b5, GithubIssueEvent as b6, GithubPermissions as b7, GithubPullRequestEvent as b8, GithubPushEvent as b9, ModelLlmCostSplit as bA, ModelTokenCounts as bB, OutputConfig as bC, PermissionsConfig as bD, PermissionsConfig1 as bE, PlatformSessionRecord as bF, PromptBlockedReason as bG, PullRequestAction as bH, ReactCheckRun as bI, ReactCheckSuite as bJ, ReactIssue as bK, ReactLinearIssue as bL, ReactPullRequest as bM, ReactPush as bN, ReactRelease as bO, ReactSentry as bP, ReactSlackChannel as bQ, ReactStatus as bR, ReactTrigger as bS, ReactWorkflowRun as bT, RecordsAppendFrame as bU, ReleaseAction as bV, RepositoryFilter as bW, RepositoryRef as bX, Review as bY, ReviewComment as bZ, ReviewConfig as b_, GithubReleaseEvent as ba, GithubStatusEvent as bb, GithubWorkflowRunEvent as bc, HandlerService as bd, HeartbeatFrame as be, InputContract as bf, IssueAction as bg, LegacyAssistantPayload as bh, LegacyNativeUsage as bi, LegacyResultPayload as bj, Level as bk, LifecycleSessionRecord as bl, LinearIssueAction as bm, LinearIssueEvent as bn, LlmCost as bo, LlmCostSplit as bp, McpRemoteServer as bq, McpServerRef as br, McpStdioServer as bs, MemorySize as bt, MessageDeliveredPayload as bu, MessageDeliveredRecord as bv, MessageReceivedPayload as bw, MessageReceivedRecord as bx, MessageRequeuedPayload as by, MessageRequeuedRecord as bz, components as c, SlackMessageEvent as c$, ReviewPullRequest as c0, ReviewPullRequestAuthor as c1, ReviewReviewer as c2, ReviewSummary as c3, ReviewsListResponse as c4, SdkAssistantRecord as c5, SdkCacheCreation as c6, SdkContentBlock as c7, SdkRateLimitRecord as c8, SdkRecord as c9, SessionGitCommit as cA, SessionGitFile as cB, SessionGitPr as cC, SessionGitRepo as cD, SessionHandler as cE, SessionMessage as cF, SessionMessageImage as cG, SessionMessageResponse as cH, SessionMessageStatus as cI, SessionOutput as cJ, SessionParent as cK, SessionPrompting as cL, SessionRecord as cM, SessionRecordsListResponse as cN, SessionResponse as cO, SessionSource as cP, SessionState as cQ, SessionStopped as cR, SessionStreamFrame as cS, SessionSummary as cT, SessionTurn as cU, SessionTurnResponse as cV, SessionTurnsListResponse as cW, SessionsListResponse as cX, SettingsRef as cY, SkillRef as cZ, SlackChannelCreatedEvent as c_, SdkResultRecord as ca, SdkServerToolResultBlock as cb, SdkServerToolUseBlock as cc, SdkSystemRecord as cd, SdkTextBlock as ce, SdkThinkingBlock as cf, SdkToolResultBlock as cg, SdkToolUseBlock as ch, SdkUserRecord as ci, SendSessionMessageRequest as cj, SentryAction as ck, SentryAlertEvent as cl, Session as cm, Session1 as cn, SessionAgent as co, SessionArchived as cp, SessionAttribution as cq, SessionClosedPayload as cr, SessionClosedRecord as cs, SessionConfig as ct, SessionConversation as cu, SessionConversationConfig as cv, SessionEnvironment as cw, SessionEventActor as cx, SessionFrame as cy, SessionGit as cz, CheckSuiteAction as d, SnapshotFrame as d0, StatusAction as d1, StreamFrame as d2, TokenCounts as d3, Tokens as d4, Tokens1 as d5, TokensInfo as d6, TurnEndedPayload as d7, TurnEndedRecord as d8, TurnQueuedPayload as d9, TurnQueuedRecord as da, TurnReason as db, TurnStartedPayload as dc, TurnStartedRecord as dd, TurnStatus as de, UnknownSessionRecord as df, UpdateSessionRequest as dg, WorkflowRunAction as dh, paths as di, ClaudeAssistantEvent as e, ClaudeAssistantMessage as f, ClaudeConfig as g, ClaudeConversationResetEvent as h, ClaudeNativeEvent as i, ClaudeNativeSessionRecord as j, ClaudeNativeUsage as k, ClaudeRateLimitEvent as l, ClaudeRateLimitInfo as m, ClaudeResultEvent as n, ClaudeSessionRecord as o, ClaudeSystemEvent as p, ClaudeUserEvent as q, ClaudeUserMessage as r, CodexAgentMessage as s, CodexAgentMessageItem as t, CodexAppServerError as u, CodexAppServerEvent as v, CodexAppServerItem as w, CodexAppServerNotification as x, CodexAppServerSessionRecord as y, CodexCommandExecution as z };
23063
+ export type { CodexMcpToolCallResult as $, AgentConfig as A, BudgetConfig as B, CheckRunAction as C, CodexCommandExecution as D, CodexCommandExecutionItem as E, CodexConfig as F, CodexContextCompaction as G, CodexEffortLevel as H, CodexErrorEvent as I, CodexErrorItem as J, CodexErrorParams as K, CodexEvent as L, CodexFileChange as M, CodexFileChangeItem as N, CodexFileUpdate as O, CodexItem as P, CodexItemCompleted as Q, CodexItemCompletedEvent as R, CodexItemParams as S, CodexItemStarted as T, CodexItemStartedEvent as U, CodexItemUpdatedEvent as V, CodexLocalImageInput as W, CodexMcpToolCall as X, CodexMcpToolCallAppContext as Y, CodexMcpToolCallError as Z, CodexMcpToolCallItem as _, AgentIdentity as a, GeminiToolError as a$, CodexPlan as a0, CodexReasoning as a1, CodexReasoningItem as a2, CodexSessionRecord as a3, CodexSubAgentActivity as a4, CodexTextInput as a5, CodexThread as a6, CodexThreadStarted as a7, CodexThreadStartedEvent as a8, CodexThreadStartedParams as a9, Duration as aA, EffortLevel as aB, EllipsisGrant as aC, EllipsisPermissions as aD, EnvironmentBaseBuild as aE, EnvironmentConfig as aF, EnvironmentHooks as aG, EnvironmentHooks1 as aH, EnvironmentOutputPayload as aI, EnvironmentOutputRecord as aJ, EnvironmentPhasePayload as aK, EnvironmentPhaseRecord as aL, EnvironmentReadyPayload as aM, EnvironmentReadyRecord as aN, EnvironmentScript as aO, EnvironmentSource as aP, EnvironmentVariable as aQ, ErrorFrame as aR, GeminiConfig as aS, GeminiErrorEvent as aT, GeminiInitEvent as aU, GeminiMessageEvent as aV, GeminiModelStats as aW, GeminiResultEvent as aX, GeminiSessionRecord as aY, GeminiStreamEvent as aZ, GeminiStreamStats as a_, CodexThreadTokenUsage as aa, CodexTodoListItem as ab, CodexTokenUsageBreakdown as ac, CodexTokenUsageParams as ad, CodexTokenUsageUpdated as ae, CodexTurn as af, CodexTurnCompleted as ag, CodexTurnCompletedEvent as ah, CodexTurnError as ai, CodexTurnFailedEvent as aj, CodexTurnParams as ak, CodexTurnStarted as al, CodexTurnStartedEvent as am, CodexUsage as an, CodexUserInput as ao, CodexUserMessage as ap, CodexWebSearch as aq, CodexWebSearchItem as ar, ComputeConfig as as, ComputeConfig1 as at, ConfigMetadata as au, Cost as av, Cost1 as aw, CronTrigger as ax, DeltaFrame as ay, DoneFrame as az, AttributionType as b, ReviewComment as b$, GeminiToolResultEvent as b0, GeminiToolUseEvent as b1, GithubAccountFilter as b2, GithubAccountSelector as b3, GithubAccountSnippet as b4, GithubAccountType as b5, GithubCheckRunEvent as b6, GithubCheckSuiteEvent as b7, GithubIssueEvent as b8, GithubPermissions as b9, MessageRequeuedPayload as bA, MessageRequeuedRecord as bB, ModelLlmCostSplit as bC, ModelTokenCounts as bD, OutputConfig as bE, PermissionsConfig as bF, PermissionsConfig1 as bG, PlatformSessionRecord as bH, PromptBlockedReason as bI, PullRequestAction as bJ, ReactCheckRun as bK, ReactCheckSuite as bL, ReactIssue as bM, ReactLinearIssue as bN, ReactPullRequest as bO, ReactPush as bP, ReactRelease as bQ, ReactSentry as bR, ReactSlackChannel as bS, ReactStatus as bT, ReactTrigger as bU, ReactWorkflowRun as bV, RecordsAppendFrame as bW, ReleaseAction as bX, RepositoryFilter as bY, RepositoryRef as bZ, Review as b_, GithubPullRequestEvent as ba, GithubPushEvent as bb, GithubReleaseEvent as bc, GithubStatusEvent as bd, GithubWorkflowRunEvent as be, HandlerService as bf, HeartbeatFrame as bg, InputContract as bh, IssueAction as bi, LegacyAssistantPayload as bj, LegacyNativeUsage as bk, LegacyResultPayload as bl, Level as bm, LifecycleSessionRecord as bn, LinearIssueAction as bo, LinearIssueEvent as bp, LlmCost as bq, LlmCostSplit as br, McpRemoteServer as bs, McpServerRef as bt, McpStdioServer as bu, MemorySize as bv, MessageDeliveredPayload as bw, MessageDeliveredRecord as bx, MessageReceivedPayload as by, MessageReceivedRecord as bz, components as c, SkillRef as c$, ReviewConfig as c0, ReviewConfigsListResponse as c1, ReviewPullRequest as c2, ReviewPullRequestAuthor as c3, ReviewReviewer as c4, ReviewSummary as c5, ReviewsListResponse as c6, SdkAssistantRecord as c7, SdkCacheCreation as c8, SdkContentBlock as c9, SessionFrame as cA, SessionGit as cB, SessionGitCommit as cC, SessionGitFile as cD, SessionGitPr as cE, SessionGitRepo as cF, SessionHandler as cG, SessionMessage as cH, SessionMessageImage as cI, SessionMessageResponse as cJ, SessionMessageStatus as cK, SessionOutput as cL, SessionParent as cM, SessionPrompting as cN, SessionRecord as cO, SessionRecordsListResponse as cP, SessionResponse as cQ, SessionSource as cR, SessionState as cS, SessionStopped as cT, SessionStreamFrame as cU, SessionSummary as cV, SessionTurn as cW, SessionTurnResponse as cX, SessionTurnsListResponse as cY, SessionsListResponse as cZ, SettingsRef as c_, SdkRateLimitRecord as ca, SdkRecord as cb, SdkResultRecord as cc, SdkServerToolResultBlock as cd, SdkServerToolUseBlock as ce, SdkSystemRecord as cf, SdkTextBlock as cg, SdkThinkingBlock as ch, SdkToolResultBlock as ci, SdkToolUseBlock as cj, SdkUserRecord as ck, SendSessionMessageRequest as cl, SentryAction as cm, SentryAlertEvent as cn, Session as co, Session1 as cp, SessionAgent as cq, SessionArchived as cr, SessionAttribution as cs, SessionClosedPayload as ct, SessionClosedRecord as cu, SessionConfig as cv, SessionConversation as cw, SessionConversationConfig as cx, SessionEnvironment as cy, SessionEventActor as cz, CheckSuiteAction as d, SlackChannelCreatedEvent as d0, SlackMessageEvent as d1, SnapshotFrame as d2, StatusAction as d3, StreamFrame as d4, TokenCounts as d5, Tokens as d6, Tokens1 as d7, TokensInfo as d8, TurnEndedPayload as d9, TurnEndedRecord as da, TurnQueuedPayload as db, TurnQueuedRecord as dc, TurnReason as dd, TurnStartedPayload as de, TurnStartedRecord as df, TurnStatus as dg, UnknownSessionRecord as dh, UpdateSessionRequest as di, WorkflowRunAction as dj, paths as dk, ClaudeAssistantEvent as e, ClaudeAssistantMessage as f, ClaudeConfig as g, ClaudeConversationResetEvent as h, ClaudeNativeEvent as i, ClaudeNativeSessionRecord as j, ClaudeNativeUsage as k, ClaudeRateLimitEvent as l, ClaudeRateLimitInfo as m, ClaudeResultEvent as n, ClaudeSessionRecord as o, ClaudeSystemEvent as p, ClaudeUserEvent as q, ClaudeUserMessage as r, CodexAgentMessage as s, CodexAgentMessageItem as t, CodexAppServerError as u, CodexAppServerEvent as v, CodexAppServerItem as w, CodexAppServerNotification as x, CodexAppServerSessionRecord as y, CodexCollabAgentToolCall as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ellipsis-dev/sdk",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "description": "TypeScript SDK for the Ellipsis agents platform: /v1 REST types + client, the session stream WebSocket client, and the session transcript store.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1503,12 +1503,14 @@
1503
1503
  "discriminator": {
1504
1504
  "mapping": {
1505
1505
  "agentMessage": "#/$defs/CodexAgentMessage",
1506
+ "collabAgentToolCall": "#/$defs/CodexCollabAgentToolCall",
1506
1507
  "commandExecution": "#/$defs/CodexCommandExecution",
1507
1508
  "contextCompaction": "#/$defs/CodexContextCompaction",
1508
1509
  "fileChange": "#/$defs/CodexFileChange",
1509
1510
  "mcpToolCall": "#/$defs/CodexMcpToolCall",
1510
1511
  "plan": "#/$defs/CodexPlan",
1511
1512
  "reasoning": "#/$defs/CodexReasoning",
1513
+ "subAgentActivity": "#/$defs/CodexSubAgentActivity",
1512
1514
  "userMessage": "#/$defs/CodexUserMessage",
1513
1515
  "webSearch": "#/$defs/CodexWebSearch"
1514
1516
  },
@@ -1541,6 +1543,12 @@
1541
1543
  },
1542
1544
  {
1543
1545
  "$ref": "#/$defs/CodexContextCompaction"
1546
+ },
1547
+ {
1548
+ "$ref": "#/$defs/CodexSubAgentActivity"
1549
+ },
1550
+ {
1551
+ "$ref": "#/$defs/CodexCollabAgentToolCall"
1544
1552
  }
1545
1553
  ]
1546
1554
  },
@@ -1740,6 +1748,67 @@
1740
1748
  "type": "object",
1741
1749
  "x-ellipsis-preserve-payload": true
1742
1750
  },
1751
+ "CodexCollabAgentToolCall": {
1752
+ "additionalProperties": true,
1753
+ "properties": {
1754
+ "id": {
1755
+ "title": "Id",
1756
+ "type": "string"
1757
+ },
1758
+ "prompt": {
1759
+ "anyOf": [
1760
+ {
1761
+ "type": "string"
1762
+ },
1763
+ {
1764
+ "type": "null"
1765
+ }
1766
+ ],
1767
+ "default": null,
1768
+ "title": "Prompt"
1769
+ },
1770
+ "receiverThreadIds": {
1771
+ "items": {
1772
+ "type": "string"
1773
+ },
1774
+ "title": "Receiverthreadids",
1775
+ "type": "array"
1776
+ },
1777
+ "senderThreadId": {
1778
+ "title": "Senderthreadid",
1779
+ "type": "string"
1780
+ },
1781
+ "status": {
1782
+ "enum": [
1783
+ "inProgress",
1784
+ "completed",
1785
+ "failed"
1786
+ ],
1787
+ "title": "Status",
1788
+ "type": "string"
1789
+ },
1790
+ "tool": {
1791
+ "title": "Tool",
1792
+ "type": "string"
1793
+ },
1794
+ "type": {
1795
+ "const": "collabAgentToolCall",
1796
+ "default": "collabAgentToolCall",
1797
+ "title": "Type",
1798
+ "type": "string"
1799
+ }
1800
+ },
1801
+ "required": [
1802
+ "id",
1803
+ "receiverThreadIds",
1804
+ "senderThreadId",
1805
+ "status",
1806
+ "tool",
1807
+ "type"
1808
+ ],
1809
+ "title": "CodexCollabAgentToolCall",
1810
+ "type": "object"
1811
+ },
1743
1812
  "CodexCommandExecution": {
1744
1813
  "additionalProperties": true,
1745
1814
  "properties": {
@@ -3070,6 +3139,50 @@
3070
3139
  "type": "object",
3071
3140
  "x-ellipsis-preserve-payload": true
3072
3141
  },
3142
+ "CodexSubAgentActivity": {
3143
+ "additionalProperties": true,
3144
+ "description": "A subagent's spawn or completion, recorded on the spawning thread.",
3145
+ "properties": {
3146
+ "agentPath": {
3147
+ "anyOf": [
3148
+ {
3149
+ "type": "string"
3150
+ },
3151
+ {
3152
+ "type": "null"
3153
+ }
3154
+ ],
3155
+ "default": null,
3156
+ "title": "Agentpath"
3157
+ },
3158
+ "agentThreadId": {
3159
+ "title": "Agentthreadid",
3160
+ "type": "string"
3161
+ },
3162
+ "id": {
3163
+ "title": "Id",
3164
+ "type": "string"
3165
+ },
3166
+ "kind": {
3167
+ "title": "Kind",
3168
+ "type": "string"
3169
+ },
3170
+ "type": {
3171
+ "const": "subAgentActivity",
3172
+ "default": "subAgentActivity",
3173
+ "title": "Type",
3174
+ "type": "string"
3175
+ }
3176
+ },
3177
+ "required": [
3178
+ "agentThreadId",
3179
+ "id",
3180
+ "kind",
3181
+ "type"
3182
+ ],
3183
+ "title": "CodexSubAgentActivity",
3184
+ "type": "object"
3185
+ },
3073
3186
  "CodexTextInput": {
3074
3187
  "additionalProperties": true,
3075
3188
  "properties": {
@@ -3570,12 +3570,14 @@
3570
3570
  "discriminator": {
3571
3571
  "mapping": {
3572
3572
  "agentMessage": "#/components/schemas/CodexAgentMessage",
3573
+ "collabAgentToolCall": "#/components/schemas/CodexCollabAgentToolCall",
3573
3574
  "commandExecution": "#/components/schemas/CodexCommandExecution",
3574
3575
  "contextCompaction": "#/components/schemas/CodexContextCompaction",
3575
3576
  "fileChange": "#/components/schemas/CodexFileChange",
3576
3577
  "mcpToolCall": "#/components/schemas/CodexMcpToolCall",
3577
3578
  "plan": "#/components/schemas/CodexPlan",
3578
3579
  "reasoning": "#/components/schemas/CodexReasoning",
3580
+ "subAgentActivity": "#/components/schemas/CodexSubAgentActivity",
3579
3581
  "userMessage": "#/components/schemas/CodexUserMessage",
3580
3582
  "webSearch": "#/components/schemas/CodexWebSearch"
3581
3583
  },
@@ -3608,6 +3610,12 @@
3608
3610
  },
3609
3611
  {
3610
3612
  "$ref": "#/components/schemas/CodexContextCompaction"
3613
+ },
3614
+ {
3615
+ "$ref": "#/components/schemas/CodexSubAgentActivity"
3616
+ },
3617
+ {
3618
+ "$ref": "#/components/schemas/CodexCollabAgentToolCall"
3611
3619
  }
3612
3620
  ]
3613
3621
  },
@@ -3800,6 +3808,66 @@
3800
3808
  "type": "object",
3801
3809
  "x-ellipsis-preserve-payload": true
3802
3810
  },
3811
+ "CodexCollabAgentToolCall": {
3812
+ "additionalProperties": true,
3813
+ "properties": {
3814
+ "id": {
3815
+ "title": "Id",
3816
+ "type": "string"
3817
+ },
3818
+ "prompt": {
3819
+ "anyOf": [
3820
+ {
3821
+ "type": "string"
3822
+ },
3823
+ {
3824
+ "type": "null"
3825
+ }
3826
+ ],
3827
+ "title": "Prompt"
3828
+ },
3829
+ "receiverThreadIds": {
3830
+ "items": {
3831
+ "type": "string"
3832
+ },
3833
+ "title": "Receiverthreadids",
3834
+ "type": "array"
3835
+ },
3836
+ "senderThreadId": {
3837
+ "title": "Senderthreadid",
3838
+ "type": "string"
3839
+ },
3840
+ "status": {
3841
+ "enum": [
3842
+ "inProgress",
3843
+ "completed",
3844
+ "failed"
3845
+ ],
3846
+ "title": "Status",
3847
+ "type": "string"
3848
+ },
3849
+ "tool": {
3850
+ "title": "Tool",
3851
+ "type": "string"
3852
+ },
3853
+ "type": {
3854
+ "const": "collabAgentToolCall",
3855
+ "default": "collabAgentToolCall",
3856
+ "title": "Type",
3857
+ "type": "string"
3858
+ }
3859
+ },
3860
+ "required": [
3861
+ "id",
3862
+ "receiverThreadIds",
3863
+ "senderThreadId",
3864
+ "status",
3865
+ "tool",
3866
+ "type"
3867
+ ],
3868
+ "title": "CodexCollabAgentToolCall",
3869
+ "type": "object"
3870
+ },
3803
3871
  "CodexCommandExecution": {
3804
3872
  "additionalProperties": true,
3805
3873
  "properties": {
@@ -5168,6 +5236,49 @@
5168
5236
  "type": "object",
5169
5237
  "x-ellipsis-preserve-payload": true
5170
5238
  },
5239
+ "CodexSubAgentActivity": {
5240
+ "additionalProperties": true,
5241
+ "description": "A subagent's spawn or completion, recorded on the spawning thread.",
5242
+ "properties": {
5243
+ "agentPath": {
5244
+ "anyOf": [
5245
+ {
5246
+ "type": "string"
5247
+ },
5248
+ {
5249
+ "type": "null"
5250
+ }
5251
+ ],
5252
+ "title": "Agentpath"
5253
+ },
5254
+ "agentThreadId": {
5255
+ "title": "Agentthreadid",
5256
+ "type": "string"
5257
+ },
5258
+ "id": {
5259
+ "title": "Id",
5260
+ "type": "string"
5261
+ },
5262
+ "kind": {
5263
+ "title": "Kind",
5264
+ "type": "string"
5265
+ },
5266
+ "type": {
5267
+ "const": "subAgentActivity",
5268
+ "default": "subAgentActivity",
5269
+ "title": "Type",
5270
+ "type": "string"
5271
+ }
5272
+ },
5273
+ "required": [
5274
+ "agentThreadId",
5275
+ "id",
5276
+ "kind",
5277
+ "type"
5278
+ ],
5279
+ "title": "CodexSubAgentActivity",
5280
+ "type": "object"
5281
+ },
5171
5282
  "CodexTextInput": {
5172
5283
  "additionalProperties": true,
5173
5284
  "properties": {