@gkorepanov/ccodex 0.4.19 → 0.4.23

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 (545) hide show
  1. package/README.md +4 -2
  2. package/agents/codex-wrapper.md +1 -0
  3. package/config/compatibility.json +5 -5
  4. package/dist/claude/inputMapper.d.ts +5 -0
  5. package/dist/claude/inputMapper.js +9 -0
  6. package/dist/claude/inputMapper.js.map +1 -1
  7. package/dist/claude/modelCatalog.d.ts +4 -0
  8. package/dist/claude/modelCatalog.js +14 -0
  9. package/dist/claude/modelCatalog.js.map +1 -1
  10. package/dist/claude/modelSelection.d.ts +14 -0
  11. package/dist/claude/modelSelection.js +26 -0
  12. package/dist/claude/modelSelection.js.map +1 -1
  13. package/dist/claude/rateLimits.d.ts +2 -1
  14. package/dist/claude/rateLimits.js +12 -16
  15. package/dist/claude/rateLimits.js.map +1 -1
  16. package/dist/claude/resultClassifier.js +4 -1
  17. package/dist/claude/resultClassifier.js.map +1 -1
  18. package/dist/claude/service.d.ts +66 -2
  19. package/dist/claude/service.js +301 -130
  20. package/dist/claude/service.js.map +1 -1
  21. package/dist/claude/session/codexRollout.js +40 -1
  22. package/dist/claude/session/codexRollout.js.map +1 -1
  23. package/dist/claude/session/commands.d.ts +44 -1
  24. package/dist/claude/session/goalState.d.ts +5 -0
  25. package/dist/claude/session/goalState.js +22 -0
  26. package/dist/claude/session/goalState.js.map +1 -1
  27. package/dist/claude/session/providerRuntimeFactory.js +13 -2
  28. package/dist/claude/session/providerRuntimeFactory.js.map +1 -1
  29. package/dist/claude/session/repository.d.ts +3 -0
  30. package/dist/claude/session/repository.js +2 -0
  31. package/dist/claude/session/repository.js.map +1 -1
  32. package/dist/claude/session/runtime.js +1 -1
  33. package/dist/claude/session/runtime.js.map +1 -1
  34. package/dist/claude/session/scopeState.js +1 -0
  35. package/dist/claude/session/scopeState.js.map +1 -1
  36. package/dist/claude/session/session.d.ts +1 -0
  37. package/dist/claude/session/session.js +171 -49
  38. package/dist/claude/session/session.js.map +1 -1
  39. package/dist/claude/skillCatalog.js +1 -0
  40. package/dist/claude/skillCatalog.js.map +1 -1
  41. package/dist/claude/statusCommand.js +1 -2
  42. package/dist/claude/statusCommand.js.map +1 -1
  43. package/dist/claude/toolMapper.js +1 -1
  44. package/dist/claude/toolMapper.js.map +1 -1
  45. package/dist/codex/generated/AuthMode.d.ts +1 -1
  46. package/dist/codex/generated/ClientRequest.d.ts +142 -1
  47. package/dist/codex/generated/ImageGenerationFailure.d.ts +5 -0
  48. package/dist/codex/generated/ImageGenerationFailure.js +3 -0
  49. package/dist/codex/generated/ImageGenerationFailure.js.map +1 -0
  50. package/dist/codex/generated/ImageGenerationItem.d.ts +3 -0
  51. package/dist/codex/generated/InitializeCapabilities.d.ts +10 -1
  52. package/dist/codex/generated/InternalSessionSource.d.ts +1 -1
  53. package/dist/codex/generated/PathUri.d.ts +4 -3
  54. package/dist/codex/generated/PlanType.d.ts +1 -1
  55. package/dist/codex/generated/ResponseItem.d.ts +4 -1
  56. package/dist/codex/generated/ResponseItemRuntimeSchema.js +2 -2
  57. package/dist/codex/generated/ResponseItemRuntimeSchema.js.map +1 -1
  58. package/dist/codex/generated/ReviewDecision.d.ts +1 -1
  59. package/dist/codex/generated/ServerNotification.d.ts +43 -0
  60. package/dist/codex/generated/ServerNotificationEnvelope.d.ts +43 -0
  61. package/dist/codex/generated/index.d.ts +1 -0
  62. package/dist/codex/generated/index.js.map +1 -1
  63. package/dist/codex/generated/v2/AccountLoginCompletedNotification.d.ts +2 -0
  64. package/dist/codex/generated/v2/AgentMessageDelivery.d.ts +1 -0
  65. package/dist/codex/generated/v2/AgentMessageDelivery.js +3 -0
  66. package/dist/codex/generated/v2/AgentMessageDelivery.js.map +1 -0
  67. package/dist/codex/generated/v2/AllowDenyRequirement.d.ts +1 -0
  68. package/dist/codex/generated/v2/AllowDenyRequirement.js +3 -0
  69. package/dist/codex/generated/v2/AllowDenyRequirement.js.map +1 -0
  70. package/dist/codex/generated/v2/AppLinksConfig.d.ts +11 -0
  71. package/dist/codex/generated/v2/AppLinksConfig.js +3 -0
  72. package/dist/codex/generated/v2/AppLinksConfig.js.map +1 -0
  73. package/dist/codex/generated/v2/AppsConfig.d.ts +5 -0
  74. package/dist/codex/generated/v2/AppsReadParams.d.ts +4 -0
  75. package/dist/codex/generated/v2/AsyncUserInputQuestion.d.ts +4 -0
  76. package/dist/codex/generated/v2/AsyncUserInputQuestion.js +3 -0
  77. package/dist/codex/generated/v2/AsyncUserInputQuestion.js.map +1 -0
  78. package/dist/codex/generated/v2/AuthRecoveryNotification.d.ts +6 -0
  79. package/dist/codex/generated/v2/AuthRecoveryNotification.js +3 -0
  80. package/dist/codex/generated/v2/AuthRecoveryNotification.js.map +1 -0
  81. package/dist/codex/generated/v2/AutoReviewRequirements.d.ts +4 -0
  82. package/dist/codex/generated/v2/AutoReviewRequirements.js +3 -0
  83. package/dist/codex/generated/v2/AutoReviewRequirements.js.map +1 -0
  84. package/dist/codex/generated/v2/AwsCredentialType.d.ts +1 -0
  85. package/dist/codex/generated/v2/AwsCredentialType.js +3 -0
  86. package/dist/codex/generated/v2/AwsCredentialType.js.map +1 -0
  87. package/dist/codex/generated/v2/BedrockAwsProfile.d.ts +4 -0
  88. package/dist/codex/generated/v2/BedrockAwsProfile.js +3 -0
  89. package/dist/codex/generated/v2/BedrockAwsProfile.js.map +1 -0
  90. package/dist/codex/generated/v2/BedrockDiscoverParams.d.ts +1 -0
  91. package/dist/codex/generated/v2/BedrockDiscoverParams.js +3 -0
  92. package/dist/codex/generated/v2/BedrockDiscoverParams.js.map +1 -0
  93. package/dist/codex/generated/v2/BedrockDiscoverResponse.d.ts +6 -0
  94. package/dist/codex/generated/v2/BedrockDiscoverResponse.js +3 -0
  95. package/dist/codex/generated/v2/BedrockDiscoverResponse.js.map +1 -0
  96. package/dist/codex/generated/v2/BedrockEnvironmentCredential.d.ts +5 -0
  97. package/dist/codex/generated/v2/BedrockEnvironmentCredential.js +3 -0
  98. package/dist/codex/generated/v2/BedrockEnvironmentCredential.js.map +1 -0
  99. package/dist/codex/generated/v2/BedrockSetupParams.d.ts +8 -0
  100. package/dist/codex/generated/v2/BedrockSetupParams.js +3 -0
  101. package/dist/codex/generated/v2/BedrockSetupParams.js.map +1 -0
  102. package/dist/codex/generated/v2/BedrockSetupResponse.d.ts +1 -0
  103. package/dist/codex/generated/v2/BedrockSetupResponse.js +3 -0
  104. package/dist/codex/generated/v2/BedrockSetupResponse.js.map +1 -0
  105. package/dist/codex/generated/v2/BrowserUseAccessApprovalLifetime.d.ts +1 -0
  106. package/dist/codex/generated/v2/BrowserUseAccessApprovalLifetime.js +3 -0
  107. package/dist/codex/generated/v2/BrowserUseAccessApprovalLifetime.js.map +1 -0
  108. package/dist/codex/generated/v2/BrowserUseConfig.d.ts +8 -0
  109. package/dist/codex/generated/v2/BrowserUseConfig.js +3 -0
  110. package/dist/codex/generated/v2/BrowserUseConfig.js.map +1 -0
  111. package/dist/codex/generated/v2/BrowserUseOriginPolicy.d.ts +11 -0
  112. package/dist/codex/generated/v2/BrowserUseOriginPolicy.js +3 -0
  113. package/dist/codex/generated/v2/BrowserUseOriginPolicy.js.map +1 -0
  114. package/dist/codex/generated/v2/BrowserUseOriginPolicyConfig.d.ts +7 -0
  115. package/dist/codex/generated/v2/BrowserUseOriginPolicyConfig.js +3 -0
  116. package/dist/codex/generated/v2/BrowserUseOriginPolicyConfig.js.map +1 -0
  117. package/dist/codex/generated/v2/BrowserUseRequirements.d.ts +7 -0
  118. package/dist/codex/generated/v2/CliAuthCredentialsStoreMode.d.ts +1 -0
  119. package/dist/codex/generated/v2/CliAuthCredentialsStoreMode.js +3 -0
  120. package/dist/codex/generated/v2/CliAuthCredentialsStoreMode.js.map +1 -0
  121. package/dist/codex/generated/v2/CodexErrorInfo.d.ts +1 -1
  122. package/dist/codex/generated/v2/CollabAgentTool.d.ts +1 -1
  123. package/dist/codex/generated/v2/CollabAgentToolCallStatus.d.ts +1 -1
  124. package/dist/codex/generated/v2/CommandAction.d.ts +2 -2
  125. package/dist/codex/generated/v2/CommandExecutionApprovalKind.d.ts +4 -0
  126. package/dist/codex/generated/v2/CommandExecutionApprovalKind.js +3 -0
  127. package/dist/codex/generated/v2/CommandExecutionApprovalKind.js.map +1 -0
  128. package/dist/codex/generated/v2/CommandExecutionRequestApprovalParams.d.ts +6 -0
  129. package/dist/codex/generated/v2/ComputerUseConfig.d.ts +8 -0
  130. package/dist/codex/generated/v2/ComputerUseConfig.js +3 -0
  131. package/dist/codex/generated/v2/ComputerUseConfig.js.map +1 -0
  132. package/dist/codex/generated/v2/ComputerUseMacosConfig.d.ts +6 -0
  133. package/dist/codex/generated/v2/ComputerUseMacosConfig.js +3 -0
  134. package/dist/codex/generated/v2/ComputerUseMacosConfig.js.map +1 -0
  135. package/dist/codex/generated/v2/ComputerUseMacosRequirements.d.ts +6 -0
  136. package/dist/codex/generated/v2/ComputerUseMacosRequirements.js +3 -0
  137. package/dist/codex/generated/v2/ComputerUseMacosRequirements.js.map +1 -0
  138. package/dist/codex/generated/v2/ComputerUseRequirements.d.ts +7 -0
  139. package/dist/codex/generated/v2/ComputerUseWindowsConfig.d.ts +8 -0
  140. package/dist/codex/generated/v2/ComputerUseWindowsConfig.js +3 -0
  141. package/dist/codex/generated/v2/ComputerUseWindowsConfig.js.map +1 -0
  142. package/dist/codex/generated/v2/ComputerUseWindowsExeConfig.d.ts +7 -0
  143. package/dist/codex/generated/v2/ComputerUseWindowsExeConfig.js +3 -0
  144. package/dist/codex/generated/v2/ComputerUseWindowsExeConfig.js.map +1 -0
  145. package/dist/codex/generated/v2/ComputerUseWindowsExeRequirement.d.ts +7 -0
  146. package/dist/codex/generated/v2/ComputerUseWindowsExeRequirement.js +3 -0
  147. package/dist/codex/generated/v2/ComputerUseWindowsExeRequirement.js.map +1 -0
  148. package/dist/codex/generated/v2/ComputerUseWindowsRequirements.d.ts +8 -0
  149. package/dist/codex/generated/v2/ComputerUseWindowsRequirements.js +3 -0
  150. package/dist/codex/generated/v2/ComputerUseWindowsRequirements.js.map +1 -0
  151. package/dist/codex/generated/v2/Config.d.ts +4 -0
  152. package/dist/codex/generated/v2/ConfigLayerSource.d.ts +6 -0
  153. package/dist/codex/generated/v2/ConfigRequirements.d.ts +9 -0
  154. package/dist/codex/generated/v2/ConfiguredHookHandler.d.ts +10 -0
  155. package/dist/codex/generated/v2/CyberAccessProgram.d.ts +5 -0
  156. package/dist/codex/generated/v2/CyberAccessProgram.js +3 -0
  157. package/dist/codex/generated/v2/CyberAccessProgram.js.map +1 -0
  158. package/dist/codex/generated/v2/DesktopOnboardingEntrypoint.d.ts +1 -0
  159. package/dist/codex/generated/v2/DesktopOnboardingEntrypoint.js +3 -0
  160. package/dist/codex/generated/v2/DesktopOnboardingEntrypoint.js.map +1 -0
  161. package/dist/codex/generated/v2/ExternalAgentConfigDetectResponse.d.ts +2 -0
  162. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordParams.d.ts +2 -2
  163. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordSuccessParams.d.ts +11 -0
  164. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordSuccessParams.js +3 -0
  165. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordSuccessParams.js.map +1 -0
  166. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordTypeResultParams.d.ts +8 -0
  167. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordTypeResultParams.js +3 -0
  168. package/dist/codex/generated/v2/ExternalAgentConfigImportHistoryRecordTypeResultParams.js.map +1 -0
  169. package/dist/codex/generated/v2/ExternalAgentConfigImportItemTypeSuccess.d.ts +4 -0
  170. package/dist/codex/generated/v2/ExternalAgentDetectedConnectorCandidate.d.ts +6 -0
  171. package/dist/codex/generated/v2/ExternalAgentDetectedConnectorCandidate.js +3 -0
  172. package/dist/codex/generated/v2/ExternalAgentDetectedConnectorCandidate.js.map +1 -0
  173. package/dist/codex/generated/v2/ExternalAgentDetectedConnectorSource.d.ts +1 -0
  174. package/dist/codex/generated/v2/ExternalAgentDetectedConnectorSource.js +3 -0
  175. package/dist/codex/generated/v2/ExternalAgentDetectedConnectorSource.js.map +1 -0
  176. package/dist/codex/generated/v2/GetAccountRateLimitsResponse.d.ts +10 -0
  177. package/dist/codex/generated/v2/GetAccountTokenUsageParams.d.ts +6 -0
  178. package/dist/codex/generated/v2/GetAccountTokenUsageParams.js +3 -0
  179. package/dist/codex/generated/v2/GetAccountTokenUsageParams.js.map +1 -0
  180. package/dist/codex/generated/v2/GetAccountTokenUsageResponse.d.ts +5 -0
  181. package/dist/codex/generated/v2/GuardianApprovalReviewAction.d.ts +7 -0
  182. package/dist/codex/generated/v2/HookEventName.d.ts +1 -1
  183. package/dist/codex/generated/v2/HookHandlerType.d.ts +1 -1
  184. package/dist/codex/generated/v2/HookMetadata.d.ts +13 -4
  185. package/dist/codex/generated/v2/InAppBrowserRequirements.d.ts +3 -0
  186. package/dist/codex/generated/v2/InAppBrowserRequirements.js +3 -0
  187. package/dist/codex/generated/v2/InAppBrowserRequirements.js.map +1 -0
  188. package/dist/codex/generated/v2/ItemGuardianApprovalReviewCompletedNotification.d.ts +2 -0
  189. package/dist/codex/generated/v2/ItemGuardianApprovalReviewStartedNotification.d.ts +2 -0
  190. package/dist/codex/generated/v2/LoginAccountParams.d.ts +6 -0
  191. package/dist/codex/generated/v2/ManagedHooksRequirements.d.ts +1 -0
  192. package/dist/codex/generated/v2/McpAuthStatus.d.ts +1 -1
  193. package/dist/codex/generated/v2/McpResourceReadParams.d.ts +5 -0
  194. package/dist/codex/generated/v2/McpResourceReadResponse.d.ts +4 -0
  195. package/dist/codex/generated/v2/McpServerConnectionStatus.d.ts +1 -0
  196. package/dist/codex/generated/v2/McpServerConnectionStatus.js +3 -0
  197. package/dist/codex/generated/v2/McpServerConnectionStatus.js.map +1 -0
  198. package/dist/codex/generated/v2/McpServerElicitationRequestParams.d.ts +5 -0
  199. package/dist/codex/generated/v2/McpServerEventNotification.d.ts +5 -0
  200. package/dist/codex/generated/v2/McpServerEventNotification.js +3 -0
  201. package/dist/codex/generated/v2/McpServerEventNotification.js.map +1 -0
  202. package/dist/codex/generated/v2/McpServerEventStreamNotification.d.ts +5 -0
  203. package/dist/codex/generated/v2/McpServerEventStreamNotification.js +3 -0
  204. package/dist/codex/generated/v2/McpServerEventStreamNotification.js.map +1 -0
  205. package/dist/codex/generated/v2/McpServerEventStreamStartParams.d.ts +9 -0
  206. package/dist/codex/generated/v2/McpServerEventStreamStartParams.js +3 -0
  207. package/dist/codex/generated/v2/McpServerEventStreamStartParams.js.map +1 -0
  208. package/dist/codex/generated/v2/McpServerEventStreamStartResponse.d.ts +1 -0
  209. package/dist/codex/generated/v2/McpServerEventStreamStartResponse.js +3 -0
  210. package/dist/codex/generated/v2/McpServerEventStreamStartResponse.js.map +1 -0
  211. package/dist/codex/generated/v2/McpServerEventStreamStopParams.d.ts +3 -0
  212. package/dist/codex/generated/v2/McpServerEventStreamStopParams.js +3 -0
  213. package/dist/codex/generated/v2/McpServerEventStreamStopParams.js.map +1 -0
  214. package/dist/codex/generated/v2/McpServerEventStreamStopResponse.d.ts +1 -0
  215. package/dist/codex/generated/v2/McpServerEventStreamStopResponse.js +3 -0
  216. package/dist/codex/generated/v2/McpServerEventStreamStopResponse.js.map +1 -0
  217. package/dist/codex/generated/v2/McpServerOauthClientRegistration.d.ts +1 -0
  218. package/dist/codex/generated/v2/McpServerOauthClientRegistration.js +3 -0
  219. package/dist/codex/generated/v2/McpServerOauthClientRegistration.js.map +1 -0
  220. package/dist/codex/generated/v2/McpServerOauthLoginParams.d.ts +5 -0
  221. package/dist/codex/generated/v2/McpServerStatus.d.ts +6 -0
  222. package/dist/codex/generated/v2/MisalignmentErrorDetails.d.ts +15 -0
  223. package/dist/codex/generated/v2/MisalignmentErrorDetails.js +3 -0
  224. package/dist/codex/generated/v2/MisalignmentErrorDetails.js.map +1 -0
  225. package/dist/codex/generated/v2/MisalignmentSteer.d.ts +3 -0
  226. package/dist/codex/generated/v2/MisalignmentSteer.js +3 -0
  227. package/dist/codex/generated/v2/MisalignmentSteer.js.map +1 -0
  228. package/dist/codex/generated/v2/Model.d.ts +6 -0
  229. package/dist/codex/generated/v2/ModelUpgradeInfo.d.ts +4 -0
  230. package/dist/codex/generated/v2/MultiAgentVersion.d.ts +4 -0
  231. package/dist/codex/generated/v2/MultiAgentVersion.js +3 -0
  232. package/dist/codex/generated/v2/MultiAgentVersion.js.map +1 -0
  233. package/dist/codex/generated/v2/PluginDisabledReason.d.ts +1 -0
  234. package/dist/codex/generated/v2/PluginDisabledReason.js +3 -0
  235. package/dist/codex/generated/v2/PluginDisabledReason.js.map +1 -0
  236. package/dist/codex/generated/v2/PluginInstallParams.d.ts +4 -0
  237. package/dist/codex/generated/v2/PluginReconcileChangedPlugin.d.ts +19 -0
  238. package/dist/codex/generated/v2/PluginReconcileChangedPlugin.js +3 -0
  239. package/dist/codex/generated/v2/PluginReconcileChangedPlugin.js.map +1 -0
  240. package/dist/codex/generated/v2/PluginReconcileParams.d.ts +6 -0
  241. package/dist/codex/generated/v2/PluginReconcileParams.js +3 -0
  242. package/dist/codex/generated/v2/PluginReconcileParams.js.map +1 -0
  243. package/dist/codex/generated/v2/PluginReconcileResponse.d.ts +23 -0
  244. package/dist/codex/generated/v2/PluginReconcileResponse.js +3 -0
  245. package/dist/codex/generated/v2/PluginReconcileResponse.js.map +1 -0
  246. package/dist/codex/generated/v2/PluginSearchParams.d.ts +9 -0
  247. package/dist/codex/generated/v2/PluginSearchParams.js +3 -0
  248. package/dist/codex/generated/v2/PluginSearchParams.js.map +1 -0
  249. package/dist/codex/generated/v2/PluginSearchResponse.d.ts +5 -0
  250. package/dist/codex/generated/v2/PluginSearchResponse.js +3 -0
  251. package/dist/codex/generated/v2/PluginSearchResponse.js.map +1 -0
  252. package/dist/codex/generated/v2/PluginSearchResult.d.ts +7 -0
  253. package/dist/codex/generated/v2/PluginSearchResult.js +3 -0
  254. package/dist/codex/generated/v2/PluginSearchResult.js.map +1 -0
  255. package/dist/codex/generated/v2/PluginSearchScope.d.ts +1 -0
  256. package/dist/codex/generated/v2/PluginSearchScope.js +3 -0
  257. package/dist/codex/generated/v2/PluginSearchScope.js.map +1 -0
  258. package/dist/codex/generated/v2/PluginSummary.d.ts +13 -0
  259. package/dist/codex/generated/v2/Project.d.ts +16 -0
  260. package/dist/codex/generated/v2/Project.js +3 -0
  261. package/dist/codex/generated/v2/Project.js.map +1 -0
  262. package/dist/codex/generated/v2/ProjectChangeType.d.ts +1 -0
  263. package/dist/codex/generated/v2/ProjectChangeType.js +3 -0
  264. package/dist/codex/generated/v2/ProjectChangeType.js.map +1 -0
  265. package/dist/codex/generated/v2/ProjectChangedNotification.d.ts +5 -0
  266. package/dist/codex/generated/v2/ProjectChangedNotification.js +3 -0
  267. package/dist/codex/generated/v2/ProjectChangedNotification.js.map +1 -0
  268. package/dist/codex/generated/v2/ProjectCreateParams.d.ts +9 -0
  269. package/dist/codex/generated/v2/ProjectCreateParams.js +3 -0
  270. package/dist/codex/generated/v2/ProjectCreateParams.js.map +1 -0
  271. package/dist/codex/generated/v2/ProjectCreateResponse.d.ts +4 -0
  272. package/dist/codex/generated/v2/ProjectCreateResponse.js +3 -0
  273. package/dist/codex/generated/v2/ProjectCreateResponse.js.map +1 -0
  274. package/dist/codex/generated/v2/ProjectDeleteParams.d.ts +3 -0
  275. package/dist/codex/generated/v2/ProjectDeleteParams.js +3 -0
  276. package/dist/codex/generated/v2/ProjectDeleteParams.js.map +1 -0
  277. package/dist/codex/generated/v2/ProjectDeleteResponse.d.ts +1 -0
  278. package/dist/codex/generated/v2/ProjectDeleteResponse.js +3 -0
  279. package/dist/codex/generated/v2/ProjectDeleteResponse.js.map +1 -0
  280. package/dist/codex/generated/v2/ProjectImportParams.d.ts +10 -0
  281. package/dist/codex/generated/v2/ProjectImportParams.js +3 -0
  282. package/dist/codex/generated/v2/ProjectImportParams.js.map +1 -0
  283. package/dist/codex/generated/v2/ProjectImportResponse.d.ts +4 -0
  284. package/dist/codex/generated/v2/ProjectImportResponse.js +3 -0
  285. package/dist/codex/generated/v2/ProjectImportResponse.js.map +1 -0
  286. package/dist/codex/generated/v2/ProjectListParams.d.ts +14 -0
  287. package/dist/codex/generated/v2/ProjectListParams.js +3 -0
  288. package/dist/codex/generated/v2/ProjectListParams.js.map +1 -0
  289. package/dist/codex/generated/v2/ProjectListResponse.d.ts +5 -0
  290. package/dist/codex/generated/v2/ProjectListResponse.js +3 -0
  291. package/dist/codex/generated/v2/ProjectListResponse.js.map +1 -0
  292. package/dist/codex/generated/v2/ProjectMoveParams.d.ts +4 -0
  293. package/dist/codex/generated/v2/ProjectMoveParams.js +3 -0
  294. package/dist/codex/generated/v2/ProjectMoveParams.js.map +1 -0
  295. package/dist/codex/generated/v2/ProjectMoveResponse.d.ts +1 -0
  296. package/dist/codex/generated/v2/ProjectMoveResponse.js +3 -0
  297. package/dist/codex/generated/v2/ProjectMoveResponse.js.map +1 -0
  298. package/dist/codex/generated/v2/ProjectReadParams.d.ts +3 -0
  299. package/dist/codex/generated/v2/ProjectReadParams.js +3 -0
  300. package/dist/codex/generated/v2/ProjectReadParams.js.map +1 -0
  301. package/dist/codex/generated/v2/ProjectReadResponse.d.ts +4 -0
  302. package/dist/codex/generated/v2/ProjectReadResponse.js +3 -0
  303. package/dist/codex/generated/v2/ProjectReadResponse.js.map +1 -0
  304. package/dist/codex/generated/v2/ProjectRoot.d.ts +4 -0
  305. package/dist/codex/generated/v2/ProjectRoot.js +3 -0
  306. package/dist/codex/generated/v2/ProjectRoot.js.map +1 -0
  307. package/dist/codex/generated/v2/ProjectSortKey.d.ts +1 -0
  308. package/dist/codex/generated/v2/ProjectSortKey.js +3 -0
  309. package/dist/codex/generated/v2/ProjectSortKey.js.map +1 -0
  310. package/dist/codex/generated/v2/ProjectUpdateParams.d.ts +9 -0
  311. package/dist/codex/generated/v2/ProjectUpdateParams.js +3 -0
  312. package/dist/codex/generated/v2/ProjectUpdateParams.js.map +1 -0
  313. package/dist/codex/generated/v2/ProjectUpdateResponse.d.ts +4 -0
  314. package/dist/codex/generated/v2/ProjectUpdateResponse.js +3 -0
  315. package/dist/codex/generated/v2/ProjectUpdateResponse.js.map +1 -0
  316. package/dist/codex/generated/v2/QueuedSubmission.d.ts +6 -0
  317. package/dist/codex/generated/v2/QueuedSubmission.js +3 -0
  318. package/dist/codex/generated/v2/QueuedSubmission.js.map +1 -0
  319. package/dist/codex/generated/v2/RawResponseCompletedNotification.d.ts +2 -0
  320. package/dist/codex/generated/v2/ResponseUsageMetadata.d.ts +8 -0
  321. package/dist/codex/generated/v2/ResponseUsageMetadata.js +3 -0
  322. package/dist/codex/generated/v2/ResponseUsageMetadata.js.map +1 -0
  323. package/dist/codex/generated/v2/ServerDiagnosticsGauge.d.ts +4 -0
  324. package/dist/codex/generated/v2/ServerDiagnosticsGauge.js +3 -0
  325. package/dist/codex/generated/v2/ServerDiagnosticsGauge.js.map +1 -0
  326. package/dist/codex/generated/v2/ServerDiagnosticsParams.d.ts +1 -0
  327. package/dist/codex/generated/v2/ServerDiagnosticsParams.js +3 -0
  328. package/dist/codex/generated/v2/ServerDiagnosticsParams.js.map +1 -0
  329. package/dist/codex/generated/v2/ServerDiagnosticsProcess.d.ts +5 -0
  330. package/dist/codex/generated/v2/ServerDiagnosticsProcess.js +3 -0
  331. package/dist/codex/generated/v2/ServerDiagnosticsProcess.js.map +1 -0
  332. package/dist/codex/generated/v2/ServerDiagnosticsResponse.d.ts +6 -0
  333. package/dist/codex/generated/v2/ServerDiagnosticsResponse.js +3 -0
  334. package/dist/codex/generated/v2/ServerDiagnosticsResponse.js.map +1 -0
  335. package/dist/codex/generated/v2/SkillMetadata.d.ts +4 -0
  336. package/dist/codex/generated/v2/StrictReviewRequiredNotification.d.ts +8 -0
  337. package/dist/codex/generated/v2/StrictReviewRequiredNotification.js +3 -0
  338. package/dist/codex/generated/v2/StrictReviewRequiredNotification.js.map +1 -0
  339. package/dist/codex/generated/v2/SubAgentActivityKind.d.ts +1 -1
  340. package/dist/codex/generated/v2/Thread.d.ts +22 -2
  341. package/dist/codex/generated/v2/ThreadBackgroundTerminal.d.ts +2 -2
  342. package/dist/codex/generated/v2/ThreadForkParams.d.ts +3 -1
  343. package/dist/codex/generated/v2/ThreadItem.d.ts +12 -0
  344. package/dist/codex/generated/v2/ThreadListParams.d.ts +8 -2
  345. package/dist/codex/generated/v2/ThreadMetadataUpdateParams.d.ts +5 -4
  346. package/dist/codex/generated/v2/ThreadProjectUpdatedNotification.d.ts +4 -0
  347. package/dist/codex/generated/v2/ThreadProjectUpdatedNotification.js +3 -0
  348. package/dist/codex/generated/v2/ThreadProjectUpdatedNotification.js.map +1 -0
  349. package/dist/codex/generated/v2/ThreadQueueAddParams.d.ts +6 -0
  350. package/dist/codex/generated/v2/ThreadQueueAddParams.js +3 -0
  351. package/dist/codex/generated/v2/ThreadQueueAddParams.js.map +1 -0
  352. package/dist/codex/generated/v2/ThreadQueueAddResponse.d.ts +4 -0
  353. package/dist/codex/generated/v2/ThreadQueueAddResponse.js +3 -0
  354. package/dist/codex/generated/v2/ThreadQueueAddResponse.js.map +1 -0
  355. package/dist/codex/generated/v2/ThreadQueueChangedNotification.d.ts +3 -0
  356. package/dist/codex/generated/v2/ThreadQueueChangedNotification.js +3 -0
  357. package/dist/codex/generated/v2/ThreadQueueChangedNotification.js.map +1 -0
  358. package/dist/codex/generated/v2/ThreadQueueDeleteParams.d.ts +4 -0
  359. package/dist/codex/generated/v2/ThreadQueueDeleteParams.js +3 -0
  360. package/dist/codex/generated/v2/ThreadQueueDeleteParams.js.map +1 -0
  361. package/dist/codex/generated/v2/ThreadQueueDeleteResponse.d.ts +3 -0
  362. package/dist/codex/generated/v2/ThreadQueueDeleteResponse.js +3 -0
  363. package/dist/codex/generated/v2/ThreadQueueDeleteResponse.js.map +1 -0
  364. package/dist/codex/generated/v2/ThreadQueueListParams.d.ts +11 -0
  365. package/dist/codex/generated/v2/ThreadQueueListParams.js +3 -0
  366. package/dist/codex/generated/v2/ThreadQueueListParams.js.map +1 -0
  367. package/dist/codex/generated/v2/ThreadQueueListResponse.d.ts +8 -0
  368. package/dist/codex/generated/v2/ThreadQueueListResponse.js +3 -0
  369. package/dist/codex/generated/v2/ThreadQueueListResponse.js.map +1 -0
  370. package/dist/codex/generated/v2/ThreadQueueReorderParams.d.ts +4 -0
  371. package/dist/codex/generated/v2/ThreadQueueReorderParams.js +3 -0
  372. package/dist/codex/generated/v2/ThreadQueueReorderParams.js.map +1 -0
  373. package/dist/codex/generated/v2/ThreadQueueReorderResponse.d.ts +1 -0
  374. package/dist/codex/generated/v2/ThreadQueueReorderResponse.js +3 -0
  375. package/dist/codex/generated/v2/ThreadQueueReorderResponse.js.map +1 -0
  376. package/dist/codex/generated/v2/ThreadQueueStartParams.d.ts +4 -0
  377. package/dist/codex/generated/v2/ThreadQueueStartParams.js +3 -0
  378. package/dist/codex/generated/v2/ThreadQueueStartParams.js.map +1 -0
  379. package/dist/codex/generated/v2/ThreadQueueStartResponse.d.ts +4 -0
  380. package/dist/codex/generated/v2/ThreadQueueStartResponse.js +3 -0
  381. package/dist/codex/generated/v2/ThreadQueueStartResponse.js.map +1 -0
  382. package/dist/codex/generated/v2/ThreadQueueUpdateParams.d.ts +6 -0
  383. package/dist/codex/generated/v2/ThreadQueueUpdateParams.js +3 -0
  384. package/dist/codex/generated/v2/ThreadQueueUpdateParams.js.map +1 -0
  385. package/dist/codex/generated/v2/ThreadQueueUpdateResponse.d.ts +4 -0
  386. package/dist/codex/generated/v2/ThreadQueueUpdateResponse.js +3 -0
  387. package/dist/codex/generated/v2/ThreadQueueUpdateResponse.js.map +1 -0
  388. package/dist/codex/generated/v2/ThreadReadParams.d.ts +3 -0
  389. package/dist/codex/generated/v2/ThreadRealtimeBemItemPresentation.d.ts +11 -0
  390. package/dist/codex/generated/v2/ThreadRealtimeBemItemPresentation.js +3 -0
  391. package/dist/codex/generated/v2/ThreadRealtimeBemItemPresentation.js.map +1 -0
  392. package/dist/codex/generated/v2/ThreadRealtimeItem.d.ts +24 -0
  393. package/dist/codex/generated/v2/ThreadRealtimeItem.js +3 -0
  394. package/dist/codex/generated/v2/ThreadRealtimeItem.js.map +1 -0
  395. package/dist/codex/generated/v2/ThreadRealtimeItemCompletedNotification.d.ts +8 -0
  396. package/dist/codex/generated/v2/ThreadRealtimeItemCompletedNotification.js +3 -0
  397. package/dist/codex/generated/v2/ThreadRealtimeItemCompletedNotification.js.map +1 -0
  398. package/dist/codex/generated/v2/ThreadRealtimeItemStartedNotification.d.ts +8 -0
  399. package/dist/codex/generated/v2/ThreadRealtimeItemStartedNotification.js +3 -0
  400. package/dist/codex/generated/v2/ThreadRealtimeItemStartedNotification.js.map +1 -0
  401. package/dist/codex/generated/v2/ThreadRealtimeItemTranscriptDeltaNotification.d.ts +8 -0
  402. package/dist/codex/generated/v2/ThreadRealtimeItemTranscriptDeltaNotification.js +3 -0
  403. package/dist/codex/generated/v2/ThreadRealtimeItemTranscriptDeltaNotification.js.map +1 -0
  404. package/dist/codex/generated/v2/ThreadRealtimeSessionOutcome.d.ts +1 -0
  405. package/dist/codex/generated/v2/ThreadRealtimeSessionOutcome.js +3 -0
  406. package/dist/codex/generated/v2/ThreadRealtimeSessionOutcome.js.map +1 -0
  407. package/dist/codex/generated/v2/ThreadRealtimeStartParams.d.ts +13 -0
  408. package/dist/codex/generated/v2/ThreadRealtimeStartTransport.d.ts +6 -0
  409. package/dist/codex/generated/v2/ThreadRealtimeTranscriptRole.d.ts +1 -0
  410. package/dist/codex/generated/v2/ThreadRealtimeTranscriptRole.js +3 -0
  411. package/dist/codex/generated/v2/ThreadRealtimeTranscriptRole.js.map +1 -0
  412. package/dist/codex/generated/v2/ThreadResumeParams.d.ts +3 -1
  413. package/dist/codex/generated/v2/ThreadResumeResponse.d.ts +4 -4
  414. package/dist/codex/generated/v2/ThreadRevertParams.d.ts +12 -0
  415. package/dist/codex/generated/v2/ThreadRevertParams.js +3 -0
  416. package/dist/codex/generated/v2/ThreadRevertParams.js.map +1 -0
  417. package/dist/codex/generated/v2/ThreadRevertResponse.d.ts +22 -0
  418. package/dist/codex/generated/v2/ThreadRevertResponse.js +3 -0
  419. package/dist/codex/generated/v2/ThreadRevertResponse.js.map +1 -0
  420. package/dist/codex/generated/v2/ThreadRevertedNotification.d.ts +3 -0
  421. package/dist/codex/generated/v2/ThreadRevertedNotification.js +3 -0
  422. package/dist/codex/generated/v2/ThreadRevertedNotification.js.map +1 -0
  423. package/dist/codex/generated/v2/ThreadSearchParams.d.ts +2 -2
  424. package/dist/codex/generated/v2/ThreadSearchSortKey.d.ts +1 -0
  425. package/dist/codex/generated/v2/ThreadSearchSortKey.js +3 -0
  426. package/dist/codex/generated/v2/ThreadSearchSortKey.js.map +1 -0
  427. package/dist/codex/generated/v2/ThreadSection.d.ts +18 -0
  428. package/dist/codex/generated/v2/ThreadSection.js +3 -0
  429. package/dist/codex/generated/v2/ThreadSection.js.map +1 -0
  430. package/dist/codex/generated/v2/ThreadSectionAppearance.d.ts +7 -0
  431. package/dist/codex/generated/v2/ThreadSectionAppearance.js +3 -0
  432. package/dist/codex/generated/v2/ThreadSectionAppearance.js.map +1 -0
  433. package/dist/codex/generated/v2/ThreadSectionCreateParams.d.ts +11 -0
  434. package/dist/codex/generated/v2/ThreadSectionCreateParams.js +3 -0
  435. package/dist/codex/generated/v2/ThreadSectionCreateParams.js.map +1 -0
  436. package/dist/codex/generated/v2/ThreadSectionCreateResponse.d.ts +7 -0
  437. package/dist/codex/generated/v2/ThreadSectionCreateResponse.js +3 -0
  438. package/dist/codex/generated/v2/ThreadSectionCreateResponse.js.map +1 -0
  439. package/dist/codex/generated/v2/ThreadSectionDeleteParams.d.ts +9 -0
  440. package/dist/codex/generated/v2/ThreadSectionDeleteParams.js +3 -0
  441. package/dist/codex/generated/v2/ThreadSectionDeleteParams.js.map +1 -0
  442. package/dist/codex/generated/v2/ThreadSectionDeleteResponse.d.ts +4 -0
  443. package/dist/codex/generated/v2/ThreadSectionDeleteResponse.js +3 -0
  444. package/dist/codex/generated/v2/ThreadSectionDeleteResponse.js.map +1 -0
  445. package/dist/codex/generated/v2/ThreadSectionListParams.d.ts +13 -0
  446. package/dist/codex/generated/v2/ThreadSectionListParams.js +3 -0
  447. package/dist/codex/generated/v2/ThreadSectionListParams.js.map +1 -0
  448. package/dist/codex/generated/v2/ThreadSectionListResponse.d.ts +11 -0
  449. package/dist/codex/generated/v2/ThreadSectionListResponse.js +3 -0
  450. package/dist/codex/generated/v2/ThreadSectionListResponse.js.map +1 -0
  451. package/dist/codex/generated/v2/ThreadSectionMoveParams.d.ts +17 -0
  452. package/dist/codex/generated/v2/ThreadSectionMoveParams.js +3 -0
  453. package/dist/codex/generated/v2/ThreadSectionMoveParams.js.map +1 -0
  454. package/dist/codex/generated/v2/ThreadSectionMoveResponse.d.ts +1 -0
  455. package/dist/codex/generated/v2/ThreadSectionMoveResponse.js +3 -0
  456. package/dist/codex/generated/v2/ThreadSectionMoveResponse.js.map +1 -0
  457. package/dist/codex/generated/v2/ThreadSectionUpdateParams.d.ts +18 -0
  458. package/dist/codex/generated/v2/ThreadSectionUpdateParams.js +3 -0
  459. package/dist/codex/generated/v2/ThreadSectionUpdateParams.js.map +1 -0
  460. package/dist/codex/generated/v2/ThreadSectionUpdateResponse.d.ts +7 -0
  461. package/dist/codex/generated/v2/ThreadSectionUpdateResponse.js +3 -0
  462. package/dist/codex/generated/v2/ThreadSectionUpdateResponse.js.map +1 -0
  463. package/dist/codex/generated/v2/ThreadShellCommandParams.d.ts +6 -0
  464. package/dist/codex/generated/v2/ThreadSortKey.d.ts +1 -1
  465. package/dist/codex/generated/v2/ThreadStartParams.d.ts +5 -0
  466. package/dist/codex/generated/v2/ThreadTimelineEntry.d.ts +31 -0
  467. package/dist/codex/generated/v2/ThreadTimelineEntry.js +3 -0
  468. package/dist/codex/generated/v2/ThreadTimelineEntry.js.map +1 -0
  469. package/dist/codex/generated/v2/ThreadTimelineListParams.d.ts +8 -0
  470. package/dist/codex/generated/v2/ThreadTimelineListParams.js +3 -0
  471. package/dist/codex/generated/v2/ThreadTimelineListParams.js.map +1 -0
  472. package/dist/codex/generated/v2/ThreadTimelineListResponse.d.ts +9 -0
  473. package/dist/codex/generated/v2/ThreadTimelineListResponse.js +3 -0
  474. package/dist/codex/generated/v2/ThreadTimelineListResponse.js.map +1 -0
  475. package/dist/codex/generated/v2/ThreadUsage.d.ts +7 -0
  476. package/dist/codex/generated/v2/ThreadUsage.js +3 -0
  477. package/dist/codex/generated/v2/ThreadUsage.js.map +1 -0
  478. package/dist/codex/generated/v2/ThreadUsageBreakdownGroup.d.ts +11 -0
  479. package/dist/codex/generated/v2/ThreadUsageBreakdownGroup.js +3 -0
  480. package/dist/codex/generated/v2/ThreadUsageBreakdownGroup.js.map +1 -0
  481. package/dist/codex/generated/v2/ToolRequestUserInputParams.d.ts +4 -0
  482. package/dist/codex/generated/v2/TurnError.d.ts +5 -0
  483. package/dist/codex/generated/v2/TurnSettingsUpdateParams.d.ts +34 -0
  484. package/dist/codex/generated/v2/TurnSettingsUpdateParams.js +3 -0
  485. package/dist/codex/generated/v2/TurnSettingsUpdateParams.js.map +1 -0
  486. package/dist/codex/generated/v2/TurnSettingsUpdateResponse.d.ts +4 -0
  487. package/dist/codex/generated/v2/TurnSettingsUpdateResponse.js +3 -0
  488. package/dist/codex/generated/v2/TurnSettingsUpdateResponse.js.map +1 -0
  489. package/dist/codex/generated/v2/TurnSettingsUpdateStatus.d.ts +1 -0
  490. package/dist/codex/generated/v2/TurnSettingsUpdateStatus.js +3 -0
  491. package/dist/codex/generated/v2/TurnSettingsUpdateStatus.js.map +1 -0
  492. package/dist/codex/generated/v2/TurnStartParams.d.ts +19 -0
  493. package/dist/codex/generated/v2/TurnToolOutput.d.ts +6 -0
  494. package/dist/codex/generated/v2/TurnToolOutput.js +3 -0
  495. package/dist/codex/generated/v2/TurnToolOutput.js.map +1 -0
  496. package/dist/codex/generated/v2/index.d.ts +125 -0
  497. package/dist/daemon/probe.js +1 -1
  498. package/dist/gateway/clientConnection.js +129 -24
  499. package/dist/gateway/clientConnection.js.map +1 -1
  500. package/dist/gateway/remoteRelay.js +2 -2
  501. package/dist/gateway/remoteRelay.js.map +1 -1
  502. package/dist/gateway/stockRpc.d.ts +2 -0
  503. package/dist/gateway/stockRpc.js +13 -0
  504. package/dist/gateway/stockRpc.js.map +1 -1
  505. package/dist/gateway/threadList.d.ts +6 -0
  506. package/dist/gateway/threadList.js +58 -12
  507. package/dist/gateway/threadList.js.map +1 -1
  508. package/dist/gateway/transientNotice.js +6 -4
  509. package/dist/gateway/transientNotice.js.map +1 -1
  510. package/dist/handoff/lineageStore.d.ts +2 -8
  511. package/dist/handoff/lineageStore.js +2 -8
  512. package/dist/handoff/lineageStore.js.map +1 -1
  513. package/dist/handoff/providerEpochs.js +4 -5
  514. package/dist/handoff/providerEpochs.js.map +1 -1
  515. package/dist/handoff/service.d.ts +16 -3
  516. package/dist/handoff/service.js +196 -125
  517. package/dist/handoff/service.js.map +1 -1
  518. package/dist/handoff/titleGeneration.d.ts +1 -0
  519. package/dist/handoff/titleGeneration.js.map +1 -1
  520. package/dist/management/setup.d.ts +6 -0
  521. package/dist/management/setup.js +11 -3
  522. package/dist/management/setup.js.map +1 -1
  523. package/dist/protocol/search.d.ts +24 -0
  524. package/dist/protocol/search.js +105 -0
  525. package/dist/protocol/search.js.map +1 -0
  526. package/dist/protocol/turnPagination.d.ts +16 -0
  527. package/dist/protocol/turnPagination.js +75 -35
  528. package/dist/protocol/turnPagination.js.map +1 -1
  529. package/dist/runtime/dependencies.js +1 -1
  530. package/dist/store/HybridStore.d.ts +4 -0
  531. package/dist/store/HybridStore.js +1 -1
  532. package/dist/store/HybridStore.js.map +1 -1
  533. package/dist/store/memoryStore.d.ts +6 -0
  534. package/dist/store/memoryStore.js +16 -0
  535. package/dist/store/memoryStore.js.map +1 -1
  536. package/dist/store/sqliteStore.d.ts +3 -0
  537. package/dist/store/sqliteStore.js +60 -1
  538. package/dist/store/sqliteStore.js.map +1 -1
  539. package/dist/store/threadFilter.js +11 -2
  540. package/dist/store/threadFilter.js.map +1 -1
  541. package/legal/THIRD_PARTY_NOTICES.md +304 -263
  542. package/package.json +6 -6
  543. package/scripts/install-claude-stack.sh +27 -4
  544. package/skills/workforce/SKILL.md +51 -24
  545. package/vendor/codex/continuation.md +5 -0
@@ -1,7 +1,8 @@
1
1
  import { v7 as uuidv7 } from "uuid";
2
2
  import { AsyncLocalStorage } from "node:async_hooks";
3
+ import { startedTurn } from "../../protocol/turnPagination.js";
3
4
  import { MetricsRegistry } from "../../observability/metrics.js";
4
- import { invalidParams, RpcError } from "../../protocol/errors.js";
5
+ import { invalidParams, invalidRequest, RpcError } from "../../protocol/errors.js";
5
6
  import { classifyClaudeResult, classifyClaudeRuntimeError, } from "../resultClassifier.js";
6
7
  import { runtimeWorkspaceRoots, settingsGeneration, withSettingsFrom } from "../../store/HybridStore.js";
7
8
  import { addUsage } from "./usage.js";
@@ -21,7 +22,7 @@ import { stat } from "node:fs/promises";
21
22
  import { readBackgroundOutput } from "./backgroundOutput.js";
22
23
  import { CODEX_MCP_MESSAGE_LABEL, CODEX_MCP_PROMPT_LABEL, CODEX_MCP_REASONING_LABEL, CODEX_MCP_TOOLS, defaultCodexRolloutLocator, parseRolloutChunk, } from "./codexRollout.js";
23
24
  import { createGoalMcpServer } from "../goalTools.js";
24
- import { mapUserInput } from "../inputMapper.js";
25
+ import { mapUserInput, normalizeUserInput } from "../inputMapper.js";
25
26
  import { bashCommandActions } from "../commandActions.js";
26
27
  import { safeSessionPermissionUpdates } from "./permissionUpdates.js";
27
28
  import { threadSettings } from "../threadSettings.js";
@@ -84,6 +85,8 @@ function childProjectionIds(turns) {
84
85
  return [];
85
86
  })));
86
87
  }
88
+ /** Stock app-server caps the per-thread submission queue at 100 entries. */
89
+ const MAX_QUEUED_SUBMISSIONS = 100;
87
90
  function commandLane(command) {
88
91
  if (command.type === "runtimeLineage"
89
92
  || command.type === "completeSynthetic" || command.type === "resolveInteraction"
@@ -1283,7 +1286,7 @@ export class ClaudeSession {
1283
1286
  return handled ? "projected" : "retainedOnly";
1284
1287
  }
1285
1288
  if (message.type === "system" && message.subtype === "task_started") {
1286
- if (message.skip_transcript)
1289
+ if (message.skip_transcript || message.ambient)
1287
1290
  return "stateOnly";
1288
1291
  const owner = await this.providerInteractionOwner(runtimeGeneration, message.tool_use_id, undefined);
1289
1292
  await this.applyProviderMainStream(projection, runtimeGeneration, {
@@ -1315,6 +1318,8 @@ export class ClaudeSession {
1315
1318
  return "projected";
1316
1319
  }
1317
1320
  if (message.type === "system" && message.subtype === "task_notification") {
1321
+ if (message.skip_transcript || message.ambient)
1322
+ return "stateOnly";
1318
1323
  const owner = await this.providerInteractionOwner(runtimeGeneration, message.tool_use_id ?? message.task_id, undefined);
1319
1324
  await this.applyProviderMainStream(projection, runtimeGeneration, {
1320
1325
  kind: "taskStart",
@@ -1333,6 +1338,13 @@ export class ClaudeSession {
1333
1338
  status: message.status,
1334
1339
  summary: message.summary,
1335
1340
  outputFile: message.output_file,
1341
+ ...(message.resource_links?.length
1342
+ ? {
1343
+ resourceLinks: message.resource_links.map((link) => ({
1344
+ uri: link.uri, name: link.name, ...(link.title ? { title: link.title } : {}),
1345
+ })),
1346
+ }
1347
+ : {}),
1336
1348
  ...(message.usage?.duration_ms === undefined
1337
1349
  ? {}
1338
1350
  : { durationMs: message.usage.duration_ms }),
@@ -1342,7 +1354,7 @@ export class ClaudeSession {
1342
1354
  if (message.type === "system" && message.subtype === "background_tasks_changed") {
1343
1355
  await this.applyProviderMainStream(projection, runtimeGeneration, {
1344
1356
  kind: "taskMembership",
1345
- taskIds: message.tasks.map((task) => task.task_id),
1357
+ taskIds: message.tasks.filter((task) => !task.ambient).map((task) => task.task_id),
1346
1358
  });
1347
1359
  return "stateOnly";
1348
1360
  }
@@ -1437,6 +1449,7 @@ export class ClaudeSession {
1437
1449
  });
1438
1450
  if (message.error === "authentication_failed"
1439
1451
  || message.error === "oauth_org_not_allowed"
1452
+ || message.error === "account_on_hold"
1440
1453
  || message.error === "model_not_found") {
1441
1454
  void this.submitLineage({
1442
1455
  type: "runtimeLineage",
@@ -1602,13 +1615,17 @@ export class ClaudeSession {
1602
1615
  if (message.retracted_message_uuids?.length) {
1603
1616
  await this.providerEvictMessages(projection, runtimeGeneration, message.retracted_message_uuids);
1604
1617
  }
1605
- await this.submitProviderProjection(runtimeGeneration, {
1606
- type: "modelFallback",
1607
- runtimeGeneration,
1608
- model: message.fallback_model,
1609
- fromModel: message.original_model,
1610
- source,
1611
- });
1618
+ // scope "local" means only one subagent/side-question response used the
1619
+ // fallback; the session model is unchanged (absent scope means session).
1620
+ if (message.scope !== "local") {
1621
+ await this.submitProviderProjection(runtimeGeneration, {
1622
+ type: "modelFallback",
1623
+ runtimeGeneration,
1624
+ model: message.fallback_model,
1625
+ fromModel: message.original_model,
1626
+ source,
1627
+ });
1628
+ }
1612
1629
  await this.providerSystemMessage(projection, runtimeGeneration, message.content
1613
1630
  || `Claude switched from ${message.original_model} to ${message.fallback_model} after a refusal.`);
1614
1631
  return "projected";
@@ -1888,6 +1905,7 @@ export class ClaudeSession {
1888
1905
  method = "item/commandExecution/requestApproval";
1889
1906
  params = {
1890
1907
  ...common,
1908
+ kind: "command",
1891
1909
  environmentId: null,
1892
1910
  reason: options.decisionReason ?? options.description ?? null,
1893
1911
  command: typeof input.command === "string" ? input.command : null,
@@ -2008,6 +2026,8 @@ export class ClaudeSession {
2008
2026
  itemId: options.toolUseID,
2009
2027
  questions,
2010
2028
  autoResolutionMs: null,
2029
+ // The Claude callback blocks until the user answers.
2030
+ isBlocking: true,
2011
2031
  },
2012
2032
  }, options.signal);
2013
2033
  if (!response || typeof response !== "object" || "cancelled" in response) {
@@ -3421,6 +3441,8 @@ export class ClaudeSession {
3421
3441
  + `retry the ${this.adminOperation.kind} request after cleanup completes.`);
3422
3442
  }
3423
3443
  return dispatchGoal(this.goal, this.goalContext(), command.command);
3444
+ case "queue":
3445
+ return this.handleQueue(command.command);
3424
3446
  case "runtimeDetached": {
3425
3447
  const detached = this.runtimeGeneration === command.runtimeGeneration;
3426
3448
  if (detached && command.requireQuiescent && !this.isQuiescent()) {
@@ -3556,7 +3578,7 @@ export class ClaudeSession {
3556
3578
  type: "userMessage",
3557
3579
  id: command.review ? turnId : uuidv7(),
3558
3580
  clientId: command.params.clientUserMessageId ?? null,
3559
- content: command.params.input,
3581
+ content: normalizeUserInput(command.params.input),
3560
3582
  };
3561
3583
  const reviewItem = command.review
3562
3584
  ? { type: "enteredReviewMode", id: uuidv7(), review: command.review }
@@ -4061,7 +4083,7 @@ export class ClaudeSession {
4061
4083
  type: "userMessage",
4062
4084
  id: uuidv7(),
4063
4085
  clientId: command.clientUserMessageId ?? null,
4064
- content: command.input,
4086
+ content: normalizeUserInput(command.input),
4065
4087
  };
4066
4088
  turn.items.push(item);
4067
4089
  this.publishTurn(turn, "item/started", {
@@ -4473,7 +4495,7 @@ export class ClaudeSession {
4473
4495
  case "threadAdmin":
4474
4496
  return this.dispatchThreadAdmin(command.command);
4475
4497
  case "runShell":
4476
- return this.runShell(command.command);
4498
+ return this.runShell(command.command, command.timeoutMs);
4477
4499
  case "startShell":
4478
4500
  return this.startShell(command.command);
4479
4501
  case "admitShellEffect":
@@ -4654,10 +4676,12 @@ export class ClaudeSession {
4654
4676
  this.emitLifecycle();
4655
4677
  return { operationId, turnId: turn.id, cwd: record.thread.cwd };
4656
4678
  }
4657
- runShell(command) {
4679
+ runShell(command, timeoutMs) {
4658
4680
  const started = this.startShell(command);
4659
4681
  const shell = this.shell;
4660
4682
  let processHandle;
4683
+ let timer;
4684
+ let timedOut = false;
4661
4685
  try {
4662
4686
  processHandle = this.shellRunner.launch(started.cwd, command, {
4663
4687
  ready: () => {
@@ -4666,7 +4690,8 @@ export class ClaudeSession {
4666
4690
  operationId: started.operationId,
4667
4691
  }).then((admitted) => {
4668
4692
  if (!admitted)
4669
- processHandle.kill();
4693
+ return processHandle.kill();
4694
+ timer = setTimeout(() => { timedOut = true; processHandle.kill(); }, timeoutMs);
4670
4695
  }, () => processHandle.kill());
4671
4696
  },
4672
4697
  output: (bytes) => {
@@ -4677,11 +4702,13 @@ export class ClaudeSession {
4677
4702
  }).catch(() => undefined);
4678
4703
  },
4679
4704
  terminal: (exitCode, errorMessage) => {
4705
+ clearTimeout(timer);
4706
+ const message = errorMessage ?? (timedOut ? `command timed out after ${timeoutMs}ms` : undefined);
4680
4707
  void this.submit({
4681
4708
  type: "finishShell",
4682
4709
  operationId: started.operationId,
4683
4710
  exitCode,
4684
- ...(errorMessage ? { errorMessage } : {}),
4711
+ ...(message ? { errorMessage: message } : {}),
4685
4712
  }).catch(() => shell.resolve());
4686
4713
  },
4687
4714
  });
@@ -4746,7 +4773,7 @@ export class ClaudeSession {
4746
4773
  items: active.items.map((candidate) => candidate.id === item.id ? updatedItem : candidate),
4747
4774
  }, status, errorMessage ?? (status === "failed" ? `Shell command exited with code ${exitCode}.` : undefined), null);
4748
4775
  this.shell = undefined;
4749
- this.finishTurn(turn, nullSource, false, [{
4776
+ const completed = this.finishTurn(turn, nullSource, false, [{
4750
4777
  turnId: turn.id,
4751
4778
  method: "item/completed",
4752
4779
  params: {
@@ -4756,7 +4783,7 @@ export class ClaudeSession {
4756
4783
  completedAtMs: Date.now(),
4757
4784
  },
4758
4785
  }]);
4759
- this.emitLifecycle();
4786
+ this.emitLifecycle(completed);
4760
4787
  shell.resolve();
4761
4788
  return true;
4762
4789
  }
@@ -4824,7 +4851,7 @@ export class ClaudeSession {
4824
4851
  items: active.items.map((candidate) => candidate.id === item.id ? updatedItem : candidate),
4825
4852
  }, "interrupted", undefined, null);
4826
4853
  this.shell = undefined;
4827
- this.finishTurn(turn, nullSource, false, [{
4854
+ const completed = this.finishTurn(turn, nullSource, false, [{
4828
4855
  turnId: turn.id,
4829
4856
  method: "item/completed",
4830
4857
  params: {
@@ -4834,7 +4861,7 @@ export class ClaudeSession {
4834
4861
  completedAtMs: Date.now(),
4835
4862
  },
4836
4863
  }]);
4837
- this.emitLifecycle();
4864
+ this.emitLifecycle(completed);
4838
4865
  shell.resolve();
4839
4866
  return true;
4840
4867
  }
@@ -4999,7 +5026,7 @@ export class ClaudeSession {
4999
5026
  const active = this.repository.readTurn(this.threadId, operation.turnId);
5000
5027
  const item = active.items[0];
5001
5028
  const turn = this.terminalTurn(active, status, errorMessage, codexErrorInfo);
5002
- this.finishTurn(turn, source, true, [
5029
+ const completed = this.finishTurn(turn, source, true, [
5003
5030
  {
5004
5031
  turnId: turn.id,
5005
5032
  method: "item/completed",
@@ -5025,7 +5052,7 @@ export class ClaudeSession {
5025
5052
  operation.hidden.completion.reject(new Error(errorMessage ?? `Claude compaction ${status}.`));
5026
5053
  }
5027
5054
  }
5028
- this.emitLifecycle();
5055
+ this.emitLifecycle(operation.hidden ? undefined : completed, Boolean(operation.hidden));
5029
5056
  return { turnId: turn.id, terminal: true, ...(operation.hidden ? { hidden: true } : {}) };
5030
5057
  }
5031
5058
  compactionProjection(terminal = false, cancelOperationId, transportAction) {
@@ -5122,9 +5149,10 @@ export class ClaudeSession {
5122
5149
  items.push({
5123
5150
  type: "agentMessage",
5124
5151
  id: uuidv7(),
5152
+ delivery: null,
5125
5153
  text: systemNoticeText(`Gateway restarted while the CCodex ${state ? "state" : "status"} request was active.`, "error"),
5126
5154
  phase: "final_answer",
5127
- memoryCitation: null,
5155
+ memoryCitation: null, questions: null,
5128
5156
  });
5129
5157
  }
5130
5158
  if (items.some((item) => item.type === "enteredReviewMode")
@@ -5145,7 +5173,7 @@ export class ClaudeSession {
5145
5173
  error: {
5146
5174
  message: "Gateway restarted while the Claude turn was active.",
5147
5175
  codexErrorInfo: { responseStreamDisconnected: { httpStatusCode: null } },
5148
- additionalDetails: null,
5176
+ additionalDetails: null, misalignment: null,
5149
5177
  },
5150
5178
  };
5151
5179
  }
@@ -5177,7 +5205,7 @@ export class ClaudeSession {
5177
5205
  if (this.announcedTurns.has(turn.id))
5178
5206
  return;
5179
5207
  this.announcedTurns.add(turn.id);
5180
- this.publish(turn.id, "turn/started", { threadId: this.threadId, turn }, `turn/started:${turn.id}`);
5208
+ this.publish(turn.id, "turn/started", { threadId: this.threadId, turn: startedTurn(turn) }, `turn/started:${turn.id}`);
5181
5209
  for (const item of turn.items) {
5182
5210
  this.publish(turn.id, "item/started", {
5183
5211
  item, threadId: this.threadId, turnId: turn.id, startedAtMs: Date.now(),
@@ -5194,7 +5222,7 @@ export class ClaudeSession {
5194
5222
  ...active, status, completedAt,
5195
5223
  durationMs: Math.max(0, (completedAt - (active.startedAt ?? completedAt)) * 1_000),
5196
5224
  error: status === "failed"
5197
- ? { message: errorMessage ?? "Claude turn failed.", codexErrorInfo, additionalDetails: null }
5225
+ ? { message: errorMessage ?? "Claude turn failed.", codexErrorInfo, additionalDetails: null, misalignment: null }
5198
5226
  : null,
5199
5227
  };
5200
5228
  }
@@ -5479,10 +5507,7 @@ export class ClaudeSession {
5479
5507
  this.lifecycle = undefined;
5480
5508
  this.cancelContinuation();
5481
5509
  this.metrics.turnCompleted(active.result.status);
5482
- if (active.synthetic)
5483
- this.emitLifecycle(undefined, true);
5484
- else
5485
- this.emitLifecycle(completed);
5510
+ this.emitLifecycle(completed, Boolean(active.synthetic));
5486
5511
  }
5487
5512
  hasNotifications() {
5488
5513
  return Boolean(this.lifecycle && this.lifecycle.notifications > this.lifecycle.acknowledged);
@@ -5690,6 +5715,81 @@ export class ClaudeSession {
5690
5715
  }).catch(() => undefined);
5691
5716
  }
5692
5717
  }
5718
+ handleQueue(command) {
5719
+ const queue = this.repository.listQueue(this.threadId);
5720
+ const changed = (items) => {
5721
+ this.repository.setQueue(this.threadId, items);
5722
+ this.output.emit(this.threadId, "thread/queue/changed", { threadId: this.threadId });
5723
+ };
5724
+ const find = (id) => {
5725
+ const index = queue.findIndex((entry) => entry.id === id);
5726
+ if (index < 0)
5727
+ throw invalidRequest(`queued submission not found: ${id}`);
5728
+ return index;
5729
+ };
5730
+ const validInput = (input) => {
5731
+ if (input.length === 0)
5732
+ throw invalidRequest("only user input can be added to the user-message queue");
5733
+ return normalizeUserInput(input);
5734
+ };
5735
+ switch (command.kind) {
5736
+ case "add": {
5737
+ if (this.requireRecord(false).thread.ephemeral) {
5738
+ throw invalidRequest(`ephemeral thread does not support queued submissions: ${this.threadId}`);
5739
+ }
5740
+ if (queue.length >= MAX_QUEUED_SUBMISSIONS) {
5741
+ throw invalidRequest(`queue cannot contain more than ${MAX_QUEUED_SUBMISSIONS} submissions`);
5742
+ }
5743
+ const entry = {
5744
+ id: uuidv7(), input: validInput(command.input), clientUserMessageId: command.clientUserMessageId,
5745
+ };
5746
+ changed([...queue, entry]);
5747
+ return entry;
5748
+ }
5749
+ case "update": {
5750
+ const index = find(command.queuedSubmissionId);
5751
+ const entry = { ...queue[index], input: validInput(command.input) };
5752
+ changed(queue.with(index, entry));
5753
+ return entry;
5754
+ }
5755
+ case "delete": {
5756
+ const remaining = queue.filter((entry) => entry.id !== command.queuedSubmissionId);
5757
+ if (remaining.length !== queue.length)
5758
+ changed(remaining);
5759
+ return remaining.length !== queue.length;
5760
+ }
5761
+ case "reorder": {
5762
+ const ids = new Set(command.queuedSubmissionIds);
5763
+ if (ids.size !== command.queuedSubmissionIds.length || ids.size !== queue.length
5764
+ || !queue.every((entry) => ids.has(entry.id))) {
5765
+ throw invalidRequest("queue reorder must include every queued submission exactly once");
5766
+ }
5767
+ changed(command.queuedSubmissionIds.map((id) => queue[find(id)]));
5768
+ return undefined;
5769
+ }
5770
+ case "take": {
5771
+ const idle = this.isQuiescent() && this.goal.pendingTurns === 0;
5772
+ let index = 0;
5773
+ if (command.manual) {
5774
+ if (queue.length === 0)
5775
+ throw invalidRequest("queue is empty");
5776
+ index = command.queuedSubmissionId === undefined ? 0 : find(command.queuedSubmissionId);
5777
+ if (!idle)
5778
+ throw invalidRequest("thread already has an active or pending turn");
5779
+ }
5780
+ else if (queue.length === 0 || !idle
5781
+ || this.requireRecord(true).thread.turns.at(-1)?.status === "interrupted") {
5782
+ return undefined;
5783
+ }
5784
+ changed(queue.toSpliced(index, 1));
5785
+ return queue[index];
5786
+ }
5787
+ case "restore": {
5788
+ changed([command.entry, ...queue]);
5789
+ return undefined;
5790
+ }
5791
+ }
5792
+ }
5693
5793
  isQuiescent() {
5694
5794
  return !this.lifecycle && !this.compaction && !this.interruptFence && !this.transportStopFence
5695
5795
  && this.pendingNoQuery === 0 && this.pendingInputs === 0 && !this.hasOutputDrains()
@@ -5766,6 +5866,24 @@ export class ClaudeSession {
5766
5866
  return waiter;
5767
5867
  }
5768
5868
  dispatchThreadAdmin(command) {
5869
+ if (command.kind === "generatedName") {
5870
+ const record = this.requireRecord(false);
5871
+ if (record.thread.name || record.thread.ephemeral || this.adminOperation)
5872
+ return;
5873
+ const user = this.requireRecord(true).thread.turns[0]?.items.find((item) => item.type === "userMessage");
5874
+ const text = user?.content.flatMap((input) => input.type === "text" ? [input.text] : []).join("\n").trim();
5875
+ // iOS truncates the title worker's user prompt to 2,000 characters.
5876
+ const prompt = command.userPrompt.trim();
5877
+ if (!prompt || (text !== prompt && !(command.userPrompt.length >= 2_000 && text?.startsWith(prompt))))
5878
+ return;
5879
+ const updated = {
5880
+ ...record,
5881
+ thread: { ...record.thread, name: command.name, updatedAt: Math.floor(Date.now() / 1_000) },
5882
+ };
5883
+ const params = { threadId: this.threadId, threadName: command.name };
5884
+ this.commitState(updated, [{ turnId: null, method: "thread/name/updated", params }]);
5885
+ return;
5886
+ }
5769
5887
  if (command.kind === "renameProjection") {
5770
5888
  const record = this.repository.read(command.threadId, false);
5771
5889
  if (!record?.thread.parentThreadId
@@ -5926,8 +6044,8 @@ export class ClaudeSession {
5926
6044
  throw invalidParams(`Claude thread '${this.threadId}' has an active ${this.adminOperation.kind} operation.`);
5927
6045
  }
5928
6046
  const record = this.requireRecord(false);
5929
- if (record.thread.ephemeral && command.isPinned !== undefined && command.isPinned !== null) {
5930
- throw invalidParams("Ephemeral Claude side chats cannot be pinned.");
6047
+ if (record.thread.ephemeral && command.section !== undefined) {
6048
+ throw invalidParams("Ephemeral Claude side chats cannot be sectioned.");
5931
6049
  }
5932
6050
  const previous = record.thread.gitInfo ?? { sha: null, branch: null, originUrl: null };
5933
6051
  const patch = command.gitInfo;
@@ -5941,7 +6059,10 @@ export class ClaudeSession {
5941
6059
  thread: {
5942
6060
  ...record.thread,
5943
6061
  gitInfo,
5944
- isPinned: command.isPinned ?? record.thread.isPinned,
6062
+ ...(command.section === undefined ? {} : {
6063
+ section: command.section,
6064
+ sectionEnteredAt: command.section ? Math.floor(Date.now() / 1_000) : null,
6065
+ }),
5945
6066
  updatedAt: Math.floor(Date.now() / 1_000),
5946
6067
  },
5947
6068
  };
@@ -6343,7 +6464,8 @@ export class ClaudeSession {
6343
6464
  id: uuidv7(),
6344
6465
  text: value,
6345
6466
  phase: null,
6346
- memoryCitation: null,
6467
+ memoryCitation: null, questions: null,
6468
+ delivery: null,
6347
6469
  };
6348
6470
  const turn = {
6349
6471
  id: uuidv7(),
@@ -6361,13 +6483,7 @@ export class ClaudeSession {
6361
6483
  lastCompletedTurnId: turn.id,
6362
6484
  thread: { ...record.thread, updatedAt: now, recencyAt: now },
6363
6485
  };
6364
- const started = {
6365
- ...turn,
6366
- items: [],
6367
- status: "inProgress",
6368
- completedAt: null,
6369
- durationMs: null,
6370
- };
6486
+ const started = startedTurn({ ...turn, status: "inProgress", completedAt: null, durationMs: null });
6371
6487
  this.commitState(updated, [
6372
6488
  { turnId: turn.id, method: "turn/started", params: { threadId: this.threadId, turn: started } },
6373
6489
  {
@@ -6446,7 +6562,8 @@ export class ClaudeSession {
6446
6562
  id: uuidv7(),
6447
6563
  text: fact.text,
6448
6564
  phase: null,
6449
- memoryCitation: null,
6565
+ memoryCitation: null, questions: null,
6566
+ delivery: null,
6450
6567
  };
6451
6568
  turn.items.push(item);
6452
6569
  this.publishTurn(turn, "item/started", {
@@ -6876,7 +6993,11 @@ export class ClaudeSession {
6876
6993
  ...(exit ? { exit_code: Number(exit) } : {}) }, source, false);
6877
6994
  }
6878
6995
  else if (item?.type === "mcpToolCall" && tool) {
6879
- this.completeTool(ownerTurn, ownerState, tool, fact.summary, fact.status !== "completed", fact.durationMs === undefined ? undefined : { duration_ms: fact.durationMs }, source, false);
6996
+ const links = fact.resourceLinks?.length
6997
+ ? `${fact.summary ? "\n" : ""}${fact.resourceLinks
6998
+ .map((link) => `${link.title ?? link.name}: ${link.uri}`).join("\n")}`
6999
+ : "";
7000
+ this.completeTool(ownerTurn, ownerState, tool, `${fact.summary}${links}`, fact.status !== "completed", fact.durationMs === undefined ? undefined : { duration_ms: fact.durationMs }, source, false);
6880
7001
  }
6881
7002
  else if (item?.type === "collabAgentToolCall") {
6882
7003
  item.status = fact.status === "completed" ? "completed" : "failed";
@@ -7067,7 +7188,7 @@ export class ClaudeSession {
7067
7188
  state.completedItems.add(item.id);
7068
7189
  this.scopes.set(childThreadId, state);
7069
7190
  this.publishAt(childThreadId, turn.id, "thread/started", { thread }, source);
7070
- this.publishAt(childThreadId, turn.id, "turn/started", { threadId: childThreadId, turn }, source);
7191
+ this.publishAt(childThreadId, turn.id, "turn/started", { threadId: childThreadId, turn: startedTurn(turn) }, source);
7071
7192
  this.publishAt(childThreadId, turn.id, "item/started", { item, threadId: childThreadId, turnId: turn.id, startedAtMs: Date.now() }, source);
7072
7193
  this.publishAt(childThreadId, turn.id, "item/completed", { item, threadId: childThreadId, turnId: turn.id, completedAtMs: Date.now() }, source);
7073
7194
  return thread;
@@ -7107,7 +7228,7 @@ export class ClaudeSession {
7107
7228
  const state = newMainStreamState(childThreadId, turn.id, updated);
7108
7229
  state.completedItems.add(item.id);
7109
7230
  this.scopes.set(childThreadId, state);
7110
- this.publishAt(childThreadId, turn.id, "turn/started", { threadId: childThreadId, turn }, source);
7231
+ this.publishAt(childThreadId, turn.id, "turn/started", { threadId: childThreadId, turn: startedTurn(turn) }, source);
7111
7232
  this.publishAt(childThreadId, turn.id, "item/started", {
7112
7233
  item, threadId: childThreadId, turnId: turn.id, startedAtMs: Date.now(),
7113
7234
  }, source);
@@ -7134,7 +7255,7 @@ export class ClaudeSession {
7134
7255
  turn.status = status === "completed" ? "completed" : status === "stopped" ? "interrupted" : "failed";
7135
7256
  turn.completedAt = completedAt;
7136
7257
  turn.durationMs = Math.max(0, (completedAt - (turn.startedAt ?? completedAt)) * 1_000);
7137
- turn.error = status === "failed" ? { message: summary, codexErrorInfo: null, additionalDetails: null } : null;
7258
+ turn.error = status === "failed" ? { message: summary, codexErrorInfo: null, additionalDetails: null, misalignment: null } : null;
7138
7259
  const updated = { ...record, lastCompletedTurnId: turn.id,
7139
7260
  thread: { ...record.thread, status: { type: "idle" }, updatedAt: completedAt } };
7140
7261
  this.commitState(updated, [
@@ -7178,7 +7299,7 @@ export class ClaudeSession {
7178
7299
  }
7179
7300
  }
7180
7301
  if (item.type === "agentMessage") {
7181
- item.phase = completeAsCommentary ? "commentary" : null;
7302
+ item.phase = completeAsCommentary ? "commentary" : "final_answer";
7182
7303
  if (completeAsCommentary) {
7183
7304
  state.pendingAgentItemIds.delete(item.id);
7184
7305
  this.completeStreamItem(turn, state, item.id, source);
@@ -7214,7 +7335,8 @@ export class ClaudeSession {
7214
7335
  state.blockItems.delete(index);
7215
7336
  if (block === "text") {
7216
7337
  const item = {
7217
- type: "agentMessage", id: uuidv7(), text: "", phase: null, memoryCitation: null,
7338
+ // Stock never announces a phase-less message; stream as the answer and relabel to commentary if tools follow.
7339
+ type: "agentMessage", id: uuidv7(), text: "", phase: "final_answer", memoryCitation: null, questions: null, delivery: null,
7218
7340
  };
7219
7341
  state.blockItems.set(index, item.id);
7220
7342
  turn.items.push(item);