clawdex-mobile 5.0.0 → 5.0.2

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.
Files changed (572) hide show
  1. package/README.md +4 -0
  2. package/docs/setup-and-operations.md +3 -1
  3. package/docs/troubleshooting.md +1 -0
  4. package/package.json +18 -8
  5. package/scripts/setup-secure-dev.sh +26 -17
  6. package/services/rust-bridge/Cargo.lock +1 -1
  7. package/services/rust-bridge/Cargo.toml +1 -1
  8. package/vendor/bridge-binaries/darwin-arm64/codex-rust-bridge +0 -0
  9. package/{codex-rust-bridge → vendor/bridge-binaries/darwin-x64/codex-rust-bridge} +0 -0
  10. package/vendor/bridge-binaries/linux-x64/codex-rust-bridge +0 -0
  11. package/{codex-rust-bridge.exe → vendor/bridge-binaries/win32-x64/codex-rust-bridge.exe} +0 -0
  12. package/.github/workflows/ci.yml +0 -80
  13. package/.github/workflows/npm-release.yml +0 -176
  14. package/.github/workflows/pages.yml +0 -41
  15. package/AGENTS.md +0 -273
  16. package/STATUS.md +0 -115
  17. package/apps/mobile/.env.example +0 -6
  18. package/apps/mobile/App.tsx +0 -943
  19. package/apps/mobile/app.json +0 -77
  20. package/apps/mobile/assets/brand/adaptive-icon.png +0 -0
  21. package/apps/mobile/assets/brand/app-icon.png +0 -0
  22. package/apps/mobile/assets/brand/favicon.png +0 -0
  23. package/apps/mobile/assets/brand/mark.png +0 -0
  24. package/apps/mobile/assets/brand/splash-icon-white.png +0 -0
  25. package/apps/mobile/assets/brand/splash-icon.png +0 -0
  26. package/apps/mobile/babel.config.js +0 -7
  27. package/apps/mobile/eas.json +0 -40
  28. package/apps/mobile/eslint.config.cjs +0 -28
  29. package/apps/mobile/index.js +0 -5
  30. package/apps/mobile/package.json +0 -57
  31. package/apps/mobile/plugins/withAndroidCleartextTraffic.js +0 -14
  32. package/apps/mobile/src/api/__tests__/chatMapping.test.ts +0 -351
  33. package/apps/mobile/src/api/__tests__/client.test.ts +0 -1494
  34. package/apps/mobile/src/api/__tests__/ws.test.ts +0 -640
  35. package/apps/mobile/src/api/account.ts +0 -47
  36. package/apps/mobile/src/api/chatMapping.ts +0 -1048
  37. package/apps/mobile/src/api/client.ts +0 -1430
  38. package/apps/mobile/src/api/rateLimits.ts +0 -143
  39. package/apps/mobile/src/api/types.ts +0 -435
  40. package/apps/mobile/src/api/ws.ts +0 -852
  41. package/apps/mobile/src/bridgeUrl.ts +0 -105
  42. package/apps/mobile/src/components/ActivityBar.tsx +0 -95
  43. package/apps/mobile/src/components/ApprovalBanner.tsx +0 -207
  44. package/apps/mobile/src/components/BrandMark.tsx +0 -43
  45. package/apps/mobile/src/components/ChatHeader.tsx +0 -107
  46. package/apps/mobile/src/components/ChatInput.tsx +0 -457
  47. package/apps/mobile/src/components/ChatMessage.tsx +0 -959
  48. package/apps/mobile/src/components/ComposerUsageLimits.tsx +0 -167
  49. package/apps/mobile/src/components/SelectionSheet.tsx +0 -466
  50. package/apps/mobile/src/components/StatusLine.tsx +0 -52
  51. package/apps/mobile/src/components/ToolBlock.tsx +0 -67
  52. package/apps/mobile/src/components/TypingIndicator.tsx +0 -64
  53. package/apps/mobile/src/components/VoiceRecordingWaveform.tsx +0 -181
  54. package/apps/mobile/src/components/WorkspacePickerModal.tsx +0 -812
  55. package/apps/mobile/src/components/__tests__/chat-input-layout.test.ts +0 -35
  56. package/apps/mobile/src/components/__tests__/chatImageSource.test.ts +0 -44
  57. package/apps/mobile/src/components/__tests__/composerUsageLimits.test.ts +0 -138
  58. package/apps/mobile/src/components/__tests__/voiceWaveform.test.ts +0 -31
  59. package/apps/mobile/src/components/chat-input-layout.ts +0 -59
  60. package/apps/mobile/src/components/chatImageSource.ts +0 -86
  61. package/apps/mobile/src/components/usageLimitBadges.ts +0 -109
  62. package/apps/mobile/src/components/voiceWaveform.ts +0 -46
  63. package/apps/mobile/src/config.ts +0 -64
  64. package/apps/mobile/src/hooks/useVoiceRecorder.ts +0 -271
  65. package/apps/mobile/src/navigation/DrawerContent.tsx +0 -1129
  66. package/apps/mobile/src/navigation/__tests__/chatThreadTree.test.ts +0 -89
  67. package/apps/mobile/src/navigation/__tests__/drawerChats.test.ts +0 -65
  68. package/apps/mobile/src/navigation/chatThreadTree.ts +0 -191
  69. package/apps/mobile/src/navigation/drawerChats.ts +0 -9
  70. package/apps/mobile/src/screens/GitScreen.tsx +0 -1489
  71. package/apps/mobile/src/screens/MainScreen.tsx +0 -10511
  72. package/apps/mobile/src/screens/OnboardingScreen.tsx +0 -1746
  73. package/apps/mobile/src/screens/PrivacyScreen.tsx +0 -196
  74. package/apps/mobile/src/screens/SettingsScreen.tsx +0 -870
  75. package/apps/mobile/src/screens/TerminalScreen.tsx +0 -248
  76. package/apps/mobile/src/screens/TermsScreen.tsx +0 -192
  77. package/apps/mobile/src/screens/__tests__/agentThreadDisplay.test.ts +0 -80
  78. package/apps/mobile/src/screens/__tests__/agentThreads.test.ts +0 -170
  79. package/apps/mobile/src/screens/__tests__/gitDiff.test.ts +0 -131
  80. package/apps/mobile/src/screens/__tests__/planCardState.test.ts +0 -88
  81. package/apps/mobile/src/screens/__tests__/subAgentTranscript.test.ts +0 -102
  82. package/apps/mobile/src/screens/__tests__/transcriptMessages.test.ts +0 -97
  83. package/apps/mobile/src/screens/agentThreadDisplay.ts +0 -261
  84. package/apps/mobile/src/screens/agentThreads.ts +0 -167
  85. package/apps/mobile/src/screens/gitDiff.ts +0 -380
  86. package/apps/mobile/src/screens/planCardState.ts +0 -40
  87. package/apps/mobile/src/screens/subAgentTranscript.ts +0 -149
  88. package/apps/mobile/src/screens/transcriptMessages.ts +0 -102
  89. package/apps/mobile/src/theme.ts +0 -106
  90. package/apps/mobile/src/types/assets.d.ts +0 -4
  91. package/apps/mobile/tsconfig.json +0 -33
  92. package/docs/app-review-notes.md +0 -116
  93. package/docs/codex-app-server-cli-gap-tracker.md +0 -90
  94. package/docs/eas-builds.md +0 -91
  95. package/docs/open-source-license-requirements.md +0 -32
  96. package/docs/plans/2026-02-20-codex-desktop-style-redesign.md +0 -190
  97. package/docs/plans/2026-02-20-codex-mobile-implementation.md +0 -1630
  98. package/docs/plans/2026-02-21-codex-ui-redesign-design.md +0 -101
  99. package/docs/plans/2026-02-21-codex-ui-redesign.md +0 -1229
  100. package/docs/privacy-policy.md +0 -54
  101. package/docs/realtime-streaming-limitations.md +0 -161
  102. package/docs/terms-of-service.md +0 -33
  103. package/docs/voice-transcription.md +0 -87
  104. package/scripts/codex-live-demo.sh +0 -69
  105. package/scripts/start-bridge-secure.sh +0 -5
  106. package/scripts/start-expo.sh +0 -176
  107. package/scripts/sync-versions.js +0 -63
  108. package/scripts/teardown.sh +0 -136
  109. package/services/mac-bridge/.env.example +0 -10
  110. package/services/mac-bridge/codex-types/AbsolutePathBuf.ts +0 -14
  111. package/services/mac-bridge/codex-types/AddConversationListenerParams.ts +0 -6
  112. package/services/mac-bridge/codex-types/AddConversationSubscriptionResponse.ts +0 -5
  113. package/services/mac-bridge/codex-types/AgentMessageContent.ts +0 -5
  114. package/services/mac-bridge/codex-types/AgentMessageContentDeltaEvent.ts +0 -5
  115. package/services/mac-bridge/codex-types/AgentMessageDeltaEvent.ts +0 -5
  116. package/services/mac-bridge/codex-types/AgentMessageEvent.ts +0 -5
  117. package/services/mac-bridge/codex-types/AgentMessageItem.ts +0 -21
  118. package/services/mac-bridge/codex-types/AgentReasoningDeltaEvent.ts +0 -5
  119. package/services/mac-bridge/codex-types/AgentReasoningEvent.ts +0 -5
  120. package/services/mac-bridge/codex-types/AgentReasoningRawContentDeltaEvent.ts +0 -5
  121. package/services/mac-bridge/codex-types/AgentReasoningRawContentEvent.ts +0 -5
  122. package/services/mac-bridge/codex-types/AgentReasoningSectionBreakEvent.ts +0 -5
  123. package/services/mac-bridge/codex-types/AgentStatus.ts +0 -8
  124. package/services/mac-bridge/codex-types/ApplyPatchApprovalParams.ts +0 -21
  125. package/services/mac-bridge/codex-types/ApplyPatchApprovalRequestEvent.ts +0 -23
  126. package/services/mac-bridge/codex-types/ApplyPatchApprovalResponse.ts +0 -6
  127. package/services/mac-bridge/codex-types/ArchiveConversationParams.ts +0 -6
  128. package/services/mac-bridge/codex-types/ArchiveConversationResponse.ts +0 -5
  129. package/services/mac-bridge/codex-types/AskForApproval.ts +0 -9
  130. package/services/mac-bridge/codex-types/AuthMode.ts +0 -8
  131. package/services/mac-bridge/codex-types/AuthStatusChangeNotification.ts +0 -9
  132. package/services/mac-bridge/codex-types/BackgroundEventEvent.ts +0 -5
  133. package/services/mac-bridge/codex-types/ByteRange.ts +0 -13
  134. package/services/mac-bridge/codex-types/CallToolResult.ts +0 -9
  135. package/services/mac-bridge/codex-types/CancelLoginChatGptParams.ts +0 -5
  136. package/services/mac-bridge/codex-types/CancelLoginChatGptResponse.ts +0 -5
  137. package/services/mac-bridge/codex-types/ClientInfo.ts +0 -5
  138. package/services/mac-bridge/codex-types/ClientNotification.ts +0 -5
  139. package/services/mac-bridge/codex-types/ClientRequest.ts +0 -60
  140. package/services/mac-bridge/codex-types/CodexErrorInfo.ts +0 -8
  141. package/services/mac-bridge/codex-types/CollabAgentInteractionBeginEvent.ts +0 -23
  142. package/services/mac-bridge/codex-types/CollabAgentInteractionEndEvent.ts +0 -28
  143. package/services/mac-bridge/codex-types/CollabAgentSpawnBeginEvent.ts +0 -19
  144. package/services/mac-bridge/codex-types/CollabAgentSpawnEndEvent.ts +0 -28
  145. package/services/mac-bridge/codex-types/CollabCloseBeginEvent.ts +0 -18
  146. package/services/mac-bridge/codex-types/CollabCloseEndEvent.ts +0 -24
  147. package/services/mac-bridge/codex-types/CollabResumeBeginEvent.ts +0 -18
  148. package/services/mac-bridge/codex-types/CollabResumeEndEvent.ts +0 -24
  149. package/services/mac-bridge/codex-types/CollabWaitingBeginEvent.ts +0 -18
  150. package/services/mac-bridge/codex-types/CollabWaitingEndEvent.ts +0 -19
  151. package/services/mac-bridge/codex-types/CollaborationMode.ts +0 -10
  152. package/services/mac-bridge/codex-types/CollaborationModeMask.ts +0 -11
  153. package/services/mac-bridge/codex-types/ContentItem.ts +0 -5
  154. package/services/mac-bridge/codex-types/ContextCompactedEvent.ts +0 -5
  155. package/services/mac-bridge/codex-types/ContextCompactionItem.ts +0 -5
  156. package/services/mac-bridge/codex-types/ConversationGitInfo.ts +0 -5
  157. package/services/mac-bridge/codex-types/ConversationSummary.ts +0 -8
  158. package/services/mac-bridge/codex-types/CreditsSnapshot.ts +0 -5
  159. package/services/mac-bridge/codex-types/CustomPrompt.ts +0 -5
  160. package/services/mac-bridge/codex-types/DeprecationNoticeEvent.ts +0 -13
  161. package/services/mac-bridge/codex-types/DynamicToolCallRequest.ts +0 -6
  162. package/services/mac-bridge/codex-types/ElicitationRequestEvent.ts +0 -5
  163. package/services/mac-bridge/codex-types/ErrorEvent.ts +0 -6
  164. package/services/mac-bridge/codex-types/EventMsg.ts +0 -78
  165. package/services/mac-bridge/codex-types/ExecApprovalRequestEvent.ts +0 -44
  166. package/services/mac-bridge/codex-types/ExecCommandApprovalParams.ts +0 -16
  167. package/services/mac-bridge/codex-types/ExecCommandApprovalResponse.ts +0 -6
  168. package/services/mac-bridge/codex-types/ExecCommandBeginEvent.ts +0 -35
  169. package/services/mac-bridge/codex-types/ExecCommandEndEvent.ts +0 -64
  170. package/services/mac-bridge/codex-types/ExecCommandOutputDeltaEvent.ts +0 -18
  171. package/services/mac-bridge/codex-types/ExecCommandSource.ts +0 -5
  172. package/services/mac-bridge/codex-types/ExecCommandStatus.ts +0 -5
  173. package/services/mac-bridge/codex-types/ExecOneOffCommandParams.ts +0 -6
  174. package/services/mac-bridge/codex-types/ExecOneOffCommandResponse.ts +0 -5
  175. package/services/mac-bridge/codex-types/ExecOutputStream.ts +0 -5
  176. package/services/mac-bridge/codex-types/ExecPolicyAmendment.ts +0 -12
  177. package/services/mac-bridge/codex-types/ExitedReviewModeEvent.ts +0 -6
  178. package/services/mac-bridge/codex-types/FileChange.ts +0 -5
  179. package/services/mac-bridge/codex-types/ForcedLoginMethod.ts +0 -5
  180. package/services/mac-bridge/codex-types/ForkConversationParams.ts +0 -7
  181. package/services/mac-bridge/codex-types/ForkConversationResponse.ts +0 -7
  182. package/services/mac-bridge/codex-types/FunctionCallOutputBody.ts +0 -6
  183. package/services/mac-bridge/codex-types/FunctionCallOutputContentItem.ts +0 -9
  184. package/services/mac-bridge/codex-types/FunctionCallOutputPayload.ts +0 -12
  185. package/services/mac-bridge/codex-types/FuzzyFileSearchParams.ts +0 -5
  186. package/services/mac-bridge/codex-types/FuzzyFileSearchResponse.ts +0 -6
  187. package/services/mac-bridge/codex-types/FuzzyFileSearchResult.ts +0 -8
  188. package/services/mac-bridge/codex-types/FuzzyFileSearchSessionCompletedNotification.ts +0 -5
  189. package/services/mac-bridge/codex-types/FuzzyFileSearchSessionUpdatedNotification.ts +0 -6
  190. package/services/mac-bridge/codex-types/GetAuthStatusParams.ts +0 -5
  191. package/services/mac-bridge/codex-types/GetAuthStatusResponse.ts +0 -6
  192. package/services/mac-bridge/codex-types/GetConversationSummaryParams.ts +0 -6
  193. package/services/mac-bridge/codex-types/GetConversationSummaryResponse.ts +0 -6
  194. package/services/mac-bridge/codex-types/GetHistoryEntryResponseEvent.ts +0 -10
  195. package/services/mac-bridge/codex-types/GetUserAgentResponse.ts +0 -5
  196. package/services/mac-bridge/codex-types/GetUserSavedConfigResponse.ts +0 -6
  197. package/services/mac-bridge/codex-types/GhostCommit.ts +0 -8
  198. package/services/mac-bridge/codex-types/GitDiffToRemoteParams.ts +0 -5
  199. package/services/mac-bridge/codex-types/GitDiffToRemoteResponse.ts +0 -6
  200. package/services/mac-bridge/codex-types/GitSha.ts +0 -5
  201. package/services/mac-bridge/codex-types/HistoryEntry.ts +0 -5
  202. package/services/mac-bridge/codex-types/InitializeCapabilities.ts +0 -17
  203. package/services/mac-bridge/codex-types/InitializeParams.ts +0 -7
  204. package/services/mac-bridge/codex-types/InitializeResponse.ts +0 -5
  205. package/services/mac-bridge/codex-types/InputItem.ts +0 -10
  206. package/services/mac-bridge/codex-types/InputModality.ts +0 -8
  207. package/services/mac-bridge/codex-types/InterruptConversationParams.ts +0 -6
  208. package/services/mac-bridge/codex-types/InterruptConversationResponse.ts +0 -6
  209. package/services/mac-bridge/codex-types/ItemCompletedEvent.ts +0 -7
  210. package/services/mac-bridge/codex-types/ItemStartedEvent.ts +0 -7
  211. package/services/mac-bridge/codex-types/ListConversationsParams.ts +0 -5
  212. package/services/mac-bridge/codex-types/ListConversationsResponse.ts +0 -6
  213. package/services/mac-bridge/codex-types/ListCustomPromptsResponseEvent.ts +0 -9
  214. package/services/mac-bridge/codex-types/ListRemoteSkillsResponseEvent.ts +0 -9
  215. package/services/mac-bridge/codex-types/ListSkillsResponseEvent.ts +0 -9
  216. package/services/mac-bridge/codex-types/LocalShellAction.ts +0 -6
  217. package/services/mac-bridge/codex-types/LocalShellExecAction.ts +0 -5
  218. package/services/mac-bridge/codex-types/LocalShellStatus.ts +0 -5
  219. package/services/mac-bridge/codex-types/LoginApiKeyParams.ts +0 -5
  220. package/services/mac-bridge/codex-types/LoginApiKeyResponse.ts +0 -5
  221. package/services/mac-bridge/codex-types/LoginChatGptCompleteNotification.ts +0 -8
  222. package/services/mac-bridge/codex-types/LoginChatGptResponse.ts +0 -5
  223. package/services/mac-bridge/codex-types/LogoutChatGptResponse.ts +0 -5
  224. package/services/mac-bridge/codex-types/McpAuthStatus.ts +0 -5
  225. package/services/mac-bridge/codex-types/McpInvocation.ts +0 -18
  226. package/services/mac-bridge/codex-types/McpListToolsResponseEvent.ts +0 -25
  227. package/services/mac-bridge/codex-types/McpStartupCompleteEvent.ts +0 -6
  228. package/services/mac-bridge/codex-types/McpStartupFailure.ts +0 -5
  229. package/services/mac-bridge/codex-types/McpStartupStatus.ts +0 -5
  230. package/services/mac-bridge/codex-types/McpStartupUpdateEvent.ts +0 -14
  231. package/services/mac-bridge/codex-types/McpToolCallBeginEvent.ts +0 -10
  232. package/services/mac-bridge/codex-types/McpToolCallEndEvent.ts +0 -15
  233. package/services/mac-bridge/codex-types/MessagePhase.ts +0 -11
  234. package/services/mac-bridge/codex-types/ModeKind.ts +0 -8
  235. package/services/mac-bridge/codex-types/ModelRerouteEvent.ts +0 -6
  236. package/services/mac-bridge/codex-types/ModelRerouteReason.ts +0 -5
  237. package/services/mac-bridge/codex-types/NetworkAccess.ts +0 -8
  238. package/services/mac-bridge/codex-types/NetworkApprovalContext.ts +0 -6
  239. package/services/mac-bridge/codex-types/NetworkApprovalProtocol.ts +0 -5
  240. package/services/mac-bridge/codex-types/NewConversationParams.ts +0 -8
  241. package/services/mac-bridge/codex-types/NewConversationResponse.ts +0 -7
  242. package/services/mac-bridge/codex-types/ParsedCommand.ts +0 -12
  243. package/services/mac-bridge/codex-types/PatchApplyBeginEvent.ts +0 -23
  244. package/services/mac-bridge/codex-types/PatchApplyEndEvent.ts +0 -36
  245. package/services/mac-bridge/codex-types/PatchApplyStatus.ts +0 -5
  246. package/services/mac-bridge/codex-types/Personality.ts +0 -5
  247. package/services/mac-bridge/codex-types/PlanDeltaEvent.ts +0 -5
  248. package/services/mac-bridge/codex-types/PlanItem.ts +0 -5
  249. package/services/mac-bridge/codex-types/PlanItemArg.ts +0 -6
  250. package/services/mac-bridge/codex-types/PlanType.ts +0 -5
  251. package/services/mac-bridge/codex-types/Profile.ts +0 -9
  252. package/services/mac-bridge/codex-types/RateLimitSnapshot.ts +0 -8
  253. package/services/mac-bridge/codex-types/RateLimitWindow.ts +0 -17
  254. package/services/mac-bridge/codex-types/RawResponseItemEvent.ts +0 -6
  255. package/services/mac-bridge/codex-types/ReadOnlyAccess.ts +0 -19
  256. package/services/mac-bridge/codex-types/ReasoningContentDeltaEvent.ts +0 -5
  257. package/services/mac-bridge/codex-types/ReasoningEffort.ts +0 -8
  258. package/services/mac-bridge/codex-types/ReasoningItem.ts +0 -5
  259. package/services/mac-bridge/codex-types/ReasoningItemContent.ts +0 -5
  260. package/services/mac-bridge/codex-types/ReasoningItemReasoningSummary.ts +0 -5
  261. package/services/mac-bridge/codex-types/ReasoningRawContentDeltaEvent.ts +0 -5
  262. package/services/mac-bridge/codex-types/ReasoningSummary.ts +0 -10
  263. package/services/mac-bridge/codex-types/RemoteSkillDownloadedEvent.ts +0 -8
  264. package/services/mac-bridge/codex-types/RemoteSkillSummary.ts +0 -5
  265. package/services/mac-bridge/codex-types/RemoveConversationListenerParams.ts +0 -5
  266. package/services/mac-bridge/codex-types/RemoveConversationSubscriptionResponse.ts +0 -5
  267. package/services/mac-bridge/codex-types/RequestId.ts +0 -5
  268. package/services/mac-bridge/codex-types/RequestUserInputEvent.ts +0 -15
  269. package/services/mac-bridge/codex-types/RequestUserInputQuestion.ts +0 -6
  270. package/services/mac-bridge/codex-types/RequestUserInputQuestionOption.ts +0 -5
  271. package/services/mac-bridge/codex-types/Resource.ts +0 -9
  272. package/services/mac-bridge/codex-types/ResourceTemplate.ts +0 -9
  273. package/services/mac-bridge/codex-types/ResponseItem.ts +0 -18
  274. package/services/mac-bridge/codex-types/ResumeConversationParams.ts +0 -8
  275. package/services/mac-bridge/codex-types/ResumeConversationResponse.ts +0 -7
  276. package/services/mac-bridge/codex-types/ReviewCodeLocation.ts +0 -9
  277. package/services/mac-bridge/codex-types/ReviewDecision.ts +0 -9
  278. package/services/mac-bridge/codex-types/ReviewFinding.ts +0 -9
  279. package/services/mac-bridge/codex-types/ReviewLineRange.ts +0 -8
  280. package/services/mac-bridge/codex-types/ReviewOutputEvent.ts +0 -9
  281. package/services/mac-bridge/codex-types/ReviewRequest.ts +0 -9
  282. package/services/mac-bridge/codex-types/ReviewTarget.ts +0 -9
  283. package/services/mac-bridge/codex-types/SandboxMode.ts +0 -5
  284. package/services/mac-bridge/codex-types/SandboxPolicy.ts +0 -44
  285. package/services/mac-bridge/codex-types/SandboxSettings.ts +0 -6
  286. package/services/mac-bridge/codex-types/SendUserMessageParams.ts +0 -7
  287. package/services/mac-bridge/codex-types/SendUserMessageResponse.ts +0 -5
  288. package/services/mac-bridge/codex-types/SendUserTurnParams.ts +0 -16
  289. package/services/mac-bridge/codex-types/SendUserTurnResponse.ts +0 -5
  290. package/services/mac-bridge/codex-types/ServerNotification.ts +0 -45
  291. package/services/mac-bridge/codex-types/ServerRequest.ts +0 -16
  292. package/services/mac-bridge/codex-types/SessionConfiguredEvent.ts +0 -57
  293. package/services/mac-bridge/codex-types/SessionConfiguredNotification.ts +0 -8
  294. package/services/mac-bridge/codex-types/SessionNetworkProxyRuntime.ts +0 -5
  295. package/services/mac-bridge/codex-types/SessionSource.ts +0 -6
  296. package/services/mac-bridge/codex-types/SetDefaultModelParams.ts +0 -6
  297. package/services/mac-bridge/codex-types/SetDefaultModelResponse.ts +0 -5
  298. package/services/mac-bridge/codex-types/Settings.ts +0 -9
  299. package/services/mac-bridge/codex-types/SkillDependencies.ts +0 -6
  300. package/services/mac-bridge/codex-types/SkillErrorInfo.ts +0 -5
  301. package/services/mac-bridge/codex-types/SkillInterface.ts +0 -5
  302. package/services/mac-bridge/codex-types/SkillMetadata.ts +0 -12
  303. package/services/mac-bridge/codex-types/SkillScope.ts +0 -5
  304. package/services/mac-bridge/codex-types/SkillToolDependency.ts +0 -5
  305. package/services/mac-bridge/codex-types/SkillsListEntry.ts +0 -7
  306. package/services/mac-bridge/codex-types/StepStatus.ts +0 -5
  307. package/services/mac-bridge/codex-types/StreamErrorEvent.ts +0 -12
  308. package/services/mac-bridge/codex-types/SubAgentSource.ts +0 -6
  309. package/services/mac-bridge/codex-types/TerminalInteractionEvent.ts +0 -17
  310. package/services/mac-bridge/codex-types/TextElement.ts +0 -14
  311. package/services/mac-bridge/codex-types/ThreadId.ts +0 -5
  312. package/services/mac-bridge/codex-types/ThreadNameUpdatedEvent.ts +0 -6
  313. package/services/mac-bridge/codex-types/ThreadRolledBackEvent.ts +0 -9
  314. package/services/mac-bridge/codex-types/TokenCountEvent.ts +0 -7
  315. package/services/mac-bridge/codex-types/TokenUsage.ts +0 -5
  316. package/services/mac-bridge/codex-types/TokenUsageInfo.ts +0 -6
  317. package/services/mac-bridge/codex-types/Tool.ts +0 -9
  318. package/services/mac-bridge/codex-types/Tools.ts +0 -5
  319. package/services/mac-bridge/codex-types/TurnAbortReason.ts +0 -5
  320. package/services/mac-bridge/codex-types/TurnAbortedEvent.ts +0 -6
  321. package/services/mac-bridge/codex-types/TurnCompleteEvent.ts +0 -5
  322. package/services/mac-bridge/codex-types/TurnDiffEvent.ts +0 -5
  323. package/services/mac-bridge/codex-types/TurnItem.ts +0 -11
  324. package/services/mac-bridge/codex-types/TurnStartedEvent.ts +0 -6
  325. package/services/mac-bridge/codex-types/UndoCompletedEvent.ts +0 -5
  326. package/services/mac-bridge/codex-types/UndoStartedEvent.ts +0 -5
  327. package/services/mac-bridge/codex-types/UpdatePlanArgs.ts +0 -10
  328. package/services/mac-bridge/codex-types/UserInfoResponse.ts +0 -5
  329. package/services/mac-bridge/codex-types/UserInput.ts +0 -16
  330. package/services/mac-bridge/codex-types/UserMessageEvent.ts +0 -22
  331. package/services/mac-bridge/codex-types/UserMessageItem.ts +0 -6
  332. package/services/mac-bridge/codex-types/UserSavedConfig.ts +0 -14
  333. package/services/mac-bridge/codex-types/Verbosity.ts +0 -9
  334. package/services/mac-bridge/codex-types/ViewImageToolCallEvent.ts +0 -13
  335. package/services/mac-bridge/codex-types/WarningEvent.ts +0 -5
  336. package/services/mac-bridge/codex-types/WebSearchAction.ts +0 -5
  337. package/services/mac-bridge/codex-types/WebSearchBeginEvent.ts +0 -5
  338. package/services/mac-bridge/codex-types/WebSearchEndEvent.ts +0 -6
  339. package/services/mac-bridge/codex-types/WebSearchItem.ts +0 -6
  340. package/services/mac-bridge/codex-types/WebSearchMode.ts +0 -5
  341. package/services/mac-bridge/codex-types/index.ts +0 -234
  342. package/services/mac-bridge/codex-types/serde_json/JsonValue.ts +0 -5
  343. package/services/mac-bridge/codex-types/v2/Account.ts +0 -6
  344. package/services/mac-bridge/codex-types/v2/AccountLoginCompletedNotification.ts +0 -5
  345. package/services/mac-bridge/codex-types/v2/AccountRateLimitsUpdatedNotification.ts +0 -6
  346. package/services/mac-bridge/codex-types/v2/AccountUpdatedNotification.ts +0 -6
  347. package/services/mac-bridge/codex-types/v2/AgentMessageDeltaNotification.ts +0 -5
  348. package/services/mac-bridge/codex-types/v2/AnalyticsConfig.ts +0 -6
  349. package/services/mac-bridge/codex-types/v2/AppBranding.ts +0 -8
  350. package/services/mac-bridge/codex-types/v2/AppDisabledReason.ts +0 -5
  351. package/services/mac-bridge/codex-types/v2/AppInfo.ts +0 -19
  352. package/services/mac-bridge/codex-types/v2/AppListUpdatedNotification.ts +0 -9
  353. package/services/mac-bridge/codex-types/v2/AppMetadata.ts +0 -7
  354. package/services/mac-bridge/codex-types/v2/AppReview.ts +0 -5
  355. package/services/mac-bridge/codex-types/v2/AppScreenshot.ts +0 -5
  356. package/services/mac-bridge/codex-types/v2/AppsConfig.ts +0 -6
  357. package/services/mac-bridge/codex-types/v2/AppsListParams.ts +0 -24
  358. package/services/mac-bridge/codex-types/v2/AppsListResponse.ts +0 -14
  359. package/services/mac-bridge/codex-types/v2/AskForApproval.ts +0 -5
  360. package/services/mac-bridge/codex-types/v2/ByteRange.ts +0 -5
  361. package/services/mac-bridge/codex-types/v2/CancelLoginAccountParams.ts +0 -5
  362. package/services/mac-bridge/codex-types/v2/CancelLoginAccountResponse.ts +0 -6
  363. package/services/mac-bridge/codex-types/v2/CancelLoginAccountStatus.ts +0 -5
  364. package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshParams.ts +0 -16
  365. package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshReason.ts +0 -5
  366. package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshResponse.ts +0 -5
  367. package/services/mac-bridge/codex-types/v2/CodexErrorInfo.ts +0 -11
  368. package/services/mac-bridge/codex-types/v2/CollabAgentState.ts +0 -6
  369. package/services/mac-bridge/codex-types/v2/CollabAgentStatus.ts +0 -5
  370. package/services/mac-bridge/codex-types/v2/CollabAgentTool.ts +0 -5
  371. package/services/mac-bridge/codex-types/v2/CollabAgentToolCallStatus.ts +0 -5
  372. package/services/mac-bridge/codex-types/v2/CommandAction.ts +0 -5
  373. package/services/mac-bridge/codex-types/v2/CommandExecParams.ts +0 -6
  374. package/services/mac-bridge/codex-types/v2/CommandExecResponse.ts +0 -5
  375. package/services/mac-bridge/codex-types/v2/CommandExecutionApprovalDecision.ts +0 -6
  376. package/services/mac-bridge/codex-types/v2/CommandExecutionOutputDeltaNotification.ts +0 -5
  377. package/services/mac-bridge/codex-types/v2/CommandExecutionRequestApprovalParams.ts +0 -37
  378. package/services/mac-bridge/codex-types/v2/CommandExecutionRequestApprovalResponse.ts +0 -6
  379. package/services/mac-bridge/codex-types/v2/CommandExecutionStatus.ts +0 -5
  380. package/services/mac-bridge/codex-types/v2/Config.ts +0 -17
  381. package/services/mac-bridge/codex-types/v2/ConfigBatchWriteParams.ts +0 -10
  382. package/services/mac-bridge/codex-types/v2/ConfigEdit.ts +0 -7
  383. package/services/mac-bridge/codex-types/v2/ConfigLayer.ts +0 -7
  384. package/services/mac-bridge/codex-types/v2/ConfigLayerMetadata.ts +0 -6
  385. package/services/mac-bridge/codex-types/v2/ConfigLayerSource.ts +0 -16
  386. package/services/mac-bridge/codex-types/v2/ConfigReadParams.ts +0 -11
  387. package/services/mac-bridge/codex-types/v2/ConfigReadResponse.ts +0 -8
  388. package/services/mac-bridge/codex-types/v2/ConfigRequirements.ts +0 -9
  389. package/services/mac-bridge/codex-types/v2/ConfigRequirementsReadResponse.ts +0 -10
  390. package/services/mac-bridge/codex-types/v2/ConfigValueWriteParams.ts +0 -11
  391. package/services/mac-bridge/codex-types/v2/ConfigWarningNotification.ts +0 -22
  392. package/services/mac-bridge/codex-types/v2/ConfigWriteResponse.ts +0 -12
  393. package/services/mac-bridge/codex-types/v2/ContextCompactedNotification.ts +0 -8
  394. package/services/mac-bridge/codex-types/v2/CreditsSnapshot.ts +0 -5
  395. package/services/mac-bridge/codex-types/v2/DeprecationNoticeNotification.ts +0 -13
  396. package/services/mac-bridge/codex-types/v2/DynamicToolCallOutputContentItem.ts +0 -5
  397. package/services/mac-bridge/codex-types/v2/DynamicToolCallParams.ts +0 -6
  398. package/services/mac-bridge/codex-types/v2/DynamicToolCallResponse.ts +0 -6
  399. package/services/mac-bridge/codex-types/v2/DynamicToolSpec.ts +0 -6
  400. package/services/mac-bridge/codex-types/v2/ErrorNotification.ts +0 -6
  401. package/services/mac-bridge/codex-types/v2/ExecPolicyAmendment.ts +0 -5
  402. package/services/mac-bridge/codex-types/v2/ExperimentalFeature.ts +0 -37
  403. package/services/mac-bridge/codex-types/v2/ExperimentalFeatureListParams.ts +0 -13
  404. package/services/mac-bridge/codex-types/v2/ExperimentalFeatureListResponse.ts +0 -11
  405. package/services/mac-bridge/codex-types/v2/ExperimentalFeatureStage.ts +0 -5
  406. package/services/mac-bridge/codex-types/v2/FeedbackUploadParams.ts +0 -5
  407. package/services/mac-bridge/codex-types/v2/FeedbackUploadResponse.ts +0 -5
  408. package/services/mac-bridge/codex-types/v2/FileChangeApprovalDecision.ts +0 -5
  409. package/services/mac-bridge/codex-types/v2/FileChangeOutputDeltaNotification.ts +0 -5
  410. package/services/mac-bridge/codex-types/v2/FileChangeRequestApprovalParams.ts +0 -14
  411. package/services/mac-bridge/codex-types/v2/FileChangeRequestApprovalResponse.ts +0 -6
  412. package/services/mac-bridge/codex-types/v2/FileUpdateChange.ts +0 -6
  413. package/services/mac-bridge/codex-types/v2/GetAccountParams.ts +0 -13
  414. package/services/mac-bridge/codex-types/v2/GetAccountRateLimitsResponse.ts +0 -14
  415. package/services/mac-bridge/codex-types/v2/GetAccountResponse.ts +0 -6
  416. package/services/mac-bridge/codex-types/v2/GitInfo.ts +0 -5
  417. package/services/mac-bridge/codex-types/v2/HazelnutScope.ts +0 -5
  418. package/services/mac-bridge/codex-types/v2/ItemCompletedNotification.ts +0 -6
  419. package/services/mac-bridge/codex-types/v2/ItemStartedNotification.ts +0 -6
  420. package/services/mac-bridge/codex-types/v2/ListMcpServerStatusParams.ts +0 -13
  421. package/services/mac-bridge/codex-types/v2/ListMcpServerStatusResponse.ts +0 -11
  422. package/services/mac-bridge/codex-types/v2/LoginAccountParams.ts +0 -21
  423. package/services/mac-bridge/codex-types/v2/LoginAccountResponse.ts +0 -9
  424. package/services/mac-bridge/codex-types/v2/LogoutAccountResponse.ts +0 -5
  425. package/services/mac-bridge/codex-types/v2/McpAuthStatus.ts +0 -5
  426. package/services/mac-bridge/codex-types/v2/McpServerOauthLoginCompletedNotification.ts +0 -5
  427. package/services/mac-bridge/codex-types/v2/McpServerOauthLoginParams.ts +0 -5
  428. package/services/mac-bridge/codex-types/v2/McpServerOauthLoginResponse.ts +0 -5
  429. package/services/mac-bridge/codex-types/v2/McpServerRefreshResponse.ts +0 -5
  430. package/services/mac-bridge/codex-types/v2/McpServerStatus.ts +0 -9
  431. package/services/mac-bridge/codex-types/v2/McpToolCallError.ts +0 -5
  432. package/services/mac-bridge/codex-types/v2/McpToolCallProgressNotification.ts +0 -5
  433. package/services/mac-bridge/codex-types/v2/McpToolCallResult.ts +0 -6
  434. package/services/mac-bridge/codex-types/v2/McpToolCallStatus.ts +0 -5
  435. package/services/mac-bridge/codex-types/v2/MergeStrategy.ts +0 -5
  436. package/services/mac-bridge/codex-types/v2/Model.ts +0 -8
  437. package/services/mac-bridge/codex-types/v2/ModelListParams.ts +0 -17
  438. package/services/mac-bridge/codex-types/v2/ModelListResponse.ts +0 -11
  439. package/services/mac-bridge/codex-types/v2/ModelRerouteReason.ts +0 -5
  440. package/services/mac-bridge/codex-types/v2/ModelReroutedNotification.ts +0 -6
  441. package/services/mac-bridge/codex-types/v2/NetworkAccess.ts +0 -5
  442. package/services/mac-bridge/codex-types/v2/NetworkRequirements.ts +0 -5
  443. package/services/mac-bridge/codex-types/v2/OverriddenMetadata.ts +0 -7
  444. package/services/mac-bridge/codex-types/v2/PatchApplyStatus.ts +0 -5
  445. package/services/mac-bridge/codex-types/v2/PatchChangeKind.ts +0 -5
  446. package/services/mac-bridge/codex-types/v2/PlanDeltaNotification.ts +0 -9
  447. package/services/mac-bridge/codex-types/v2/ProductSurface.ts +0 -5
  448. package/services/mac-bridge/codex-types/v2/ProfileV2.ts +0 -11
  449. package/services/mac-bridge/codex-types/v2/RateLimitSnapshot.ts +0 -8
  450. package/services/mac-bridge/codex-types/v2/RateLimitWindow.ts +0 -5
  451. package/services/mac-bridge/codex-types/v2/RawResponseItemCompletedNotification.ts +0 -6
  452. package/services/mac-bridge/codex-types/v2/ReadOnlyAccess.ts +0 -6
  453. package/services/mac-bridge/codex-types/v2/ReasoningEffortOption.ts +0 -6
  454. package/services/mac-bridge/codex-types/v2/ReasoningSummaryPartAddedNotification.ts +0 -5
  455. package/services/mac-bridge/codex-types/v2/ReasoningSummaryTextDeltaNotification.ts +0 -5
  456. package/services/mac-bridge/codex-types/v2/ReasoningTextDeltaNotification.ts +0 -5
  457. package/services/mac-bridge/codex-types/v2/RemoteSkillSummary.ts +0 -5
  458. package/services/mac-bridge/codex-types/v2/ResidencyRequirement.ts +0 -5
  459. package/services/mac-bridge/codex-types/v2/ReviewDelivery.ts +0 -5
  460. package/services/mac-bridge/codex-types/v2/ReviewStartParams.ts +0 -12
  461. package/services/mac-bridge/codex-types/v2/ReviewStartResponse.ts +0 -13
  462. package/services/mac-bridge/codex-types/v2/ReviewTarget.ts +0 -9
  463. package/services/mac-bridge/codex-types/v2/SandboxMode.ts +0 -5
  464. package/services/mac-bridge/codex-types/v2/SandboxPolicy.ts +0 -8
  465. package/services/mac-bridge/codex-types/v2/SandboxWorkspaceWrite.ts +0 -5
  466. package/services/mac-bridge/codex-types/v2/SessionSource.ts +0 -6
  467. package/services/mac-bridge/codex-types/v2/SkillDependencies.ts +0 -6
  468. package/services/mac-bridge/codex-types/v2/SkillErrorInfo.ts +0 -5
  469. package/services/mac-bridge/codex-types/v2/SkillInterface.ts +0 -5
  470. package/services/mac-bridge/codex-types/v2/SkillMetadata.ts +0 -12
  471. package/services/mac-bridge/codex-types/v2/SkillScope.ts +0 -5
  472. package/services/mac-bridge/codex-types/v2/SkillToolDependency.ts +0 -5
  473. package/services/mac-bridge/codex-types/v2/SkillsConfigWriteParams.ts +0 -5
  474. package/services/mac-bridge/codex-types/v2/SkillsConfigWriteResponse.ts +0 -5
  475. package/services/mac-bridge/codex-types/v2/SkillsListEntry.ts +0 -7
  476. package/services/mac-bridge/codex-types/v2/SkillsListExtraRootsForCwd.ts +0 -5
  477. package/services/mac-bridge/codex-types/v2/SkillsListParams.ts +0 -18
  478. package/services/mac-bridge/codex-types/v2/SkillsListResponse.ts +0 -6
  479. package/services/mac-bridge/codex-types/v2/SkillsRemoteReadParams.ts +0 -7
  480. package/services/mac-bridge/codex-types/v2/SkillsRemoteReadResponse.ts +0 -6
  481. package/services/mac-bridge/codex-types/v2/SkillsRemoteWriteParams.ts +0 -5
  482. package/services/mac-bridge/codex-types/v2/SkillsRemoteWriteResponse.ts +0 -5
  483. package/services/mac-bridge/codex-types/v2/TerminalInteractionNotification.ts +0 -5
  484. package/services/mac-bridge/codex-types/v2/TextElement.ts +0 -14
  485. package/services/mac-bridge/codex-types/v2/TextPosition.ts +0 -13
  486. package/services/mac-bridge/codex-types/v2/TextRange.ts +0 -6
  487. package/services/mac-bridge/codex-types/v2/Thread.ts +0 -51
  488. package/services/mac-bridge/codex-types/v2/ThreadArchiveParams.ts +0 -5
  489. package/services/mac-bridge/codex-types/v2/ThreadArchiveResponse.ts +0 -5
  490. package/services/mac-bridge/codex-types/v2/ThreadArchivedNotification.ts +0 -5
  491. package/services/mac-bridge/codex-types/v2/ThreadCompactStartParams.ts +0 -5
  492. package/services/mac-bridge/codex-types/v2/ThreadCompactStartResponse.ts +0 -5
  493. package/services/mac-bridge/codex-types/v2/ThreadForkParams.ts +0 -28
  494. package/services/mac-bridge/codex-types/v2/ThreadForkResponse.ts +0 -9
  495. package/services/mac-bridge/codex-types/v2/ThreadItem.ts +0 -81
  496. package/services/mac-bridge/codex-types/v2/ThreadListParams.ts +0 -39
  497. package/services/mac-bridge/codex-types/v2/ThreadListResponse.ts +0 -11
  498. package/services/mac-bridge/codex-types/v2/ThreadLoadedListParams.ts +0 -13
  499. package/services/mac-bridge/codex-types/v2/ThreadLoadedListResponse.ts +0 -14
  500. package/services/mac-bridge/codex-types/v2/ThreadNameUpdatedNotification.ts +0 -5
  501. package/services/mac-bridge/codex-types/v2/ThreadReadParams.ts +0 -9
  502. package/services/mac-bridge/codex-types/v2/ThreadReadResponse.ts +0 -6
  503. package/services/mac-bridge/codex-types/v2/ThreadResumeParams.ts +0 -37
  504. package/services/mac-bridge/codex-types/v2/ThreadResumeResponse.ts +0 -9
  505. package/services/mac-bridge/codex-types/v2/ThreadRollbackParams.ts +0 -12
  506. package/services/mac-bridge/codex-types/v2/ThreadRollbackResponse.ts +0 -14
  507. package/services/mac-bridge/codex-types/v2/ThreadSetNameParams.ts +0 -5
  508. package/services/mac-bridge/codex-types/v2/ThreadSetNameResponse.ts +0 -5
  509. package/services/mac-bridge/codex-types/v2/ThreadSortKey.ts +0 -5
  510. package/services/mac-bridge/codex-types/v2/ThreadSourceKind.ts +0 -5
  511. package/services/mac-bridge/codex-types/v2/ThreadStartParams.ts +0 -17
  512. package/services/mac-bridge/codex-types/v2/ThreadStartResponse.ts +0 -9
  513. package/services/mac-bridge/codex-types/v2/ThreadStartedNotification.ts +0 -6
  514. package/services/mac-bridge/codex-types/v2/ThreadTokenUsage.ts +0 -6
  515. package/services/mac-bridge/codex-types/v2/ThreadTokenUsageUpdatedNotification.ts +0 -6
  516. package/services/mac-bridge/codex-types/v2/ThreadUnarchiveParams.ts +0 -5
  517. package/services/mac-bridge/codex-types/v2/ThreadUnarchiveResponse.ts +0 -6
  518. package/services/mac-bridge/codex-types/v2/ThreadUnarchivedNotification.ts +0 -5
  519. package/services/mac-bridge/codex-types/v2/TokenUsageBreakdown.ts +0 -5
  520. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputAnswer.ts +0 -8
  521. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputOption.ts +0 -8
  522. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputParams.ts +0 -9
  523. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputQuestion.ts +0 -9
  524. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputResponse.ts +0 -9
  525. package/services/mac-bridge/codex-types/v2/ToolsV2.ts +0 -5
  526. package/services/mac-bridge/codex-types/v2/Turn.ts +0 -18
  527. package/services/mac-bridge/codex-types/v2/TurnCompletedNotification.ts +0 -6
  528. package/services/mac-bridge/codex-types/v2/TurnDiffUpdatedNotification.ts +0 -9
  529. package/services/mac-bridge/codex-types/v2/TurnError.ts +0 -6
  530. package/services/mac-bridge/codex-types/v2/TurnInterruptParams.ts +0 -5
  531. package/services/mac-bridge/codex-types/v2/TurnInterruptResponse.ts +0 -5
  532. package/services/mac-bridge/codex-types/v2/TurnPlanStep.ts +0 -6
  533. package/services/mac-bridge/codex-types/v2/TurnPlanStepStatus.ts +0 -5
  534. package/services/mac-bridge/codex-types/v2/TurnPlanUpdatedNotification.ts +0 -6
  535. package/services/mac-bridge/codex-types/v2/TurnStartParams.ts +0 -44
  536. package/services/mac-bridge/codex-types/v2/TurnStartResponse.ts +0 -6
  537. package/services/mac-bridge/codex-types/v2/TurnStartedNotification.ts +0 -6
  538. package/services/mac-bridge/codex-types/v2/TurnStatus.ts +0 -5
  539. package/services/mac-bridge/codex-types/v2/TurnSteerParams.ts +0 -11
  540. package/services/mac-bridge/codex-types/v2/TurnSteerResponse.ts +0 -5
  541. package/services/mac-bridge/codex-types/v2/UserInput.ts +0 -10
  542. package/services/mac-bridge/codex-types/v2/WebSearchAction.ts +0 -5
  543. package/services/mac-bridge/codex-types/v2/WindowsWorldWritableWarningNotification.ts +0 -5
  544. package/services/mac-bridge/codex-types/v2/WriteStatus.ts +0 -5
  545. package/services/mac-bridge/codex-types/v2/index.ts +0 -204
  546. package/services/mac-bridge/eslint.config.cjs +0 -22
  547. package/services/mac-bridge/package.json +0 -30
  548. package/services/mac-bridge/schema.ts +0 -0
  549. package/services/mac-bridge/src/index.ts +0 -18
  550. package/services/mac-bridge/src/server.ts +0 -426
  551. package/services/mac-bridge/src/services/__tests__/gitService.test.ts +0 -157
  552. package/services/mac-bridge/src/services/__tests__/realtimeHub.test.ts +0 -116
  553. package/services/mac-bridge/src/services/__tests__/terminalService.test.ts +0 -51
  554. package/services/mac-bridge/src/services/codexAppServerClient.ts +0 -507
  555. package/services/mac-bridge/src/services/codexCliAdapter.ts +0 -622
  556. package/services/mac-bridge/src/services/gitService.ts +0 -61
  557. package/services/mac-bridge/src/services/realtimeHub.ts +0 -25
  558. package/services/mac-bridge/src/services/terminalService.ts +0 -226
  559. package/services/mac-bridge/src/types.ts +0 -151
  560. package/services/mac-bridge/src/utils/__tests__/threadMapping.test.ts +0 -397
  561. package/services/mac-bridge/src/utils/threadMapping.ts +0 -176
  562. package/services/mac-bridge/tsconfig.json +0 -16
  563. package/services/mac-bridge/vitest.config.ts +0 -9
  564. package/services/rust-bridge/.env.example +0 -14
  565. package/services/rust-bridge/package.json +0 -13
  566. package/services/rust-bridge/security_best_practices_report.md +0 -24
  567. package/site/index.html +0 -54
  568. package/site/privacy/index.html +0 -80
  569. package/site/styles.css +0 -135
  570. package/site/support/index.html +0 -51
  571. package/site/terms/index.html +0 -68
  572. package/tsconfig.json +0 -4
@@ -1,1048 +0,0 @@
1
- import type {
2
- Chat,
3
- ChatMessage,
4
- ChatMessageSubAgentMeta,
5
- ChatPlanSnapshot,
6
- ChatStatus,
7
- ChatSummary,
8
- TurnPlanStep,
9
- } from './types';
10
-
11
- export type RawThreadStatus =
12
- | { type?: string }
13
- | string
14
- | null
15
- | undefined;
16
-
17
- export interface RawTurn {
18
- id?: string;
19
- status?: string;
20
- error?: {
21
- message?: string;
22
- } | null;
23
- items?: RawThreadItem[];
24
- }
25
-
26
- export type RawThreadItem =
27
- | {
28
- type?: 'userMessage';
29
- id?: string;
30
- content?: Array<{ type?: string; text?: string; path?: string; url?: string }>;
31
- }
32
- | {
33
- type?: 'agentMessage';
34
- id?: string;
35
- text?: string;
36
- }
37
- | {
38
- type?: string;
39
- id?: string;
40
- text?: string;
41
- };
42
-
43
- export interface RawThread {
44
- id?: string;
45
- name?: string;
46
- title?: string;
47
- preview?: string;
48
- modelProvider?: string;
49
- agentNickname?: string;
50
- agentRole?: string;
51
- createdAt?: number;
52
- updatedAt?: number;
53
- status?: RawThreadStatus;
54
- cwd?: string;
55
- source?: unknown;
56
- turns?: RawTurn[];
57
- }
58
-
59
- interface ThreadSourceMetadata {
60
- kind?: string;
61
- parentThreadId?: string;
62
- subAgentDepth?: number;
63
- }
64
-
65
- export function toRecord(value: unknown): Record<string, unknown> | null {
66
- return typeof value === 'object' && value !== null
67
- ? (value as Record<string, unknown>)
68
- : null;
69
- }
70
-
71
- export function readString(value: unknown): string | null {
72
- return typeof value === 'string' ? value : null;
73
- }
74
-
75
- function readStringArray(value: unknown): string[] {
76
- if (!Array.isArray(value)) {
77
- return [];
78
- }
79
-
80
- return value
81
- .map((entry) => readString(entry)?.trim() ?? '')
82
- .filter((entry): entry is string => entry.length > 0);
83
- }
84
-
85
- function readNumber(value: unknown): number | null {
86
- return typeof value === 'number' && Number.isFinite(value) ? value : null;
87
- }
88
-
89
- export function toPreview(value: string): string {
90
- const collapsed = value.replace(/\s+/g, ' ').trim();
91
- if (collapsed.length <= 180) {
92
- return collapsed;
93
- }
94
-
95
- return `${collapsed.slice(0, 177)}...`;
96
- }
97
-
98
- function unixSecondsToIso(value: number | undefined): string {
99
- if (typeof value !== 'number' || !Number.isFinite(value)) {
100
- return new Date().toISOString();
101
- }
102
-
103
- return new Date(value * 1000).toISOString();
104
- }
105
-
106
- function normalizeLifecycleStatus(value: string | null | undefined): string | null {
107
- if (!value) {
108
- return null;
109
- }
110
-
111
- const normalized = value.trim().toLowerCase().replace(/[^a-z0-9]/g, '');
112
- return normalized.length > 0 ? normalized : null;
113
- }
114
-
115
- function mapRawStatus(status: unknown, turns: RawTurn[] | undefined): ChatStatus {
116
- const statusRecord = toRecord(status);
117
- const statusType = normalizeLifecycleStatus(
118
- readString(statusRecord?.type) ?? readString(status)
119
- );
120
- const hasTurns = Array.isArray(turns) && turns.length > 0;
121
- const lastTurn = hasTurns ? turns[turns.length - 1] : null;
122
- const lastTurnStatus = normalizeLifecycleStatus(readString(lastTurn?.status));
123
- const isIdleLikeStatus = statusType === 'idle' || statusType === 'notloaded';
124
-
125
- if (
126
- lastTurnStatus === 'inprogress' ||
127
- lastTurnStatus === 'running' ||
128
- lastTurnStatus === 'active' ||
129
- lastTurnStatus === 'queued' ||
130
- lastTurnStatus === 'pending'
131
- ) {
132
- // Some thread/read payloads can return stale turn state while the thread
133
- // itself is already idle/notLoaded. Prefer the thread lifecycle in that case.
134
- if (isIdleLikeStatus) {
135
- return hasTurns ? 'complete' : 'idle';
136
- }
137
- return 'running';
138
- }
139
-
140
- if (
141
- lastTurnStatus === 'failed' ||
142
- lastTurnStatus === 'interrupted' ||
143
- lastTurnStatus === 'error' ||
144
- lastTurnStatus === 'aborted'
145
- ) {
146
- return 'error';
147
- }
148
-
149
- if (
150
- lastTurnStatus === 'completed' ||
151
- lastTurnStatus === 'complete' ||
152
- lastTurnStatus === 'success' ||
153
- lastTurnStatus === 'succeeded'
154
- ) {
155
- return 'complete';
156
- }
157
-
158
- if (
159
- statusType === 'systemerror' ||
160
- statusType === 'error' ||
161
- statusType === 'failed'
162
- ) {
163
- return 'error';
164
- }
165
-
166
- if (
167
- statusType === 'running' ||
168
- statusType === 'inprogress' ||
169
- statusType === 'queued' ||
170
- statusType === 'pending'
171
- ) {
172
- return 'running';
173
- }
174
-
175
- if (statusType === 'active') {
176
- // Some backends keep a thread "active" while loaded in memory even when no
177
- // turn is running. If there is no in-progress turn, avoid false "working" UI.
178
- return hasTurns ? 'complete' : 'idle';
179
- }
180
-
181
- if (isIdleLikeStatus) {
182
- return hasTurns ? 'complete' : 'idle';
183
- }
184
-
185
- return 'idle';
186
- }
187
-
188
- function extractLastError(turns: RawTurn[]): string | null {
189
- for (let i = turns.length - 1; i >= 0; i -= 1) {
190
- const turn = turns[i];
191
- const turnStatus = readString(turn.status);
192
- if (turnStatus !== 'failed' && turnStatus !== 'interrupted') {
193
- continue;
194
- }
195
-
196
- const message = readString(turn.error?.message);
197
- if (message) {
198
- return message;
199
- }
200
-
201
- return `turn ${turnStatus}`;
202
- }
203
-
204
- return null;
205
- }
206
-
207
- export function toRawThread(value: unknown): RawThread {
208
- const record = toRecord(value) ?? {};
209
- const threadName =
210
- readString(record.name) ??
211
- readString(record.title) ??
212
- readString(record.threadName) ??
213
- readString(record.thread_name) ??
214
- undefined;
215
- return {
216
- id: readString(record.id) ?? undefined,
217
- name: threadName,
218
- title: threadName,
219
- preview: readString(record.preview) ?? undefined,
220
- modelProvider: readString(record.modelProvider) ?? undefined,
221
- agentNickname:
222
- readString(record.agentNickname) ??
223
- readString(record.agent_nickname) ??
224
- undefined,
225
- agentRole:
226
- readString(record.agentRole) ??
227
- readString(record.agent_role) ??
228
- undefined,
229
- createdAt: readNumber(record.createdAt) ?? undefined,
230
- updatedAt: readNumber(record.updatedAt) ?? undefined,
231
- status: (record.status as RawThreadStatus) ?? undefined,
232
- cwd: readString(record.cwd) ?? undefined,
233
- source: record.source,
234
- turns: Array.isArray(record.turns)
235
- ? (record.turns.map((turn) => toRawTurn(turn)).filter(Boolean) as RawTurn[])
236
- : undefined,
237
- };
238
- }
239
-
240
- function toRawTurn(value: unknown): RawTurn | null {
241
- const record = toRecord(value);
242
- if (!record) {
243
- return null;
244
- }
245
-
246
- const items = Array.isArray(record.items)
247
- ? (record.items
248
- .map((item) => toRecord(item))
249
- .filter((item): item is RawThreadItem => item !== null) as RawThreadItem[])
250
- : undefined;
251
-
252
- return {
253
- id: readString(record.id) ?? undefined,
254
- status: readString(record.status) ?? undefined,
255
- error: toRecord(record.error) as { message?: string } | null,
256
- items,
257
- };
258
- }
259
-
260
- export function mapChatSummary(raw: RawThread): ChatSummary | null {
261
- if (!raw.id) {
262
- return null;
263
- }
264
-
265
- const createdAt = unixSecondsToIso(raw.createdAt);
266
- const updatedAt = unixSecondsToIso(raw.updatedAt);
267
- const turns = Array.isArray(raw.turns) ? raw.turns : [];
268
- const sourceMetadata = readThreadSourceMetadata(raw.source);
269
-
270
- const lastError = extractLastError(turns);
271
- const displayTitle = raw.name ?? raw.preview;
272
-
273
- return {
274
- id: raw.id,
275
- title: toPreview(displayTitle || `Chat ${raw.id.slice(0, 8)}`),
276
- status: mapRawStatus(raw.status, turns),
277
- createdAt,
278
- updatedAt,
279
- statusUpdatedAt: updatedAt,
280
- lastMessagePreview: toPreview(raw.preview || ''),
281
- cwd: readString(raw.cwd) ?? undefined,
282
- modelProvider: readString(raw.modelProvider) ?? undefined,
283
- agentNickname: readString(raw.agentNickname) ?? undefined,
284
- agentRole: readString(raw.agentRole) ?? undefined,
285
- sourceKind: sourceMetadata.kind,
286
- parentThreadId: sourceMetadata.parentThreadId,
287
- subAgentDepth: sourceMetadata.subAgentDepth,
288
- lastError: lastError ?? undefined,
289
- };
290
- }
291
-
292
- function readThreadSourceMetadata(source: unknown): ThreadSourceMetadata {
293
- if (typeof source === 'string') {
294
- return {
295
- kind: source,
296
- };
297
- }
298
-
299
- const sourceRecord = toRecord(source);
300
- if (!sourceRecord) {
301
- return {};
302
- }
303
-
304
- // Legacy shape used by older adapters.
305
- const legacyKind = readString(sourceRecord.kind);
306
- if (legacyKind) {
307
- return {
308
- kind: legacyKind,
309
- parentThreadId:
310
- readString(sourceRecord.parentThreadId) ??
311
- readString(sourceRecord.parent_thread_id) ??
312
- undefined,
313
- subAgentDepth:
314
- readNumber(sourceRecord.depth) ??
315
- readNumber(sourceRecord.agentDepth) ??
316
- readNumber(sourceRecord.agent_depth) ??
317
- undefined,
318
- };
319
- }
320
-
321
- // Current app-server shape: { subAgent: ... } tagged union.
322
- const subAgentValue =
323
- sourceRecord.subAgent ??
324
- sourceRecord.subagent;
325
-
326
- if (subAgentValue !== undefined) {
327
- const subAgent = subAgentValue;
328
- if (typeof subAgent === 'string') {
329
- const kind =
330
- subAgent === 'review'
331
- ? 'subAgentReview'
332
- : subAgent === 'compact'
333
- ? 'subAgentCompact'
334
- : subAgent === 'memory_consolidation'
335
- ? 'subAgentOther'
336
- : 'subAgent';
337
- return {
338
- kind,
339
- };
340
- }
341
-
342
- const subAgentRecord = toRecord(subAgent);
343
- if (!subAgentRecord) {
344
- return {
345
- kind: 'subAgent',
346
- };
347
- }
348
-
349
- const threadSpawn = toRecord(subAgentRecord.thread_spawn);
350
- if (threadSpawn) {
351
- return {
352
- kind: 'subAgentThreadSpawn',
353
- parentThreadId:
354
- readString(threadSpawn.parentThreadId) ??
355
- readString(threadSpawn.parent_thread_id) ??
356
- undefined,
357
- subAgentDepth:
358
- readNumber(threadSpawn.depth) ??
359
- readNumber(threadSpawn.agentDepth) ??
360
- readNumber(threadSpawn.agent_depth) ??
361
- undefined,
362
- };
363
- }
364
-
365
- if (readString(subAgentRecord.other)) {
366
- return {
367
- kind: 'subAgentOther',
368
- };
369
- }
370
-
371
- return {
372
- kind: 'subAgent',
373
- parentThreadId:
374
- readString(subAgentRecord.parentThreadId) ??
375
- readString(subAgentRecord.parent_thread_id) ??
376
- undefined,
377
- subAgentDepth:
378
- readNumber(subAgentRecord.depth) ??
379
- readNumber(subAgentRecord.agentDepth) ??
380
- readNumber(subAgentRecord.agent_depth) ??
381
- undefined,
382
- };
383
- }
384
-
385
- const typeKind = readString(sourceRecord.type);
386
- if (typeKind && typeKind.startsWith('subAgent')) {
387
- return {
388
- kind: typeKind,
389
- parentThreadId:
390
- readString(sourceRecord.parentThreadId) ??
391
- readString(sourceRecord.parent_thread_id) ??
392
- undefined,
393
- subAgentDepth:
394
- readNumber(sourceRecord.depth) ??
395
- readNumber(sourceRecord.agentDepth) ??
396
- readNumber(sourceRecord.agent_depth) ??
397
- undefined,
398
- };
399
- }
400
-
401
- return {};
402
- }
403
-
404
- export function mapChat(raw: RawThread): Chat {
405
- const summary = mapChatSummary(raw);
406
- if (!summary) {
407
- throw new Error('chat id missing in app-server response');
408
- }
409
-
410
- const messages = mapMessages(raw, summary.createdAt);
411
- const plans = extractChatPlans(raw);
412
-
413
- const lastPreview =
414
- messages.length > 0
415
- ? toPreview(messages[messages.length - 1].content)
416
- : summary.lastMessagePreview;
417
-
418
- return {
419
- ...summary,
420
- lastMessagePreview: lastPreview,
421
- messages,
422
- latestPlan: plans.latestPlan,
423
- latestTurnPlan: plans.latestTurnPlan,
424
- latestTurnStatus: plans.latestTurnStatus,
425
- };
426
- }
427
-
428
- function extractChatPlans(raw: RawThread): {
429
- latestPlan: ChatPlanSnapshot | null;
430
- latestTurnPlan: ChatPlanSnapshot | null;
431
- latestTurnStatus: string | null;
432
- } {
433
- const threadId = raw.id?.trim();
434
- const turns = Array.isArray(raw.turns) ? raw.turns : [];
435
- const latestTurn = turns.length > 0 ? turns[turns.length - 1] : null;
436
- const latestTurnStatus = readString(latestTurn?.status);
437
-
438
- if (!threadId || turns.length === 0) {
439
- return {
440
- latestPlan: null,
441
- latestTurnPlan: null,
442
- latestTurnStatus,
443
- };
444
- }
445
-
446
- let latestPlan: ChatPlanSnapshot | null = null;
447
- let latestTurnPlan: ChatPlanSnapshot | null = null;
448
-
449
- for (const turn of turns) {
450
- const turnId = readString(turn.id);
451
- const items = Array.isArray(turn.items) ? turn.items : [];
452
- let latestPlanInTurn: ChatPlanSnapshot | null = null;
453
-
454
- for (const item of items) {
455
- const itemRecord = toRecord(item);
456
- if (!itemRecord) {
457
- continue;
458
- }
459
-
460
- const itemType = normalizeType(readString(itemRecord.type) ?? '');
461
- if (itemType !== 'plan') {
462
- continue;
463
- }
464
-
465
- const plan = toPlanSnapshot(itemRecord, threadId, turnId);
466
- if (!plan) {
467
- continue;
468
- }
469
-
470
- latestPlan = plan;
471
- latestPlanInTurn = plan;
472
- }
473
-
474
- if (turn === latestTurn) {
475
- latestTurnPlan = latestPlanInTurn;
476
- }
477
- }
478
-
479
- return {
480
- latestPlan,
481
- latestTurnPlan,
482
- latestTurnStatus,
483
- };
484
- }
485
-
486
- function mapMessages(raw: RawThread, fallbackCreatedAt: string): ChatMessage[] {
487
- const turns = Array.isArray(raw.turns) ? raw.turns : [];
488
- if (turns.length === 0) {
489
- return [];
490
- }
491
-
492
- const baseTs = new Date(fallbackCreatedAt).getTime();
493
- const messages: ChatMessage[] = [];
494
-
495
- for (const turn of turns) {
496
- const items = Array.isArray(turn.items) ? turn.items : [];
497
- for (const item of items) {
498
- const itemRecord = toRecord(item);
499
- if (!itemRecord) {
500
- continue;
501
- }
502
-
503
- const itemType = readString(itemRecord.type);
504
-
505
- if (itemType === 'userMessage') {
506
- const contentItems = Array.isArray(itemRecord.content) ? itemRecord.content : [];
507
- const text = contentItems
508
- .map((entry: unknown) => {
509
- const entryRecord = toRecord(entry);
510
- if (!entryRecord) {
511
- return '';
512
- }
513
-
514
- const entryType = readString(entryRecord.type);
515
- if (entryType === 'text') {
516
- return readString(entryRecord.text) ?? '';
517
- }
518
-
519
- if (entryType === 'image') {
520
- return `[image: ${readString(entryRecord.url) ?? 'unknown'}]`;
521
- }
522
-
523
- if (entryType === 'localImage') {
524
- return `[local image: ${readString(entryRecord.path) ?? 'unknown'}]`;
525
- }
526
-
527
- if (entryType === 'mention') {
528
- const mentionPath = readString(entryRecord.path) ?? 'unknown';
529
- return `[file: ${mentionPath}]`;
530
- }
531
-
532
- return '';
533
- })
534
- .filter(Boolean)
535
- .join('\n');
536
-
537
- if (!text.trim()) {
538
- continue;
539
- }
540
-
541
- messages.push({
542
- id: readString(itemRecord.id) ?? generateLocalId(),
543
- role: 'user',
544
- content: text,
545
- createdAt: new Date(baseTs + messages.length * 1000).toISOString(),
546
- });
547
- continue;
548
- }
549
-
550
- if (itemType === 'agentMessage') {
551
- const text = readString(itemRecord.text) ?? '';
552
- if (!text.trim()) {
553
- continue;
554
- }
555
-
556
- messages.push({
557
- id: readString(itemRecord.id) ?? generateLocalId(),
558
- role: 'assistant',
559
- content: text,
560
- createdAt: new Date(baseTs + messages.length * 1000).toISOString(),
561
- });
562
- continue;
563
- }
564
-
565
- const toolLikeMessage = toToolLikeMessage(itemRecord);
566
- if (toolLikeMessage) {
567
- const systemKind = itemType === 'collabToolCall' ? 'subAgent' : 'tool';
568
- messages.push({
569
- id: readString(itemRecord.id) ?? generateLocalId(),
570
- role: 'system',
571
- content: toolLikeMessage,
572
- systemKind,
573
- subAgentMeta: systemKind === 'subAgent' ? toSubAgentMeta(itemRecord) : undefined,
574
- createdAt: new Date(baseTs + messages.length * 1000).toISOString(),
575
- });
576
- }
577
- }
578
- }
579
-
580
- return messages;
581
- }
582
-
583
- function generateLocalId(): string {
584
- return `msg-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
585
- }
586
-
587
- function toPlanSnapshot(
588
- item: Record<string, unknown>,
589
- threadId: string,
590
- fallbackTurnId?: string | null
591
- ): ChatPlanSnapshot | null {
592
- const turnId =
593
- readString(item.turnId) ??
594
- readString(item.turn_id) ??
595
- fallbackTurnId ??
596
- readString(item.id);
597
- if (!turnId) {
598
- return null;
599
- }
600
-
601
- const rawSteps = Array.isArray(item.plan)
602
- ? item.plan
603
- : Array.isArray(item.steps)
604
- ? item.steps
605
- : [];
606
- const steps: TurnPlanStep[] = rawSteps
607
- .map((entry) => {
608
- const entryRecord = toRecord(entry);
609
- if (!entryRecord) {
610
- return null;
611
- }
612
-
613
- const step = readString(entryRecord.step);
614
- const status = normalizePlanStepStatus(readString(entryRecord.status));
615
- if (!step || !status) {
616
- return null;
617
- }
618
-
619
- return {
620
- step,
621
- status,
622
- } satisfies TurnPlanStep;
623
- })
624
- .filter((entry): entry is TurnPlanStep => entry !== null);
625
- const explanation = readString(item.explanation);
626
-
627
- if (steps.length === 0 && !explanation?.trim()) {
628
- return parsePlanTextSnapshot(readString(item.text), threadId, turnId);
629
- }
630
-
631
- return {
632
- threadId,
633
- turnId,
634
- explanation,
635
- steps,
636
- };
637
- }
638
-
639
- function parsePlanTextSnapshot(
640
- text: string | null | undefined,
641
- threadId: string,
642
- turnId: string
643
- ): ChatPlanSnapshot | null {
644
- const trimmed = text?.trim();
645
- if (!trimmed) {
646
- return null;
647
- }
648
-
649
- const lines = trimmed
650
- .split(/\r?\n/)
651
- .map((line) => line.trim())
652
- .filter((line) => line.length > 0);
653
- if (lines.length === 0) {
654
- return null;
655
- }
656
-
657
- const hasSummaryHeader = lines.some((line) => /^summary$/i.test(line));
658
- const steps: TurnPlanStep[] = [];
659
- for (const line of lines) {
660
- const match = line.match(/^\d+[.)]\s+(.+)$/);
661
- if (!match?.[1]) {
662
- continue;
663
- }
664
-
665
- steps.push({
666
- step: match[1].trim(),
667
- status: 'pending',
668
- });
669
- }
670
-
671
- if (!hasSummaryHeader && steps.length === 0) {
672
- return null;
673
- }
674
-
675
- let startIndex = 0;
676
- if (lines.length > 1 && /plan$/i.test(lines[0])) {
677
- startIndex = 1;
678
- }
679
- if (lines[startIndex] && /^summary$/i.test(lines[startIndex])) {
680
- startIndex += 1;
681
- }
682
-
683
- const explanationLines: string[] = [];
684
- for (let index = startIndex; index < lines.length; index += 1) {
685
- const line = lines[index];
686
- if (/^\d+[.)]\s+/.test(line)) {
687
- break;
688
- }
689
- if (/^(summary|implementation plan|proposed plan)$/i.test(line)) {
690
- continue;
691
- }
692
- explanationLines.push(line);
693
- }
694
-
695
- const explanation =
696
- explanationLines.length > 0 ? explanationLines.join(' ').trim() : null;
697
-
698
- if (steps.length === 0 && !explanation) {
699
- return null;
700
- }
701
-
702
- return {
703
- threadId,
704
- turnId,
705
- explanation,
706
- steps,
707
- };
708
- }
709
-
710
- function normalizePlanStepStatus(value: string | null | undefined): TurnPlanStep['status'] | null {
711
- if (!value) {
712
- return null;
713
- }
714
-
715
- const normalized = value.trim().toLowerCase().replace(/[^a-z]/g, '');
716
- if (normalized === 'pending') {
717
- return 'pending';
718
- }
719
- if (normalized === 'inprogress') {
720
- return 'inProgress';
721
- }
722
- if (normalized === 'completed' || normalized === 'complete') {
723
- return 'completed';
724
- }
725
- return null;
726
- }
727
-
728
- function toToolLikeMessage(item: Record<string, unknown>): string | null {
729
- const rawType = readString(item.type);
730
- if (!rawType) {
731
- return null;
732
- }
733
-
734
- const type = normalizeType(rawType);
735
-
736
- if (type === 'plan') {
737
- const text = normalizeMultiline(readString(item.text), 1800);
738
- return text || null;
739
- }
740
-
741
- if (type === 'commandexecution') {
742
- const command = normalizeInline(readString(item.command), 240) ?? 'command';
743
- const status = normalizeType(readString(item.status) ?? '');
744
- const output =
745
- normalizeMultiline(readString(item.aggregatedOutput), 2400) ??
746
- normalizeMultiline(readString(item.aggregated_output), 2400);
747
- const exitCode = readNumber(item.exitCode) ?? readNumber(item.exit_code);
748
- const title =
749
- status === 'failed' || status === 'error'
750
- ? `• Command failed \`${command}\``
751
- : `• Ran \`${command}\``;
752
- const outputPreview = output ? toNestedOutput(output, 8, 1600) : null;
753
- const detail = outputPreview ?? (exitCode !== null ? `exit code ${String(exitCode)}` : null);
754
- return withNestedDetail(title, detail);
755
- }
756
-
757
- if (type === 'mcptoolcall') {
758
- const server = normalizeInline(readString(item.server), 120);
759
- const tool = normalizeInline(readString(item.tool), 120);
760
- const label = [server, tool].filter(Boolean).join(' / ') || 'MCP tool call';
761
- const status = normalizeType(readString(item.status) ?? '');
762
- const errorRecord = toRecord(item.error);
763
- const errorDetail =
764
- normalizeInline(readString(errorRecord?.message), 240) ??
765
- normalizeInline(readString(item.error), 240);
766
- const resultDetail = toStructuredPreview(item.result, 240);
767
- const detail =
768
- status === 'failed' || status === 'error'
769
- ? errorDetail ?? resultDetail
770
- : resultDetail;
771
- const title =
772
- status === 'failed' || status === 'error'
773
- ? `• Tool failed \`${label}\``
774
- : `• Called tool \`${label}\``;
775
- return withNestedDetail(title, detail);
776
- }
777
-
778
- if (type === 'collabtoolcall') {
779
- const tool = normalizeType(readString(item.tool) ?? '');
780
- const status = normalizeType(readString(item.status) ?? '');
781
- const prompt = normalizeInline(readString(item.prompt), 220);
782
- const receiverThreadIds = readReceiverThreadIds(item);
783
- const primaryReceiverThreadId = normalizeInline(receiverThreadIds[0], 120);
784
- const newThreadId = normalizeInline(
785
- readString(item.newThreadId) ??
786
- readString(item.new_thread_id) ??
787
- primaryReceiverThreadId,
788
- 120
789
- );
790
- const senderThreadId = normalizeInline(
791
- readString(item.senderThreadId) ?? readString(item.sender_thread_id),
792
- 120
793
- );
794
- const agentStatus = normalizeInline(
795
- readString(item.agentStatus) ?? readString(item.agent_status),
796
- 120
797
- );
798
-
799
- const title = (() => {
800
- if (tool === 'spawnagent') {
801
- if (status === 'failed' || status === 'error') {
802
- return '• Sub-agent spawn failed';
803
- }
804
- if (status === 'completed' || status === 'complete' || status === 'succeeded') {
805
- return '• Spawned sub-agent';
806
- }
807
- return '• Spawning sub-agent';
808
- }
809
-
810
- if (tool === 'sendinput') {
811
- return status === 'failed' || status === 'error'
812
- ? '• Sub-agent update failed'
813
- : '• Sent follow-up to sub-agent';
814
- }
815
-
816
- if (tool === 'wait') {
817
- return status === 'failed' || status === 'error'
818
- ? '• Waiting on sub-agent failed'
819
- : '• Waiting on sub-agent';
820
- }
821
-
822
- if (tool === 'closeagent') {
823
- return status === 'failed' || status === 'error'
824
- ? '• Closing sub-agent failed'
825
- : '• Closed sub-agent thread';
826
- }
827
-
828
- return status === 'failed' || status === 'error'
829
- ? '• Sub-agent action failed'
830
- : '• Updated sub-agent thread';
831
- })();
832
-
833
- const detailParts = [
834
- prompt ? `Prompt: ${prompt}` : null,
835
- newThreadId ? `Thread: ${newThreadId}` : null,
836
- primaryReceiverThreadId ? `Target: ${primaryReceiverThreadId}` : null,
837
- senderThreadId ? `From: ${senderThreadId}` : null,
838
- agentStatus ? `Status: ${agentStatus}` : null,
839
- ].filter(Boolean);
840
-
841
- return withNestedDetail(title, detailParts.join('\n') || null);
842
- }
843
-
844
- if (type === 'websearch') {
845
- const query = normalizeInline(readString(item.query), 180);
846
- const actionRecord = toRecord(item.action);
847
- const actionType = normalizeType(readString(actionRecord?.type) ?? '');
848
- let detail: string | null = query;
849
-
850
- if (actionType === 'openpage') {
851
- detail = normalizeInline(readString(actionRecord?.url), 240) ?? detail;
852
- } else if (actionType === 'findinpage') {
853
- const url = normalizeInline(readString(actionRecord?.url), 180);
854
- const pattern = normalizeInline(readString(actionRecord?.pattern), 120);
855
- detail = [url, pattern ? `pattern: ${pattern}` : null].filter(Boolean).join(' | ') || detail;
856
- }
857
-
858
- const title = query ? `• Searched web for "${query}"` : '• Searched web';
859
- return withNestedDetail(title, detail && detail !== query ? detail : null);
860
- }
861
-
862
- if (type === 'filechange') {
863
- const status = normalizeType(readString(item.status) ?? '');
864
- const changeCount = Array.isArray(item.changes) ? item.changes.length : 0;
865
- const detail =
866
- changeCount > 0
867
- ? `${String(changeCount)} file${changeCount === 1 ? '' : 's'} changed`
868
- : null;
869
- const title =
870
- status === 'failed' || status === 'error'
871
- ? '• File changes failed'
872
- : '• Applied file changes';
873
- return withNestedDetail(title, detail);
874
- }
875
-
876
- if (type === 'imageview') {
877
- const path = normalizeInline(readString(item.path), 220);
878
- if (!path) {
879
- return null;
880
- }
881
- return `• Viewed image\n └ ${path}`;
882
- }
883
-
884
- if (type === 'enteredreviewmode') {
885
- return '• Entered review mode';
886
- }
887
-
888
- if (type === 'exitedreviewmode') {
889
- return '• Exited review mode';
890
- }
891
-
892
- if (type === 'contextcompaction') {
893
- return '• Compacted conversation context';
894
- }
895
-
896
- return null;
897
- }
898
-
899
- function toSubAgentMeta(item: Record<string, unknown>): ChatMessageSubAgentMeta | undefined {
900
- const tool = readString(item.tool) ?? undefined;
901
- const prompt = normalizeInline(readString(item.prompt), 4000) ?? undefined;
902
- const senderThreadId =
903
- normalizeInline(
904
- readString(item.senderThreadId) ?? readString(item.sender_thread_id),
905
- 200
906
- ) ?? undefined;
907
- const agentStatus =
908
- normalizeInline(
909
- readString(item.agentStatus) ?? readString(item.agent_status),
910
- 200
911
- ) ?? undefined;
912
- const receiverThreadIds = readReceiverThreadIds(item);
913
-
914
- if (!tool && !prompt && !senderThreadId && receiverThreadIds.length === 0 && !agentStatus) {
915
- return undefined;
916
- }
917
-
918
- return {
919
- tool,
920
- prompt,
921
- senderThreadId,
922
- receiverThreadIds,
923
- agentStatus,
924
- };
925
- }
926
-
927
- function readReceiverThreadIds(item: Record<string, unknown>): string[] {
928
- const pluralIds = [
929
- ...readStringArray(item.receiverThreadIds),
930
- ...readStringArray(item.receiver_thread_ids),
931
- ];
932
- if (pluralIds.length > 0) {
933
- return Array.from(new Set(pluralIds));
934
- }
935
-
936
- const singularIds = [
937
- readString(item.newThreadId),
938
- readString(item.new_thread_id),
939
- readString(item.receiverThreadId),
940
- readString(item.receiver_thread_id),
941
- ]
942
- .map((value) => value?.trim() ?? '')
943
- .filter((value): value is string => value.length > 0);
944
-
945
- return singularIds;
946
- }
947
-
948
- function normalizeType(value: string): string {
949
- return value.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
950
- }
951
-
952
- function normalizeInline(value: string | null, maxChars: number): string | null {
953
- if (!value) {
954
- return null;
955
- }
956
-
957
- const cleaned = value.replace(/\s+/g, ' ').trim();
958
- if (!cleaned) {
959
- return null;
960
- }
961
-
962
- if (cleaned.length <= maxChars) {
963
- return cleaned;
964
- }
965
-
966
- return `${cleaned.slice(0, Math.max(1, maxChars - 1))}…`;
967
- }
968
-
969
- function normalizeMultiline(value: string | null, maxChars: number): string | null {
970
- if (!value) {
971
- return null;
972
- }
973
-
974
- const cleaned = value
975
- .replace(/\u001b\[[0-9;]*[A-Za-z]/g, '')
976
- .replace(/\r\n/g, '\n')
977
- .trim();
978
- if (!cleaned) {
979
- return null;
980
- }
981
-
982
- if (cleaned.length <= maxChars) {
983
- return cleaned;
984
- }
985
-
986
- return `${cleaned.slice(0, Math.max(1, maxChars - 1))}…`;
987
- }
988
-
989
- function toNestedOutput(
990
- value: string,
991
- maxLines: number,
992
- maxChars: number
993
- ): string | null {
994
- const normalized = normalizeMultiline(value, maxChars);
995
- if (!normalized) {
996
- return null;
997
- }
998
-
999
- const lines = normalized
1000
- .split('\n')
1001
- .map((line) => line.trimEnd())
1002
- .filter((line) => line.trim().length > 0);
1003
- if (lines.length === 0) {
1004
- return null;
1005
- }
1006
-
1007
- const limited = lines.slice(0, maxLines);
1008
- return limited.join('\n');
1009
- }
1010
-
1011
- function withNestedDetail(title: string, detail: string | null): string {
1012
- if (!detail) {
1013
- return title;
1014
- }
1015
-
1016
- const lines = detail
1017
- .split('\n')
1018
- .map((line) => line.trimEnd())
1019
- .filter((line) => line.trim().length > 0);
1020
- if (lines.length === 0) {
1021
- return title;
1022
- }
1023
-
1024
- const first = ` └ ${lines[0]}`;
1025
- if (lines.length === 1) {
1026
- return `${title}\n${first}`;
1027
- }
1028
-
1029
- const rest = lines.slice(1).map((line) => ` ${line}`);
1030
- return [title, first, ...rest].join('\n');
1031
- }
1032
-
1033
- function toStructuredPreview(value: unknown, maxChars: number): string | null {
1034
- if (value == null) {
1035
- return null;
1036
- }
1037
-
1038
- if (typeof value === 'string') {
1039
- return normalizeInline(value, maxChars);
1040
- }
1041
-
1042
- try {
1043
- const serialized = JSON.stringify(value);
1044
- return normalizeInline(serialized, maxChars);
1045
- } catch {
1046
- return null;
1047
- }
1048
- }