clawdex-mobile 5.0.1 → 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 (576) 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/vendor/bridge-binaries/darwin-x64/codex-rust-bridge +0 -0
  10. package/vendor/bridge-binaries/linux-x64/codex-rust-bridge +0 -0
  11. package/vendor/bridge-binaries/win32-x64/codex-rust-bridge.exe +0 -0
  12. package/.artifacts/bridge-binaries/bridge-binaries-darwin-arm64/codex-rust-bridge +0 -0
  13. package/.artifacts/bridge-binaries/bridge-binaries-darwin-x64/codex-rust-bridge +0 -0
  14. package/.artifacts/bridge-binaries/bridge-binaries-linux-x64/codex-rust-bridge +0 -0
  15. package/.artifacts/bridge-binaries/bridge-binaries-win32-x64/codex-rust-bridge.exe +0 -0
  16. package/.github/workflows/ci.yml +0 -80
  17. package/.github/workflows/npm-release.yml +0 -208
  18. package/.github/workflows/pages.yml +0 -41
  19. package/AGENTS.md +0 -273
  20. package/STATUS.md +0 -115
  21. package/apps/mobile/.env.example +0 -6
  22. package/apps/mobile/App.tsx +0 -943
  23. package/apps/mobile/app.json +0 -77
  24. package/apps/mobile/assets/brand/adaptive-icon.png +0 -0
  25. package/apps/mobile/assets/brand/app-icon.png +0 -0
  26. package/apps/mobile/assets/brand/favicon.png +0 -0
  27. package/apps/mobile/assets/brand/mark.png +0 -0
  28. package/apps/mobile/assets/brand/splash-icon-white.png +0 -0
  29. package/apps/mobile/assets/brand/splash-icon.png +0 -0
  30. package/apps/mobile/babel.config.js +0 -7
  31. package/apps/mobile/eas.json +0 -40
  32. package/apps/mobile/eslint.config.cjs +0 -28
  33. package/apps/mobile/index.js +0 -5
  34. package/apps/mobile/package.json +0 -57
  35. package/apps/mobile/plugins/withAndroidCleartextTraffic.js +0 -14
  36. package/apps/mobile/src/api/__tests__/chatMapping.test.ts +0 -351
  37. package/apps/mobile/src/api/__tests__/client.test.ts +0 -1494
  38. package/apps/mobile/src/api/__tests__/ws.test.ts +0 -640
  39. package/apps/mobile/src/api/account.ts +0 -47
  40. package/apps/mobile/src/api/chatMapping.ts +0 -1048
  41. package/apps/mobile/src/api/client.ts +0 -1430
  42. package/apps/mobile/src/api/rateLimits.ts +0 -143
  43. package/apps/mobile/src/api/types.ts +0 -435
  44. package/apps/mobile/src/api/ws.ts +0 -852
  45. package/apps/mobile/src/bridgeUrl.ts +0 -105
  46. package/apps/mobile/src/components/ActivityBar.tsx +0 -95
  47. package/apps/mobile/src/components/ApprovalBanner.tsx +0 -207
  48. package/apps/mobile/src/components/BrandMark.tsx +0 -43
  49. package/apps/mobile/src/components/ChatHeader.tsx +0 -107
  50. package/apps/mobile/src/components/ChatInput.tsx +0 -457
  51. package/apps/mobile/src/components/ChatMessage.tsx +0 -959
  52. package/apps/mobile/src/components/ComposerUsageLimits.tsx +0 -167
  53. package/apps/mobile/src/components/SelectionSheet.tsx +0 -466
  54. package/apps/mobile/src/components/StatusLine.tsx +0 -52
  55. package/apps/mobile/src/components/ToolBlock.tsx +0 -67
  56. package/apps/mobile/src/components/TypingIndicator.tsx +0 -64
  57. package/apps/mobile/src/components/VoiceRecordingWaveform.tsx +0 -181
  58. package/apps/mobile/src/components/WorkspacePickerModal.tsx +0 -812
  59. package/apps/mobile/src/components/__tests__/chat-input-layout.test.ts +0 -35
  60. package/apps/mobile/src/components/__tests__/chatImageSource.test.ts +0 -44
  61. package/apps/mobile/src/components/__tests__/composerUsageLimits.test.ts +0 -138
  62. package/apps/mobile/src/components/__tests__/voiceWaveform.test.ts +0 -31
  63. package/apps/mobile/src/components/chat-input-layout.ts +0 -59
  64. package/apps/mobile/src/components/chatImageSource.ts +0 -86
  65. package/apps/mobile/src/components/usageLimitBadges.ts +0 -109
  66. package/apps/mobile/src/components/voiceWaveform.ts +0 -46
  67. package/apps/mobile/src/config.ts +0 -64
  68. package/apps/mobile/src/hooks/useVoiceRecorder.ts +0 -271
  69. package/apps/mobile/src/navigation/DrawerContent.tsx +0 -1129
  70. package/apps/mobile/src/navigation/__tests__/chatThreadTree.test.ts +0 -89
  71. package/apps/mobile/src/navigation/__tests__/drawerChats.test.ts +0 -65
  72. package/apps/mobile/src/navigation/chatThreadTree.ts +0 -191
  73. package/apps/mobile/src/navigation/drawerChats.ts +0 -9
  74. package/apps/mobile/src/screens/GitScreen.tsx +0 -1489
  75. package/apps/mobile/src/screens/MainScreen.tsx +0 -10511
  76. package/apps/mobile/src/screens/OnboardingScreen.tsx +0 -1746
  77. package/apps/mobile/src/screens/PrivacyScreen.tsx +0 -196
  78. package/apps/mobile/src/screens/SettingsScreen.tsx +0 -870
  79. package/apps/mobile/src/screens/TerminalScreen.tsx +0 -248
  80. package/apps/mobile/src/screens/TermsScreen.tsx +0 -192
  81. package/apps/mobile/src/screens/__tests__/agentThreadDisplay.test.ts +0 -80
  82. package/apps/mobile/src/screens/__tests__/agentThreads.test.ts +0 -170
  83. package/apps/mobile/src/screens/__tests__/gitDiff.test.ts +0 -131
  84. package/apps/mobile/src/screens/__tests__/planCardState.test.ts +0 -88
  85. package/apps/mobile/src/screens/__tests__/subAgentTranscript.test.ts +0 -102
  86. package/apps/mobile/src/screens/__tests__/transcriptMessages.test.ts +0 -97
  87. package/apps/mobile/src/screens/agentThreadDisplay.ts +0 -261
  88. package/apps/mobile/src/screens/agentThreads.ts +0 -167
  89. package/apps/mobile/src/screens/gitDiff.ts +0 -380
  90. package/apps/mobile/src/screens/planCardState.ts +0 -40
  91. package/apps/mobile/src/screens/subAgentTranscript.ts +0 -149
  92. package/apps/mobile/src/screens/transcriptMessages.ts +0 -102
  93. package/apps/mobile/src/theme.ts +0 -106
  94. package/apps/mobile/src/types/assets.d.ts +0 -4
  95. package/apps/mobile/tsconfig.json +0 -33
  96. package/docs/app-review-notes.md +0 -116
  97. package/docs/codex-app-server-cli-gap-tracker.md +0 -90
  98. package/docs/eas-builds.md +0 -91
  99. package/docs/open-source-license-requirements.md +0 -32
  100. package/docs/plans/2026-02-20-codex-desktop-style-redesign.md +0 -190
  101. package/docs/plans/2026-02-20-codex-mobile-implementation.md +0 -1630
  102. package/docs/plans/2026-02-21-codex-ui-redesign-design.md +0 -101
  103. package/docs/plans/2026-02-21-codex-ui-redesign.md +0 -1229
  104. package/docs/privacy-policy.md +0 -54
  105. package/docs/realtime-streaming-limitations.md +0 -161
  106. package/docs/terms-of-service.md +0 -33
  107. package/docs/voice-transcription.md +0 -87
  108. package/scripts/codex-live-demo.sh +0 -69
  109. package/scripts/start-bridge-secure.sh +0 -5
  110. package/scripts/start-expo.sh +0 -176
  111. package/scripts/sync-versions.js +0 -63
  112. package/scripts/teardown.sh +0 -136
  113. package/services/mac-bridge/.env.example +0 -10
  114. package/services/mac-bridge/codex-types/AbsolutePathBuf.ts +0 -14
  115. package/services/mac-bridge/codex-types/AddConversationListenerParams.ts +0 -6
  116. package/services/mac-bridge/codex-types/AddConversationSubscriptionResponse.ts +0 -5
  117. package/services/mac-bridge/codex-types/AgentMessageContent.ts +0 -5
  118. package/services/mac-bridge/codex-types/AgentMessageContentDeltaEvent.ts +0 -5
  119. package/services/mac-bridge/codex-types/AgentMessageDeltaEvent.ts +0 -5
  120. package/services/mac-bridge/codex-types/AgentMessageEvent.ts +0 -5
  121. package/services/mac-bridge/codex-types/AgentMessageItem.ts +0 -21
  122. package/services/mac-bridge/codex-types/AgentReasoningDeltaEvent.ts +0 -5
  123. package/services/mac-bridge/codex-types/AgentReasoningEvent.ts +0 -5
  124. package/services/mac-bridge/codex-types/AgentReasoningRawContentDeltaEvent.ts +0 -5
  125. package/services/mac-bridge/codex-types/AgentReasoningRawContentEvent.ts +0 -5
  126. package/services/mac-bridge/codex-types/AgentReasoningSectionBreakEvent.ts +0 -5
  127. package/services/mac-bridge/codex-types/AgentStatus.ts +0 -8
  128. package/services/mac-bridge/codex-types/ApplyPatchApprovalParams.ts +0 -21
  129. package/services/mac-bridge/codex-types/ApplyPatchApprovalRequestEvent.ts +0 -23
  130. package/services/mac-bridge/codex-types/ApplyPatchApprovalResponse.ts +0 -6
  131. package/services/mac-bridge/codex-types/ArchiveConversationParams.ts +0 -6
  132. package/services/mac-bridge/codex-types/ArchiveConversationResponse.ts +0 -5
  133. package/services/mac-bridge/codex-types/AskForApproval.ts +0 -9
  134. package/services/mac-bridge/codex-types/AuthMode.ts +0 -8
  135. package/services/mac-bridge/codex-types/AuthStatusChangeNotification.ts +0 -9
  136. package/services/mac-bridge/codex-types/BackgroundEventEvent.ts +0 -5
  137. package/services/mac-bridge/codex-types/ByteRange.ts +0 -13
  138. package/services/mac-bridge/codex-types/CallToolResult.ts +0 -9
  139. package/services/mac-bridge/codex-types/CancelLoginChatGptParams.ts +0 -5
  140. package/services/mac-bridge/codex-types/CancelLoginChatGptResponse.ts +0 -5
  141. package/services/mac-bridge/codex-types/ClientInfo.ts +0 -5
  142. package/services/mac-bridge/codex-types/ClientNotification.ts +0 -5
  143. package/services/mac-bridge/codex-types/ClientRequest.ts +0 -60
  144. package/services/mac-bridge/codex-types/CodexErrorInfo.ts +0 -8
  145. package/services/mac-bridge/codex-types/CollabAgentInteractionBeginEvent.ts +0 -23
  146. package/services/mac-bridge/codex-types/CollabAgentInteractionEndEvent.ts +0 -28
  147. package/services/mac-bridge/codex-types/CollabAgentSpawnBeginEvent.ts +0 -19
  148. package/services/mac-bridge/codex-types/CollabAgentSpawnEndEvent.ts +0 -28
  149. package/services/mac-bridge/codex-types/CollabCloseBeginEvent.ts +0 -18
  150. package/services/mac-bridge/codex-types/CollabCloseEndEvent.ts +0 -24
  151. package/services/mac-bridge/codex-types/CollabResumeBeginEvent.ts +0 -18
  152. package/services/mac-bridge/codex-types/CollabResumeEndEvent.ts +0 -24
  153. package/services/mac-bridge/codex-types/CollabWaitingBeginEvent.ts +0 -18
  154. package/services/mac-bridge/codex-types/CollabWaitingEndEvent.ts +0 -19
  155. package/services/mac-bridge/codex-types/CollaborationMode.ts +0 -10
  156. package/services/mac-bridge/codex-types/CollaborationModeMask.ts +0 -11
  157. package/services/mac-bridge/codex-types/ContentItem.ts +0 -5
  158. package/services/mac-bridge/codex-types/ContextCompactedEvent.ts +0 -5
  159. package/services/mac-bridge/codex-types/ContextCompactionItem.ts +0 -5
  160. package/services/mac-bridge/codex-types/ConversationGitInfo.ts +0 -5
  161. package/services/mac-bridge/codex-types/ConversationSummary.ts +0 -8
  162. package/services/mac-bridge/codex-types/CreditsSnapshot.ts +0 -5
  163. package/services/mac-bridge/codex-types/CustomPrompt.ts +0 -5
  164. package/services/mac-bridge/codex-types/DeprecationNoticeEvent.ts +0 -13
  165. package/services/mac-bridge/codex-types/DynamicToolCallRequest.ts +0 -6
  166. package/services/mac-bridge/codex-types/ElicitationRequestEvent.ts +0 -5
  167. package/services/mac-bridge/codex-types/ErrorEvent.ts +0 -6
  168. package/services/mac-bridge/codex-types/EventMsg.ts +0 -78
  169. package/services/mac-bridge/codex-types/ExecApprovalRequestEvent.ts +0 -44
  170. package/services/mac-bridge/codex-types/ExecCommandApprovalParams.ts +0 -16
  171. package/services/mac-bridge/codex-types/ExecCommandApprovalResponse.ts +0 -6
  172. package/services/mac-bridge/codex-types/ExecCommandBeginEvent.ts +0 -35
  173. package/services/mac-bridge/codex-types/ExecCommandEndEvent.ts +0 -64
  174. package/services/mac-bridge/codex-types/ExecCommandOutputDeltaEvent.ts +0 -18
  175. package/services/mac-bridge/codex-types/ExecCommandSource.ts +0 -5
  176. package/services/mac-bridge/codex-types/ExecCommandStatus.ts +0 -5
  177. package/services/mac-bridge/codex-types/ExecOneOffCommandParams.ts +0 -6
  178. package/services/mac-bridge/codex-types/ExecOneOffCommandResponse.ts +0 -5
  179. package/services/mac-bridge/codex-types/ExecOutputStream.ts +0 -5
  180. package/services/mac-bridge/codex-types/ExecPolicyAmendment.ts +0 -12
  181. package/services/mac-bridge/codex-types/ExitedReviewModeEvent.ts +0 -6
  182. package/services/mac-bridge/codex-types/FileChange.ts +0 -5
  183. package/services/mac-bridge/codex-types/ForcedLoginMethod.ts +0 -5
  184. package/services/mac-bridge/codex-types/ForkConversationParams.ts +0 -7
  185. package/services/mac-bridge/codex-types/ForkConversationResponse.ts +0 -7
  186. package/services/mac-bridge/codex-types/FunctionCallOutputBody.ts +0 -6
  187. package/services/mac-bridge/codex-types/FunctionCallOutputContentItem.ts +0 -9
  188. package/services/mac-bridge/codex-types/FunctionCallOutputPayload.ts +0 -12
  189. package/services/mac-bridge/codex-types/FuzzyFileSearchParams.ts +0 -5
  190. package/services/mac-bridge/codex-types/FuzzyFileSearchResponse.ts +0 -6
  191. package/services/mac-bridge/codex-types/FuzzyFileSearchResult.ts +0 -8
  192. package/services/mac-bridge/codex-types/FuzzyFileSearchSessionCompletedNotification.ts +0 -5
  193. package/services/mac-bridge/codex-types/FuzzyFileSearchSessionUpdatedNotification.ts +0 -6
  194. package/services/mac-bridge/codex-types/GetAuthStatusParams.ts +0 -5
  195. package/services/mac-bridge/codex-types/GetAuthStatusResponse.ts +0 -6
  196. package/services/mac-bridge/codex-types/GetConversationSummaryParams.ts +0 -6
  197. package/services/mac-bridge/codex-types/GetConversationSummaryResponse.ts +0 -6
  198. package/services/mac-bridge/codex-types/GetHistoryEntryResponseEvent.ts +0 -10
  199. package/services/mac-bridge/codex-types/GetUserAgentResponse.ts +0 -5
  200. package/services/mac-bridge/codex-types/GetUserSavedConfigResponse.ts +0 -6
  201. package/services/mac-bridge/codex-types/GhostCommit.ts +0 -8
  202. package/services/mac-bridge/codex-types/GitDiffToRemoteParams.ts +0 -5
  203. package/services/mac-bridge/codex-types/GitDiffToRemoteResponse.ts +0 -6
  204. package/services/mac-bridge/codex-types/GitSha.ts +0 -5
  205. package/services/mac-bridge/codex-types/HistoryEntry.ts +0 -5
  206. package/services/mac-bridge/codex-types/InitializeCapabilities.ts +0 -17
  207. package/services/mac-bridge/codex-types/InitializeParams.ts +0 -7
  208. package/services/mac-bridge/codex-types/InitializeResponse.ts +0 -5
  209. package/services/mac-bridge/codex-types/InputItem.ts +0 -10
  210. package/services/mac-bridge/codex-types/InputModality.ts +0 -8
  211. package/services/mac-bridge/codex-types/InterruptConversationParams.ts +0 -6
  212. package/services/mac-bridge/codex-types/InterruptConversationResponse.ts +0 -6
  213. package/services/mac-bridge/codex-types/ItemCompletedEvent.ts +0 -7
  214. package/services/mac-bridge/codex-types/ItemStartedEvent.ts +0 -7
  215. package/services/mac-bridge/codex-types/ListConversationsParams.ts +0 -5
  216. package/services/mac-bridge/codex-types/ListConversationsResponse.ts +0 -6
  217. package/services/mac-bridge/codex-types/ListCustomPromptsResponseEvent.ts +0 -9
  218. package/services/mac-bridge/codex-types/ListRemoteSkillsResponseEvent.ts +0 -9
  219. package/services/mac-bridge/codex-types/ListSkillsResponseEvent.ts +0 -9
  220. package/services/mac-bridge/codex-types/LocalShellAction.ts +0 -6
  221. package/services/mac-bridge/codex-types/LocalShellExecAction.ts +0 -5
  222. package/services/mac-bridge/codex-types/LocalShellStatus.ts +0 -5
  223. package/services/mac-bridge/codex-types/LoginApiKeyParams.ts +0 -5
  224. package/services/mac-bridge/codex-types/LoginApiKeyResponse.ts +0 -5
  225. package/services/mac-bridge/codex-types/LoginChatGptCompleteNotification.ts +0 -8
  226. package/services/mac-bridge/codex-types/LoginChatGptResponse.ts +0 -5
  227. package/services/mac-bridge/codex-types/LogoutChatGptResponse.ts +0 -5
  228. package/services/mac-bridge/codex-types/McpAuthStatus.ts +0 -5
  229. package/services/mac-bridge/codex-types/McpInvocation.ts +0 -18
  230. package/services/mac-bridge/codex-types/McpListToolsResponseEvent.ts +0 -25
  231. package/services/mac-bridge/codex-types/McpStartupCompleteEvent.ts +0 -6
  232. package/services/mac-bridge/codex-types/McpStartupFailure.ts +0 -5
  233. package/services/mac-bridge/codex-types/McpStartupStatus.ts +0 -5
  234. package/services/mac-bridge/codex-types/McpStartupUpdateEvent.ts +0 -14
  235. package/services/mac-bridge/codex-types/McpToolCallBeginEvent.ts +0 -10
  236. package/services/mac-bridge/codex-types/McpToolCallEndEvent.ts +0 -15
  237. package/services/mac-bridge/codex-types/MessagePhase.ts +0 -11
  238. package/services/mac-bridge/codex-types/ModeKind.ts +0 -8
  239. package/services/mac-bridge/codex-types/ModelRerouteEvent.ts +0 -6
  240. package/services/mac-bridge/codex-types/ModelRerouteReason.ts +0 -5
  241. package/services/mac-bridge/codex-types/NetworkAccess.ts +0 -8
  242. package/services/mac-bridge/codex-types/NetworkApprovalContext.ts +0 -6
  243. package/services/mac-bridge/codex-types/NetworkApprovalProtocol.ts +0 -5
  244. package/services/mac-bridge/codex-types/NewConversationParams.ts +0 -8
  245. package/services/mac-bridge/codex-types/NewConversationResponse.ts +0 -7
  246. package/services/mac-bridge/codex-types/ParsedCommand.ts +0 -12
  247. package/services/mac-bridge/codex-types/PatchApplyBeginEvent.ts +0 -23
  248. package/services/mac-bridge/codex-types/PatchApplyEndEvent.ts +0 -36
  249. package/services/mac-bridge/codex-types/PatchApplyStatus.ts +0 -5
  250. package/services/mac-bridge/codex-types/Personality.ts +0 -5
  251. package/services/mac-bridge/codex-types/PlanDeltaEvent.ts +0 -5
  252. package/services/mac-bridge/codex-types/PlanItem.ts +0 -5
  253. package/services/mac-bridge/codex-types/PlanItemArg.ts +0 -6
  254. package/services/mac-bridge/codex-types/PlanType.ts +0 -5
  255. package/services/mac-bridge/codex-types/Profile.ts +0 -9
  256. package/services/mac-bridge/codex-types/RateLimitSnapshot.ts +0 -8
  257. package/services/mac-bridge/codex-types/RateLimitWindow.ts +0 -17
  258. package/services/mac-bridge/codex-types/RawResponseItemEvent.ts +0 -6
  259. package/services/mac-bridge/codex-types/ReadOnlyAccess.ts +0 -19
  260. package/services/mac-bridge/codex-types/ReasoningContentDeltaEvent.ts +0 -5
  261. package/services/mac-bridge/codex-types/ReasoningEffort.ts +0 -8
  262. package/services/mac-bridge/codex-types/ReasoningItem.ts +0 -5
  263. package/services/mac-bridge/codex-types/ReasoningItemContent.ts +0 -5
  264. package/services/mac-bridge/codex-types/ReasoningItemReasoningSummary.ts +0 -5
  265. package/services/mac-bridge/codex-types/ReasoningRawContentDeltaEvent.ts +0 -5
  266. package/services/mac-bridge/codex-types/ReasoningSummary.ts +0 -10
  267. package/services/mac-bridge/codex-types/RemoteSkillDownloadedEvent.ts +0 -8
  268. package/services/mac-bridge/codex-types/RemoteSkillSummary.ts +0 -5
  269. package/services/mac-bridge/codex-types/RemoveConversationListenerParams.ts +0 -5
  270. package/services/mac-bridge/codex-types/RemoveConversationSubscriptionResponse.ts +0 -5
  271. package/services/mac-bridge/codex-types/RequestId.ts +0 -5
  272. package/services/mac-bridge/codex-types/RequestUserInputEvent.ts +0 -15
  273. package/services/mac-bridge/codex-types/RequestUserInputQuestion.ts +0 -6
  274. package/services/mac-bridge/codex-types/RequestUserInputQuestionOption.ts +0 -5
  275. package/services/mac-bridge/codex-types/Resource.ts +0 -9
  276. package/services/mac-bridge/codex-types/ResourceTemplate.ts +0 -9
  277. package/services/mac-bridge/codex-types/ResponseItem.ts +0 -18
  278. package/services/mac-bridge/codex-types/ResumeConversationParams.ts +0 -8
  279. package/services/mac-bridge/codex-types/ResumeConversationResponse.ts +0 -7
  280. package/services/mac-bridge/codex-types/ReviewCodeLocation.ts +0 -9
  281. package/services/mac-bridge/codex-types/ReviewDecision.ts +0 -9
  282. package/services/mac-bridge/codex-types/ReviewFinding.ts +0 -9
  283. package/services/mac-bridge/codex-types/ReviewLineRange.ts +0 -8
  284. package/services/mac-bridge/codex-types/ReviewOutputEvent.ts +0 -9
  285. package/services/mac-bridge/codex-types/ReviewRequest.ts +0 -9
  286. package/services/mac-bridge/codex-types/ReviewTarget.ts +0 -9
  287. package/services/mac-bridge/codex-types/SandboxMode.ts +0 -5
  288. package/services/mac-bridge/codex-types/SandboxPolicy.ts +0 -44
  289. package/services/mac-bridge/codex-types/SandboxSettings.ts +0 -6
  290. package/services/mac-bridge/codex-types/SendUserMessageParams.ts +0 -7
  291. package/services/mac-bridge/codex-types/SendUserMessageResponse.ts +0 -5
  292. package/services/mac-bridge/codex-types/SendUserTurnParams.ts +0 -16
  293. package/services/mac-bridge/codex-types/SendUserTurnResponse.ts +0 -5
  294. package/services/mac-bridge/codex-types/ServerNotification.ts +0 -45
  295. package/services/mac-bridge/codex-types/ServerRequest.ts +0 -16
  296. package/services/mac-bridge/codex-types/SessionConfiguredEvent.ts +0 -57
  297. package/services/mac-bridge/codex-types/SessionConfiguredNotification.ts +0 -8
  298. package/services/mac-bridge/codex-types/SessionNetworkProxyRuntime.ts +0 -5
  299. package/services/mac-bridge/codex-types/SessionSource.ts +0 -6
  300. package/services/mac-bridge/codex-types/SetDefaultModelParams.ts +0 -6
  301. package/services/mac-bridge/codex-types/SetDefaultModelResponse.ts +0 -5
  302. package/services/mac-bridge/codex-types/Settings.ts +0 -9
  303. package/services/mac-bridge/codex-types/SkillDependencies.ts +0 -6
  304. package/services/mac-bridge/codex-types/SkillErrorInfo.ts +0 -5
  305. package/services/mac-bridge/codex-types/SkillInterface.ts +0 -5
  306. package/services/mac-bridge/codex-types/SkillMetadata.ts +0 -12
  307. package/services/mac-bridge/codex-types/SkillScope.ts +0 -5
  308. package/services/mac-bridge/codex-types/SkillToolDependency.ts +0 -5
  309. package/services/mac-bridge/codex-types/SkillsListEntry.ts +0 -7
  310. package/services/mac-bridge/codex-types/StepStatus.ts +0 -5
  311. package/services/mac-bridge/codex-types/StreamErrorEvent.ts +0 -12
  312. package/services/mac-bridge/codex-types/SubAgentSource.ts +0 -6
  313. package/services/mac-bridge/codex-types/TerminalInteractionEvent.ts +0 -17
  314. package/services/mac-bridge/codex-types/TextElement.ts +0 -14
  315. package/services/mac-bridge/codex-types/ThreadId.ts +0 -5
  316. package/services/mac-bridge/codex-types/ThreadNameUpdatedEvent.ts +0 -6
  317. package/services/mac-bridge/codex-types/ThreadRolledBackEvent.ts +0 -9
  318. package/services/mac-bridge/codex-types/TokenCountEvent.ts +0 -7
  319. package/services/mac-bridge/codex-types/TokenUsage.ts +0 -5
  320. package/services/mac-bridge/codex-types/TokenUsageInfo.ts +0 -6
  321. package/services/mac-bridge/codex-types/Tool.ts +0 -9
  322. package/services/mac-bridge/codex-types/Tools.ts +0 -5
  323. package/services/mac-bridge/codex-types/TurnAbortReason.ts +0 -5
  324. package/services/mac-bridge/codex-types/TurnAbortedEvent.ts +0 -6
  325. package/services/mac-bridge/codex-types/TurnCompleteEvent.ts +0 -5
  326. package/services/mac-bridge/codex-types/TurnDiffEvent.ts +0 -5
  327. package/services/mac-bridge/codex-types/TurnItem.ts +0 -11
  328. package/services/mac-bridge/codex-types/TurnStartedEvent.ts +0 -6
  329. package/services/mac-bridge/codex-types/UndoCompletedEvent.ts +0 -5
  330. package/services/mac-bridge/codex-types/UndoStartedEvent.ts +0 -5
  331. package/services/mac-bridge/codex-types/UpdatePlanArgs.ts +0 -10
  332. package/services/mac-bridge/codex-types/UserInfoResponse.ts +0 -5
  333. package/services/mac-bridge/codex-types/UserInput.ts +0 -16
  334. package/services/mac-bridge/codex-types/UserMessageEvent.ts +0 -22
  335. package/services/mac-bridge/codex-types/UserMessageItem.ts +0 -6
  336. package/services/mac-bridge/codex-types/UserSavedConfig.ts +0 -14
  337. package/services/mac-bridge/codex-types/Verbosity.ts +0 -9
  338. package/services/mac-bridge/codex-types/ViewImageToolCallEvent.ts +0 -13
  339. package/services/mac-bridge/codex-types/WarningEvent.ts +0 -5
  340. package/services/mac-bridge/codex-types/WebSearchAction.ts +0 -5
  341. package/services/mac-bridge/codex-types/WebSearchBeginEvent.ts +0 -5
  342. package/services/mac-bridge/codex-types/WebSearchEndEvent.ts +0 -6
  343. package/services/mac-bridge/codex-types/WebSearchItem.ts +0 -6
  344. package/services/mac-bridge/codex-types/WebSearchMode.ts +0 -5
  345. package/services/mac-bridge/codex-types/index.ts +0 -234
  346. package/services/mac-bridge/codex-types/serde_json/JsonValue.ts +0 -5
  347. package/services/mac-bridge/codex-types/v2/Account.ts +0 -6
  348. package/services/mac-bridge/codex-types/v2/AccountLoginCompletedNotification.ts +0 -5
  349. package/services/mac-bridge/codex-types/v2/AccountRateLimitsUpdatedNotification.ts +0 -6
  350. package/services/mac-bridge/codex-types/v2/AccountUpdatedNotification.ts +0 -6
  351. package/services/mac-bridge/codex-types/v2/AgentMessageDeltaNotification.ts +0 -5
  352. package/services/mac-bridge/codex-types/v2/AnalyticsConfig.ts +0 -6
  353. package/services/mac-bridge/codex-types/v2/AppBranding.ts +0 -8
  354. package/services/mac-bridge/codex-types/v2/AppDisabledReason.ts +0 -5
  355. package/services/mac-bridge/codex-types/v2/AppInfo.ts +0 -19
  356. package/services/mac-bridge/codex-types/v2/AppListUpdatedNotification.ts +0 -9
  357. package/services/mac-bridge/codex-types/v2/AppMetadata.ts +0 -7
  358. package/services/mac-bridge/codex-types/v2/AppReview.ts +0 -5
  359. package/services/mac-bridge/codex-types/v2/AppScreenshot.ts +0 -5
  360. package/services/mac-bridge/codex-types/v2/AppsConfig.ts +0 -6
  361. package/services/mac-bridge/codex-types/v2/AppsListParams.ts +0 -24
  362. package/services/mac-bridge/codex-types/v2/AppsListResponse.ts +0 -14
  363. package/services/mac-bridge/codex-types/v2/AskForApproval.ts +0 -5
  364. package/services/mac-bridge/codex-types/v2/ByteRange.ts +0 -5
  365. package/services/mac-bridge/codex-types/v2/CancelLoginAccountParams.ts +0 -5
  366. package/services/mac-bridge/codex-types/v2/CancelLoginAccountResponse.ts +0 -6
  367. package/services/mac-bridge/codex-types/v2/CancelLoginAccountStatus.ts +0 -5
  368. package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshParams.ts +0 -16
  369. package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshReason.ts +0 -5
  370. package/services/mac-bridge/codex-types/v2/ChatgptAuthTokensRefreshResponse.ts +0 -5
  371. package/services/mac-bridge/codex-types/v2/CodexErrorInfo.ts +0 -11
  372. package/services/mac-bridge/codex-types/v2/CollabAgentState.ts +0 -6
  373. package/services/mac-bridge/codex-types/v2/CollabAgentStatus.ts +0 -5
  374. package/services/mac-bridge/codex-types/v2/CollabAgentTool.ts +0 -5
  375. package/services/mac-bridge/codex-types/v2/CollabAgentToolCallStatus.ts +0 -5
  376. package/services/mac-bridge/codex-types/v2/CommandAction.ts +0 -5
  377. package/services/mac-bridge/codex-types/v2/CommandExecParams.ts +0 -6
  378. package/services/mac-bridge/codex-types/v2/CommandExecResponse.ts +0 -5
  379. package/services/mac-bridge/codex-types/v2/CommandExecutionApprovalDecision.ts +0 -6
  380. package/services/mac-bridge/codex-types/v2/CommandExecutionOutputDeltaNotification.ts +0 -5
  381. package/services/mac-bridge/codex-types/v2/CommandExecutionRequestApprovalParams.ts +0 -37
  382. package/services/mac-bridge/codex-types/v2/CommandExecutionRequestApprovalResponse.ts +0 -6
  383. package/services/mac-bridge/codex-types/v2/CommandExecutionStatus.ts +0 -5
  384. package/services/mac-bridge/codex-types/v2/Config.ts +0 -17
  385. package/services/mac-bridge/codex-types/v2/ConfigBatchWriteParams.ts +0 -10
  386. package/services/mac-bridge/codex-types/v2/ConfigEdit.ts +0 -7
  387. package/services/mac-bridge/codex-types/v2/ConfigLayer.ts +0 -7
  388. package/services/mac-bridge/codex-types/v2/ConfigLayerMetadata.ts +0 -6
  389. package/services/mac-bridge/codex-types/v2/ConfigLayerSource.ts +0 -16
  390. package/services/mac-bridge/codex-types/v2/ConfigReadParams.ts +0 -11
  391. package/services/mac-bridge/codex-types/v2/ConfigReadResponse.ts +0 -8
  392. package/services/mac-bridge/codex-types/v2/ConfigRequirements.ts +0 -9
  393. package/services/mac-bridge/codex-types/v2/ConfigRequirementsReadResponse.ts +0 -10
  394. package/services/mac-bridge/codex-types/v2/ConfigValueWriteParams.ts +0 -11
  395. package/services/mac-bridge/codex-types/v2/ConfigWarningNotification.ts +0 -22
  396. package/services/mac-bridge/codex-types/v2/ConfigWriteResponse.ts +0 -12
  397. package/services/mac-bridge/codex-types/v2/ContextCompactedNotification.ts +0 -8
  398. package/services/mac-bridge/codex-types/v2/CreditsSnapshot.ts +0 -5
  399. package/services/mac-bridge/codex-types/v2/DeprecationNoticeNotification.ts +0 -13
  400. package/services/mac-bridge/codex-types/v2/DynamicToolCallOutputContentItem.ts +0 -5
  401. package/services/mac-bridge/codex-types/v2/DynamicToolCallParams.ts +0 -6
  402. package/services/mac-bridge/codex-types/v2/DynamicToolCallResponse.ts +0 -6
  403. package/services/mac-bridge/codex-types/v2/DynamicToolSpec.ts +0 -6
  404. package/services/mac-bridge/codex-types/v2/ErrorNotification.ts +0 -6
  405. package/services/mac-bridge/codex-types/v2/ExecPolicyAmendment.ts +0 -5
  406. package/services/mac-bridge/codex-types/v2/ExperimentalFeature.ts +0 -37
  407. package/services/mac-bridge/codex-types/v2/ExperimentalFeatureListParams.ts +0 -13
  408. package/services/mac-bridge/codex-types/v2/ExperimentalFeatureListResponse.ts +0 -11
  409. package/services/mac-bridge/codex-types/v2/ExperimentalFeatureStage.ts +0 -5
  410. package/services/mac-bridge/codex-types/v2/FeedbackUploadParams.ts +0 -5
  411. package/services/mac-bridge/codex-types/v2/FeedbackUploadResponse.ts +0 -5
  412. package/services/mac-bridge/codex-types/v2/FileChangeApprovalDecision.ts +0 -5
  413. package/services/mac-bridge/codex-types/v2/FileChangeOutputDeltaNotification.ts +0 -5
  414. package/services/mac-bridge/codex-types/v2/FileChangeRequestApprovalParams.ts +0 -14
  415. package/services/mac-bridge/codex-types/v2/FileChangeRequestApprovalResponse.ts +0 -6
  416. package/services/mac-bridge/codex-types/v2/FileUpdateChange.ts +0 -6
  417. package/services/mac-bridge/codex-types/v2/GetAccountParams.ts +0 -13
  418. package/services/mac-bridge/codex-types/v2/GetAccountRateLimitsResponse.ts +0 -14
  419. package/services/mac-bridge/codex-types/v2/GetAccountResponse.ts +0 -6
  420. package/services/mac-bridge/codex-types/v2/GitInfo.ts +0 -5
  421. package/services/mac-bridge/codex-types/v2/HazelnutScope.ts +0 -5
  422. package/services/mac-bridge/codex-types/v2/ItemCompletedNotification.ts +0 -6
  423. package/services/mac-bridge/codex-types/v2/ItemStartedNotification.ts +0 -6
  424. package/services/mac-bridge/codex-types/v2/ListMcpServerStatusParams.ts +0 -13
  425. package/services/mac-bridge/codex-types/v2/ListMcpServerStatusResponse.ts +0 -11
  426. package/services/mac-bridge/codex-types/v2/LoginAccountParams.ts +0 -21
  427. package/services/mac-bridge/codex-types/v2/LoginAccountResponse.ts +0 -9
  428. package/services/mac-bridge/codex-types/v2/LogoutAccountResponse.ts +0 -5
  429. package/services/mac-bridge/codex-types/v2/McpAuthStatus.ts +0 -5
  430. package/services/mac-bridge/codex-types/v2/McpServerOauthLoginCompletedNotification.ts +0 -5
  431. package/services/mac-bridge/codex-types/v2/McpServerOauthLoginParams.ts +0 -5
  432. package/services/mac-bridge/codex-types/v2/McpServerOauthLoginResponse.ts +0 -5
  433. package/services/mac-bridge/codex-types/v2/McpServerRefreshResponse.ts +0 -5
  434. package/services/mac-bridge/codex-types/v2/McpServerStatus.ts +0 -9
  435. package/services/mac-bridge/codex-types/v2/McpToolCallError.ts +0 -5
  436. package/services/mac-bridge/codex-types/v2/McpToolCallProgressNotification.ts +0 -5
  437. package/services/mac-bridge/codex-types/v2/McpToolCallResult.ts +0 -6
  438. package/services/mac-bridge/codex-types/v2/McpToolCallStatus.ts +0 -5
  439. package/services/mac-bridge/codex-types/v2/MergeStrategy.ts +0 -5
  440. package/services/mac-bridge/codex-types/v2/Model.ts +0 -8
  441. package/services/mac-bridge/codex-types/v2/ModelListParams.ts +0 -17
  442. package/services/mac-bridge/codex-types/v2/ModelListResponse.ts +0 -11
  443. package/services/mac-bridge/codex-types/v2/ModelRerouteReason.ts +0 -5
  444. package/services/mac-bridge/codex-types/v2/ModelReroutedNotification.ts +0 -6
  445. package/services/mac-bridge/codex-types/v2/NetworkAccess.ts +0 -5
  446. package/services/mac-bridge/codex-types/v2/NetworkRequirements.ts +0 -5
  447. package/services/mac-bridge/codex-types/v2/OverriddenMetadata.ts +0 -7
  448. package/services/mac-bridge/codex-types/v2/PatchApplyStatus.ts +0 -5
  449. package/services/mac-bridge/codex-types/v2/PatchChangeKind.ts +0 -5
  450. package/services/mac-bridge/codex-types/v2/PlanDeltaNotification.ts +0 -9
  451. package/services/mac-bridge/codex-types/v2/ProductSurface.ts +0 -5
  452. package/services/mac-bridge/codex-types/v2/ProfileV2.ts +0 -11
  453. package/services/mac-bridge/codex-types/v2/RateLimitSnapshot.ts +0 -8
  454. package/services/mac-bridge/codex-types/v2/RateLimitWindow.ts +0 -5
  455. package/services/mac-bridge/codex-types/v2/RawResponseItemCompletedNotification.ts +0 -6
  456. package/services/mac-bridge/codex-types/v2/ReadOnlyAccess.ts +0 -6
  457. package/services/mac-bridge/codex-types/v2/ReasoningEffortOption.ts +0 -6
  458. package/services/mac-bridge/codex-types/v2/ReasoningSummaryPartAddedNotification.ts +0 -5
  459. package/services/mac-bridge/codex-types/v2/ReasoningSummaryTextDeltaNotification.ts +0 -5
  460. package/services/mac-bridge/codex-types/v2/ReasoningTextDeltaNotification.ts +0 -5
  461. package/services/mac-bridge/codex-types/v2/RemoteSkillSummary.ts +0 -5
  462. package/services/mac-bridge/codex-types/v2/ResidencyRequirement.ts +0 -5
  463. package/services/mac-bridge/codex-types/v2/ReviewDelivery.ts +0 -5
  464. package/services/mac-bridge/codex-types/v2/ReviewStartParams.ts +0 -12
  465. package/services/mac-bridge/codex-types/v2/ReviewStartResponse.ts +0 -13
  466. package/services/mac-bridge/codex-types/v2/ReviewTarget.ts +0 -9
  467. package/services/mac-bridge/codex-types/v2/SandboxMode.ts +0 -5
  468. package/services/mac-bridge/codex-types/v2/SandboxPolicy.ts +0 -8
  469. package/services/mac-bridge/codex-types/v2/SandboxWorkspaceWrite.ts +0 -5
  470. package/services/mac-bridge/codex-types/v2/SessionSource.ts +0 -6
  471. package/services/mac-bridge/codex-types/v2/SkillDependencies.ts +0 -6
  472. package/services/mac-bridge/codex-types/v2/SkillErrorInfo.ts +0 -5
  473. package/services/mac-bridge/codex-types/v2/SkillInterface.ts +0 -5
  474. package/services/mac-bridge/codex-types/v2/SkillMetadata.ts +0 -12
  475. package/services/mac-bridge/codex-types/v2/SkillScope.ts +0 -5
  476. package/services/mac-bridge/codex-types/v2/SkillToolDependency.ts +0 -5
  477. package/services/mac-bridge/codex-types/v2/SkillsConfigWriteParams.ts +0 -5
  478. package/services/mac-bridge/codex-types/v2/SkillsConfigWriteResponse.ts +0 -5
  479. package/services/mac-bridge/codex-types/v2/SkillsListEntry.ts +0 -7
  480. package/services/mac-bridge/codex-types/v2/SkillsListExtraRootsForCwd.ts +0 -5
  481. package/services/mac-bridge/codex-types/v2/SkillsListParams.ts +0 -18
  482. package/services/mac-bridge/codex-types/v2/SkillsListResponse.ts +0 -6
  483. package/services/mac-bridge/codex-types/v2/SkillsRemoteReadParams.ts +0 -7
  484. package/services/mac-bridge/codex-types/v2/SkillsRemoteReadResponse.ts +0 -6
  485. package/services/mac-bridge/codex-types/v2/SkillsRemoteWriteParams.ts +0 -5
  486. package/services/mac-bridge/codex-types/v2/SkillsRemoteWriteResponse.ts +0 -5
  487. package/services/mac-bridge/codex-types/v2/TerminalInteractionNotification.ts +0 -5
  488. package/services/mac-bridge/codex-types/v2/TextElement.ts +0 -14
  489. package/services/mac-bridge/codex-types/v2/TextPosition.ts +0 -13
  490. package/services/mac-bridge/codex-types/v2/TextRange.ts +0 -6
  491. package/services/mac-bridge/codex-types/v2/Thread.ts +0 -51
  492. package/services/mac-bridge/codex-types/v2/ThreadArchiveParams.ts +0 -5
  493. package/services/mac-bridge/codex-types/v2/ThreadArchiveResponse.ts +0 -5
  494. package/services/mac-bridge/codex-types/v2/ThreadArchivedNotification.ts +0 -5
  495. package/services/mac-bridge/codex-types/v2/ThreadCompactStartParams.ts +0 -5
  496. package/services/mac-bridge/codex-types/v2/ThreadCompactStartResponse.ts +0 -5
  497. package/services/mac-bridge/codex-types/v2/ThreadForkParams.ts +0 -28
  498. package/services/mac-bridge/codex-types/v2/ThreadForkResponse.ts +0 -9
  499. package/services/mac-bridge/codex-types/v2/ThreadItem.ts +0 -81
  500. package/services/mac-bridge/codex-types/v2/ThreadListParams.ts +0 -39
  501. package/services/mac-bridge/codex-types/v2/ThreadListResponse.ts +0 -11
  502. package/services/mac-bridge/codex-types/v2/ThreadLoadedListParams.ts +0 -13
  503. package/services/mac-bridge/codex-types/v2/ThreadLoadedListResponse.ts +0 -14
  504. package/services/mac-bridge/codex-types/v2/ThreadNameUpdatedNotification.ts +0 -5
  505. package/services/mac-bridge/codex-types/v2/ThreadReadParams.ts +0 -9
  506. package/services/mac-bridge/codex-types/v2/ThreadReadResponse.ts +0 -6
  507. package/services/mac-bridge/codex-types/v2/ThreadResumeParams.ts +0 -37
  508. package/services/mac-bridge/codex-types/v2/ThreadResumeResponse.ts +0 -9
  509. package/services/mac-bridge/codex-types/v2/ThreadRollbackParams.ts +0 -12
  510. package/services/mac-bridge/codex-types/v2/ThreadRollbackResponse.ts +0 -14
  511. package/services/mac-bridge/codex-types/v2/ThreadSetNameParams.ts +0 -5
  512. package/services/mac-bridge/codex-types/v2/ThreadSetNameResponse.ts +0 -5
  513. package/services/mac-bridge/codex-types/v2/ThreadSortKey.ts +0 -5
  514. package/services/mac-bridge/codex-types/v2/ThreadSourceKind.ts +0 -5
  515. package/services/mac-bridge/codex-types/v2/ThreadStartParams.ts +0 -17
  516. package/services/mac-bridge/codex-types/v2/ThreadStartResponse.ts +0 -9
  517. package/services/mac-bridge/codex-types/v2/ThreadStartedNotification.ts +0 -6
  518. package/services/mac-bridge/codex-types/v2/ThreadTokenUsage.ts +0 -6
  519. package/services/mac-bridge/codex-types/v2/ThreadTokenUsageUpdatedNotification.ts +0 -6
  520. package/services/mac-bridge/codex-types/v2/ThreadUnarchiveParams.ts +0 -5
  521. package/services/mac-bridge/codex-types/v2/ThreadUnarchiveResponse.ts +0 -6
  522. package/services/mac-bridge/codex-types/v2/ThreadUnarchivedNotification.ts +0 -5
  523. package/services/mac-bridge/codex-types/v2/TokenUsageBreakdown.ts +0 -5
  524. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputAnswer.ts +0 -8
  525. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputOption.ts +0 -8
  526. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputParams.ts +0 -9
  527. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputQuestion.ts +0 -9
  528. package/services/mac-bridge/codex-types/v2/ToolRequestUserInputResponse.ts +0 -9
  529. package/services/mac-bridge/codex-types/v2/ToolsV2.ts +0 -5
  530. package/services/mac-bridge/codex-types/v2/Turn.ts +0 -18
  531. package/services/mac-bridge/codex-types/v2/TurnCompletedNotification.ts +0 -6
  532. package/services/mac-bridge/codex-types/v2/TurnDiffUpdatedNotification.ts +0 -9
  533. package/services/mac-bridge/codex-types/v2/TurnError.ts +0 -6
  534. package/services/mac-bridge/codex-types/v2/TurnInterruptParams.ts +0 -5
  535. package/services/mac-bridge/codex-types/v2/TurnInterruptResponse.ts +0 -5
  536. package/services/mac-bridge/codex-types/v2/TurnPlanStep.ts +0 -6
  537. package/services/mac-bridge/codex-types/v2/TurnPlanStepStatus.ts +0 -5
  538. package/services/mac-bridge/codex-types/v2/TurnPlanUpdatedNotification.ts +0 -6
  539. package/services/mac-bridge/codex-types/v2/TurnStartParams.ts +0 -44
  540. package/services/mac-bridge/codex-types/v2/TurnStartResponse.ts +0 -6
  541. package/services/mac-bridge/codex-types/v2/TurnStartedNotification.ts +0 -6
  542. package/services/mac-bridge/codex-types/v2/TurnStatus.ts +0 -5
  543. package/services/mac-bridge/codex-types/v2/TurnSteerParams.ts +0 -11
  544. package/services/mac-bridge/codex-types/v2/TurnSteerResponse.ts +0 -5
  545. package/services/mac-bridge/codex-types/v2/UserInput.ts +0 -10
  546. package/services/mac-bridge/codex-types/v2/WebSearchAction.ts +0 -5
  547. package/services/mac-bridge/codex-types/v2/WindowsWorldWritableWarningNotification.ts +0 -5
  548. package/services/mac-bridge/codex-types/v2/WriteStatus.ts +0 -5
  549. package/services/mac-bridge/codex-types/v2/index.ts +0 -204
  550. package/services/mac-bridge/eslint.config.cjs +0 -22
  551. package/services/mac-bridge/package.json +0 -30
  552. package/services/mac-bridge/schema.ts +0 -0
  553. package/services/mac-bridge/src/index.ts +0 -18
  554. package/services/mac-bridge/src/server.ts +0 -426
  555. package/services/mac-bridge/src/services/__tests__/gitService.test.ts +0 -157
  556. package/services/mac-bridge/src/services/__tests__/realtimeHub.test.ts +0 -116
  557. package/services/mac-bridge/src/services/__tests__/terminalService.test.ts +0 -51
  558. package/services/mac-bridge/src/services/codexAppServerClient.ts +0 -507
  559. package/services/mac-bridge/src/services/codexCliAdapter.ts +0 -622
  560. package/services/mac-bridge/src/services/gitService.ts +0 -61
  561. package/services/mac-bridge/src/services/realtimeHub.ts +0 -25
  562. package/services/mac-bridge/src/services/terminalService.ts +0 -226
  563. package/services/mac-bridge/src/types.ts +0 -151
  564. package/services/mac-bridge/src/utils/__tests__/threadMapping.test.ts +0 -397
  565. package/services/mac-bridge/src/utils/threadMapping.ts +0 -176
  566. package/services/mac-bridge/tsconfig.json +0 -16
  567. package/services/mac-bridge/vitest.config.ts +0 -9
  568. package/services/rust-bridge/.env.example +0 -14
  569. package/services/rust-bridge/package.json +0 -13
  570. package/services/rust-bridge/security_best_practices_report.md +0 -24
  571. package/site/index.html +0 -54
  572. package/site/privacy/index.html +0 -80
  573. package/site/styles.css +0 -135
  574. package/site/support/index.html +0 -51
  575. package/site/terms/index.html +0 -68
  576. package/tsconfig.json +0 -4
@@ -1,1229 +0,0 @@
1
- # Codex-Style UI Redesign — Implementation Plan
2
-
3
- > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
4
-
5
- **Goal:** Redesign the mobile chat UI to match the OpenAI Codex aesthetic — flat dark background, no gradients/blur, gold accents, terminal-inspired typography, collapsible tool blocks.
6
-
7
- **Architecture:** Rewrite `theme.ts` with a flat dark palette, then extract 6 new components from the monolithic `MainScreen.tsx`. MainScreen becomes a thin orchestrator. DrawerContent gets rethemed to match.
8
-
9
- **Tech Stack:** React Native 0.81 / Expo 54, react-native-markdown-display, react-native-reanimated, @expo/vector-icons (Ionicons)
10
-
11
- ---
12
-
13
- ### Task 1: Rewrite theme.ts — flat Codex palette
14
-
15
- **Files:**
16
- - Modify: `apps/mobile/src/theme.ts`
17
-
18
- **Step 1: Replace the theme file**
19
-
20
- ```typescript
21
- import { Platform, StyleSheet } from 'react-native';
22
-
23
- export const colors = {
24
- // Backgrounds
25
- bgMain: '#0D0D0D',
26
- bgSidebar: '#1A1A1A',
27
- bgItem: '#1A1A1A',
28
- bgInput: 'rgba(255, 255, 255, 0.06)',
29
-
30
- // Borders
31
- border: 'rgba(255, 255, 255, 0.1)',
32
- borderLight: 'rgba(255, 255, 255, 0.05)',
33
- borderHighlight: 'rgba(255, 255, 255, 0.12)',
34
-
35
- // Text
36
- textPrimary: '#E8E8E8',
37
- textSecondary: '#999999',
38
- textMuted: 'rgba(255, 255, 255, 0.4)',
39
-
40
- // Accent — gold/amber
41
- accent: '#C8A946',
42
- accentPressed: '#B89A3A',
43
-
44
- // User bubble
45
- userBubble: '#1E1E1E',
46
- userBubbleBorder: 'rgba(255, 255, 255, 0.1)',
47
-
48
- // Assistant — no bubble
49
- assistantBubbleBg: 'transparent',
50
- assistantBubbleBorder: 'transparent',
51
-
52
- // Tool block
53
- toolBlockBg: 'rgba(255, 255, 255, 0.04)',
54
- toolBlockBorder: '#C8A946',
55
-
56
- // Status
57
- statusRunning: '#C8A946',
58
- statusComplete: '#10B981',
59
- statusError: '#EF4444',
60
- statusIdle: 'rgba(255, 255, 255, 0.4)',
61
-
62
- // Misc
63
- error: '#EF4444',
64
- errorBg: 'rgba(239, 68, 68, 0.15)',
65
- white: '#FFFFFF',
66
- black: '#000000',
67
- transparent: 'transparent',
68
- };
69
-
70
- export const spacing = {
71
- xs: 4,
72
- sm: 8,
73
- md: 12,
74
- lg: 16,
75
- xl: 20,
76
- xxl: 24,
77
- };
78
-
79
- export const radius = {
80
- sm: 8,
81
- md: 12,
82
- lg: 16,
83
- full: 999,
84
- };
85
-
86
- export const shadow = StyleSheet.create({
87
- sm: Platform.select({
88
- ios: {
89
- shadowColor: '#000',
90
- shadowOffset: { width: 0, height: 2 },
91
- shadowOpacity: 0.3,
92
- shadowRadius: 6,
93
- },
94
- default: { elevation: 3 },
95
- }) as object,
96
- });
97
-
98
- export const typography = {
99
- largeTitle: {
100
- fontSize: 24,
101
- fontWeight: '700' as const,
102
- color: colors.textPrimary,
103
- letterSpacing: -0.3,
104
- },
105
- headline: {
106
- fontSize: 15,
107
- fontWeight: '600' as const,
108
- color: colors.textPrimary,
109
- },
110
- body: {
111
- fontSize: 14,
112
- fontWeight: '400' as const,
113
- color: colors.textPrimary,
114
- lineHeight: 20,
115
- },
116
- caption: {
117
- fontSize: 12,
118
- fontWeight: '400' as const,
119
- color: colors.textMuted,
120
- },
121
- mono: {
122
- fontSize: 12,
123
- fontFamily: Platform.select({ ios: 'Menlo', default: 'monospace' }),
124
- color: colors.textPrimary,
125
- lineHeight: 18,
126
- },
127
- };
128
- ```
129
-
130
- **Step 2: Verify no type errors**
131
-
132
- Run: `cd apps/mobile && npx tsc --noEmit 2>&1 | head -30`
133
- Expected: No errors (color tokens renamed to match existing references)
134
-
135
- **Step 3: Commit**
136
-
137
- ```bash
138
- git add apps/mobile/src/theme.ts
139
- git commit -m "feat: rewrite theme to flat Codex-style dark palette"
140
- ```
141
-
142
- ---
143
-
144
- ### Task 2: Create ChatHeader component
145
-
146
- **Files:**
147
- - Create: `apps/mobile/src/components/ChatHeader.tsx`
148
-
149
- **Step 1: Create the component**
150
-
151
- ```typescript
152
- import { Ionicons } from '@expo/vector-icons';
153
- import { Pressable, SafeAreaView, StyleSheet, Text, View } from 'react-native';
154
- import { colors, spacing, typography } from '../theme';
155
-
156
- interface ChatHeaderProps {
157
- onOpenDrawer: () => void;
158
- modelName?: string;
159
- }
160
-
161
- export function ChatHeader({ onOpenDrawer, modelName = 'Codex' }: ChatHeaderProps) {
162
- return (
163
- <View style={styles.headerContainer}>
164
- <SafeAreaView>
165
- <View style={styles.header}>
166
- <Pressable onPress={onOpenDrawer} hitSlop={8} style={styles.menuBtn}>
167
- <Ionicons name="menu" size={22} color={colors.textPrimary} />
168
- </Pressable>
169
- <View style={styles.modelNameRow}>
170
- <Text style={styles.modelName}>{modelName}</Text>
171
- <Ionicons name="chevron-forward" size={14} color={colors.textMuted} />
172
- </View>
173
- <View style={{ flex: 1 }} />
174
- <Ionicons name="sparkles-outline" size={20} color={colors.textMuted} />
175
- </View>
176
- </SafeAreaView>
177
- </View>
178
- );
179
- }
180
-
181
- const styles = StyleSheet.create({
182
- headerContainer: {
183
- position: 'absolute',
184
- top: 0,
185
- left: 0,
186
- right: 0,
187
- backgroundColor: colors.bgMain,
188
- borderBottomWidth: StyleSheet.hairlineWidth,
189
- borderBottomColor: colors.borderLight,
190
- zIndex: 10,
191
- },
192
- header: {
193
- flexDirection: 'row',
194
- alignItems: 'center',
195
- gap: spacing.sm,
196
- paddingHorizontal: spacing.lg,
197
- paddingVertical: spacing.md,
198
- },
199
- menuBtn: {
200
- padding: spacing.xs,
201
- },
202
- modelNameRow: {
203
- flexDirection: 'row',
204
- alignItems: 'center',
205
- gap: spacing.xs,
206
- },
207
- modelName: {
208
- ...typography.largeTitle,
209
- fontSize: 20,
210
- color: colors.textPrimary,
211
- },
212
- });
213
- ```
214
-
215
- **Step 2: Commit**
216
-
217
- ```bash
218
- git add apps/mobile/src/components/ChatHeader.tsx
219
- git commit -m "feat: add ChatHeader component with Codex-style layout"
220
- ```
221
-
222
- ---
223
-
224
- ### Task 3: Create ChatMessage component
225
-
226
- **Files:**
227
- - Create: `apps/mobile/src/components/ChatMessage.tsx`
228
-
229
- **Step 1: Create the component**
230
-
231
- This renders user messages as dark pills (right-aligned, monospace) and assistant messages as bare markdown text (no bubble, no avatar).
232
-
233
- ```typescript
234
- import { Platform, StyleSheet, Text, View } from 'react-native';
235
- import Markdown from 'react-native-markdown-display';
236
- import Animated, { FadeInUp, Layout } from 'react-native-reanimated';
237
-
238
- import type { ThreadMessage } from '../api/types';
239
- import { colors, radius, spacing, typography } from '../theme';
240
-
241
- interface ChatMessageProps {
242
- message: ThreadMessage;
243
- }
244
-
245
- export function ChatMessage({ message }: ChatMessageProps) {
246
- const isUser = message.role === 'user';
247
-
248
- if (isUser) {
249
- return (
250
- <Animated.View
251
- entering={FadeInUp.duration(300)}
252
- layout={Layout.springify()}
253
- style={[styles.messageWrapper, styles.messageWrapperUser]}
254
- >
255
- <View style={styles.userBubble}>
256
- <Text style={styles.userMessageText}>{message.content}</Text>
257
- </View>
258
- </Animated.View>
259
- );
260
- }
261
-
262
- return (
263
- <Animated.View
264
- entering={FadeInUp.duration(300).delay(50)}
265
- layout={Layout.springify()}
266
- style={[styles.messageWrapper, styles.messageWrapperAssistant]}
267
- >
268
- <Markdown style={markdownStyles}>
269
- {message.content || '\u258D'}
270
- </Markdown>
271
- </Animated.View>
272
- );
273
- }
274
-
275
- const monoFont = Platform.select({ ios: 'Menlo', default: 'monospace' });
276
-
277
- const markdownStyles = StyleSheet.create({
278
- body: {
279
- ...typography.body,
280
- color: colors.textPrimary,
281
- },
282
- code_inline: {
283
- fontFamily: monoFont,
284
- fontSize: 12,
285
- backgroundColor: 'rgba(200, 169, 70, 0.12)',
286
- color: colors.accent,
287
- borderRadius: 4,
288
- paddingHorizontal: 5,
289
- paddingVertical: 2,
290
- },
291
- code_block: {
292
- fontFamily: monoFont,
293
- fontSize: 12,
294
- backgroundColor: 'rgba(255, 255, 255, 0.04)',
295
- color: colors.textPrimary,
296
- borderRadius: radius.sm,
297
- padding: spacing.md,
298
- marginVertical: spacing.sm,
299
- },
300
- fence: {
301
- fontFamily: monoFont,
302
- fontSize: 12,
303
- backgroundColor: 'rgba(255, 255, 255, 0.04)',
304
- color: colors.textPrimary,
305
- borderRadius: radius.sm,
306
- padding: spacing.md,
307
- marginVertical: spacing.sm,
308
- },
309
- link: {
310
- color: colors.accent,
311
- textDecorationLine: 'underline',
312
- },
313
- paragraph: {
314
- marginTop: spacing.xs,
315
- marginBottom: spacing.xs,
316
- },
317
- bullet_list: {
318
- marginVertical: spacing.xs,
319
- },
320
- ordered_list: {
321
- marginVertical: spacing.xs,
322
- },
323
- list_item: {
324
- marginVertical: 2,
325
- },
326
- strong: {
327
- fontWeight: '700',
328
- color: colors.textPrimary,
329
- },
330
- em: {
331
- fontStyle: 'italic',
332
- },
333
- });
334
-
335
- const styles = StyleSheet.create({
336
- messageWrapper: {
337
- maxWidth: '92%',
338
- },
339
- messageWrapperUser: {
340
- alignSelf: 'flex-end',
341
- },
342
- messageWrapperAssistant: {
343
- alignSelf: 'flex-start',
344
- width: '100%',
345
- },
346
- userBubble: {
347
- backgroundColor: colors.userBubble,
348
- borderWidth: StyleSheet.hairlineWidth,
349
- borderColor: colors.userBubbleBorder,
350
- borderRadius: radius.lg,
351
- paddingHorizontal: spacing.lg,
352
- paddingVertical: spacing.md,
353
- },
354
- userMessageText: {
355
- fontFamily: monoFont,
356
- fontSize: 14,
357
- color: colors.textPrimary,
358
- lineHeight: 20,
359
- },
360
- });
361
- ```
362
-
363
- **Step 2: Commit**
364
-
365
- ```bash
366
- git add apps/mobile/src/components/ChatMessage.tsx
367
- git commit -m "feat: add ChatMessage component — dark pill user bubbles, bare markdown assistant"
368
- ```
369
-
370
- ---
371
-
372
- ### Task 4: Create ToolBlock component
373
-
374
- **Files:**
375
- - Create: `apps/mobile/src/components/ToolBlock.tsx`
376
-
377
- **Step 1: Create the component**
378
-
379
- Collapsible tool execution block with gold left border, folder icon, truncated command, and expand/collapse.
380
-
381
- ```typescript
382
- import { Ionicons } from '@expo/vector-icons';
383
- import { useState } from 'react';
384
- import { ActivityIndicator, Platform, Pressable, StyleSheet, Text, View } from 'react-native';
385
- import Animated, { FadeInUp } from 'react-native-reanimated';
386
-
387
- import { colors, radius, spacing } from '../theme';
388
-
389
- interface ToolBlockProps {
390
- command: string;
391
- status: 'running' | 'complete' | 'error';
392
- output?: string;
393
- durationMs?: number;
394
- }
395
-
396
- export function ToolBlock({ command, status, output, durationMs }: ToolBlockProps) {
397
- const [expanded, setExpanded] = useState(false);
398
-
399
- const statusIcon = status === 'running'
400
- ? null
401
- : status === 'complete'
402
- ? 'checkmark'
403
- : 'close';
404
-
405
- const statusColor = status === 'running'
406
- ? colors.statusRunning
407
- : status === 'complete'
408
- ? colors.statusComplete
409
- : colors.statusError;
410
-
411
- return (
412
- <Animated.View entering={FadeInUp.duration(300)}>
413
- <Pressable
414
- style={styles.container}
415
- onPress={() => setExpanded(!expanded)}
416
- >
417
- <View style={styles.header}>
418
- <Ionicons name="folder-open" size={14} color={colors.accent} />
419
- <Text style={styles.command} numberOfLines={expanded ? undefined : 1}>
420
- {command}
421
- </Text>
422
- <View style={styles.statusRow}>
423
- {status === 'running' ? (
424
- <ActivityIndicator size="small" color={statusColor} />
425
- ) : (
426
- <>
427
- {statusIcon && (
428
- <Ionicons name={statusIcon as any} size={14} color={statusColor} />
429
- )}
430
- {durationMs != null && (
431
- <Text style={[styles.duration, { color: statusColor }]}>
432
- {durationMs}ms
433
- </Text>
434
- )}
435
- </>
436
- )}
437
- <Ionicons
438
- name={expanded ? 'chevron-up' : 'chevron-down'}
439
- size={14}
440
- color={colors.textMuted}
441
- />
442
- </View>
443
- </View>
444
- {expanded && output ? (
445
- <Text style={styles.output}>{output}</Text>
446
- ) : null}
447
- </Pressable>
448
- </Animated.View>
449
- );
450
- }
451
-
452
- const monoFont = Platform.select({ ios: 'Menlo', default: 'monospace' });
453
-
454
- const styles = StyleSheet.create({
455
- container: {
456
- backgroundColor: colors.toolBlockBg,
457
- borderLeftWidth: 3,
458
- borderLeftColor: colors.toolBlockBorder,
459
- borderRadius: radius.sm,
460
- marginVertical: spacing.sm,
461
- overflow: 'hidden',
462
- },
463
- header: {
464
- flexDirection: 'row',
465
- alignItems: 'center',
466
- gap: spacing.sm,
467
- paddingHorizontal: spacing.md,
468
- paddingVertical: spacing.sm + 2,
469
- },
470
- command: {
471
- flex: 1,
472
- fontFamily: monoFont,
473
- fontSize: 12,
474
- color: colors.textPrimary,
475
- lineHeight: 18,
476
- },
477
- statusRow: {
478
- flexDirection: 'row',
479
- alignItems: 'center',
480
- gap: spacing.xs,
481
- flexShrink: 0,
482
- },
483
- duration: {
484
- fontFamily: monoFont,
485
- fontSize: 11,
486
- },
487
- output: {
488
- fontFamily: monoFont,
489
- fontSize: 11,
490
- color: colors.textSecondary,
491
- lineHeight: 16,
492
- paddingHorizontal: spacing.md,
493
- paddingBottom: spacing.md,
494
- paddingTop: spacing.xs,
495
- borderTopWidth: StyleSheet.hairlineWidth,
496
- borderTopColor: colors.borderLight,
497
- },
498
- });
499
- ```
500
-
501
- **Step 2: Commit**
502
-
503
- ```bash
504
- git add apps/mobile/src/components/ToolBlock.tsx
505
- git commit -m "feat: add ToolBlock component with gold border and expand/collapse"
506
- ```
507
-
508
- ---
509
-
510
- ### Task 5: Create TypingIndicator component
511
-
512
- **Files:**
513
- - Create: `apps/mobile/src/components/TypingIndicator.tsx`
514
-
515
- **Step 1: Create the component**
516
-
517
- Three dots that pulse to show the assistant is generating.
518
-
519
- ```typescript
520
- import { useEffect } from 'react';
521
- import { StyleSheet, View } from 'react-native';
522
- import Animated, {
523
- useAnimatedStyle,
524
- useSharedValue,
525
- withDelay,
526
- withRepeat,
527
- withSequence,
528
- withTiming,
529
- } from 'react-native-reanimated';
530
-
531
- import { colors, spacing } from '../theme';
532
-
533
- export function TypingIndicator() {
534
- const dot1 = useSharedValue(0.3);
535
- const dot2 = useSharedValue(0.3);
536
- const dot3 = useSharedValue(0.3);
537
-
538
- useEffect(() => {
539
- const animateDot = (dot: typeof dot1, delay: number) => {
540
- dot.value = withDelay(
541
- delay,
542
- withRepeat(
543
- withSequence(
544
- withTiming(1, { duration: 400 }),
545
- withTiming(0.3, { duration: 400 }),
546
- ),
547
- -1,
548
- false,
549
- ),
550
- );
551
- };
552
- animateDot(dot1, 0);
553
- animateDot(dot2, 150);
554
- animateDot(dot3, 300);
555
- }, [dot1, dot2, dot3]);
556
-
557
- const style1 = useAnimatedStyle(() => ({ opacity: dot1.value }));
558
- const style2 = useAnimatedStyle(() => ({ opacity: dot2.value }));
559
- const style3 = useAnimatedStyle(() => ({ opacity: dot3.value }));
560
-
561
- return (
562
- <View style={styles.container}>
563
- <Animated.View style={[styles.dot, style1]} />
564
- <Animated.View style={[styles.dot, style2]} />
565
- <Animated.View style={[styles.dot, style3]} />
566
- </View>
567
- );
568
- }
569
-
570
- const styles = StyleSheet.create({
571
- container: {
572
- flexDirection: 'row',
573
- alignItems: 'center',
574
- gap: 4,
575
- paddingVertical: spacing.sm,
576
- },
577
- dot: {
578
- width: 6,
579
- height: 6,
580
- borderRadius: 3,
581
- backgroundColor: colors.textMuted,
582
- },
583
- });
584
- ```
585
-
586
- **Step 2: Commit**
587
-
588
- ```bash
589
- git add apps/mobile/src/components/TypingIndicator.tsx
590
- git commit -m "feat: add TypingIndicator component with pulsing dots"
591
- ```
592
-
593
- ---
594
-
595
- ### Task 6: Create ChatInput component
596
-
597
- **Files:**
598
- - Create: `apps/mobile/src/components/ChatInput.tsx`
599
-
600
- **Step 1: Create the component**
601
-
602
- Bottom input bar with "+" button (new thread) and text field.
603
-
604
- ```typescript
605
- import { Ionicons } from '@expo/vector-icons';
606
- import {
607
- ActivityIndicator,
608
- Platform,
609
- Pressable,
610
- StyleSheet,
611
- TextInput,
612
- View,
613
- } from 'react-native';
614
-
615
- import { colors, radius, spacing } from '../theme';
616
-
617
- interface ChatInputProps {
618
- value: string;
619
- onChangeText: (text: string) => void;
620
- onSubmit: () => void;
621
- onNewThread: () => void;
622
- isLoading: boolean;
623
- placeholder?: string;
624
- }
625
-
626
- export function ChatInput({
627
- value,
628
- onChangeText,
629
- onSubmit,
630
- onNewThread,
631
- isLoading,
632
- placeholder = 'Message Codex...',
633
- }: ChatInputProps) {
634
- const canSend = value.trim().length > 0 && !isLoading;
635
-
636
- return (
637
- <View style={styles.container}>
638
- <Pressable
639
- onPress={onNewThread}
640
- style={({ pressed }) => [styles.plusBtn, pressed && styles.plusBtnPressed]}
641
- >
642
- <Ionicons name="add" size={20} color={colors.textMuted} />
643
- </Pressable>
644
-
645
- <View style={styles.inputWrapper}>
646
- <TextInput
647
- style={styles.input}
648
- value={value}
649
- onChangeText={onChangeText}
650
- placeholder={placeholder}
651
- placeholderTextColor={colors.textMuted}
652
- multiline
653
- onKeyPress={(e: any) => {
654
- if (
655
- Platform.OS === 'web' &&
656
- e.nativeEvent.key === 'Enter' &&
657
- !e.nativeEvent.shiftKey
658
- ) {
659
- e.preventDefault();
660
- if (canSend) onSubmit();
661
- }
662
- }}
663
- />
664
- {canSend || isLoading ? (
665
- <Pressable
666
- onPress={canSend ? onSubmit : undefined}
667
- style={styles.sendBtn}
668
- >
669
- {isLoading ? (
670
- <ActivityIndicator size="small" color={colors.textMuted} />
671
- ) : (
672
- <Ionicons name="arrow-up" size={14} color={colors.textPrimary} />
673
- )}
674
- </Pressable>
675
- ) : null}
676
- </View>
677
- </View>
678
- );
679
- }
680
-
681
- const styles = StyleSheet.create({
682
- container: {
683
- flexDirection: 'row',
684
- alignItems: 'flex-end',
685
- gap: spacing.sm,
686
- paddingHorizontal: spacing.lg,
687
- paddingVertical: spacing.md,
688
- paddingBottom: Platform.OS === 'ios' ? spacing.xxl : spacing.md,
689
- backgroundColor: colors.bgMain,
690
- borderTopWidth: StyleSheet.hairlineWidth,
691
- borderTopColor: colors.borderLight,
692
- },
693
- plusBtn: {
694
- width: 36,
695
- height: 36,
696
- borderRadius: 18,
697
- borderWidth: 1,
698
- borderColor: colors.border,
699
- alignItems: 'center',
700
- justifyContent: 'center',
701
- },
702
- plusBtnPressed: {
703
- backgroundColor: 'rgba(255, 255, 255, 0.05)',
704
- },
705
- inputWrapper: {
706
- flex: 1,
707
- flexDirection: 'row',
708
- alignItems: 'flex-end',
709
- backgroundColor: colors.bgInput,
710
- borderWidth: 1,
711
- borderColor: colors.borderHighlight,
712
- borderRadius: radius.lg,
713
- paddingHorizontal: spacing.md,
714
- paddingVertical: Platform.OS === 'ios' ? spacing.sm : spacing.xs,
715
- minHeight: 36,
716
- maxHeight: 120,
717
- },
718
- input: {
719
- flex: 1,
720
- color: colors.textPrimary,
721
- fontSize: 14,
722
- lineHeight: 20,
723
- paddingVertical: 0,
724
- },
725
- sendBtn: {
726
- width: 28,
727
- height: 28,
728
- borderRadius: 14,
729
- backgroundColor: 'rgba(255, 255, 255, 0.08)',
730
- alignItems: 'center',
731
- justifyContent: 'center',
732
- marginLeft: spacing.xs,
733
- },
734
- });
735
- ```
736
-
737
- **Step 2: Commit**
738
-
739
- ```bash
740
- git add apps/mobile/src/components/ChatInput.tsx
741
- git commit -m "feat: add ChatInput component with + button and text field"
742
- ```
743
-
744
- ---
745
-
746
- ### Task 7: Rewrite MainScreen.tsx — wire up new components
747
-
748
- **Files:**
749
- - Modify: `apps/mobile/src/screens/MainScreen.tsx`
750
-
751
- **Step 1: Replace MainScreen with the refactored version**
752
-
753
- This removes all LinearGradient/BlurView usage, replaces inline MessageBubble with `ChatMessage`, uses `ChatHeader`, `ChatInput`, and `TypingIndicator`. Keeps existing state management and WebSocket logic intact.
754
-
755
- ```typescript
756
- import { Ionicons } from '@expo/vector-icons';
757
- import {
758
- forwardRef,
759
- useCallback,
760
- useEffect,
761
- useImperativeHandle,
762
- useRef,
763
- useState,
764
- } from 'react';
765
- import {
766
- KeyboardAvoidingView,
767
- Platform,
768
- Pressable,
769
- ScrollView,
770
- StyleSheet,
771
- Text,
772
- View,
773
- } from 'react-native';
774
-
775
- import type { MacBridgeApiClient } from '../api/client';
776
- import type { BridgeWsEvent, Thread, ThreadMessage } from '../api/types';
777
- import type { MacBridgeWsClient } from '../api/ws';
778
- import { ChatHeader } from '../components/ChatHeader';
779
- import { ChatInput } from '../components/ChatInput';
780
- import { ChatMessage } from '../components/ChatMessage';
781
- import { TypingIndicator } from '../components/TypingIndicator';
782
- import { colors, spacing, typography } from '../theme';
783
-
784
- export interface MainScreenHandle {
785
- openThread: (id: string) => void;
786
- startNewThread: () => void;
787
- }
788
-
789
- interface MainScreenProps {
790
- api: MacBridgeApiClient;
791
- ws: MacBridgeWsClient;
792
- onOpenDrawer: () => void;
793
- }
794
-
795
- const SUGGESTIONS = [
796
- 'Explain the current codebase structure',
797
- 'Write tests for the main module',
798
- ];
799
-
800
- export const MainScreen = forwardRef<MainScreenHandle, MainScreenProps>(
801
- function MainScreen({ api, ws, onOpenDrawer }, ref) {
802
- const [selectedThread, setSelectedThread] = useState<Thread | null>(null);
803
- const [selectedThreadId, setSelectedThreadId] = useState<string | null>(null);
804
- const [draft, setDraft] = useState('');
805
- const [sending, setSending] = useState(false);
806
- const [creating, setCreating] = useState(false);
807
- const [error, setError] = useState<string | null>(null);
808
- const scrollRef = useRef<ScrollView>(null);
809
-
810
- useImperativeHandle(ref, () => ({
811
- openThread: (id: string) => {
812
- void loadThread(id);
813
- },
814
- startNewThread: () => {
815
- setSelectedThread(null);
816
- setSelectedThreadId(null);
817
- setDraft('');
818
- setError(null);
819
- },
820
- }));
821
-
822
- const startNewThread = useCallback(() => {
823
- setSelectedThread(null);
824
- setSelectedThreadId(null);
825
- setDraft('');
826
- setError(null);
827
- }, []);
828
-
829
- const loadThread = useCallback(
830
- async (threadId: string) => {
831
- try {
832
- const thread = await api.getThread(threadId);
833
- setSelectedThreadId(threadId);
834
- setSelectedThread(thread);
835
- setError(null);
836
- } catch (err) {
837
- setError((err as Error).message);
838
- }
839
- },
840
- [api]
841
- );
842
-
843
- const createThread = useCallback(async () => {
844
- const content = draft.trim();
845
- if (!content) return;
846
-
847
- const optimisticThreadId = `temp-${Date.now()}`;
848
- const optimisticMessage: ThreadMessage = {
849
- id: `msg-${Date.now()}`,
850
- role: 'user',
851
- content,
852
- createdAt: new Date().toISOString(),
853
- };
854
-
855
- const optimisticThread: Thread = {
856
- id: optimisticThreadId,
857
- title: 'New Thread...',
858
- status: 'running',
859
- createdAt: new Date().toISOString(),
860
- updatedAt: new Date().toISOString(),
861
- statusUpdatedAt: new Date().toISOString(),
862
- lastMessagePreview: content.slice(0, 50),
863
- messages: [optimisticMessage],
864
- };
865
-
866
- setDraft('');
867
- setSelectedThreadId(optimisticThreadId);
868
- setSelectedThread(optimisticThread);
869
-
870
- try {
871
- setCreating(true);
872
- const created = await api.createThread({ message: content });
873
- setSelectedThreadId(created.id);
874
- setSelectedThread(created);
875
- setError(null);
876
- } catch (err) {
877
- setError((err as Error).message);
878
- } finally {
879
- setCreating(false);
880
- }
881
- }, [api, draft]);
882
-
883
- const sendMessage = useCallback(async () => {
884
- const content = draft.trim();
885
- if (!selectedThreadId || !content) return;
886
-
887
- const optimisticMessage: ThreadMessage = {
888
- id: `msg-${Date.now()}`,
889
- role: 'user',
890
- content,
891
- createdAt: new Date().toISOString(),
892
- };
893
-
894
- setDraft('');
895
- setSelectedThread((prev) => {
896
- if (!prev) return prev;
897
- return {
898
- ...prev,
899
- messages: [...prev.messages, optimisticMessage],
900
- };
901
- });
902
- setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);
903
-
904
- try {
905
- setSending(true);
906
- const updated = await api.sendThreadMessage(selectedThreadId, { content });
907
- setSelectedThread(updated);
908
- setError(null);
909
- } catch (err) {
910
- setError((err as Error).message);
911
- } finally {
912
- setSending(false);
913
- }
914
- }, [api, draft, selectedThreadId]);
915
-
916
- useEffect(() => {
917
- return ws.onEvent((event: BridgeWsEvent) => {
918
- if (event.type === 'thread.message') {
919
- setSelectedThread((prev) => {
920
- if (!prev || prev.id !== event.payload.threadId) return prev;
921
-
922
- const incoming = event.payload.message;
923
- const existingOptimisticIdx = prev.messages.findIndex(
924
- (m) => m.id.startsWith('msg-') && m.role === incoming.role && m.content === incoming.content
925
- );
926
-
927
- let newMessages = [...prev.messages];
928
- if (existingOptimisticIdx !== -1) {
929
- newMessages[existingOptimisticIdx] = incoming;
930
- } else {
931
- newMessages = upsertMessage(newMessages, incoming);
932
- }
933
-
934
- return {
935
- ...prev,
936
- messages: newMessages,
937
- };
938
- });
939
- }
940
- if (event.type === 'thread.message.delta') {
941
- setSelectedThread((prev) => {
942
- if (!prev || prev.id !== event.payload.threadId) return prev;
943
- const exists = prev.messages.find((m) => m.id === event.payload.messageId);
944
- const streamed: ThreadMessage = {
945
- id: event.payload.messageId,
946
- role: 'assistant',
947
- content: event.payload.content,
948
- createdAt: event.payload.updatedAt,
949
- };
950
- const messages = exists
951
- ? prev.messages.map((m) =>
952
- m.id === event.payload.messageId ? { ...m, content: event.payload.content } : m
953
- )
954
- : [...prev.messages, streamed];
955
- return { ...prev, messages };
956
- });
957
- setTimeout(() => scrollRef.current?.scrollToEnd({ animated: true }), 50);
958
- }
959
- if (event.type === 'thread.updated' && selectedThreadId === event.payload.id) {
960
- setSelectedThread((prev) => (prev ? { ...prev, ...event.payload } : prev));
961
- }
962
- });
963
- }, [ws, selectedThreadId]);
964
-
965
- const handleSubmit = selectedThread ? sendMessage : createThread;
966
- const isLoading = sending || creating;
967
- const isStreaming = selectedThread?.status === 'running';
968
-
969
- return (
970
- <View style={styles.container}>
971
- <ChatHeader onOpenDrawer={onOpenDrawer} />
972
-
973
- <View style={styles.bodyContainer}>
974
- {selectedThread ? (
975
- <ChatView
976
- thread={selectedThread}
977
- scrollRef={scrollRef}
978
- isStreaming={isStreaming}
979
- />
980
- ) : (
981
- <ComposeView onSuggestion={(s) => setDraft(s)} />
982
- )}
983
-
984
- <KeyboardAvoidingView
985
- behavior={Platform.OS === 'ios' ? 'padding' : undefined}
986
- keyboardVerticalOffset={0}
987
- style={styles.keyboardAvoiding}
988
- >
989
- {error ? <Text style={styles.errorText}>{error}</Text> : null}
990
- <ChatInput
991
- value={draft}
992
- onChangeText={setDraft}
993
- onSubmit={() => void handleSubmit()}
994
- onNewThread={startNewThread}
995
- isLoading={isLoading}
996
- placeholder={selectedThread ? 'Reply...' : 'Message Codex...'}
997
- />
998
- </KeyboardAvoidingView>
999
- </View>
1000
- </View>
1001
- );
1002
- }
1003
- );
1004
-
1005
- // ── Compose View ───────────────────────────────────────────────────
1006
-
1007
- function ComposeView({ onSuggestion }: { onSuggestion: (s: string) => void }) {
1008
- return (
1009
- <View style={styles.composeContainer}>
1010
- <Ionicons name="cube-outline" size={44} color={colors.textMuted} style={styles.composeIcon} />
1011
- <Text style={styles.composeTitle}>Let's build</Text>
1012
- <Text style={styles.composeSubtitle}>clawdex-mobile</Text>
1013
- <View style={styles.suggestions}>
1014
- {SUGGESTIONS.map((s) => (
1015
- <Pressable
1016
- key={s}
1017
- style={({ pressed }) => [
1018
- styles.suggestionCard,
1019
- pressed && styles.suggestionCardPressed,
1020
- ]}
1021
- onPress={() => onSuggestion(s)}
1022
- >
1023
- <Text style={styles.suggestionText}>{s}</Text>
1024
- </Pressable>
1025
- ))}
1026
- </View>
1027
- </View>
1028
- );
1029
- }
1030
-
1031
- // ── Chat View ──────────────────────────────────────────────────────
1032
-
1033
- function ChatView({
1034
- thread,
1035
- scrollRef,
1036
- isStreaming,
1037
- }: {
1038
- thread: Thread;
1039
- scrollRef: React.RefObject<ScrollView | null>;
1040
- isStreaming: boolean;
1041
- }) {
1042
- const visibleMessages = thread.messages.filter((msg) => {
1043
- const text = msg.content || '';
1044
- if (text.includes('FINAL_TASK_RESULT_JSON')) return false;
1045
- if (text.includes('Current working directory is:')) return false;
1046
- if (text.includes('You are operating in task worktree')) return false;
1047
- return true;
1048
- });
1049
-
1050
- return (
1051
- <ScrollView
1052
- ref={scrollRef}
1053
- style={styles.messageList}
1054
- contentContainerStyle={styles.messageListContent}
1055
- showsVerticalScrollIndicator={false}
1056
- onContentSizeChange={() => scrollRef.current?.scrollToEnd({ animated: false })}
1057
- >
1058
- {visibleMessages.map((msg) => (
1059
- <ChatMessage key={msg.id} message={msg} />
1060
- ))}
1061
- {isStreaming ? <TypingIndicator /> : null}
1062
- </ScrollView>
1063
- );
1064
- }
1065
-
1066
- // ── Helpers ────────────────────────────────────────────────────────
1067
-
1068
- function upsertMessage(messages: ThreadMessage[], message: ThreadMessage): ThreadMessage[] {
1069
- const idx = messages.findIndex((m) => m.id === message.id);
1070
- if (idx === -1) return [...messages, message];
1071
- return messages.map((m, i) => (i === idx ? message : m));
1072
- }
1073
-
1074
- // ── Styles ─────────────────────────────────────────────────────────
1075
-
1076
- const styles = StyleSheet.create({
1077
- container: {
1078
- flex: 1,
1079
- backgroundColor: colors.bgMain,
1080
- },
1081
-
1082
- bodyContainer: {
1083
- flex: 1,
1084
- position: 'relative',
1085
- },
1086
- keyboardAvoiding: {
1087
- position: 'absolute',
1088
- bottom: 0,
1089
- left: 0,
1090
- right: 0,
1091
- },
1092
-
1093
- // Compose
1094
- composeContainer: {
1095
- flex: 1,
1096
- alignItems: 'center',
1097
- justifyContent: 'center',
1098
- paddingHorizontal: spacing.xl,
1099
- paddingBottom: spacing.xxl * 2,
1100
- },
1101
- composeIcon: {
1102
- marginBottom: spacing.lg,
1103
- },
1104
- composeTitle: {
1105
- fontSize: 28,
1106
- fontWeight: '700',
1107
- color: colors.textPrimary,
1108
- marginBottom: spacing.xs,
1109
- },
1110
- composeSubtitle: {
1111
- ...typography.body,
1112
- color: colors.textMuted,
1113
- marginBottom: spacing.xl * 2,
1114
- },
1115
- suggestions: {
1116
- flexDirection: 'row',
1117
- gap: spacing.md,
1118
- width: '100%',
1119
- },
1120
- suggestionCard: {
1121
- flex: 1,
1122
- backgroundColor: colors.bgItem,
1123
- borderWidth: 1,
1124
- borderColor: colors.border,
1125
- borderRadius: 12,
1126
- padding: spacing.md,
1127
- },
1128
- suggestionCardPressed: {
1129
- backgroundColor: 'rgba(255, 255, 255, 0.06)',
1130
- },
1131
- suggestionText: {
1132
- ...typography.caption,
1133
- color: colors.textPrimary,
1134
- lineHeight: 18,
1135
- },
1136
-
1137
- // Chat
1138
- messageList: {
1139
- flex: 1,
1140
- },
1141
- messageListContent: {
1142
- padding: spacing.lg,
1143
- paddingTop: 100,
1144
- paddingBottom: spacing.xxl * 5,
1145
- gap: spacing.xl,
1146
- },
1147
-
1148
- // Error
1149
- errorText: {
1150
- ...typography.caption,
1151
- color: colors.error,
1152
- paddingHorizontal: spacing.lg,
1153
- paddingBottom: spacing.xs,
1154
- },
1155
- });
1156
- ```
1157
-
1158
- **Step 2: Verify compilation**
1159
-
1160
- Run: `cd apps/mobile && npx tsc --noEmit 2>&1 | head -30`
1161
- Expected: No type errors
1162
-
1163
- **Step 3: Commit**
1164
-
1165
- ```bash
1166
- git add apps/mobile/src/screens/MainScreen.tsx
1167
- git commit -m "feat: refactor MainScreen to use extracted Codex-style components"
1168
- ```
1169
-
1170
- ---
1171
-
1172
- ### Task 8: Retheme DrawerContent.tsx
1173
-
1174
- **Files:**
1175
- - Modify: `apps/mobile/src/navigation/DrawerContent.tsx`
1176
-
1177
- **Step 1: Replace BlurView with flat dark background, update colors**
1178
-
1179
- Remove `import { BlurView } from 'expo-blur'`. Replace the `<BlurView>` wrapper with a plain `<View>` using `backgroundColor: colors.bgSidebar`. Update the "New Thread" button to use `colors.accent`. Update selected thread highlight to use gold accent instead of blue.
1180
-
1181
- Key style changes:
1182
- - `container`: `backgroundColor: colors.bgSidebar` (flat `#1A1A1A`)
1183
- - Remove `<BlurView intensity={80} tint="dark" style={StyleSheet.absoluteFill} />`
1184
- - `newThreadBtn`: `backgroundColor: colors.accent` (gold)
1185
- - `threadItemSelected`: `backgroundColor: 'rgba(200, 169, 70, 0.1)'`, `borderColor: 'rgba(200, 169, 70, 0.2)'`
1186
-
1187
- **Step 2: Verify compilation**
1188
-
1189
- Run: `cd apps/mobile && npx tsc --noEmit 2>&1 | head -30`
1190
- Expected: No type errors
1191
-
1192
- **Step 3: Commit**
1193
-
1194
- ```bash
1195
- git add apps/mobile/src/navigation/DrawerContent.tsx
1196
- git commit -m "feat: retheme DrawerContent to flat dark Codex style"
1197
- ```
1198
-
1199
- ---
1200
-
1201
- ### Task 9: Visual smoke test
1202
-
1203
- **Step 1: Start the Expo dev server**
1204
-
1205
- Run: `cd apps/mobile && npx expo start`
1206
-
1207
- **Step 2: Verify on device/simulator**
1208
-
1209
- Check:
1210
- - [ ] Main screen has flat `#0D0D0D` background (no gradient)
1211
- - [ ] Header shows hamburger + "Codex >" + sparkle icon
1212
- - [ ] Compose view shows suggestion cards with dark theme
1213
- - [ ] User messages render as dark pills, right-aligned, monospace
1214
- - [ ] Assistant messages render as bare markdown, no bubble
1215
- - [ ] Typing indicator (three dots) appears when thread is running
1216
- - [ ] "+" button in input bar works (creates new thread)
1217
- - [ ] Drawer opens with flat dark background, gold "New thread" button
1218
- - [ ] Code blocks in markdown have dark bg, gold inline code
1219
-
1220
- **Step 3: Fix any visual issues found**
1221
-
1222
- Iterate on colors/spacing as needed.
1223
-
1224
- **Step 4: Final commit**
1225
-
1226
- ```bash
1227
- git add -A
1228
- git commit -m "fix: visual polish for Codex-style UI"
1229
- ```