better-codex 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +26 -0
  2. package/apps/backend/README.md +46 -0
  3. package/apps/backend/bun.lock +64 -0
  4. package/apps/backend/package.json +18 -0
  5. package/apps/backend/scripts/generate-protocol.ts +32 -0
  6. package/apps/backend/src/analytics/service.ts +219 -0
  7. package/apps/backend/src/analytics/store.ts +284 -0
  8. package/apps/backend/src/config.ts +98 -0
  9. package/apps/backend/src/core/app-server.ts +131 -0
  10. package/apps/backend/src/core/jsonrpc.ts +166 -0
  11. package/apps/backend/src/protocol/AbsolutePathBuf.ts +14 -0
  12. package/apps/backend/src/protocol/AddConversationListenerParams.ts +6 -0
  13. package/apps/backend/src/protocol/AddConversationSubscriptionResponse.ts +5 -0
  14. package/apps/backend/src/protocol/AgentMessageContent.ts +5 -0
  15. package/apps/backend/src/protocol/AgentMessageContentDeltaEvent.ts +5 -0
  16. package/apps/backend/src/protocol/AgentMessageDeltaEvent.ts +5 -0
  17. package/apps/backend/src/protocol/AgentMessageEvent.ts +5 -0
  18. package/apps/backend/src/protocol/AgentMessageItem.ts +6 -0
  19. package/apps/backend/src/protocol/AgentReasoningDeltaEvent.ts +5 -0
  20. package/apps/backend/src/protocol/AgentReasoningEvent.ts +5 -0
  21. package/apps/backend/src/protocol/AgentReasoningRawContentDeltaEvent.ts +5 -0
  22. package/apps/backend/src/protocol/AgentReasoningRawContentEvent.ts +5 -0
  23. package/apps/backend/src/protocol/AgentReasoningSectionBreakEvent.ts +5 -0
  24. package/apps/backend/src/protocol/Annotations.ts +9 -0
  25. package/apps/backend/src/protocol/ApplyPatchApprovalParams.ts +21 -0
  26. package/apps/backend/src/protocol/ApplyPatchApprovalRequestEvent.ts +23 -0
  27. package/apps/backend/src/protocol/ApplyPatchApprovalResponse.ts +6 -0
  28. package/apps/backend/src/protocol/ArchiveConversationParams.ts +6 -0
  29. package/apps/backend/src/protocol/ArchiveConversationResponse.ts +5 -0
  30. package/apps/backend/src/protocol/AskForApproval.ts +9 -0
  31. package/apps/backend/src/protocol/AudioContent.ts +9 -0
  32. package/apps/backend/src/protocol/AuthMode.ts +5 -0
  33. package/apps/backend/src/protocol/AuthStatusChangeNotification.ts +9 -0
  34. package/apps/backend/src/protocol/BackgroundEventEvent.ts +5 -0
  35. package/apps/backend/src/protocol/BlobResourceContents.ts +5 -0
  36. package/apps/backend/src/protocol/CallToolResult.ts +10 -0
  37. package/apps/backend/src/protocol/CancelLoginChatGptParams.ts +5 -0
  38. package/apps/backend/src/protocol/CancelLoginChatGptResponse.ts +5 -0
  39. package/apps/backend/src/protocol/ClientInfo.ts +5 -0
  40. package/apps/backend/src/protocol/ClientNotification.ts +5 -0
  41. package/apps/backend/src/protocol/ClientRequest.ts +46 -0
  42. package/apps/backend/src/protocol/CodexErrorInfo.ts +8 -0
  43. package/apps/backend/src/protocol/ContentBlock.ts +10 -0
  44. package/apps/backend/src/protocol/ContentItem.ts +5 -0
  45. package/apps/backend/src/protocol/ContextCompactedEvent.ts +5 -0
  46. package/apps/backend/src/protocol/ConversationGitInfo.ts +5 -0
  47. package/apps/backend/src/protocol/ConversationId.ts +5 -0
  48. package/apps/backend/src/protocol/ConversationSummary.ts +8 -0
  49. package/apps/backend/src/protocol/CreditsSnapshot.ts +5 -0
  50. package/apps/backend/src/protocol/CustomPrompt.ts +5 -0
  51. package/apps/backend/src/protocol/DeprecationNoticeEvent.ts +13 -0
  52. package/apps/backend/src/protocol/ElicitationRequestEvent.ts +6 -0
  53. package/apps/backend/src/protocol/EmbeddedResource.ts +13 -0
  54. package/apps/backend/src/protocol/EmbeddedResourceResource.ts +7 -0
  55. package/apps/backend/src/protocol/ErrorEvent.ts +6 -0
  56. package/apps/backend/src/protocol/EventMsg.ts +60 -0
  57. package/apps/backend/src/protocol/ExecApprovalRequestEvent.ts +32 -0
  58. package/apps/backend/src/protocol/ExecCommandApprovalParams.ts +12 -0
  59. package/apps/backend/src/protocol/ExecCommandApprovalResponse.ts +6 -0
  60. package/apps/backend/src/protocol/ExecCommandBeginEvent.ts +35 -0
  61. package/apps/backend/src/protocol/ExecCommandEndEvent.ts +59 -0
  62. package/apps/backend/src/protocol/ExecCommandOutputDeltaEvent.ts +18 -0
  63. package/apps/backend/src/protocol/ExecCommandSource.ts +5 -0
  64. package/apps/backend/src/protocol/ExecOneOffCommandParams.ts +6 -0
  65. package/apps/backend/src/protocol/ExecOneOffCommandResponse.ts +5 -0
  66. package/apps/backend/src/protocol/ExecOutputStream.ts +5 -0
  67. package/apps/backend/src/protocol/ExecPolicyAmendment.ts +12 -0
  68. package/apps/backend/src/protocol/ExitedReviewModeEvent.ts +6 -0
  69. package/apps/backend/src/protocol/FileChange.ts +5 -0
  70. package/apps/backend/src/protocol/ForcedLoginMethod.ts +5 -0
  71. package/apps/backend/src/protocol/FunctionCallOutputContentItem.ts +9 -0
  72. package/apps/backend/src/protocol/FunctionCallOutputPayload.ts +15 -0
  73. package/apps/backend/src/protocol/FuzzyFileSearchParams.ts +5 -0
  74. package/apps/backend/src/protocol/FuzzyFileSearchResponse.ts +6 -0
  75. package/apps/backend/src/protocol/FuzzyFileSearchResult.ts +8 -0
  76. package/apps/backend/src/protocol/GetAuthStatusParams.ts +5 -0
  77. package/apps/backend/src/protocol/GetAuthStatusResponse.ts +6 -0
  78. package/apps/backend/src/protocol/GetConversationSummaryParams.ts +6 -0
  79. package/apps/backend/src/protocol/GetConversationSummaryResponse.ts +6 -0
  80. package/apps/backend/src/protocol/GetHistoryEntryResponseEvent.ts +10 -0
  81. package/apps/backend/src/protocol/GetUserAgentResponse.ts +5 -0
  82. package/apps/backend/src/protocol/GetUserSavedConfigResponse.ts +6 -0
  83. package/apps/backend/src/protocol/GhostCommit.ts +8 -0
  84. package/apps/backend/src/protocol/GitDiffToRemoteParams.ts +5 -0
  85. package/apps/backend/src/protocol/GitDiffToRemoteResponse.ts +6 -0
  86. package/apps/backend/src/protocol/GitSha.ts +5 -0
  87. package/apps/backend/src/protocol/HistoryEntry.ts +5 -0
  88. package/apps/backend/src/protocol/ImageContent.ts +9 -0
  89. package/apps/backend/src/protocol/InitializeParams.ts +6 -0
  90. package/apps/backend/src/protocol/InitializeResponse.ts +5 -0
  91. package/apps/backend/src/protocol/InputItem.ts +5 -0
  92. package/apps/backend/src/protocol/InterruptConversationParams.ts +6 -0
  93. package/apps/backend/src/protocol/InterruptConversationResponse.ts +6 -0
  94. package/apps/backend/src/protocol/ItemCompletedEvent.ts +7 -0
  95. package/apps/backend/src/protocol/ItemStartedEvent.ts +7 -0
  96. package/apps/backend/src/protocol/ListConversationsParams.ts +5 -0
  97. package/apps/backend/src/protocol/ListConversationsResponse.ts +6 -0
  98. package/apps/backend/src/protocol/ListCustomPromptsResponseEvent.ts +9 -0
  99. package/apps/backend/src/protocol/ListSkillsResponseEvent.ts +9 -0
  100. package/apps/backend/src/protocol/LocalShellAction.ts +6 -0
  101. package/apps/backend/src/protocol/LocalShellExecAction.ts +5 -0
  102. package/apps/backend/src/protocol/LocalShellStatus.ts +5 -0
  103. package/apps/backend/src/protocol/LoginApiKeyParams.ts +5 -0
  104. package/apps/backend/src/protocol/LoginApiKeyResponse.ts +5 -0
  105. package/apps/backend/src/protocol/LoginChatGptCompleteNotification.ts +8 -0
  106. package/apps/backend/src/protocol/LoginChatGptResponse.ts +5 -0
  107. package/apps/backend/src/protocol/LogoutChatGptResponse.ts +5 -0
  108. package/apps/backend/src/protocol/McpAuthStatus.ts +5 -0
  109. package/apps/backend/src/protocol/McpInvocation.ts +18 -0
  110. package/apps/backend/src/protocol/McpListToolsResponseEvent.ts +25 -0
  111. package/apps/backend/src/protocol/McpStartupCompleteEvent.ts +6 -0
  112. package/apps/backend/src/protocol/McpStartupFailure.ts +5 -0
  113. package/apps/backend/src/protocol/McpStartupStatus.ts +5 -0
  114. package/apps/backend/src/protocol/McpStartupUpdateEvent.ts +14 -0
  115. package/apps/backend/src/protocol/McpToolCallBeginEvent.ts +10 -0
  116. package/apps/backend/src/protocol/McpToolCallEndEvent.ts +15 -0
  117. package/apps/backend/src/protocol/NetworkAccess.ts +8 -0
  118. package/apps/backend/src/protocol/NewConversationParams.ts +8 -0
  119. package/apps/backend/src/protocol/NewConversationResponse.ts +7 -0
  120. package/apps/backend/src/protocol/ParsedCommand.ts +12 -0
  121. package/apps/backend/src/protocol/PatchApplyBeginEvent.ts +23 -0
  122. package/apps/backend/src/protocol/PatchApplyEndEvent.ts +31 -0
  123. package/apps/backend/src/protocol/PlanItemArg.ts +6 -0
  124. package/apps/backend/src/protocol/PlanType.ts +5 -0
  125. package/apps/backend/src/protocol/Profile.ts +9 -0
  126. package/apps/backend/src/protocol/README.md +11 -0
  127. package/apps/backend/src/protocol/RateLimitSnapshot.ts +8 -0
  128. package/apps/backend/src/protocol/RateLimitWindow.ts +17 -0
  129. package/apps/backend/src/protocol/RawResponseItemEvent.ts +6 -0
  130. package/apps/backend/src/protocol/ReasoningContentDeltaEvent.ts +5 -0
  131. package/apps/backend/src/protocol/ReasoningEffort.ts +8 -0
  132. package/apps/backend/src/protocol/ReasoningItem.ts +5 -0
  133. package/apps/backend/src/protocol/ReasoningItemContent.ts +5 -0
  134. package/apps/backend/src/protocol/ReasoningItemReasoningSummary.ts +5 -0
  135. package/apps/backend/src/protocol/ReasoningRawContentDeltaEvent.ts +5 -0
  136. package/apps/backend/src/protocol/ReasoningSummary.ts +10 -0
  137. package/apps/backend/src/protocol/RemoveConversationListenerParams.ts +5 -0
  138. package/apps/backend/src/protocol/RemoveConversationSubscriptionResponse.ts +5 -0
  139. package/apps/backend/src/protocol/RequestId.ts +5 -0
  140. package/apps/backend/src/protocol/Resource.ts +9 -0
  141. package/apps/backend/src/protocol/ResourceLink.ts +11 -0
  142. package/apps/backend/src/protocol/ResourceTemplate.ts +9 -0
  143. package/apps/backend/src/protocol/ResponseItem.ts +17 -0
  144. package/apps/backend/src/protocol/ResumeConversationParams.ts +8 -0
  145. package/apps/backend/src/protocol/ResumeConversationResponse.ts +7 -0
  146. package/apps/backend/src/protocol/ReviewCodeLocation.ts +9 -0
  147. package/apps/backend/src/protocol/ReviewDecision.ts +9 -0
  148. package/apps/backend/src/protocol/ReviewFinding.ts +9 -0
  149. package/apps/backend/src/protocol/ReviewLineRange.ts +8 -0
  150. package/apps/backend/src/protocol/ReviewOutputEvent.ts +9 -0
  151. package/apps/backend/src/protocol/ReviewRequest.ts +9 -0
  152. package/apps/backend/src/protocol/ReviewTarget.ts +9 -0
  153. package/apps/backend/src/protocol/Role.ts +8 -0
  154. package/apps/backend/src/protocol/SandboxMode.ts +5 -0
  155. package/apps/backend/src/protocol/SandboxPolicy.ts +35 -0
  156. package/apps/backend/src/protocol/SandboxSettings.ts +6 -0
  157. package/apps/backend/src/protocol/SendUserMessageParams.ts +7 -0
  158. package/apps/backend/src/protocol/SendUserMessageResponse.ts +5 -0
  159. package/apps/backend/src/protocol/SendUserTurnParams.ts +11 -0
  160. package/apps/backend/src/protocol/SendUserTurnResponse.ts +5 -0
  161. package/apps/backend/src/protocol/ServerNotification.ts +36 -0
  162. package/apps/backend/src/protocol/ServerRequest.ts +13 -0
  163. package/apps/backend/src/protocol/SessionConfiguredEvent.ts +48 -0
  164. package/apps/backend/src/protocol/SessionConfiguredNotification.ts +8 -0
  165. package/apps/backend/src/protocol/SessionSource.ts +6 -0
  166. package/apps/backend/src/protocol/SetDefaultModelParams.ts +6 -0
  167. package/apps/backend/src/protocol/SetDefaultModelResponse.ts +5 -0
  168. package/apps/backend/src/protocol/SkillErrorInfo.ts +5 -0
  169. package/apps/backend/src/protocol/SkillMetadata.ts +6 -0
  170. package/apps/backend/src/protocol/SkillScope.ts +5 -0
  171. package/apps/backend/src/protocol/SkillsListEntry.ts +7 -0
  172. package/apps/backend/src/protocol/StepStatus.ts +5 -0
  173. package/apps/backend/src/protocol/StreamErrorEvent.ts +6 -0
  174. package/apps/backend/src/protocol/SubAgentSource.ts +5 -0
  175. package/apps/backend/src/protocol/TaskCompleteEvent.ts +5 -0
  176. package/apps/backend/src/protocol/TaskStartedEvent.ts +5 -0
  177. package/apps/backend/src/protocol/TerminalInteractionEvent.ts +17 -0
  178. package/apps/backend/src/protocol/TextContent.ts +9 -0
  179. package/apps/backend/src/protocol/TextResourceContents.ts +5 -0
  180. package/apps/backend/src/protocol/TokenCountEvent.ts +7 -0
  181. package/apps/backend/src/protocol/TokenUsage.ts +5 -0
  182. package/apps/backend/src/protocol/TokenUsageInfo.ts +6 -0
  183. package/apps/backend/src/protocol/Tool.ts +11 -0
  184. package/apps/backend/src/protocol/ToolAnnotations.ts +15 -0
  185. package/apps/backend/src/protocol/ToolInputSchema.ts +9 -0
  186. package/apps/backend/src/protocol/ToolOutputSchema.ts +10 -0
  187. package/apps/backend/src/protocol/Tools.ts +5 -0
  188. package/apps/backend/src/protocol/TurnAbortReason.ts +5 -0
  189. package/apps/backend/src/protocol/TurnAbortedEvent.ts +6 -0
  190. package/apps/backend/src/protocol/TurnDiffEvent.ts +5 -0
  191. package/apps/backend/src/protocol/TurnItem.ts +9 -0
  192. package/apps/backend/src/protocol/UndoCompletedEvent.ts +5 -0
  193. package/apps/backend/src/protocol/UndoStartedEvent.ts +5 -0
  194. package/apps/backend/src/protocol/UpdatePlanArgs.ts +6 -0
  195. package/apps/backend/src/protocol/UserInfoResponse.ts +5 -0
  196. package/apps/backend/src/protocol/UserInput.ts +8 -0
  197. package/apps/backend/src/protocol/UserMessageEvent.ts +5 -0
  198. package/apps/backend/src/protocol/UserMessageItem.ts +6 -0
  199. package/apps/backend/src/protocol/UserSavedConfig.ts +14 -0
  200. package/apps/backend/src/protocol/Verbosity.ts +9 -0
  201. package/apps/backend/src/protocol/ViewImageToolCallEvent.ts +13 -0
  202. package/apps/backend/src/protocol/WarningEvent.ts +5 -0
  203. package/apps/backend/src/protocol/WebSearchAction.ts +5 -0
  204. package/apps/backend/src/protocol/WebSearchBeginEvent.ts +5 -0
  205. package/apps/backend/src/protocol/WebSearchEndEvent.ts +5 -0
  206. package/apps/backend/src/protocol/WebSearchItem.ts +5 -0
  207. package/apps/backend/src/protocol/index.ts +198 -0
  208. package/apps/backend/src/protocol/serde_json/JsonValue.ts +5 -0
  209. package/apps/backend/src/protocol/v2/Account.ts +6 -0
  210. package/apps/backend/src/protocol/v2/AccountLoginCompletedNotification.ts +5 -0
  211. package/apps/backend/src/protocol/v2/AccountRateLimitsUpdatedNotification.ts +6 -0
  212. package/apps/backend/src/protocol/v2/AccountUpdatedNotification.ts +6 -0
  213. package/apps/backend/src/protocol/v2/AgentMessageDeltaNotification.ts +5 -0
  214. package/apps/backend/src/protocol/v2/ApprovalDecision.ts +6 -0
  215. package/apps/backend/src/protocol/v2/AskForApproval.ts +5 -0
  216. package/apps/backend/src/protocol/v2/CancelLoginAccountParams.ts +5 -0
  217. package/apps/backend/src/protocol/v2/CancelLoginAccountResponse.ts +6 -0
  218. package/apps/backend/src/protocol/v2/CancelLoginAccountStatus.ts +5 -0
  219. package/apps/backend/src/protocol/v2/CodexErrorInfo.ts +11 -0
  220. package/apps/backend/src/protocol/v2/CommandAction.ts +5 -0
  221. package/apps/backend/src/protocol/v2/CommandExecParams.ts +6 -0
  222. package/apps/backend/src/protocol/v2/CommandExecResponse.ts +5 -0
  223. package/apps/backend/src/protocol/v2/CommandExecutionOutputDeltaNotification.ts +5 -0
  224. package/apps/backend/src/protocol/v2/CommandExecutionRequestApprovalParams.ts +14 -0
  225. package/apps/backend/src/protocol/v2/CommandExecutionRequestApprovalResponse.ts +6 -0
  226. package/apps/backend/src/protocol/v2/CommandExecutionStatus.ts +5 -0
  227. package/apps/backend/src/protocol/v2/Config.ts +15 -0
  228. package/apps/backend/src/protocol/v2/ConfigBatchWriteParams.ts +10 -0
  229. package/apps/backend/src/protocol/v2/ConfigEdit.ts +7 -0
  230. package/apps/backend/src/protocol/v2/ConfigLayer.ts +7 -0
  231. package/apps/backend/src/protocol/v2/ConfigLayerMetadata.ts +6 -0
  232. package/apps/backend/src/protocol/v2/ConfigLayerSource.ts +6 -0
  233. package/apps/backend/src/protocol/v2/ConfigReadParams.ts +5 -0
  234. package/apps/backend/src/protocol/v2/ConfigReadResponse.ts +8 -0
  235. package/apps/backend/src/protocol/v2/ConfigValueWriteParams.ts +11 -0
  236. package/apps/backend/src/protocol/v2/ConfigWriteResponse.ts +12 -0
  237. package/apps/backend/src/protocol/v2/ContextCompactedNotification.ts +5 -0
  238. package/apps/backend/src/protocol/v2/CreditsSnapshot.ts +5 -0
  239. package/apps/backend/src/protocol/v2/DeprecationNoticeNotification.ts +13 -0
  240. package/apps/backend/src/protocol/v2/ErrorNotification.ts +6 -0
  241. package/apps/backend/src/protocol/v2/ExecPolicyAmendment.ts +5 -0
  242. package/apps/backend/src/protocol/v2/FeedbackUploadParams.ts +5 -0
  243. package/apps/backend/src/protocol/v2/FeedbackUploadResponse.ts +5 -0
  244. package/apps/backend/src/protocol/v2/FileChangeOutputDeltaNotification.ts +5 -0
  245. package/apps/backend/src/protocol/v2/FileChangeRequestApprovalParams.ts +14 -0
  246. package/apps/backend/src/protocol/v2/FileChangeRequestApprovalResponse.ts +6 -0
  247. package/apps/backend/src/protocol/v2/FileUpdateChange.ts +6 -0
  248. package/apps/backend/src/protocol/v2/GetAccountParams.ts +5 -0
  249. package/apps/backend/src/protocol/v2/GetAccountRateLimitsResponse.ts +6 -0
  250. package/apps/backend/src/protocol/v2/GetAccountResponse.ts +6 -0
  251. package/apps/backend/src/protocol/v2/GitInfo.ts +5 -0
  252. package/apps/backend/src/protocol/v2/ItemCompletedNotification.ts +6 -0
  253. package/apps/backend/src/protocol/v2/ItemStartedNotification.ts +6 -0
  254. package/apps/backend/src/protocol/v2/ListMcpServerStatusParams.ts +13 -0
  255. package/apps/backend/src/protocol/v2/ListMcpServerStatusResponse.ts +11 -0
  256. package/apps/backend/src/protocol/v2/LoginAccountParams.ts +5 -0
  257. package/apps/backend/src/protocol/v2/LoginAccountResponse.ts +9 -0
  258. package/apps/backend/src/protocol/v2/LogoutAccountResponse.ts +5 -0
  259. package/apps/backend/src/protocol/v2/McpAuthStatus.ts +5 -0
  260. package/apps/backend/src/protocol/v2/McpServerOauthLoginCompletedNotification.ts +5 -0
  261. package/apps/backend/src/protocol/v2/McpServerOauthLoginParams.ts +5 -0
  262. package/apps/backend/src/protocol/v2/McpServerOauthLoginResponse.ts +5 -0
  263. package/apps/backend/src/protocol/v2/McpServerStatus.ts +9 -0
  264. package/apps/backend/src/protocol/v2/McpToolCallError.ts +5 -0
  265. package/apps/backend/src/protocol/v2/McpToolCallProgressNotification.ts +5 -0
  266. package/apps/backend/src/protocol/v2/McpToolCallResult.ts +7 -0
  267. package/apps/backend/src/protocol/v2/McpToolCallStatus.ts +5 -0
  268. package/apps/backend/src/protocol/v2/MergeStrategy.ts +5 -0
  269. package/apps/backend/src/protocol/v2/Model.ts +7 -0
  270. package/apps/backend/src/protocol/v2/ModelListParams.ts +13 -0
  271. package/apps/backend/src/protocol/v2/ModelListResponse.ts +11 -0
  272. package/apps/backend/src/protocol/v2/NetworkAccess.ts +5 -0
  273. package/apps/backend/src/protocol/v2/OverriddenMetadata.ts +7 -0
  274. package/apps/backend/src/protocol/v2/PatchApplyStatus.ts +5 -0
  275. package/apps/backend/src/protocol/v2/PatchChangeKind.ts +5 -0
  276. package/apps/backend/src/protocol/v2/ProfileV2.ts +10 -0
  277. package/apps/backend/src/protocol/v2/RateLimitSnapshot.ts +8 -0
  278. package/apps/backend/src/protocol/v2/RateLimitWindow.ts +5 -0
  279. package/apps/backend/src/protocol/v2/RawResponseItemCompletedNotification.ts +6 -0
  280. package/apps/backend/src/protocol/v2/ReasoningEffortOption.ts +6 -0
  281. package/apps/backend/src/protocol/v2/ReasoningSummaryPartAddedNotification.ts +5 -0
  282. package/apps/backend/src/protocol/v2/ReasoningSummaryTextDeltaNotification.ts +5 -0
  283. package/apps/backend/src/protocol/v2/ReasoningTextDeltaNotification.ts +5 -0
  284. package/apps/backend/src/protocol/v2/ReviewDelivery.ts +5 -0
  285. package/apps/backend/src/protocol/v2/ReviewStartParams.ts +12 -0
  286. package/apps/backend/src/protocol/v2/ReviewStartResponse.ts +13 -0
  287. package/apps/backend/src/protocol/v2/ReviewTarget.ts +9 -0
  288. package/apps/backend/src/protocol/v2/SandboxMode.ts +5 -0
  289. package/apps/backend/src/protocol/v2/SandboxPolicy.ts +7 -0
  290. package/apps/backend/src/protocol/v2/SandboxWorkspaceWrite.ts +5 -0
  291. package/apps/backend/src/protocol/v2/SessionSource.ts +5 -0
  292. package/apps/backend/src/protocol/v2/SkillErrorInfo.ts +5 -0
  293. package/apps/backend/src/protocol/v2/SkillMetadata.ts +6 -0
  294. package/apps/backend/src/protocol/v2/SkillScope.ts +5 -0
  295. package/apps/backend/src/protocol/v2/SkillsListEntry.ts +7 -0
  296. package/apps/backend/src/protocol/v2/SkillsListParams.ts +13 -0
  297. package/apps/backend/src/protocol/v2/SkillsListResponse.ts +6 -0
  298. package/apps/backend/src/protocol/v2/TerminalInteractionNotification.ts +5 -0
  299. package/apps/backend/src/protocol/v2/Thread.ts +46 -0
  300. package/apps/backend/src/protocol/v2/ThreadArchiveParams.ts +5 -0
  301. package/apps/backend/src/protocol/v2/ThreadArchiveResponse.ts +5 -0
  302. package/apps/backend/src/protocol/v2/ThreadItem.ts +48 -0
  303. package/apps/backend/src/protocol/v2/ThreadListParams.ts +18 -0
  304. package/apps/backend/src/protocol/v2/ThreadListResponse.ts +11 -0
  305. package/apps/backend/src/protocol/v2/ThreadResumeParams.ts +35 -0
  306. package/apps/backend/src/protocol/v2/ThreadResumeResponse.ts +9 -0
  307. package/apps/backend/src/protocol/v2/ThreadStartParams.ts +15 -0
  308. package/apps/backend/src/protocol/v2/ThreadStartResponse.ts +9 -0
  309. package/apps/backend/src/protocol/v2/ThreadStartedNotification.ts +6 -0
  310. package/apps/backend/src/protocol/v2/ThreadTokenUsage.ts +6 -0
  311. package/apps/backend/src/protocol/v2/ThreadTokenUsageUpdatedNotification.ts +6 -0
  312. package/apps/backend/src/protocol/v2/TokenUsageBreakdown.ts +5 -0
  313. package/apps/backend/src/protocol/v2/ToolsV2.ts +5 -0
  314. package/apps/backend/src/protocol/v2/Turn.ts +18 -0
  315. package/apps/backend/src/protocol/v2/TurnCompletedNotification.ts +6 -0
  316. package/apps/backend/src/protocol/v2/TurnDiffUpdatedNotification.ts +9 -0
  317. package/apps/backend/src/protocol/v2/TurnError.ts +6 -0
  318. package/apps/backend/src/protocol/v2/TurnInterruptParams.ts +5 -0
  319. package/apps/backend/src/protocol/v2/TurnInterruptResponse.ts +5 -0
  320. package/apps/backend/src/protocol/v2/TurnPlanStep.ts +6 -0
  321. package/apps/backend/src/protocol/v2/TurnPlanStepStatus.ts +5 -0
  322. package/apps/backend/src/protocol/v2/TurnPlanUpdatedNotification.ts +6 -0
  323. package/apps/backend/src/protocol/v2/TurnStartParams.ts +34 -0
  324. package/apps/backend/src/protocol/v2/TurnStartResponse.ts +6 -0
  325. package/apps/backend/src/protocol/v2/TurnStartedNotification.ts +6 -0
  326. package/apps/backend/src/protocol/v2/TurnStatus.ts +5 -0
  327. package/apps/backend/src/protocol/v2/UserInput.ts +5 -0
  328. package/apps/backend/src/protocol/v2/WindowsWorldWritableWarningNotification.ts +5 -0
  329. package/apps/backend/src/protocol/v2/WriteStatus.ts +5 -0
  330. package/apps/backend/src/protocol/v2/index.ts +123 -0
  331. package/apps/backend/src/reviews/service.ts +27 -0
  332. package/apps/backend/src/reviews/store.ts +124 -0
  333. package/apps/backend/src/server.ts +531 -0
  334. package/apps/backend/src/services/profile-store.ts +114 -0
  335. package/apps/backend/src/services/supervisor.ts +102 -0
  336. package/apps/backend/src/thread-index/service.ts +75 -0
  337. package/apps/backend/src/thread-index/store.ts +195 -0
  338. package/apps/backend/src/ws/messages.ts +73 -0
  339. package/apps/backend/tsconfig.json +20 -0
  340. package/apps/web/README.md +24 -0
  341. package/apps/web/bun.lock +1062 -0
  342. package/apps/web/eslint.config.js +23 -0
  343. package/apps/web/index.html +16 -0
  344. package/apps/web/package.json +38 -0
  345. package/apps/web/src/app.tsx +83 -0
  346. package/apps/web/src/components/composer/slash-command-menu.tsx +47 -0
  347. package/apps/web/src/components/index.ts +2 -0
  348. package/apps/web/src/components/layout/account-usage-panel.tsx +167 -0
  349. package/apps/web/src/components/layout/analytics-view.tsx +296 -0
  350. package/apps/web/src/components/layout/index.ts +7 -0
  351. package/apps/web/src/components/layout/mobile-header.tsx +56 -0
  352. package/apps/web/src/components/layout/reviews-view.tsx +848 -0
  353. package/apps/web/src/components/layout/session-view.tsx +1374 -0
  354. package/apps/web/src/components/layout/settings-dialog.tsx +322 -0
  355. package/apps/web/src/components/layout/side-bar.tsx +417 -0
  356. package/apps/web/src/components/layout/thread-list.tsx +488 -0
  357. package/apps/web/src/components/layout/virtualized-message-list.tsx +748 -0
  358. package/apps/web/src/components/loading/startup-ascii.ts +652 -0
  359. package/apps/web/src/components/loading/startup-loader.tsx +37 -0
  360. package/apps/web/src/components/session-view/file-mention-menu.tsx +46 -0
  361. package/apps/web/src/components/session-view/session-auth-banner.tsx +61 -0
  362. package/apps/web/src/components/session-view/session-composer.tsx +328 -0
  363. package/apps/web/src/components/session-view/session-dialogs.tsx +280 -0
  364. package/apps/web/src/components/session-view/session-empty.tsx +47 -0
  365. package/apps/web/src/components/session-view/session-header.tsx +49 -0
  366. package/apps/web/src/components/ui/avatar.tsx +19 -0
  367. package/apps/web/src/components/ui/badge.tsx +21 -0
  368. package/apps/web/src/components/ui/button.tsx +47 -0
  369. package/apps/web/src/components/ui/collapsible-content.tsx +114 -0
  370. package/apps/web/src/components/ui/contribution-graph.tsx +182 -0
  371. package/apps/web/src/components/ui/dialog-box.tsx +203 -0
  372. package/apps/web/src/components/ui/icon-button.tsx +32 -0
  373. package/apps/web/src/components/ui/icons.tsx +187 -0
  374. package/apps/web/src/components/ui/index.tsx +15 -0
  375. package/apps/web/src/components/ui/input.tsx +43 -0
  376. package/apps/web/src/components/ui/markdown-stream.tsx +21 -0
  377. package/apps/web/src/components/ui/mobile-drawer.tsx +124 -0
  378. package/apps/web/src/components/ui/section-header.tsx +13 -0
  379. package/apps/web/src/components/ui/select.tsx +217 -0
  380. package/apps/web/src/components/ui/shimmer.tsx +138 -0
  381. package/apps/web/src/components/ui/status-dot.tsx +24 -0
  382. package/apps/web/src/config.ts +5 -0
  383. package/apps/web/src/hooks/index.ts +3 -0
  384. package/apps/web/src/hooks/use-analytics.ts +122 -0
  385. package/apps/web/src/hooks/use-hub-connection.ts +587 -0
  386. package/apps/web/src/hooks/use-mobile.ts +76 -0
  387. package/apps/web/src/hooks/use-thread-history.ts +210 -0
  388. package/apps/web/src/index.css +269 -0
  389. package/apps/web/src/main.tsx +10 -0
  390. package/apps/web/src/services/hub-client.ts +358 -0
  391. package/apps/web/src/store/index.ts +528 -0
  392. package/apps/web/src/types/index.ts +119 -0
  393. package/apps/web/src/utils/account-refresh.ts +168 -0
  394. package/apps/web/src/utils/approval-policy.ts +53 -0
  395. package/apps/web/src/utils/init-prompt.ts +41 -0
  396. package/apps/web/src/utils/item-format.ts +170 -0
  397. package/apps/web/src/utils/prompt-expander.ts +62 -0
  398. package/apps/web/src/utils/reasoning-summary.ts +48 -0
  399. package/apps/web/src/utils/slash-commands.ts +98 -0
  400. package/apps/web/tsconfig.app.json +28 -0
  401. package/apps/web/tsconfig.json +7 -0
  402. package/apps/web/tsconfig.node.json +26 -0
  403. package/apps/web/vite.config.ts +8 -0
  404. package/bin/better-codex.cjs +199 -0
  405. package/package.json +20 -0
@@ -0,0 +1,35 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { ResponseItem } from "../ResponseItem";
5
+ import type { JsonValue } from "../serde_json/JsonValue";
6
+ import type { AskForApproval } from "./AskForApproval";
7
+ import type { SandboxMode } from "./SandboxMode";
8
+
9
+ /**
10
+ * There are three ways to resume a thread:
11
+ * 1. By thread_id: load the thread from disk by thread_id and resume it.
12
+ * 2. By history: instantiate the thread from memory and resume it.
13
+ * 3. By path: load the thread from disk by path and resume it.
14
+ *
15
+ * The precedence is: history > path > thread_id.
16
+ * If using history or path, the thread_id param will be ignored.
17
+ *
18
+ * Prefer using thread_id whenever possible.
19
+ */
20
+ export type ThreadResumeParams = { threadId: string,
21
+ /**
22
+ * [UNSTABLE] FOR CODEX CLOUD - DO NOT USE.
23
+ * If specified, the thread will be resumed with the provided history
24
+ * instead of loaded from disk.
25
+ */
26
+ history: Array<ResponseItem> | null,
27
+ /**
28
+ * [UNSTABLE] Specify the rollout path to resume from.
29
+ * If specified, the thread_id param will be ignored.
30
+ */
31
+ path: string | null,
32
+ /**
33
+ * Configuration overrides for the resumed thread, if any.
34
+ */
35
+ model: string | null, modelProvider: string | null, cwd: string | null, approvalPolicy: AskForApproval | null, sandbox: SandboxMode | null, config: { [key in string]?: JsonValue } | null, baseInstructions: string | null, developerInstructions: string | null, };
@@ -0,0 +1,9 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { ReasoningEffort } from "../ReasoningEffort";
5
+ import type { AskForApproval } from "./AskForApproval";
6
+ import type { SandboxPolicy } from "./SandboxPolicy";
7
+ import type { Thread } from "./Thread";
8
+
9
+ export type ThreadResumeResponse = { thread: Thread, model: string, modelProvider: string, cwd: string, approvalPolicy: AskForApproval, sandbox: SandboxPolicy, reasoningEffort: ReasoningEffort | null, };
@@ -0,0 +1,15 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { JsonValue } from "../serde_json/JsonValue";
5
+ import type { AskForApproval } from "./AskForApproval";
6
+ import type { SandboxMode } from "./SandboxMode";
7
+
8
+ export type ThreadStartParams = { model: string | null, modelProvider: string | null, cwd: string | null, approvalPolicy: AskForApproval | null, sandbox: SandboxMode | null, config: { [key in string]?: JsonValue } | null, baseInstructions: string | null, developerInstructions: string | null,
9
+ /**
10
+ * If true, opt into emitting raw response items on the event stream.
11
+ *
12
+ * This is for internal use only (e.g. Codex Cloud).
13
+ * (TODO): Figure out a better way to categorize internal / experimental events & protocols.
14
+ */
15
+ experimentalRawEvents: boolean, };
@@ -0,0 +1,9 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { ReasoningEffort } from "../ReasoningEffort";
5
+ import type { AskForApproval } from "./AskForApproval";
6
+ import type { SandboxPolicy } from "./SandboxPolicy";
7
+ import type { Thread } from "./Thread";
8
+
9
+ export type ThreadStartResponse = { thread: Thread, model: string, modelProvider: string, cwd: string, approvalPolicy: AskForApproval, sandbox: SandboxPolicy, reasoningEffort: ReasoningEffort | null, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { Thread } from "./Thread";
5
+
6
+ export type ThreadStartedNotification = { thread: Thread, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { TokenUsageBreakdown } from "./TokenUsageBreakdown";
5
+
6
+ export type ThreadTokenUsage = { total: TokenUsageBreakdown, last: TokenUsageBreakdown, modelContextWindow: number | null, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { ThreadTokenUsage } from "./ThreadTokenUsage";
5
+
6
+ export type ThreadTokenUsageUpdatedNotification = { threadId: string, turnId: string, tokenUsage: ThreadTokenUsage, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type TokenUsageBreakdown = { totalTokens: number, inputTokens: number, cachedInputTokens: number, outputTokens: number, reasoningOutputTokens: number, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type ToolsV2 = { web_search: boolean | null, view_image: boolean | null, };
@@ -0,0 +1,18 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { ThreadItem } from "./ThreadItem";
5
+ import type { TurnError } from "./TurnError";
6
+ import type { TurnStatus } from "./TurnStatus";
7
+
8
+ export type Turn = { id: string,
9
+ /**
10
+ * Only populated on a `thread/resume` response.
11
+ * For all other responses and notifications returning a Turn,
12
+ * the items field will be an empty list.
13
+ */
14
+ items: Array<ThreadItem>, status: TurnStatus,
15
+ /**
16
+ * Only populated when the Turn's status is failed.
17
+ */
18
+ error: TurnError | null, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { Turn } from "./Turn";
5
+
6
+ export type TurnCompletedNotification = { threadId: string, turn: Turn, };
@@ -0,0 +1,9 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ /**
6
+ * Notification that the turn-level unified diff has changed.
7
+ * Contains the latest aggregated diff across all file changes in the turn.
8
+ */
9
+ export type TurnDiffUpdatedNotification = { threadId: string, turnId: string, diff: string, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { CodexErrorInfo } from "./CodexErrorInfo";
5
+
6
+ export type TurnError = { message: string, codexErrorInfo: CodexErrorInfo | null, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type TurnInterruptParams = { threadId: string, turnId: string, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type TurnInterruptResponse = Record<string, never>;
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { TurnPlanStepStatus } from "./TurnPlanStepStatus";
5
+
6
+ export type TurnPlanStep = { step: string, status: TurnPlanStepStatus, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type TurnPlanStepStatus = "pending" | "inProgress" | "completed";
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { TurnPlanStep } from "./TurnPlanStep";
5
+
6
+ export type TurnPlanUpdatedNotification = { threadId: string, turnId: string, explanation: string | null, plan: Array<TurnPlanStep>, };
@@ -0,0 +1,34 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { ReasoningEffort } from "../ReasoningEffort";
5
+ import type { ReasoningSummary } from "../ReasoningSummary";
6
+ import type { AskForApproval } from "./AskForApproval";
7
+ import type { SandboxPolicy } from "./SandboxPolicy";
8
+ import type { UserInput } from "./UserInput";
9
+
10
+ export type TurnStartParams = { threadId: string, input: Array<UserInput>,
11
+ /**
12
+ * Override the working directory for this turn and subsequent turns.
13
+ */
14
+ cwd: string | null,
15
+ /**
16
+ * Override the approval policy for this turn and subsequent turns.
17
+ */
18
+ approvalPolicy: AskForApproval | null,
19
+ /**
20
+ * Override the sandbox policy for this turn and subsequent turns.
21
+ */
22
+ sandboxPolicy: SandboxPolicy | null,
23
+ /**
24
+ * Override the model for this turn and subsequent turns.
25
+ */
26
+ model: string | null,
27
+ /**
28
+ * Override the reasoning effort for this turn and subsequent turns.
29
+ */
30
+ effort: ReasoningEffort | null,
31
+ /**
32
+ * Override the reasoning summary for this turn and subsequent turns.
33
+ */
34
+ summary: ReasoningSummary | null, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { Turn } from "./Turn";
5
+
6
+ export type TurnStartResponse = { turn: Turn, };
@@ -0,0 +1,6 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+ import type { Turn } from "./Turn";
5
+
6
+ export type TurnStartedNotification = { threadId: string, turn: Turn, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type TurnStatus = "completed" | "interrupted" | "failed" | "inProgress";
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type UserInput = { "type": "text", text: string, } | { "type": "image", url: string, } | { "type": "localImage", path: string, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type WindowsWorldWritableWarningNotification = { samplePaths: Array<string>, extraCount: number, failedScan: boolean, };
@@ -0,0 +1,5 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
4
+
5
+ export type WriteStatus = "ok" | "okOverridden";
@@ -0,0 +1,123 @@
1
+ // GENERATED CODE! DO NOT MODIFY BY HAND!
2
+
3
+ export type { Account } from "./Account";
4
+ export type { AccountLoginCompletedNotification } from "./AccountLoginCompletedNotification";
5
+ export type { AccountRateLimitsUpdatedNotification } from "./AccountRateLimitsUpdatedNotification";
6
+ export type { AccountUpdatedNotification } from "./AccountUpdatedNotification";
7
+ export type { AgentMessageDeltaNotification } from "./AgentMessageDeltaNotification";
8
+ export type { ApprovalDecision } from "./ApprovalDecision";
9
+ export type { AskForApproval } from "./AskForApproval";
10
+ export type { CancelLoginAccountParams } from "./CancelLoginAccountParams";
11
+ export type { CancelLoginAccountResponse } from "./CancelLoginAccountResponse";
12
+ export type { CancelLoginAccountStatus } from "./CancelLoginAccountStatus";
13
+ export type { CodexErrorInfo } from "./CodexErrorInfo";
14
+ export type { CommandAction } from "./CommandAction";
15
+ export type { CommandExecParams } from "./CommandExecParams";
16
+ export type { CommandExecResponse } from "./CommandExecResponse";
17
+ export type { CommandExecutionOutputDeltaNotification } from "./CommandExecutionOutputDeltaNotification";
18
+ export type { CommandExecutionRequestApprovalParams } from "./CommandExecutionRequestApprovalParams";
19
+ export type { CommandExecutionRequestApprovalResponse } from "./CommandExecutionRequestApprovalResponse";
20
+ export type { CommandExecutionStatus } from "./CommandExecutionStatus";
21
+ export type { Config } from "./Config";
22
+ export type { ConfigBatchWriteParams } from "./ConfigBatchWriteParams";
23
+ export type { ConfigEdit } from "./ConfigEdit";
24
+ export type { ConfigLayer } from "./ConfigLayer";
25
+ export type { ConfigLayerMetadata } from "./ConfigLayerMetadata";
26
+ export type { ConfigLayerSource } from "./ConfigLayerSource";
27
+ export type { ConfigReadParams } from "./ConfigReadParams";
28
+ export type { ConfigReadResponse } from "./ConfigReadResponse";
29
+ export type { ConfigValueWriteParams } from "./ConfigValueWriteParams";
30
+ export type { ConfigWriteResponse } from "./ConfigWriteResponse";
31
+ export type { ContextCompactedNotification } from "./ContextCompactedNotification";
32
+ export type { CreditsSnapshot } from "./CreditsSnapshot";
33
+ export type { DeprecationNoticeNotification } from "./DeprecationNoticeNotification";
34
+ export type { ErrorNotification } from "./ErrorNotification";
35
+ export type { ExecPolicyAmendment } from "./ExecPolicyAmendment";
36
+ export type { FeedbackUploadParams } from "./FeedbackUploadParams";
37
+ export type { FeedbackUploadResponse } from "./FeedbackUploadResponse";
38
+ export type { FileChangeOutputDeltaNotification } from "./FileChangeOutputDeltaNotification";
39
+ export type { FileChangeRequestApprovalParams } from "./FileChangeRequestApprovalParams";
40
+ export type { FileChangeRequestApprovalResponse } from "./FileChangeRequestApprovalResponse";
41
+ export type { FileUpdateChange } from "./FileUpdateChange";
42
+ export type { GetAccountParams } from "./GetAccountParams";
43
+ export type { GetAccountRateLimitsResponse } from "./GetAccountRateLimitsResponse";
44
+ export type { GetAccountResponse } from "./GetAccountResponse";
45
+ export type { GitInfo } from "./GitInfo";
46
+ export type { ItemCompletedNotification } from "./ItemCompletedNotification";
47
+ export type { ItemStartedNotification } from "./ItemStartedNotification";
48
+ export type { ListMcpServerStatusParams } from "./ListMcpServerStatusParams";
49
+ export type { ListMcpServerStatusResponse } from "./ListMcpServerStatusResponse";
50
+ export type { LoginAccountParams } from "./LoginAccountParams";
51
+ export type { LoginAccountResponse } from "./LoginAccountResponse";
52
+ export type { LogoutAccountResponse } from "./LogoutAccountResponse";
53
+ export type { McpAuthStatus } from "./McpAuthStatus";
54
+ export type { McpServerOauthLoginCompletedNotification } from "./McpServerOauthLoginCompletedNotification";
55
+ export type { McpServerOauthLoginParams } from "./McpServerOauthLoginParams";
56
+ export type { McpServerOauthLoginResponse } from "./McpServerOauthLoginResponse";
57
+ export type { McpServerStatus } from "./McpServerStatus";
58
+ export type { McpToolCallError } from "./McpToolCallError";
59
+ export type { McpToolCallProgressNotification } from "./McpToolCallProgressNotification";
60
+ export type { McpToolCallResult } from "./McpToolCallResult";
61
+ export type { McpToolCallStatus } from "./McpToolCallStatus";
62
+ export type { MergeStrategy } from "./MergeStrategy";
63
+ export type { Model } from "./Model";
64
+ export type { ModelListParams } from "./ModelListParams";
65
+ export type { ModelListResponse } from "./ModelListResponse";
66
+ export type { NetworkAccess } from "./NetworkAccess";
67
+ export type { OverriddenMetadata } from "./OverriddenMetadata";
68
+ export type { PatchApplyStatus } from "./PatchApplyStatus";
69
+ export type { PatchChangeKind } from "./PatchChangeKind";
70
+ export type { ProfileV2 } from "./ProfileV2";
71
+ export type { RateLimitSnapshot } from "./RateLimitSnapshot";
72
+ export type { RateLimitWindow } from "./RateLimitWindow";
73
+ export type { RawResponseItemCompletedNotification } from "./RawResponseItemCompletedNotification";
74
+ export type { ReasoningEffortOption } from "./ReasoningEffortOption";
75
+ export type { ReasoningSummaryPartAddedNotification } from "./ReasoningSummaryPartAddedNotification";
76
+ export type { ReasoningSummaryTextDeltaNotification } from "./ReasoningSummaryTextDeltaNotification";
77
+ export type { ReasoningTextDeltaNotification } from "./ReasoningTextDeltaNotification";
78
+ export type { ReviewDelivery } from "./ReviewDelivery";
79
+ export type { ReviewStartParams } from "./ReviewStartParams";
80
+ export type { ReviewStartResponse } from "./ReviewStartResponse";
81
+ export type { ReviewTarget } from "./ReviewTarget";
82
+ export type { SandboxMode } from "./SandboxMode";
83
+ export type { SandboxPolicy } from "./SandboxPolicy";
84
+ export type { SandboxWorkspaceWrite } from "./SandboxWorkspaceWrite";
85
+ export type { SessionSource } from "./SessionSource";
86
+ export type { SkillErrorInfo } from "./SkillErrorInfo";
87
+ export type { SkillMetadata } from "./SkillMetadata";
88
+ export type { SkillScope } from "./SkillScope";
89
+ export type { SkillsListEntry } from "./SkillsListEntry";
90
+ export type { SkillsListParams } from "./SkillsListParams";
91
+ export type { SkillsListResponse } from "./SkillsListResponse";
92
+ export type { TerminalInteractionNotification } from "./TerminalInteractionNotification";
93
+ export type { Thread } from "./Thread";
94
+ export type { ThreadArchiveParams } from "./ThreadArchiveParams";
95
+ export type { ThreadArchiveResponse } from "./ThreadArchiveResponse";
96
+ export type { ThreadItem } from "./ThreadItem";
97
+ export type { ThreadListParams } from "./ThreadListParams";
98
+ export type { ThreadListResponse } from "./ThreadListResponse";
99
+ export type { ThreadResumeParams } from "./ThreadResumeParams";
100
+ export type { ThreadResumeResponse } from "./ThreadResumeResponse";
101
+ export type { ThreadStartParams } from "./ThreadStartParams";
102
+ export type { ThreadStartResponse } from "./ThreadStartResponse";
103
+ export type { ThreadStartedNotification } from "./ThreadStartedNotification";
104
+ export type { ThreadTokenUsage } from "./ThreadTokenUsage";
105
+ export type { ThreadTokenUsageUpdatedNotification } from "./ThreadTokenUsageUpdatedNotification";
106
+ export type { TokenUsageBreakdown } from "./TokenUsageBreakdown";
107
+ export type { ToolsV2 } from "./ToolsV2";
108
+ export type { Turn } from "./Turn";
109
+ export type { TurnCompletedNotification } from "./TurnCompletedNotification";
110
+ export type { TurnDiffUpdatedNotification } from "./TurnDiffUpdatedNotification";
111
+ export type { TurnError } from "./TurnError";
112
+ export type { TurnInterruptParams } from "./TurnInterruptParams";
113
+ export type { TurnInterruptResponse } from "./TurnInterruptResponse";
114
+ export type { TurnPlanStep } from "./TurnPlanStep";
115
+ export type { TurnPlanStepStatus } from "./TurnPlanStepStatus";
116
+ export type { TurnPlanUpdatedNotification } from "./TurnPlanUpdatedNotification";
117
+ export type { TurnStartParams } from "./TurnStartParams";
118
+ export type { TurnStartResponse } from "./TurnStartResponse";
119
+ export type { TurnStartedNotification } from "./TurnStartedNotification";
120
+ export type { TurnStatus } from "./TurnStatus";
121
+ export type { UserInput } from "./UserInput";
122
+ export type { WindowsWorldWritableWarningNotification } from "./WindowsWorldWritableWarningNotification";
123
+ export type { WriteStatus } from "./WriteStatus";
@@ -0,0 +1,27 @@
1
+ import { ReviewStore, type ReviewSessionRow } from './store'
2
+
3
+ export type ReviewUpsertInput = ReviewSessionRow
4
+
5
+ export class ReviewService {
6
+ constructor(private readonly store: ReviewStore) {}
7
+
8
+ init(): void {
9
+ this.store.init()
10
+ }
11
+
12
+ upsert(session: ReviewUpsertInput): void {
13
+ this.store.upsert(session)
14
+ }
15
+
16
+ complete(id: string, review: string | null, completedAt = Date.now()): void {
17
+ this.store.complete(id, review, completedAt)
18
+ }
19
+
20
+ list(params: { profileId?: string; limit?: number; offset?: number }): ReviewSessionRow[] {
21
+ return this.store.list({
22
+ profileId: params.profileId,
23
+ limit: params.limit ?? 100,
24
+ offset: params.offset ?? 0,
25
+ })
26
+ }
27
+ }
@@ -0,0 +1,124 @@
1
+ import { Database } from 'bun:sqlite'
2
+
3
+ export type ReviewSessionRow = {
4
+ id: string
5
+ threadId: string
6
+ profileId: string
7
+ label: string | null
8
+ status: 'pending' | 'running' | 'completed' | 'failed'
9
+ startedAt: number
10
+ completedAt: number | null
11
+ model: string | null
12
+ cwd: string | null
13
+ review: string | null
14
+ }
15
+
16
+ export class ReviewStore {
17
+ private readonly db: Database
18
+
19
+ constructor(private readonly dbPath: string) {
20
+ this.db = new Database(dbPath)
21
+ }
22
+
23
+ init(): void {
24
+ this.db.exec(`
25
+ pragma journal_mode = wal;
26
+ create table if not exists review_sessions (
27
+ id text primary key,
28
+ thread_id text not null,
29
+ profile_id text not null,
30
+ label text,
31
+ status text not null,
32
+ started_at integer not null,
33
+ completed_at integer,
34
+ model text,
35
+ cwd text,
36
+ review text
37
+ );
38
+ create index if not exists review_sessions_profile on review_sessions(profile_id);
39
+ create index if not exists review_sessions_thread on review_sessions(thread_id);
40
+ create index if not exists review_sessions_status on review_sessions(status);
41
+ create index if not exists review_sessions_started_at on review_sessions(started_at);
42
+ `)
43
+ }
44
+
45
+ upsert(session: ReviewSessionRow): void {
46
+ this.db
47
+ .prepare(
48
+ `insert into review_sessions
49
+ (id, thread_id, profile_id, label, status, started_at, completed_at, model, cwd, review)
50
+ values
51
+ ($id, $thread_id, $profile_id, $label, $status, $started_at, $completed_at, $model, $cwd, $review)
52
+ on conflict(id) do update set
53
+ thread_id = excluded.thread_id,
54
+ profile_id = excluded.profile_id,
55
+ label = coalesce(excluded.label, review_sessions.label),
56
+ status = excluded.status,
57
+ started_at = excluded.started_at,
58
+ completed_at = coalesce(excluded.completed_at, review_sessions.completed_at),
59
+ model = coalesce(excluded.model, review_sessions.model),
60
+ cwd = coalesce(excluded.cwd, review_sessions.cwd),
61
+ review = coalesce(excluded.review, review_sessions.review)
62
+ `
63
+ )
64
+ .run({
65
+ $id: session.id,
66
+ $thread_id: session.threadId,
67
+ $profile_id: session.profileId,
68
+ $label: session.label,
69
+ $status: session.status,
70
+ $started_at: session.startedAt,
71
+ $completed_at: session.completedAt,
72
+ $model: session.model,
73
+ $cwd: session.cwd,
74
+ $review: session.review,
75
+ })
76
+ }
77
+
78
+ complete(id: string, review: string | null, completedAt: number): void {
79
+ this.db
80
+ .prepare(
81
+ `update review_sessions
82
+ set status = 'completed', review = $review, completed_at = $completed_at
83
+ where id = $id
84
+ `
85
+ )
86
+ .run({
87
+ $id: id,
88
+ $review: review,
89
+ $completed_at: completedAt,
90
+ })
91
+ }
92
+
93
+ list(params: { profileId?: string; limit: number; offset: number }): ReviewSessionRow[] {
94
+ const limit = Math.min(200, Math.max(1, params.limit))
95
+ const offset = Math.max(0, params.offset)
96
+ if (params.profileId) {
97
+ return this.db
98
+ .prepare(
99
+ `select * from review_sessions
100
+ where profile_id = $profile_id
101
+ order by started_at desc
102
+ limit $limit offset $offset
103
+ `
104
+ )
105
+ .all({
106
+ $profile_id: params.profileId,
107
+ $limit: limit,
108
+ $offset: offset,
109
+ }) as ReviewSessionRow[]
110
+ }
111
+
112
+ return this.db
113
+ .prepare(
114
+ `select * from review_sessions
115
+ order by started_at desc
116
+ limit $limit offset $offset
117
+ `
118
+ )
119
+ .all({
120
+ $limit: limit,
121
+ $offset: offset,
122
+ }) as ReviewSessionRow[]
123
+ }
124
+ }