@gkorepanov/ccodex 0.4.20 → 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 (248) 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/rateLimits.d.ts +2 -1
  8. package/dist/claude/rateLimits.js +12 -16
  9. package/dist/claude/rateLimits.js.map +1 -1
  10. package/dist/claude/service.d.ts +40 -0
  11. package/dist/claude/service.js +153 -65
  12. package/dist/claude/service.js.map +1 -1
  13. package/dist/claude/session/commands.d.ts +36 -0
  14. package/dist/claude/session/goalState.d.ts +5 -0
  15. package/dist/claude/session/goalState.js +22 -0
  16. package/dist/claude/session/goalState.js.map +1 -1
  17. package/dist/claude/session/repository.d.ts +3 -0
  18. package/dist/claude/session/repository.js +2 -0
  19. package/dist/claude/session/repository.js.map +1 -1
  20. package/dist/claude/session/runtime.js +1 -1
  21. package/dist/claude/session/runtime.js.map +1 -1
  22. package/dist/claude/session/scopeState.js +1 -0
  23. package/dist/claude/session/scopeState.js.map +1 -1
  24. package/dist/claude/session/session.d.ts +1 -0
  25. package/dist/claude/session/session.js +132 -36
  26. package/dist/claude/session/session.js.map +1 -1
  27. package/dist/claude/skillCatalog.js +1 -0
  28. package/dist/claude/skillCatalog.js.map +1 -1
  29. package/dist/claude/statusCommand.js +1 -2
  30. package/dist/claude/statusCommand.js.map +1 -1
  31. package/dist/codex/generated/AuthMode.d.ts +1 -1
  32. package/dist/codex/generated/ClientRequest.d.ts +25 -0
  33. package/dist/codex/generated/InternalSessionSource.d.ts +1 -1
  34. package/dist/codex/generated/ResponseItem.d.ts +3 -1
  35. package/dist/codex/generated/ResponseItemRuntimeSchema.js +2 -2
  36. package/dist/codex/generated/ResponseItemRuntimeSchema.js.map +1 -1
  37. package/dist/codex/generated/ServerNotification.d.ts +23 -0
  38. package/dist/codex/generated/ServerNotificationEnvelope.d.ts +23 -0
  39. package/dist/codex/generated/v2/AllowDenyRequirement.d.ts +1 -0
  40. package/dist/codex/generated/v2/AllowDenyRequirement.js +3 -0
  41. package/dist/codex/generated/v2/AllowDenyRequirement.js.map +1 -0
  42. package/dist/codex/generated/v2/AppLinksConfig.d.ts +11 -0
  43. package/dist/codex/generated/v2/AppLinksConfig.js +3 -0
  44. package/dist/codex/generated/v2/AppLinksConfig.js.map +1 -0
  45. package/dist/codex/generated/v2/AppsConfig.d.ts +5 -0
  46. package/dist/codex/generated/v2/AsyncUserInputQuestion.d.ts +4 -0
  47. package/dist/codex/generated/v2/AsyncUserInputQuestion.js +3 -0
  48. package/dist/codex/generated/v2/AsyncUserInputQuestion.js.map +1 -0
  49. package/dist/codex/generated/v2/AuthRecoveryNotification.d.ts +6 -0
  50. package/dist/codex/generated/v2/AuthRecoveryNotification.js +3 -0
  51. package/dist/codex/generated/v2/AuthRecoveryNotification.js.map +1 -0
  52. package/dist/codex/generated/v2/BedrockSetupParams.d.ts +0 -8
  53. package/dist/codex/generated/v2/BrowserUseAccessApprovalLifetime.d.ts +1 -0
  54. package/dist/codex/generated/v2/BrowserUseAccessApprovalLifetime.js +3 -0
  55. package/dist/codex/generated/v2/BrowserUseAccessApprovalLifetime.js.map +1 -0
  56. package/dist/codex/generated/v2/BrowserUseConfig.d.ts +8 -0
  57. package/dist/codex/generated/v2/BrowserUseConfig.js +3 -0
  58. package/dist/codex/generated/v2/BrowserUseConfig.js.map +1 -0
  59. package/dist/codex/generated/v2/BrowserUseOriginPolicy.d.ts +11 -0
  60. package/dist/codex/generated/v2/BrowserUseOriginPolicy.js +3 -0
  61. package/dist/codex/generated/v2/BrowserUseOriginPolicy.js.map +1 -0
  62. package/dist/codex/generated/v2/BrowserUseOriginPolicyConfig.d.ts +7 -0
  63. package/dist/codex/generated/v2/BrowserUseOriginPolicyConfig.js +3 -0
  64. package/dist/codex/generated/v2/BrowserUseOriginPolicyConfig.js.map +1 -0
  65. package/dist/codex/generated/v2/BrowserUseRequirements.d.ts +7 -0
  66. package/dist/codex/generated/v2/CodexErrorInfo.d.ts +1 -1
  67. package/dist/codex/generated/v2/CollabAgentTool.d.ts +1 -1
  68. package/dist/codex/generated/v2/CollabAgentToolCallStatus.d.ts +1 -1
  69. package/dist/codex/generated/v2/CommandExecutionApprovalKind.d.ts +4 -0
  70. package/dist/codex/generated/v2/CommandExecutionApprovalKind.js +3 -0
  71. package/dist/codex/generated/v2/CommandExecutionApprovalKind.js.map +1 -0
  72. package/dist/codex/generated/v2/CommandExecutionRequestApprovalParams.d.ts +6 -0
  73. package/dist/codex/generated/v2/ComputerUseConfig.d.ts +8 -0
  74. package/dist/codex/generated/v2/ComputerUseConfig.js +3 -0
  75. package/dist/codex/generated/v2/ComputerUseConfig.js.map +1 -0
  76. package/dist/codex/generated/v2/ComputerUseMacosConfig.d.ts +6 -0
  77. package/dist/codex/generated/v2/ComputerUseMacosConfig.js +3 -0
  78. package/dist/codex/generated/v2/ComputerUseMacosConfig.js.map +1 -0
  79. package/dist/codex/generated/v2/ComputerUseMacosRequirements.d.ts +6 -0
  80. package/dist/codex/generated/v2/ComputerUseMacosRequirements.js +3 -0
  81. package/dist/codex/generated/v2/ComputerUseMacosRequirements.js.map +1 -0
  82. package/dist/codex/generated/v2/ComputerUseRequirements.d.ts +7 -0
  83. package/dist/codex/generated/v2/ComputerUseWindowsConfig.d.ts +8 -0
  84. package/dist/codex/generated/v2/ComputerUseWindowsConfig.js +3 -0
  85. package/dist/codex/generated/v2/ComputerUseWindowsConfig.js.map +1 -0
  86. package/dist/codex/generated/v2/ComputerUseWindowsExeConfig.d.ts +7 -0
  87. package/dist/codex/generated/v2/ComputerUseWindowsExeConfig.js +3 -0
  88. package/dist/codex/generated/v2/ComputerUseWindowsExeConfig.js.map +1 -0
  89. package/dist/codex/generated/v2/ComputerUseWindowsExeRequirement.d.ts +7 -0
  90. package/dist/codex/generated/v2/ComputerUseWindowsExeRequirement.js +3 -0
  91. package/dist/codex/generated/v2/ComputerUseWindowsExeRequirement.js.map +1 -0
  92. package/dist/codex/generated/v2/ComputerUseWindowsRequirements.d.ts +8 -0
  93. package/dist/codex/generated/v2/ComputerUseWindowsRequirements.js +3 -0
  94. package/dist/codex/generated/v2/ComputerUseWindowsRequirements.js.map +1 -0
  95. package/dist/codex/generated/v2/Config.d.ts +4 -0
  96. package/dist/codex/generated/v2/ConfigRequirements.d.ts +4 -0
  97. package/dist/codex/generated/v2/CyberAccessProgram.d.ts +5 -0
  98. package/dist/codex/generated/v2/CyberAccessProgram.js +3 -0
  99. package/dist/codex/generated/v2/CyberAccessProgram.js.map +1 -0
  100. package/dist/codex/generated/v2/GetAccountRateLimitsResponse.d.ts +10 -0
  101. package/dist/codex/generated/v2/GuardianApprovalReviewAction.d.ts +7 -0
  102. package/dist/codex/generated/v2/HookEventName.d.ts +1 -1
  103. package/dist/codex/generated/v2/InAppBrowserRequirements.d.ts +3 -0
  104. package/dist/codex/generated/v2/InAppBrowserRequirements.js +3 -0
  105. package/dist/codex/generated/v2/InAppBrowserRequirements.js.map +1 -0
  106. package/dist/codex/generated/v2/ItemGuardianApprovalReviewCompletedNotification.d.ts +2 -0
  107. package/dist/codex/generated/v2/ItemGuardianApprovalReviewStartedNotification.d.ts +2 -0
  108. package/dist/codex/generated/v2/LoginAccountParams.d.ts +6 -0
  109. package/dist/codex/generated/v2/ManagedHooksRequirements.d.ts +1 -0
  110. package/dist/codex/generated/v2/McpServerConnectionStatus.d.ts +1 -0
  111. package/dist/codex/generated/v2/McpServerConnectionStatus.js +3 -0
  112. package/dist/codex/generated/v2/McpServerConnectionStatus.js.map +1 -0
  113. package/dist/codex/generated/v2/McpServerElicitationRequestParams.d.ts +5 -0
  114. package/dist/codex/generated/v2/McpServerEventNotification.d.ts +5 -0
  115. package/dist/codex/generated/v2/McpServerEventNotification.js +3 -0
  116. package/dist/codex/generated/v2/McpServerEventNotification.js.map +1 -0
  117. package/dist/codex/generated/v2/McpServerEventStreamNotification.d.ts +5 -0
  118. package/dist/codex/generated/v2/McpServerEventStreamNotification.js +3 -0
  119. package/dist/codex/generated/v2/McpServerEventStreamNotification.js.map +1 -0
  120. package/dist/codex/generated/v2/McpServerEventStreamStartParams.d.ts +9 -0
  121. package/dist/codex/generated/v2/McpServerEventStreamStartParams.js +3 -0
  122. package/dist/codex/generated/v2/McpServerEventStreamStartParams.js.map +1 -0
  123. package/dist/codex/generated/v2/McpServerEventStreamStartResponse.d.ts +1 -0
  124. package/dist/codex/generated/v2/McpServerEventStreamStartResponse.js +3 -0
  125. package/dist/codex/generated/v2/McpServerEventStreamStartResponse.js.map +1 -0
  126. package/dist/codex/generated/v2/McpServerEventStreamStopParams.d.ts +3 -0
  127. package/dist/codex/generated/v2/McpServerEventStreamStopParams.js +3 -0
  128. package/dist/codex/generated/v2/McpServerEventStreamStopParams.js.map +1 -0
  129. package/dist/codex/generated/v2/McpServerEventStreamStopResponse.d.ts +1 -0
  130. package/dist/codex/generated/v2/McpServerEventStreamStopResponse.js +3 -0
  131. package/dist/codex/generated/v2/McpServerEventStreamStopResponse.js.map +1 -0
  132. package/dist/codex/generated/v2/McpServerStatus.d.ts +5 -0
  133. package/dist/codex/generated/v2/MisalignmentErrorDetails.d.ts +15 -0
  134. package/dist/codex/generated/v2/MisalignmentErrorDetails.js +3 -0
  135. package/dist/codex/generated/v2/MisalignmentErrorDetails.js.map +1 -0
  136. package/dist/codex/generated/v2/MisalignmentSteer.d.ts +3 -0
  137. package/dist/codex/generated/v2/MisalignmentSteer.js +3 -0
  138. package/dist/codex/generated/v2/MisalignmentSteer.js.map +1 -0
  139. package/dist/codex/generated/v2/PluginReconcileChangedPlugin.d.ts +19 -0
  140. package/dist/codex/generated/v2/PluginReconcileChangedPlugin.js +3 -0
  141. package/dist/codex/generated/v2/PluginReconcileChangedPlugin.js.map +1 -0
  142. package/dist/codex/generated/v2/PluginReconcileParams.d.ts +6 -0
  143. package/dist/codex/generated/v2/PluginReconcileParams.js +3 -0
  144. package/dist/codex/generated/v2/PluginReconcileParams.js.map +1 -0
  145. package/dist/codex/generated/v2/PluginReconcileResponse.d.ts +23 -0
  146. package/dist/codex/generated/v2/PluginReconcileResponse.js +3 -0
  147. package/dist/codex/generated/v2/PluginReconcileResponse.js.map +1 -0
  148. package/dist/codex/generated/v2/Project.d.ts +4 -0
  149. package/dist/codex/generated/v2/ProjectListParams.d.ts +10 -0
  150. package/dist/codex/generated/v2/ProjectSortKey.d.ts +1 -0
  151. package/dist/codex/generated/v2/ProjectSortKey.js +3 -0
  152. package/dist/codex/generated/v2/ProjectSortKey.js.map +1 -0
  153. package/dist/codex/generated/v2/RawResponseCompletedNotification.d.ts +2 -0
  154. package/dist/codex/generated/v2/ResponseUsageMetadata.d.ts +8 -0
  155. package/dist/codex/generated/v2/ResponseUsageMetadata.js +3 -0
  156. package/dist/codex/generated/v2/ResponseUsageMetadata.js.map +1 -0
  157. package/dist/codex/generated/v2/SkillMetadata.d.ts +4 -0
  158. package/dist/codex/generated/v2/SubAgentActivityKind.d.ts +1 -1
  159. package/dist/codex/generated/v2/Thread.d.ts +11 -0
  160. package/dist/codex/generated/v2/ThreadForkParams.d.ts +3 -1
  161. package/dist/codex/generated/v2/ThreadItem.d.ts +9 -0
  162. package/dist/codex/generated/v2/ThreadReadParams.d.ts +3 -0
  163. package/dist/codex/generated/v2/ThreadRealtimeBemItemPresentation.d.ts +11 -0
  164. package/dist/codex/generated/v2/ThreadRealtimeBemItemPresentation.js +3 -0
  165. package/dist/codex/generated/v2/ThreadRealtimeBemItemPresentation.js.map +1 -0
  166. package/dist/codex/generated/v2/ThreadRealtimeItem.d.ts +24 -0
  167. package/dist/codex/generated/v2/ThreadRealtimeItem.js +3 -0
  168. package/dist/codex/generated/v2/ThreadRealtimeItem.js.map +1 -0
  169. package/dist/codex/generated/v2/ThreadRealtimeItemCompletedNotification.d.ts +8 -0
  170. package/dist/codex/generated/v2/ThreadRealtimeItemCompletedNotification.js +3 -0
  171. package/dist/codex/generated/v2/ThreadRealtimeItemCompletedNotification.js.map +1 -0
  172. package/dist/codex/generated/v2/ThreadRealtimeItemStartedNotification.d.ts +8 -0
  173. package/dist/codex/generated/v2/ThreadRealtimeItemStartedNotification.js +3 -0
  174. package/dist/codex/generated/v2/ThreadRealtimeItemStartedNotification.js.map +1 -0
  175. package/dist/codex/generated/v2/ThreadRealtimeItemTranscriptDeltaNotification.d.ts +8 -0
  176. package/dist/codex/generated/v2/ThreadRealtimeItemTranscriptDeltaNotification.js +3 -0
  177. package/dist/codex/generated/v2/ThreadRealtimeItemTranscriptDeltaNotification.js.map +1 -0
  178. package/dist/codex/generated/v2/ThreadRealtimeSessionOutcome.d.ts +1 -0
  179. package/dist/codex/generated/v2/ThreadRealtimeSessionOutcome.js +3 -0
  180. package/dist/codex/generated/v2/ThreadRealtimeSessionOutcome.js.map +1 -0
  181. package/dist/codex/generated/v2/ThreadRealtimeStartTransport.d.ts +6 -0
  182. package/dist/codex/generated/v2/ThreadRealtimeTranscriptRole.d.ts +1 -0
  183. package/dist/codex/generated/v2/ThreadRealtimeTranscriptRole.js +3 -0
  184. package/dist/codex/generated/v2/ThreadRealtimeTranscriptRole.js.map +1 -0
  185. package/dist/codex/generated/v2/ThreadResumeParams.d.ts +3 -1
  186. package/dist/codex/generated/v2/ThreadShellCommandParams.d.ts +6 -0
  187. package/dist/codex/generated/v2/ThreadTimelineEntry.d.ts +31 -0
  188. package/dist/codex/generated/v2/ThreadTimelineEntry.js +3 -0
  189. package/dist/codex/generated/v2/ThreadTimelineEntry.js.map +1 -0
  190. package/dist/codex/generated/v2/ThreadTimelineListParams.d.ts +8 -0
  191. package/dist/codex/generated/v2/ThreadTimelineListParams.js +3 -0
  192. package/dist/codex/generated/v2/ThreadTimelineListParams.js.map +1 -0
  193. package/dist/codex/generated/v2/ThreadTimelineListResponse.d.ts +9 -0
  194. package/dist/codex/generated/v2/ThreadTimelineListResponse.js +3 -0
  195. package/dist/codex/generated/v2/ThreadTimelineListResponse.js.map +1 -0
  196. package/dist/codex/generated/v2/TurnError.d.ts +5 -0
  197. package/dist/codex/generated/v2/TurnSettingsUpdateParams.d.ts +34 -0
  198. package/dist/codex/generated/v2/TurnSettingsUpdateParams.js +3 -0
  199. package/dist/codex/generated/v2/TurnSettingsUpdateParams.js.map +1 -0
  200. package/dist/codex/generated/v2/TurnSettingsUpdateResponse.d.ts +4 -0
  201. package/dist/codex/generated/v2/TurnSettingsUpdateResponse.js +3 -0
  202. package/dist/codex/generated/v2/TurnSettingsUpdateResponse.js.map +1 -0
  203. package/dist/codex/generated/v2/TurnSettingsUpdateStatus.d.ts +1 -0
  204. package/dist/codex/generated/v2/TurnSettingsUpdateStatus.js +3 -0
  205. package/dist/codex/generated/v2/TurnSettingsUpdateStatus.js.map +1 -0
  206. package/dist/codex/generated/v2/TurnStartParams.d.ts +19 -0
  207. package/dist/codex/generated/v2/TurnToolOutput.d.ts +6 -0
  208. package/dist/codex/generated/v2/TurnToolOutput.js +3 -0
  209. package/dist/codex/generated/v2/TurnToolOutput.js.map +1 -0
  210. package/dist/codex/generated/v2/index.d.ts +46 -0
  211. package/dist/daemon/probe.js +1 -1
  212. package/dist/gateway/clientConnection.js +84 -7
  213. package/dist/gateway/clientConnection.js.map +1 -1
  214. package/dist/gateway/remoteRelay.js +2 -2
  215. package/dist/gateway/remoteRelay.js.map +1 -1
  216. package/dist/gateway/threadList.d.ts +6 -0
  217. package/dist/gateway/threadList.js +51 -10
  218. package/dist/gateway/threadList.js.map +1 -1
  219. package/dist/gateway/transientNotice.js +4 -4
  220. package/dist/gateway/transientNotice.js.map +1 -1
  221. package/dist/handoff/service.d.ts +10 -2
  222. package/dist/handoff/service.js +163 -106
  223. package/dist/handoff/service.js.map +1 -1
  224. package/dist/handoff/titleGeneration.d.ts +1 -0
  225. package/dist/handoff/titleGeneration.js.map +1 -1
  226. package/dist/management/setup.d.ts +6 -0
  227. package/dist/management/setup.js +11 -3
  228. package/dist/management/setup.js.map +1 -1
  229. package/dist/protocol/search.d.ts +24 -0
  230. package/dist/protocol/search.js +105 -0
  231. package/dist/protocol/search.js.map +1 -0
  232. package/dist/protocol/turnPagination.d.ts +16 -0
  233. package/dist/protocol/turnPagination.js +75 -35
  234. package/dist/protocol/turnPagination.js.map +1 -1
  235. package/dist/runtime/dependencies.js +1 -1
  236. package/dist/store/HybridStore.d.ts +4 -0
  237. package/dist/store/HybridStore.js +1 -1
  238. package/dist/store/HybridStore.js.map +1 -1
  239. package/dist/store/memoryStore.d.ts +6 -0
  240. package/dist/store/memoryStore.js +16 -0
  241. package/dist/store/memoryStore.js.map +1 -1
  242. package/dist/store/sqliteStore.d.ts +3 -0
  243. package/dist/store/sqliteStore.js +57 -0
  244. package/dist/store/sqliteStore.js.map +1 -1
  245. package/legal/THIRD_PARTY_NOTICES.md +187 -140
  246. package/package.json +6 -6
  247. package/scripts/install-claude-stack.sh +27 -4
  248. package/vendor/codex/continuation.md +5 -0
@@ -14,9 +14,11 @@ export type { AdditionalNetworkPermissions } from "./AdditionalNetworkPermission
14
14
  export type { AdditionalPermissionProfile } from "./AdditionalPermissionProfile";
15
15
  export type { AgentMessageDelivery } from "./AgentMessageDelivery";
16
16
  export type { AgentMessageDeltaNotification } from "./AgentMessageDeltaNotification";
17
+ export type { AllowDenyRequirement } from "./AllowDenyRequirement";
17
18
  export type { AnalyticsConfig } from "./AnalyticsConfig";
18
19
  export type { AppBranding } from "./AppBranding";
19
20
  export type { AppInfo } from "./AppInfo";
21
+ export type { AppLinksConfig } from "./AppLinksConfig";
20
22
  export type { AppListUpdatedNotification } from "./AppListUpdatedNotification";
21
23
  export type { AppMetadata } from "./AppMetadata";
22
24
  export type { AppReview } from "./AppReview";
@@ -37,8 +39,10 @@ export type { AppsListResponse } from "./AppsListResponse";
37
39
  export type { AppsReadParams } from "./AppsReadParams";
38
40
  export type { AppsReadResponse } from "./AppsReadResponse";
39
41
  export type { AskForApproval } from "./AskForApproval";
42
+ export type { AsyncUserInputQuestion } from "./AsyncUserInputQuestion";
40
43
  export type { AttestationGenerateParams } from "./AttestationGenerateParams";
41
44
  export type { AttestationGenerateResponse } from "./AttestationGenerateResponse";
45
+ export type { AuthRecoveryNotification } from "./AuthRecoveryNotification";
42
46
  export type { AutoReviewDecisionSource } from "./AutoReviewDecisionSource";
43
47
  export type { AutoReviewRequirements } from "./AutoReviewRequirements";
44
48
  export type { AwsCredentialType } from "./AwsCredentialType";
@@ -48,6 +52,10 @@ export type { BedrockDiscoverResponse } from "./BedrockDiscoverResponse";
48
52
  export type { BedrockEnvironmentCredential } from "./BedrockEnvironmentCredential";
49
53
  export type { BedrockSetupParams } from "./BedrockSetupParams";
50
54
  export type { BedrockSetupResponse } from "./BedrockSetupResponse";
55
+ export type { BrowserUseAccessApprovalLifetime } from "./BrowserUseAccessApprovalLifetime";
56
+ export type { BrowserUseConfig } from "./BrowserUseConfig";
57
+ export type { BrowserUseOriginPolicy } from "./BrowserUseOriginPolicy";
58
+ export type { BrowserUseOriginPolicyConfig } from "./BrowserUseOriginPolicyConfig";
51
59
  export type { BrowserUseRequirements } from "./BrowserUseRequirements";
52
60
  export type { ByteRange } from "./ByteRange";
53
61
  export type { CancelLoginAccountParams } from "./CancelLoginAccountParams";
@@ -79,13 +87,21 @@ export type { CommandExecTerminateResponse } from "./CommandExecTerminateRespons
79
87
  export type { CommandExecWriteParams } from "./CommandExecWriteParams";
80
88
  export type { CommandExecWriteResponse } from "./CommandExecWriteResponse";
81
89
  export type { CommandExecutionApprovalDecision } from "./CommandExecutionApprovalDecision";
90
+ export type { CommandExecutionApprovalKind } from "./CommandExecutionApprovalKind";
82
91
  export type { CommandExecutionOutputDeltaNotification } from "./CommandExecutionOutputDeltaNotification";
83
92
  export type { CommandExecutionRequestApprovalParams } from "./CommandExecutionRequestApprovalParams";
84
93
  export type { CommandExecutionRequestApprovalResponse } from "./CommandExecutionRequestApprovalResponse";
85
94
  export type { CommandExecutionSource } from "./CommandExecutionSource";
86
95
  export type { CommandExecutionStatus } from "./CommandExecutionStatus";
87
96
  export type { CommandMigration } from "./CommandMigration";
97
+ export type { ComputerUseConfig } from "./ComputerUseConfig";
98
+ export type { ComputerUseMacosConfig } from "./ComputerUseMacosConfig";
99
+ export type { ComputerUseMacosRequirements } from "./ComputerUseMacosRequirements";
88
100
  export type { ComputerUseRequirements } from "./ComputerUseRequirements";
101
+ export type { ComputerUseWindowsConfig } from "./ComputerUseWindowsConfig";
102
+ export type { ComputerUseWindowsExeConfig } from "./ComputerUseWindowsExeConfig";
103
+ export type { ComputerUseWindowsExeRequirement } from "./ComputerUseWindowsExeRequirement";
104
+ export type { ComputerUseWindowsRequirements } from "./ComputerUseWindowsRequirements";
89
105
  export type { Config } from "./Config";
90
106
  export type { ConfigBatchWriteParams } from "./ConfigBatchWriteParams";
91
107
  export type { ConfigEdit } from "./ConfigEdit";
@@ -109,6 +125,7 @@ export type { ContextCompactedNotification } from "./ContextCompactedNotificatio
109
125
  export type { CreditsSnapshot } from "./CreditsSnapshot";
110
126
  export type { CurrentTimeReadParams } from "./CurrentTimeReadParams";
111
127
  export type { CurrentTimeReadResponse } from "./CurrentTimeReadResponse";
128
+ export type { CyberAccessProgram } from "./CyberAccessProgram";
112
129
  export type { DeprecationNoticeNotification } from "./DeprecationNoticeNotification";
113
130
  export type { DesktopOnboardingEntrypoint } from "./DesktopOnboardingEntrypoint";
114
131
  export type { DynamicToolCallOutputContentItem } from "./DynamicToolCallOutputContentItem";
@@ -225,6 +242,7 @@ export type { HookTrustStatus } from "./HookTrustStatus";
225
242
  export type { HooksListEntry } from "./HooksListEntry";
226
243
  export type { HooksListParams } from "./HooksListParams";
227
244
  export type { HooksListResponse } from "./HooksListResponse";
245
+ export type { InAppBrowserRequirements } from "./InAppBrowserRequirements";
228
246
  export type { InstalledApp } from "./InstalledApp";
229
247
  export type { ItemCompletedNotification } from "./ItemCompletedNotification";
230
248
  export type { ItemGuardianApprovalReviewCompletedNotification } from "./ItemGuardianApprovalReviewCompletedNotification";
@@ -271,9 +289,16 @@ export type { McpElicitationUntitledMultiSelectEnumSchema } from "./McpElicitati
271
289
  export type { McpElicitationUntitledSingleSelectEnumSchema } from "./McpElicitationUntitledSingleSelectEnumSchema";
272
290
  export type { McpResourceReadParams } from "./McpResourceReadParams";
273
291
  export type { McpResourceReadResponse } from "./McpResourceReadResponse";
292
+ export type { McpServerConnectionStatus } from "./McpServerConnectionStatus";
274
293
  export type { McpServerElicitationAction } from "./McpServerElicitationAction";
275
294
  export type { McpServerElicitationRequestParams } from "./McpServerElicitationRequestParams";
276
295
  export type { McpServerElicitationRequestResponse } from "./McpServerElicitationRequestResponse";
296
+ export type { McpServerEventNotification } from "./McpServerEventNotification";
297
+ export type { McpServerEventStreamNotification } from "./McpServerEventStreamNotification";
298
+ export type { McpServerEventStreamStartParams } from "./McpServerEventStreamStartParams";
299
+ export type { McpServerEventStreamStartResponse } from "./McpServerEventStreamStartResponse";
300
+ export type { McpServerEventStreamStopParams } from "./McpServerEventStreamStopParams";
301
+ export type { McpServerEventStreamStopResponse } from "./McpServerEventStreamStopResponse";
277
302
  export type { McpServerMigration } from "./McpServerMigration";
278
303
  export type { McpServerOauthClientRegistration } from "./McpServerOauthClientRegistration";
279
304
  export type { McpServerOauthLoginCompletedNotification } from "./McpServerOauthLoginCompletedNotification";
@@ -297,6 +322,8 @@ export type { MemoryCitationEntry } from "./MemoryCitationEntry";
297
322
  export type { MemoryResetResponse } from "./MemoryResetResponse";
298
323
  export type { MergeStrategy } from "./MergeStrategy";
299
324
  export type { MigrationDetails } from "./MigrationDetails";
325
+ export type { MisalignmentErrorDetails } from "./MisalignmentErrorDetails";
326
+ export type { MisalignmentSteer } from "./MisalignmentSteer";
300
327
  export type { MockExperimentalMethodParams } from "./MockExperimentalMethodParams";
301
328
  export type { MockExperimentalMethodResponse } from "./MockExperimentalMethodResponse";
302
329
  export type { Model } from "./Model";
@@ -352,6 +379,9 @@ export type { PluginListResponse } from "./PluginListResponse";
352
379
  export type { PluginMarketplaceEntry } from "./PluginMarketplaceEntry";
353
380
  export type { PluginReadParams } from "./PluginReadParams";
354
381
  export type { PluginReadResponse } from "./PluginReadResponse";
382
+ export type { PluginReconcileChangedPlugin } from "./PluginReconcileChangedPlugin";
383
+ export type { PluginReconcileParams } from "./PluginReconcileParams";
384
+ export type { PluginReconcileResponse } from "./PluginReconcileResponse";
355
385
  export type { PluginSearchParams } from "./PluginSearchParams";
356
386
  export type { PluginSearchResponse } from "./PluginSearchResponse";
357
387
  export type { PluginSearchResult } from "./PluginSearchResult";
@@ -410,6 +440,7 @@ export type { ProjectMoveResponse } from "./ProjectMoveResponse";
410
440
  export type { ProjectReadParams } from "./ProjectReadParams";
411
441
  export type { ProjectReadResponse } from "./ProjectReadResponse";
412
442
  export type { ProjectRoot } from "./ProjectRoot";
443
+ export type { ProjectSortKey } from "./ProjectSortKey";
413
444
  export type { ProjectUpdateParams } from "./ProjectUpdateParams";
414
445
  export type { ProjectUpdateResponse } from "./ProjectUpdateResponse";
415
446
  export type { QueuedSubmission } from "./QueuedSubmission";
@@ -445,6 +476,7 @@ export type { RemoteControlStatusChangedNotification } from "./RemoteControlStat
445
476
  export type { RemoteControlStatusReadResponse } from "./RemoteControlStatusReadResponse";
446
477
  export type { RequestPermissionProfile } from "./RequestPermissionProfile";
447
478
  export type { ResidencyRequirement } from "./ResidencyRequirement";
479
+ export type { ResponseUsageMetadata } from "./ResponseUsageMetadata";
448
480
  export type { ReviewDelivery } from "./ReviewDelivery";
449
481
  export type { ReviewStartParams } from "./ReviewStartParams";
450
482
  export type { ReviewStartResponse } from "./ReviewStartResponse";
@@ -567,14 +599,20 @@ export type { ThreadRealtimeAppendSpeechResponse } from "./ThreadRealtimeAppendS
567
599
  export type { ThreadRealtimeAppendTextParams } from "./ThreadRealtimeAppendTextParams";
568
600
  export type { ThreadRealtimeAppendTextResponse } from "./ThreadRealtimeAppendTextResponse";
569
601
  export type { ThreadRealtimeAudioChunk } from "./ThreadRealtimeAudioChunk";
602
+ export type { ThreadRealtimeBemItemPresentation } from "./ThreadRealtimeBemItemPresentation";
570
603
  export type { ThreadRealtimeClosedNotification } from "./ThreadRealtimeClosedNotification";
571
604
  export type { ThreadRealtimeErrorNotification } from "./ThreadRealtimeErrorNotification";
572
605
  export type { ThreadRealtimeInitialItem } from "./ThreadRealtimeInitialItem";
606
+ export type { ThreadRealtimeItem } from "./ThreadRealtimeItem";
573
607
  export type { ThreadRealtimeItemAddedNotification } from "./ThreadRealtimeItemAddedNotification";
608
+ export type { ThreadRealtimeItemCompletedNotification } from "./ThreadRealtimeItemCompletedNotification";
609
+ export type { ThreadRealtimeItemStartedNotification } from "./ThreadRealtimeItemStartedNotification";
610
+ export type { ThreadRealtimeItemTranscriptDeltaNotification } from "./ThreadRealtimeItemTranscriptDeltaNotification";
574
611
  export type { ThreadRealtimeListVoicesParams } from "./ThreadRealtimeListVoicesParams";
575
612
  export type { ThreadRealtimeListVoicesResponse } from "./ThreadRealtimeListVoicesResponse";
576
613
  export type { ThreadRealtimeOutputAudioDeltaNotification } from "./ThreadRealtimeOutputAudioDeltaNotification";
577
614
  export type { ThreadRealtimeSdpNotification } from "./ThreadRealtimeSdpNotification";
615
+ export type { ThreadRealtimeSessionOutcome } from "./ThreadRealtimeSessionOutcome";
578
616
  export type { ThreadRealtimeStartParams } from "./ThreadRealtimeStartParams";
579
617
  export type { ThreadRealtimeStartResponse } from "./ThreadRealtimeStartResponse";
580
618
  export type { ThreadRealtimeStartTransport } from "./ThreadRealtimeStartTransport";
@@ -583,6 +621,7 @@ export type { ThreadRealtimeStopParams } from "./ThreadRealtimeStopParams";
583
621
  export type { ThreadRealtimeStopResponse } from "./ThreadRealtimeStopResponse";
584
622
  export type { ThreadRealtimeTranscriptDeltaNotification } from "./ThreadRealtimeTranscriptDeltaNotification";
585
623
  export type { ThreadRealtimeTranscriptDoneNotification } from "./ThreadRealtimeTranscriptDoneNotification";
624
+ export type { ThreadRealtimeTranscriptRole } from "./ThreadRealtimeTranscriptRole";
586
625
  export type { ThreadResumeInitialTurnsPageParams } from "./ThreadResumeInitialTurnsPageParams";
587
626
  export type { ThreadResumeParams } from "./ThreadResumeParams";
588
627
  export type { ThreadResumeResponse } from "./ThreadResumeResponse";
@@ -628,6 +667,9 @@ export type { ThreadStartSource } from "./ThreadStartSource";
628
667
  export type { ThreadStartedNotification } from "./ThreadStartedNotification";
629
668
  export type { ThreadStatus } from "./ThreadStatus";
630
669
  export type { ThreadStatusChangedNotification } from "./ThreadStatusChangedNotification";
670
+ export type { ThreadTimelineEntry } from "./ThreadTimelineEntry";
671
+ export type { ThreadTimelineListParams } from "./ThreadTimelineListParams";
672
+ export type { ThreadTimelineListResponse } from "./ThreadTimelineListResponse";
631
673
  export type { ThreadTokenUsage } from "./ThreadTokenUsage";
632
674
  export type { ThreadTokenUsageUpdatedNotification } from "./ThreadTokenUsageUpdatedNotification";
633
675
  export type { ThreadTurnsListParams } from "./ThreadTurnsListParams";
@@ -659,12 +701,16 @@ export type { TurnModerationMetadataNotification } from "./TurnModerationMetadat
659
701
  export type { TurnPlanStep } from "./TurnPlanStep";
660
702
  export type { TurnPlanStepStatus } from "./TurnPlanStepStatus";
661
703
  export type { TurnPlanUpdatedNotification } from "./TurnPlanUpdatedNotification";
704
+ export type { TurnSettingsUpdateParams } from "./TurnSettingsUpdateParams";
705
+ export type { TurnSettingsUpdateResponse } from "./TurnSettingsUpdateResponse";
706
+ export type { TurnSettingsUpdateStatus } from "./TurnSettingsUpdateStatus";
662
707
  export type { TurnStartParams } from "./TurnStartParams";
663
708
  export type { TurnStartResponse } from "./TurnStartResponse";
664
709
  export type { TurnStartedNotification } from "./TurnStartedNotification";
665
710
  export type { TurnStatus } from "./TurnStatus";
666
711
  export type { TurnSteerParams } from "./TurnSteerParams";
667
712
  export type { TurnSteerResponse } from "./TurnSteerResponse";
713
+ export type { TurnToolOutput } from "./TurnToolOutput";
668
714
  export type { TurnsPage } from "./TurnsPage";
669
715
  export type { UserInput } from "./UserInput";
670
716
  export type { WarningNotification } from "./WarningNotification";
@@ -33,7 +33,7 @@ export function probeAppServer(socketPath) {
33
33
  id: 1,
34
34
  method: "initialize",
35
35
  params: {
36
- clientInfo: { name: "codex_app_server_daemon", title: "Codex App Server Daemon", version: "0.149.1" },
36
+ clientInfo: { name: "codex_app_server_daemon", title: "Codex App Server Daemon", version: "0.153.3" },
37
37
  },
38
38
  }));
39
39
  });
@@ -19,6 +19,8 @@ import { StockStateTracker } from "../state/stockStateTracker.js";
19
19
  import { STOCK_SIDE_THREAD_SOURCE } from "./stockSideThreads.js";
20
20
  import { projectRpcToPublicThread } from "./logicalThreadProjection.js";
21
21
  import { isUserSideFork, normalizeUserSideFork } from "./sideFork.js";
22
+ /** Stock RPC failures the App handles itself; a chat banner would only add noise (e.g. app/list 403 from Cloudflare). */
23
+ const BANNERLESS_STOCK_ERRORS = new Set(["thread/read", "turn/steer", "app/list", "app/installed", "mcpServerStatus/list"]);
22
24
  function requestedFast(serviceTier) {
23
25
  return serviceTier === "fast" || serviceTier === "priority";
24
26
  }
@@ -62,6 +64,8 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
62
64
  const params = message.params && typeof message.params === "object"
63
65
  ? message.params
64
66
  : undefined;
67
+ if (message.method === "initialize" && typeof params?.clientInfo?.name === "string")
68
+ clientName = params.clientInfo.name;
65
69
  const systemEphemeral = (message.method === "thread/start" || message.method === "thread/fork")
66
70
  && params?.ephemeral === true
67
71
  && (params.threadSource === "system" || (message.method === "thread/start" && params.threadSource !== "user"));
@@ -127,11 +131,23 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
127
131
  completeLatency(id, "claude");
128
132
  sendJson({ id, result });
129
133
  };
134
+ // Stock sends these before the response, on every qualifying call.
135
+ const deprecationNotice = (summary) => sendJson({ method: "deprecationNotice", params: { summary, details: null } });
136
+ const rollbackDeprecated = () => {
137
+ if (clientName !== "codex-tui")
138
+ deprecationNotice("thread/rollback is deprecated and will be removed soon");
139
+ };
140
+ const fullHistoryDeprecated = (threadId, hint) => {
141
+ if (claude.readThread(threadId, false).thread.historyMode === "paginated") {
142
+ deprecationNotice(`Full-history hydration is deprecated for paginated threads; ${hint}, then page with \`thread/turns/list\` and \`thread/items/list\`.`);
143
+ }
144
+ };
130
145
  const sendError = (id, code, error) => {
131
146
  completeLatency(id, "claude");
132
147
  sendJson({ id, error: { code, message: error instanceof Error ? error.message : String(error) } });
133
148
  };
134
149
  let foreground;
150
+ let clientName;
135
151
  let skillsProvider;
136
152
  let foregroundGeneration = 0;
137
153
  let unknownStatusDiagnosed = false;
@@ -695,11 +711,16 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
695
711
  sendResult(message.id, await catalog.loaded((message.params ?? {})));
696
712
  return;
697
713
  }
714
+ if (message.method === "thread/search") {
715
+ sendResult(message.id, await catalog.search((message.params ?? {})));
716
+ return;
717
+ }
698
718
  if (message.method === "thread/start") {
699
719
  const params = (message.params ?? {});
700
720
  if (params.model && claude.ownsModel(params.model)) {
701
721
  const result = await claude.startThread(params);
702
- handoffs.observeDurableThread(connectionId, "claude");
722
+ if (!result.thread.ephemeral)
723
+ handoffs.observeDurableThread(connectionId, "claude", result.thread.id);
703
724
  sendResult(message.id, result);
704
725
  selectForeground("claude", result.thread.id);
705
726
  subscribeClaude(result.thread.id);
@@ -1016,6 +1037,7 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1016
1037
  return;
1017
1038
  }
1018
1039
  if (params.threadId && message.method === "thread/rollback" && handoffs.logical?.(params.threadId)) {
1040
+ rollbackDeprecated();
1019
1041
  sendResult(message.id, await handoffs.rollbackLogicalThread((message.params ?? {}), stockRpc, connectionId));
1020
1042
  return;
1021
1043
  }
@@ -1071,10 +1093,13 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1071
1093
  if (message.method === "thread/resume") {
1072
1094
  muteClaudeDuringSnapshot(params.threadId);
1073
1095
  try {
1074
- const prepared = await claude.prepareResume((message.params ?? {}));
1096
+ const resume = (message.params ?? {});
1097
+ const prepared = await claude.prepareResume(resume);
1075
1098
  const result = prepared.response;
1076
1099
  const snapshotHighWatermark = claude.eventHighWatermark(params.threadId);
1077
1100
  const tokenUsage = claude.latestTokenUsage(params.threadId);
1101
+ if (!resume.excludeTurns)
1102
+ fullHistoryDeprecated(params.threadId, "use `excludeTurns: true`");
1078
1103
  sendResult(message.id, result);
1079
1104
  selectForeground("claude", params.threadId);
1080
1105
  subscriptions.unmute(params.threadId, connectionId);
@@ -1099,6 +1124,8 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1099
1124
  }
1100
1125
  if (message.method === "thread/read") {
1101
1126
  const read = (message.params ?? {});
1127
+ if (read.includeTurns)
1128
+ fullHistoryDeprecated(params.threadId, "omit `includeTurns` or set it to `false`");
1102
1129
  sendResult(message.id, claude.readThread(read.threadId, read.includeTurns ?? false));
1103
1130
  const failedFork = handoffs.claimFailedFork(params.threadId);
1104
1131
  if (failedFork)
@@ -1158,7 +1185,10 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1158
1185
  return;
1159
1186
  }
1160
1187
  if (message.method === "thread/fork") {
1161
- const result = await claude.forkThread(normalizeUserSideFork((message.params ?? {})));
1188
+ const fork = (message.params ?? {});
1189
+ const result = await claude.forkThread(normalizeUserSideFork(fork));
1190
+ if (!fork.excludeTurns && !fork.ephemeral)
1191
+ fullHistoryDeprecated(params.threadId, "use `excludeTurns: true`");
1162
1192
  sendResult(message.id, result);
1163
1193
  selectForeground("claude", result.thread.id);
1164
1194
  subscribeClaude(result.thread.id);
@@ -1166,6 +1196,7 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1166
1196
  return;
1167
1197
  }
1168
1198
  if (message.method === "thread/rollback") {
1199
+ rollbackDeprecated();
1169
1200
  sendResult(message.id, await claude.rollbackThread((message.params ?? {})));
1170
1201
  return;
1171
1202
  }
@@ -1231,6 +1262,45 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1231
1262
  sendResult(message.id, await claude.getGoal(params.threadId));
1232
1263
  return;
1233
1264
  }
1265
+ if (message.method === "thread/queue/list") {
1266
+ sendResult(message.id, claude.listQueue((message.params ?? {})));
1267
+ return;
1268
+ }
1269
+ if (message.method === "app/list" || message.method === "mcpServerStatus/list") {
1270
+ // Codex apps and MCP servers never apply to a Claude runtime.
1271
+ sendResult(message.id, { data: [], nextCursor: null });
1272
+ return;
1273
+ }
1274
+ if (message.method === "app/installed") {
1275
+ sendResult(message.id, { apps: [] });
1276
+ return;
1277
+ }
1278
+ if (message.method === "thread/queue/add") {
1279
+ const prepared = await claude.addQueuedSubmission((message.params ?? {}));
1280
+ sendResult(message.id, prepared.response);
1281
+ await prepared.after();
1282
+ return;
1283
+ }
1284
+ if (message.method === "thread/queue/update") {
1285
+ sendResult(message.id, await claude.updateQueuedSubmission((message.params ?? {})));
1286
+ return;
1287
+ }
1288
+ if (message.method === "thread/queue/delete") {
1289
+ sendResult(message.id, await claude.deleteQueuedSubmission((message.params ?? {})));
1290
+ return;
1291
+ }
1292
+ if (message.method === "thread/queue/reorder") {
1293
+ sendResult(message.id, await claude.reorderQueue((message.params ?? {})));
1294
+ return;
1295
+ }
1296
+ if (message.method === "thread/queue/start") {
1297
+ const prepared = await claude.prepareQueueStart((message.params ?? {}));
1298
+ sendResult(message.id, prepared.response);
1299
+ selectForeground("claude", params.threadId);
1300
+ await prepared.announce();
1301
+ prepared.start();
1302
+ return;
1303
+ }
1234
1304
  if (message.method === "thread/goal/clear") {
1235
1305
  const prepared = await claude.prepareGoalClear(params.threadId);
1236
1306
  try {
@@ -1283,8 +1353,10 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1283
1353
  : undefined;
1284
1354
  const threadId = typeof params?.threadId === "string" ? params.threadId : undefined;
1285
1355
  const childProjection = Boolean(threadId && claude.isChildProjection(threadId));
1356
+ // A steer that lost its turn (App races an automatic queue drain) expects a plain RPC error, not a banner.
1357
+ const silent = message.method === "turn/steer";
1286
1358
  let attachedToActiveTurn = false;
1287
- if (threadId && !childProjection && claude.ownsThread(threadId)) {
1359
+ if (threadId && !childProjection && !silent && claude.ownsThread(threadId)) {
1288
1360
  attachedToActiveTurn = await claude.reportError(threadId, typeof params?.turnId === "string" ? params.turnId : undefined, failure.message, rpcCodexErrorInfo(failure.code)).catch((diagnosticError) => {
1289
1361
  logger.warn("claude.request.error-report-failed", {
1290
1362
  connectionId,
@@ -1303,7 +1375,7 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1303
1375
  emitNotice(notice);
1304
1376
  return;
1305
1377
  }
1306
- if (threadId && !childProjection && !attachedToActiveTurn)
1378
+ if (threadId && !childProjection && !attachedToActiveTurn && !silent)
1307
1379
  emitSystemError(threadId, failure.message);
1308
1380
  sendError(message.id, failure.code, failure.message);
1309
1381
  if (threadId && !childProjection && !claude.ownsThread(threadId)) {
@@ -1393,7 +1465,7 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1393
1465
  }
1394
1466
  }
1395
1467
  if (forwarded?.threadId && isUuid(forwarded.threadId) && "error" in message
1396
- && forwarded.method !== "thread/read") {
1468
+ && !BANNERLESS_STOCK_ERRORS.has(forwarded.method)) {
1397
1469
  emitSystemError(forwarded.threadId, message.error.message);
1398
1470
  }
1399
1471
  if (forwarded && "result" in message) {
@@ -1403,7 +1475,7 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1403
1475
  : undefined;
1404
1476
  const resultThreadId = typeof result?.thread?.id === "string" ? result.thread.id : forwarded.threadId;
1405
1477
  if (forwarded.foreground && resultThreadId) {
1406
- handoffs.observeDurableThread(connectionId, "stock");
1478
+ handoffs.observeDurableThread(connectionId, "stock", resultThreadId);
1407
1479
  foregroundAfterForward = () => selectForeground(forwarded.foreground, resultThreadId);
1408
1480
  }
1409
1481
  else if (forwarded.clearForeground && forwarded.threadId) {
@@ -1424,6 +1496,11 @@ export function attachClientConnection(client, stockSocket, claudeModels, claude
1424
1496
  stock.send(JSON.stringify({ id: message.id, result: { decision: "decline" } }));
1425
1497
  return;
1426
1498
  }
1499
+ if (message.method === "turn/completed") {
1500
+ void handoffs.persistGeneratedTitle(message).catch((error) => {
1501
+ logger.warn("thread.generated-title.failed", { connectionId, error: String(error) });
1502
+ });
1503
+ }
1427
1504
  const rewritten = handoffs.rewriteTitleMessages(message);
1428
1505
  if (rewritten) {
1429
1506
  for (const output of rewritten)