yepanywhere 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. package/README.md +21 -5
  2. package/bundled/@yep-anywhere/shared/dist/agent-context.d.ts +9 -0
  3. package/bundled/@yep-anywhere/shared/dist/agent-context.d.ts.map +1 -0
  4. package/bundled/@yep-anywhere/shared/dist/agent-context.js +18 -0
  5. package/bundled/@yep-anywhere/shared/dist/agent-context.js.map +1 -0
  6. package/bundled/@yep-anywhere/shared/dist/app-types.d.ts +104 -1
  7. package/bundled/@yep-anywhere/shared/dist/app-types.d.ts.map +1 -1
  8. package/bundled/@yep-anywhere/shared/dist/app-types.js +4 -0
  9. package/bundled/@yep-anywhere/shared/dist/app-types.js.map +1 -1
  10. package/bundled/@yep-anywhere/shared/dist/binary-framing.d.ts +4 -1
  11. package/bundled/@yep-anywhere/shared/dist/binary-framing.d.ts.map +1 -1
  12. package/bundled/@yep-anywhere/shared/dist/binary-framing.js +8 -3
  13. package/bundled/@yep-anywhere/shared/dist/binary-framing.js.map +1 -1
  14. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts +4 -0
  15. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/AssistantEntrySchema.d.ts.map +1 -1
  16. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts +4 -0
  17. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.d.ts.map +1 -1
  18. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js +7 -0
  19. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/BaseEntrySchema.js.map +1 -1
  20. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/ProgressEntrySchema.d.ts +4 -0
  21. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/ProgressEntrySchema.d.ts.map +1 -1
  22. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts +64 -1
  23. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.d.ts.map +1 -1
  24. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js +9 -0
  25. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/SystemEntrySchema.js.map +1 -1
  26. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts +4 -0
  27. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/entry/UserEntrySchema.d.ts.map +1 -1
  28. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.d.ts.map +1 -1
  29. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js +45 -1
  30. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/guards.js.map +1 -1
  31. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts +144 -2
  32. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/index.d.ts.map +1 -1
  33. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts +6 -4
  34. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.d.ts.map +1 -1
  35. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js +8 -1
  36. package/bundled/@yep-anywhere/shared/dist/claude-sdk-schema/tool/ToolResultSchemas.js.map +1 -1
  37. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts +3 -2
  38. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.d.ts.map +1 -1
  39. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js +3 -2
  40. package/bundled/@yep-anywhere/shared/dist/codex-schema/index.js.map +1 -1
  41. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts +87 -3
  42. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.d.ts.map +1 -1
  43. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js +39 -1
  44. package/bundled/@yep-anywhere/shared/dist/codex-schema/session.js.map +1 -1
  45. package/bundled/@yep-anywhere/shared/dist/dag.d.ts +31 -11
  46. package/bundled/@yep-anywhere/shared/dist/dag.d.ts.map +1 -1
  47. package/bundled/@yep-anywhere/shared/dist/dag.js +77 -33
  48. package/bundled/@yep-anywhere/shared/dist/dag.js.map +1 -1
  49. package/bundled/@yep-anywhere/shared/dist/git-status.d.ts +70 -1
  50. package/bundled/@yep-anywhere/shared/dist/git-status.d.ts.map +1 -1
  51. package/bundled/@yep-anywhere/shared/dist/git-status.js +6 -1
  52. package/bundled/@yep-anywhere/shared/dist/git-status.js.map +1 -1
  53. package/bundled/@yep-anywhere/shared/dist/ideMetadata.js +1 -1
  54. package/bundled/@yep-anywhere/shared/dist/ideMetadata.js.map +1 -1
  55. package/bundled/@yep-anywhere/shared/dist/index.d.ts +20 -11
  56. package/bundled/@yep-anywhere/shared/dist/index.d.ts.map +1 -1
  57. package/bundled/@yep-anywhere/shared/dist/index.js +8 -3
  58. package/bundled/@yep-anywhere/shared/dist/index.js.map +1 -1
  59. package/bundled/@yep-anywhere/shared/dist/local-resource.d.ts +1 -0
  60. package/bundled/@yep-anywhere/shared/dist/local-resource.d.ts.map +1 -1
  61. package/bundled/@yep-anywhere/shared/dist/local-resource.js +4 -0
  62. package/bundled/@yep-anywhere/shared/dist/local-resource.js.map +1 -1
  63. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts +136 -0
  64. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.d.ts.map +1 -1
  65. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js +65 -3
  66. package/bundled/@yep-anywhere/shared/dist/opencode-schema/events.js.map +1 -1
  67. package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts +1 -1
  68. package/bundled/@yep-anywhere/shared/dist/opencode-schema/types.d.ts.map +1 -1
  69. package/bundled/@yep-anywhere/shared/dist/project-queue.d.ts +153 -0
  70. package/bundled/@yep-anywhere/shared/dist/project-queue.d.ts.map +1 -0
  71. package/bundled/@yep-anywhere/shared/dist/project-queue.js +8 -0
  72. package/bundled/@yep-anywhere/shared/dist/project-queue.js.map +1 -0
  73. package/bundled/@yep-anywhere/shared/dist/relay-protocol.d.ts +26 -2
  74. package/bundled/@yep-anywhere/shared/dist/relay-protocol.d.ts.map +1 -1
  75. package/bundled/@yep-anywhere/shared/dist/relay-protocol.js +33 -0
  76. package/bundled/@yep-anywhere/shared/dist/relay-protocol.js.map +1 -1
  77. package/bundled/@yep-anywhere/shared/dist/relay.d.ts +45 -5
  78. package/bundled/@yep-anywhere/shared/dist/relay.d.ts.map +1 -1
  79. package/bundled/@yep-anywhere/shared/dist/relay.js.map +1 -1
  80. package/bundled/@yep-anywhere/shared/dist/safe-restart.d.ts +25 -0
  81. package/bundled/@yep-anywhere/shared/dist/safe-restart.d.ts.map +1 -0
  82. package/bundled/@yep-anywhere/shared/dist/safe-restart.js +2 -0
  83. package/bundled/@yep-anywhere/shared/dist/safe-restart.js.map +1 -0
  84. package/bundled/@yep-anywhere/shared/dist/session/SessionView.d.ts +2 -2
  85. package/bundled/@yep-anywhere/shared/dist/session/SessionView.js +3 -3
  86. package/bundled/@yep-anywhere/shared/dist/session/SessionView.js.map +1 -1
  87. package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts +10 -0
  88. package/bundled/@yep-anywhere/shared/dist/session/UnifiedSession.d.ts.map +1 -1
  89. package/bundled/@yep-anywhere/shared/dist/session-liveness.d.ts +18 -0
  90. package/bundled/@yep-anywhere/shared/dist/session-liveness.d.ts.map +1 -1
  91. package/bundled/@yep-anywhere/shared/dist/types.d.ts +253 -8
  92. package/bundled/@yep-anywhere/shared/dist/types.d.ts.map +1 -1
  93. package/bundled/@yep-anywhere/shared/dist/types.js +48 -5
  94. package/bundled/@yep-anywhere/shared/dist/types.js.map +1 -1
  95. package/bundled/@yep-anywhere/shared/dist/upload.d.ts +34 -2
  96. package/bundled/@yep-anywhere/shared/dist/upload.d.ts.map +1 -1
  97. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.d.ts +47 -0
  98. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.d.ts.map +1 -1
  99. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.js +59 -1
  100. package/bundled/@yep-anywhere/shared/dist/user-message-metadata.js.map +1 -1
  101. package/bundled/@yep-anywhere/shared/dist/workstreams.d.ts +54 -0
  102. package/bundled/@yep-anywhere/shared/dist/workstreams.d.ts.map +1 -0
  103. package/bundled/@yep-anywhere/shared/dist/workstreams.js +8 -0
  104. package/bundled/@yep-anywhere/shared/dist/workstreams.js.map +1 -0
  105. package/bundled/@yep-anywhere/shared/package.json +1 -1
  106. package/client-dist/assets/alegreya-sans-latin-400-italic-BQIUBrX-.woff2 +0 -0
  107. package/client-dist/assets/alegreya-sans-latin-400-normal-BxeZdXas.woff2 +0 -0
  108. package/client-dist/assets/alegreya-sans-latin-500-normal-uodOEoAl.woff2 +0 -0
  109. package/client-dist/assets/alegreya-sans-latin-700-normal-DFYOGfC8.woff2 +0 -0
  110. package/client-dist/assets/de-CHMDbVD5.js +6 -0
  111. package/client-dist/assets/es-CK8MPF_C.js +6 -0
  112. package/client-dist/assets/fira-mono-latin-400-normal-DVTTRLHv.woff2 +0 -0
  113. package/client-dist/assets/fira-mono-latin-ext-400-normal-B2gPvaNr.woff2 +0 -0
  114. package/client-dist/assets/fira-mono-symbols2-400-normal-C6JptOil.woff2 +0 -0
  115. package/client-dist/assets/fr-49PXQiUL.js +6 -0
  116. package/client-dist/assets/index-B-09fVut.js +557 -0
  117. package/client-dist/assets/index-uJnfvD1f.css +1 -0
  118. package/client-dist/assets/inter-latin-400-italic-D1l0FflY.woff2 +0 -0
  119. package/client-dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  120. package/client-dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  121. package/client-dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  122. package/client-dist/assets/ja-CrCGPmoH.js +6 -0
  123. package/client-dist/assets/zh-CN-AFJxv5ke.js +6 -0
  124. package/client-dist/index.html +3 -3
  125. package/client-dist/sw.js +96 -9
  126. package/dist/app.d.ts +25 -0
  127. package/dist/app.d.ts.map +1 -1
  128. package/dist/app.js +350 -35
  129. package/dist/app.js.map +1 -1
  130. package/dist/augments/augment-generator.d.ts +1 -1
  131. package/dist/augments/augment-generator.d.ts.map +1 -1
  132. package/dist/augments/augment-generator.js +2 -2
  133. package/dist/augments/augment-generator.js.map +1 -1
  134. package/dist/augments/markdown-augments.d.ts +1 -1
  135. package/dist/augments/markdown-augments.d.ts.map +1 -1
  136. package/dist/augments/markdown-augments.js +5 -5
  137. package/dist/augments/markdown-augments.js.map +1 -1
  138. package/dist/augments/safe-markdown.d.ts +10 -0
  139. package/dist/augments/safe-markdown.d.ts.map +1 -1
  140. package/dist/augments/safe-markdown.js +146 -3
  141. package/dist/augments/safe-markdown.js.map +1 -1
  142. package/dist/augments/stream-augmenter.d.ts +3 -0
  143. package/dist/augments/stream-augmenter.d.ts.map +1 -1
  144. package/dist/augments/stream-augmenter.js +6 -3
  145. package/dist/augments/stream-augmenter.js.map +1 -1
  146. package/dist/augments/stream-coordinator.d.ts +5 -1
  147. package/dist/augments/stream-coordinator.d.ts.map +1 -1
  148. package/dist/augments/stream-coordinator.js +6 -4
  149. package/dist/augments/stream-coordinator.js.map +1 -1
  150. package/dist/augments/task-list-augments.d.ts +27 -0
  151. package/dist/augments/task-list-augments.d.ts.map +1 -0
  152. package/dist/augments/task-list-augments.js +360 -0
  153. package/dist/augments/task-list-augments.js.map +1 -0
  154. package/dist/cli.d.ts +1 -17
  155. package/dist/cli.d.ts.map +1 -1
  156. package/dist/cli.js +22 -8
  157. package/dist/cli.js.map +1 -1
  158. package/dist/codex/correlationDebugLogger.d.ts.map +1 -1
  159. package/dist/codex/correlationDebugLogger.js +36 -8
  160. package/dist/codex/correlationDebugLogger.js.map +1 -1
  161. package/dist/codex/normalization.d.ts +1 -0
  162. package/dist/codex/normalization.d.ts.map +1 -1
  163. package/dist/codex/normalization.js +262 -7
  164. package/dist/codex/normalization.js.map +1 -1
  165. package/dist/config.d.ts +49 -6
  166. package/dist/config.d.ts.map +1 -1
  167. package/dist/config.js +55 -14
  168. package/dist/config.js.map +1 -1
  169. package/dist/defaults.d.ts +3 -0
  170. package/dist/defaults.d.ts.map +1 -0
  171. package/dist/defaults.js +3 -0
  172. package/dist/defaults.js.map +1 -0
  173. package/dist/device/DeviceBridgeService.js +1 -1
  174. package/dist/device/DeviceBridgeService.js.map +1 -1
  175. package/dist/envSettings.d.ts +64 -0
  176. package/dist/envSettings.d.ts.map +1 -0
  177. package/dist/envSettings.js +553 -0
  178. package/dist/envSettings.js.map +1 -0
  179. package/dist/frontend/static.d.ts.map +1 -1
  180. package/dist/frontend/static.js +3 -1
  181. package/dist/frontend/static.js.map +1 -1
  182. package/dist/index.d.ts +1 -1
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +190 -14
  185. package/dist/index.js.map +1 -1
  186. package/dist/indexes/SessionDiscoveryIndex.d.ts +78 -0
  187. package/dist/indexes/SessionDiscoveryIndex.d.ts.map +1 -0
  188. package/dist/indexes/SessionDiscoveryIndex.js +223 -0
  189. package/dist/indexes/SessionDiscoveryIndex.js.map +1 -0
  190. package/dist/indexes/SessionIndexService.d.ts +114 -1
  191. package/dist/indexes/SessionIndexService.d.ts.map +1 -1
  192. package/dist/indexes/SessionIndexService.js +875 -105
  193. package/dist/indexes/SessionIndexService.js.map +1 -1
  194. package/dist/indexes/index.d.ts +2 -1
  195. package/dist/indexes/index.d.ts.map +1 -1
  196. package/dist/indexes/index.js +1 -0
  197. package/dist/indexes/index.js.map +1 -1
  198. package/dist/indexes/types.d.ts +26 -0
  199. package/dist/indexes/types.d.ts.map +1 -1
  200. package/dist/logging/logger.d.ts.map +1 -1
  201. package/dist/logging/logger.js +2 -3
  202. package/dist/logging/logger.js.map +1 -1
  203. package/dist/maintenance/server.d.ts.map +1 -1
  204. package/dist/maintenance/server.js +8 -11
  205. package/dist/maintenance/server.js.map +1 -1
  206. package/dist/metadata/ProjectMetadataService.d.ts +7 -0
  207. package/dist/metadata/ProjectMetadataService.d.ts.map +1 -1
  208. package/dist/metadata/ProjectMetadataService.js +63 -19
  209. package/dist/metadata/ProjectMetadataService.js.map +1 -1
  210. package/dist/metadata/SessionMetadataService.d.ts +82 -3
  211. package/dist/metadata/SessionMetadataService.d.ts.map +1 -1
  212. package/dist/metadata/SessionMetadataService.js +233 -17
  213. package/dist/metadata/SessionMetadataService.js.map +1 -1
  214. package/dist/middleware/file-access.d.ts +66 -0
  215. package/dist/middleware/file-access.d.ts.map +1 -0
  216. package/dist/middleware/file-access.js +112 -0
  217. package/dist/middleware/file-access.js.map +1 -0
  218. package/dist/projects/codex-scanner.d.ts +28 -1
  219. package/dist/projects/codex-scanner.d.ts.map +1 -1
  220. package/dist/projects/codex-scanner.js +149 -39
  221. package/dist/projects/codex-scanner.js.map +1 -1
  222. package/dist/projects/gemini-scanner.d.ts.map +1 -1
  223. package/dist/projects/gemini-scanner.js +59 -6
  224. package/dist/projects/gemini-scanner.js.map +1 -1
  225. package/dist/projects/paths.d.ts +15 -1
  226. package/dist/projects/paths.d.ts.map +1 -1
  227. package/dist/projects/paths.js +69 -23
  228. package/dist/projects/paths.js.map +1 -1
  229. package/dist/projects/scanner.d.ts +5 -0
  230. package/dist/projects/scanner.d.ts.map +1 -1
  231. package/dist/projects/scanner.js +136 -28
  232. package/dist/projects/scanner.js.map +1 -1
  233. package/dist/push/InactivityPushNotifier.d.ts +61 -0
  234. package/dist/push/InactivityPushNotifier.d.ts.map +1 -0
  235. package/dist/push/InactivityPushNotifier.js +305 -0
  236. package/dist/push/InactivityPushNotifier.js.map +1 -0
  237. package/dist/push/PushNotifier.d.ts.map +1 -1
  238. package/dist/push/PushNotifier.js.map +1 -1
  239. package/dist/push/PushService.d.ts +7 -4
  240. package/dist/push/PushService.d.ts.map +1 -1
  241. package/dist/push/PushService.js +27 -7
  242. package/dist/push/PushService.js.map +1 -1
  243. package/dist/push/index.d.ts +2 -1
  244. package/dist/push/index.d.ts.map +1 -1
  245. package/dist/push/index.js +1 -0
  246. package/dist/push/index.js.map +1 -1
  247. package/dist/push/routes.d.ts.map +1 -1
  248. package/dist/push/routes.js +28 -1
  249. package/dist/push/routes.js.map +1 -1
  250. package/dist/push/types.d.ts +21 -3
  251. package/dist/push/types.d.ts.map +1 -1
  252. package/dist/push/types.js +2 -0
  253. package/dist/push/types.js.map +1 -1
  254. package/dist/routes/dev.d.ts +2 -0
  255. package/dist/routes/dev.d.ts.map +1 -1
  256. package/dist/routes/dev.js +25 -0
  257. package/dist/routes/dev.js.map +1 -1
  258. package/dist/routes/env-settings.d.ts +20 -0
  259. package/dist/routes/env-settings.d.ts.map +1 -0
  260. package/dist/routes/env-settings.js +25 -0
  261. package/dist/routes/env-settings.js.map +1 -0
  262. package/dist/routes/files.d.ts +9 -0
  263. package/dist/routes/files.d.ts.map +1 -1
  264. package/dist/routes/files.js +98 -10
  265. package/dist/routes/files.js.map +1 -1
  266. package/dist/routes/git-status.d.ts.map +1 -1
  267. package/dist/routes/git-status.js +621 -23
  268. package/dist/routes/git-status.js.map +1 -1
  269. package/dist/routes/global-sessions.d.ts +11 -1
  270. package/dist/routes/global-sessions.d.ts.map +1 -1
  271. package/dist/routes/global-sessions.js +53 -33
  272. package/dist/routes/global-sessions.js.map +1 -1
  273. package/dist/routes/inbox.d.ts +10 -1
  274. package/dist/routes/inbox.d.ts.map +1 -1
  275. package/dist/routes/inbox.js +30 -3
  276. package/dist/routes/inbox.js.map +1 -1
  277. package/dist/routes/local-file.d.ts +6 -2
  278. package/dist/routes/local-file.d.ts.map +1 -1
  279. package/dist/routes/local-file.js +13 -4
  280. package/dist/routes/local-file.js.map +1 -1
  281. package/dist/routes/local-image.d.ts +2 -1
  282. package/dist/routes/local-image.d.ts.map +1 -1
  283. package/dist/routes/local-image.js.map +1 -1
  284. package/dist/routes/local-resource-policy.d.ts +7 -1
  285. package/dist/routes/local-resource-policy.d.ts.map +1 -1
  286. package/dist/routes/local-resource-policy.js +0 -0
  287. package/dist/routes/local-resource-policy.js.map +1 -1
  288. package/dist/routes/processes.d.ts.map +1 -1
  289. package/dist/routes/processes.js +49 -11
  290. package/dist/routes/processes.js.map +1 -1
  291. package/dist/routes/project-queue-response.d.ts +26 -0
  292. package/dist/routes/project-queue-response.d.ts.map +1 -0
  293. package/dist/routes/project-queue-response.js +188 -0
  294. package/dist/routes/project-queue-response.js.map +1 -0
  295. package/dist/routes/project-queue.d.ts +5 -0
  296. package/dist/routes/project-queue.d.ts.map +1 -0
  297. package/dist/routes/project-queue.js +219 -0
  298. package/dist/routes/project-queue.js.map +1 -0
  299. package/dist/routes/projects.d.ts +6 -0
  300. package/dist/routes/projects.d.ts.map +1 -1
  301. package/dist/routes/projects.js +116 -28
  302. package/dist/routes/projects.js.map +1 -1
  303. package/dist/routes/providers.d.ts +5 -0
  304. package/dist/routes/providers.d.ts.map +1 -1
  305. package/dist/routes/providers.js +52 -33
  306. package/dist/routes/providers.js.map +1 -1
  307. package/dist/routes/public-shares.d.ts.map +1 -1
  308. package/dist/routes/public-shares.js +46 -17
  309. package/dist/routes/public-shares.js.map +1 -1
  310. package/dist/routes/recents.d.ts +3 -0
  311. package/dist/routes/recents.d.ts.map +1 -1
  312. package/dist/routes/recents.js +3 -1
  313. package/dist/routes/recents.js.map +1 -1
  314. package/dist/routes/server-admin.d.ts +9 -0
  315. package/dist/routes/server-admin.d.ts.map +1 -1
  316. package/dist/routes/server-admin.js +45 -7
  317. package/dist/routes/server-admin.js.map +1 -1
  318. package/dist/routes/session-claude-resume-guard.d.ts +16 -0
  319. package/dist/routes/session-claude-resume-guard.d.ts.map +1 -0
  320. package/dist/routes/session-claude-resume-guard.js +50 -0
  321. package/dist/routes/session-claude-resume-guard.js.map +1 -0
  322. package/dist/routes/session-compact-thresholds.d.ts +22 -0
  323. package/dist/routes/session-compact-thresholds.d.ts.map +1 -0
  324. package/dist/routes/session-compact-thresholds.js +35 -0
  325. package/dist/routes/session-compact-thresholds.js.map +1 -0
  326. package/dist/routes/session-index.d.ts +7 -0
  327. package/dist/routes/session-index.d.ts.map +1 -0
  328. package/dist/routes/session-index.js +9 -0
  329. package/dist/routes/session-index.js.map +1 -0
  330. package/dist/routes/session-list-options.d.ts +1 -1
  331. package/dist/routes/session-list-options.d.ts.map +1 -1
  332. package/dist/routes/session-list-options.js +1 -1
  333. package/dist/routes/session-list-options.js.map +1 -1
  334. package/dist/routes/session-request-helpers.d.ts +31 -0
  335. package/dist/routes/session-request-helpers.d.ts.map +1 -0
  336. package/dist/routes/session-request-helpers.js +212 -0
  337. package/dist/routes/session-request-helpers.js.map +1 -0
  338. package/dist/routes/sessions.d.ts +14 -1
  339. package/dist/routes/sessions.d.ts.map +1 -1
  340. package/dist/routes/sessions.js +2141 -551
  341. package/dist/routes/sessions.js.map +1 -1
  342. package/dist/routes/settings.d.ts +7 -1
  343. package/dist/routes/settings.d.ts.map +1 -1
  344. package/dist/routes/settings.js +771 -25
  345. package/dist/routes/settings.js.map +1 -1
  346. package/dist/routes/speech.d.ts +24 -2
  347. package/dist/routes/speech.d.ts.map +1 -1
  348. package/dist/routes/speech.js +539 -10
  349. package/dist/routes/speech.js.map +1 -1
  350. package/dist/routes/supervisor-queue.d.ts +6 -0
  351. package/dist/routes/supervisor-queue.d.ts.map +1 -0
  352. package/dist/routes/supervisor-queue.js +35 -0
  353. package/dist/routes/supervisor-queue.js.map +1 -0
  354. package/dist/routes/upload.d.ts +2 -0
  355. package/dist/routes/upload.d.ts.map +1 -1
  356. package/dist/routes/upload.js +190 -38
  357. package/dist/routes/upload.js.map +1 -1
  358. package/dist/routes/version.d.ts +18 -1
  359. package/dist/routes/version.d.ts.map +1 -1
  360. package/dist/routes/version.js +22 -1
  361. package/dist/routes/version.js.map +1 -1
  362. package/dist/routes/workstreams.d.ts +11 -0
  363. package/dist/routes/workstreams.d.ts.map +1 -0
  364. package/dist/routes/workstreams.js +144 -0
  365. package/dist/routes/workstreams.js.map +1 -0
  366. package/dist/routes/ws-message-router.d.ts +10 -1
  367. package/dist/routes/ws-message-router.d.ts.map +1 -1
  368. package/dist/routes/ws-message-router.js +43 -4
  369. package/dist/routes/ws-message-router.js.map +1 -1
  370. package/dist/routes/ws-relay-handlers.d.ts +27 -5
  371. package/dist/routes/ws-relay-handlers.d.ts.map +1 -1
  372. package/dist/routes/ws-relay-handlers.js +177 -19
  373. package/dist/routes/ws-relay-handlers.js.map +1 -1
  374. package/dist/routes/ws-relay.d.ts +19 -0
  375. package/dist/routes/ws-relay.d.ts.map +1 -1
  376. package/dist/routes/ws-relay.js +21 -7
  377. package/dist/routes/ws-relay.js.map +1 -1
  378. package/dist/sdk/cli-detection.d.ts +1 -1
  379. package/dist/sdk/cli-detection.d.ts.map +1 -1
  380. package/dist/sdk/cli-detection.js +47 -7
  381. package/dist/sdk/cli-detection.js.map +1 -1
  382. package/dist/sdk/messageLogger.d.ts.map +1 -1
  383. package/dist/sdk/messageLogger.js +38 -10
  384. package/dist/sdk/messageLogger.js.map +1 -1
  385. package/dist/sdk/messageQueue.d.ts.map +1 -1
  386. package/dist/sdk/messageQueue.js +26 -0
  387. package/dist/sdk/messageQueue.js.map +1 -1
  388. package/dist/sdk/providers/__mocks__/grok.d.ts +1 -1
  389. package/dist/sdk/providers/__mocks__/grok.d.ts.map +1 -1
  390. package/dist/sdk/providers/__mocks__/grok.js +1 -1
  391. package/dist/sdk/providers/__mocks__/grok.js.map +1 -1
  392. package/dist/sdk/providers/agentctl-session-env.d.ts +8 -0
  393. package/dist/sdk/providers/agentctl-session-env.d.ts.map +1 -0
  394. package/dist/sdk/providers/agentctl-session-env.js +52 -0
  395. package/dist/sdk/providers/agentctl-session-env.js.map +1 -0
  396. package/dist/sdk/providers/claude-ollama.d.ts +2 -1
  397. package/dist/sdk/providers/claude-ollama.d.ts.map +1 -1
  398. package/dist/sdk/providers/claude-ollama.js +1 -0
  399. package/dist/sdk/providers/claude-ollama.js.map +1 -1
  400. package/dist/sdk/providers/claude-retention.d.ts +19 -0
  401. package/dist/sdk/providers/claude-retention.d.ts.map +1 -0
  402. package/dist/sdk/providers/claude-retention.js +169 -0
  403. package/dist/sdk/providers/claude-retention.js.map +1 -0
  404. package/dist/sdk/providers/claude.d.ts +52 -5
  405. package/dist/sdk/providers/claude.d.ts.map +1 -1
  406. package/dist/sdk/providers/claude.js +593 -71
  407. package/dist/sdk/providers/claude.js.map +1 -1
  408. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.d.ts +8 -0
  409. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.d.ts.map +1 -0
  410. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.js +3 -0
  411. package/dist/sdk/providers/codex-protocol/generated/AgentMessageInputContent.js.map +1 -0
  412. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.d.ts +10 -0
  413. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.d.ts.map +1 -0
  414. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.js +3 -0
  415. package/dist/sdk/providers/codex-protocol/generated/InternalChatMessageMetadataPassthrough.js.map +1 -0
  416. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.d.ts +23 -0
  417. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.d.ts.map +1 -0
  418. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.js +3 -0
  419. package/dist/sdk/providers/codex-protocol/generated/LegacyAppPathString.js.map +1 -0
  420. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.d.ts +8 -0
  421. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.d.ts.map +1 -0
  422. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.js +3 -0
  423. package/dist/sdk/providers/codex-protocol/generated/MultiAgentMode.js.map +1 -0
  424. package/dist/sdk/providers/codex-protocol/generated/ReasoningEffort.d.ts +1 -1
  425. package/dist/sdk/providers/codex-protocol/generated/ReasoningEffort.d.ts.map +1 -1
  426. package/dist/sdk/providers/codex-protocol/generated/ResponseItem.d.ts +38 -1
  427. package/dist/sdk/providers/codex-protocol/generated/ResponseItem.d.ts.map +1 -1
  428. package/dist/sdk/providers/codex-protocol/generated/v2/AdditionalFileSystemPermissions.d.ts +3 -3
  429. package/dist/sdk/providers/codex-protocol/generated/v2/AdditionalFileSystemPermissions.d.ts.map +1 -1
  430. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.d.ts +9 -0
  431. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.d.ts.map +1 -0
  432. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.js +3 -0
  433. package/dist/sdk/providers/codex-protocol/generated/v2/CapabilityRootLocation.js.map +1 -0
  434. package/dist/sdk/providers/codex-protocol/generated/v2/CommandExecutionRequestApprovalParams.d.ts +6 -2
  435. package/dist/sdk/providers/codex-protocol/generated/v2/CommandExecutionRequestApprovalParams.d.ts.map +1 -1
  436. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.d.ts +8 -0
  437. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.d.ts.map +1 -0
  438. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.js +3 -0
  439. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolFunctionSpec.js.map +1 -0
  440. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.d.ts +7 -0
  441. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.d.ts.map +1 -0
  442. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.js +3 -0
  443. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceSpec.js.map +1 -0
  444. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.d.ts +5 -0
  445. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.d.ts.map +1 -0
  446. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.js +3 -0
  447. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolNamespaceTool.js.map +1 -0
  448. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolSpec.d.ts +6 -7
  449. package/dist/sdk/providers/codex-protocol/generated/v2/DynamicToolSpec.d.ts.map +1 -1
  450. package/dist/sdk/providers/codex-protocol/generated/v2/FileSystemPath.d.ts +2 -2
  451. package/dist/sdk/providers/codex-protocol/generated/v2/FileSystemPath.d.ts.map +1 -1
  452. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.d.ts +6 -0
  453. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.d.ts.map +1 -0
  454. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.js +3 -0
  455. package/dist/sdk/providers/codex-protocol/generated/v2/McpToolCallAppContext.js.map +1 -0
  456. package/dist/sdk/providers/codex-protocol/generated/v2/PermissionsRequestApprovalParams.d.ts +1 -0
  457. package/dist/sdk/providers/codex-protocol/generated/v2/PermissionsRequestApprovalParams.d.ts.map +1 -1
  458. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.d.ts +15 -0
  459. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.d.ts.map +1 -0
  460. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.js +3 -0
  461. package/dist/sdk/providers/codex-protocol/generated/v2/SelectedCapabilityRoot.js.map +1 -0
  462. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.d.ts +2 -0
  463. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.d.ts.map +1 -0
  464. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.js +3 -0
  465. package/dist/sdk/providers/codex-protocol/generated/v2/SortDirection.js.map +1 -0
  466. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.d.ts +2 -0
  467. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.d.ts.map +1 -0
  468. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.js +3 -0
  469. package/dist/sdk/providers/codex-protocol/generated/v2/SubAgentActivityKind.js.map +1 -0
  470. package/dist/sdk/providers/codex-protocol/generated/v2/Thread.d.ts +8 -0
  471. package/dist/sdk/providers/codex-protocol/generated/v2/Thread.d.ts.map +1 -1
  472. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.d.ts +4 -0
  473. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.d.ts.map +1 -0
  474. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.js +3 -0
  475. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartParams.js.map +1 -0
  476. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.d.ts +2 -0
  477. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.d.ts.map +1 -0
  478. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.js +3 -0
  479. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadCompactStartResponse.js.map +1 -0
  480. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.d.ts +64 -0
  481. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.d.ts.map +1 -0
  482. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.js +3 -0
  483. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkParams.js.map +1 -0
  484. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.d.ts +46 -0
  485. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.d.ts.map +1 -0
  486. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.js +3 -0
  487. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadForkResponse.js.map +1 -0
  488. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadItem.d.ts +19 -1
  489. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadItem.d.ts.map +1 -1
  490. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.d.ts +5 -0
  491. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.d.ts.map +1 -0
  492. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.js +3 -0
  493. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadReadResponse.js.map +1 -0
  494. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.d.ts +17 -0
  495. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.d.ts.map +1 -0
  496. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.js +3 -0
  497. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeInitialTurnsPageParams.js.map +1 -0
  498. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeParams.d.ts +7 -7
  499. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeParams.d.ts.map +1 -1
  500. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeResponse.d.ts +13 -2
  501. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadResumeResponse.d.ts.map +1 -1
  502. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.d.ts +11 -0
  503. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.d.ts.map +1 -0
  504. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.js +3 -0
  505. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackParams.js.map +1 -0
  506. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.d.ts +12 -0
  507. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.d.ts.map +1 -0
  508. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.js +3 -0
  509. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadRollbackResponse.js.map +1 -0
  510. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadSource.d.ts +1 -1
  511. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadSource.d.ts.map +1 -1
  512. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartParams.d.ts +13 -9
  513. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartParams.d.ts.map +1 -1
  514. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartResponse.d.ts +8 -2
  515. package/dist/sdk/providers/codex-protocol/generated/v2/ThreadStartResponse.d.ts.map +1 -1
  516. package/dist/sdk/providers/codex-protocol/generated/v2/ToolRequestUserInputParams.d.ts +1 -0
  517. package/dist/sdk/providers/codex-protocol/generated/v2/ToolRequestUserInputParams.d.ts.map +1 -1
  518. package/dist/sdk/providers/codex-protocol/generated/v2/TurnEnvironmentParams.d.ts +2 -2
  519. package/dist/sdk/providers/codex-protocol/generated/v2/TurnEnvironmentParams.d.ts.map +1 -1
  520. package/dist/sdk/providers/codex-protocol/generated/v2/TurnStartParams.d.ts +17 -5
  521. package/dist/sdk/providers/codex-protocol/generated/v2/TurnStartParams.d.ts.map +1 -1
  522. package/dist/sdk/providers/codex-protocol/generated/v2/TurnSteerParams.d.ts +8 -1
  523. package/dist/sdk/providers/codex-protocol/generated/v2/TurnSteerParams.d.ts.map +1 -1
  524. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.d.ts +7 -0
  525. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.d.ts.map +1 -0
  526. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.js +3 -0
  527. package/dist/sdk/providers/codex-protocol/generated/v2/TurnsPage.js.map +1 -0
  528. package/dist/sdk/providers/codex-protocol/index.d.ts +7 -0
  529. package/dist/sdk/providers/codex-protocol/index.d.ts.map +1 -1
  530. package/dist/sdk/providers/codex.d.ts +26 -4
  531. package/dist/sdk/providers/codex.d.ts.map +1 -1
  532. package/dist/sdk/providers/codex.js +457 -37
  533. package/dist/sdk/providers/codex.js.map +1 -1
  534. package/dist/sdk/providers/env-filter.d.ts.map +1 -1
  535. package/dist/sdk/providers/env-filter.js +19 -1
  536. package/dist/sdk/providers/env-filter.js.map +1 -1
  537. package/dist/sdk/providers/gemini-tools.d.ts +28 -0
  538. package/dist/sdk/providers/gemini-tools.d.ts.map +1 -0
  539. package/dist/sdk/providers/gemini-tools.js +57 -0
  540. package/dist/sdk/providers/gemini-tools.js.map +1 -0
  541. package/dist/sdk/providers/gemini.d.ts.map +1 -1
  542. package/dist/sdk/providers/gemini.js +4 -2
  543. package/dist/sdk/providers/gemini.js.map +1 -1
  544. package/dist/sdk/providers/grok-acp.d.ts +1 -1
  545. package/dist/sdk/providers/grok-acp.d.ts.map +1 -1
  546. package/dist/sdk/providers/grok-acp.js +1 -1
  547. package/dist/sdk/providers/grok-acp.js.map +1 -1
  548. package/dist/sdk/providers/index.d.ts +1 -0
  549. package/dist/sdk/providers/index.d.ts.map +1 -1
  550. package/dist/sdk/providers/index.js +6 -0
  551. package/dist/sdk/providers/index.js.map +1 -1
  552. package/dist/sdk/providers/opencode-tools.d.ts +36 -0
  553. package/dist/sdk/providers/opencode-tools.d.ts.map +1 -0
  554. package/dist/sdk/providers/opencode-tools.js +78 -0
  555. package/dist/sdk/providers/opencode-tools.js.map +1 -0
  556. package/dist/sdk/providers/opencode.d.ts +53 -5
  557. package/dist/sdk/providers/opencode.d.ts.map +1 -1
  558. package/dist/sdk/providers/opencode.js +379 -71
  559. package/dist/sdk/providers/opencode.js.map +1 -1
  560. package/dist/sdk/providers/pi-rpc-client.d.ts +90 -0
  561. package/dist/sdk/providers/pi-rpc-client.d.ts.map +1 -0
  562. package/dist/sdk/providers/pi-rpc-client.js +168 -0
  563. package/dist/sdk/providers/pi-rpc-client.js.map +1 -0
  564. package/dist/sdk/providers/pi-tools.d.ts +38 -0
  565. package/dist/sdk/providers/pi-tools.d.ts.map +1 -0
  566. package/dist/sdk/providers/pi-tools.js +214 -0
  567. package/dist/sdk/providers/pi-tools.js.map +1 -0
  568. package/dist/sdk/providers/pi.d.ts +84 -0
  569. package/dist/sdk/providers/pi.d.ts.map +1 -0
  570. package/dist/sdk/providers/pi.js +686 -0
  571. package/dist/sdk/providers/pi.js.map +1 -0
  572. package/dist/sdk/providers/staticSlashCommands.d.ts +4 -0
  573. package/dist/sdk/providers/staticSlashCommands.d.ts.map +1 -0
  574. package/dist/sdk/providers/staticSlashCommands.js +14 -0
  575. package/dist/sdk/providers/staticSlashCommands.js.map +1 -0
  576. package/dist/sdk/providers/types.d.ts +144 -17
  577. package/dist/sdk/providers/types.d.ts.map +1 -1
  578. package/dist/sdk/remote-spawn.d.ts.map +1 -1
  579. package/dist/sdk/remote-spawn.js.map +1 -1
  580. package/dist/sdk/slashCommandEmulation.d.ts +9 -0
  581. package/dist/sdk/slashCommandEmulation.d.ts.map +1 -1
  582. package/dist/sdk/slashCommandEmulation.js +15 -0
  583. package/dist/sdk/slashCommandEmulation.js.map +1 -1
  584. package/dist/sdk/types.d.ts +40 -0
  585. package/dist/sdk/types.d.ts.map +1 -1
  586. package/dist/security/approvalAuditLog.d.ts +3 -2
  587. package/dist/security/approvalAuditLog.d.ts.map +1 -1
  588. package/dist/security/approvalAuditLog.js +62 -2
  589. package/dist/security/approvalAuditLog.js.map +1 -1
  590. package/dist/services/BrowserProfileService.d.ts +21 -0
  591. package/dist/services/BrowserProfileService.d.ts.map +1 -1
  592. package/dist/services/BrowserProfileService.js +74 -1
  593. package/dist/services/BrowserProfileService.js.map +1 -1
  594. package/dist/services/CacheMissBillingMonitor.d.ts +25 -0
  595. package/dist/services/CacheMissBillingMonitor.d.ts.map +1 -0
  596. package/dist/services/CacheMissBillingMonitor.js +179 -0
  597. package/dist/services/CacheMissBillingMonitor.js.map +1 -0
  598. package/dist/services/CodexUpdateChecker.d.ts.map +1 -1
  599. package/dist/services/CodexUpdateChecker.js +3 -2
  600. package/dist/services/CodexUpdateChecker.js.map +1 -1
  601. package/dist/services/ModelInfoService.d.ts +58 -9
  602. package/dist/services/ModelInfoService.d.ts.map +1 -1
  603. package/dist/services/ModelInfoService.js +127 -14
  604. package/dist/services/ModelInfoService.js.map +1 -1
  605. package/dist/services/ProjectQueueScheduler.d.ts +91 -0
  606. package/dist/services/ProjectQueueScheduler.d.ts.map +1 -0
  607. package/dist/services/ProjectQueueScheduler.js +404 -0
  608. package/dist/services/ProjectQueueScheduler.js.map +1 -0
  609. package/dist/services/ProjectQueueService.d.ts +60 -0
  610. package/dist/services/ProjectQueueService.d.ts.map +1 -0
  611. package/dist/services/ProjectQueueService.js +804 -0
  612. package/dist/services/ProjectQueueService.js.map +1 -0
  613. package/dist/services/RelayClientService.d.ts +5 -0
  614. package/dist/services/RelayClientService.d.ts.map +1 -1
  615. package/dist/services/RelayClientService.js +26 -12
  616. package/dist/services/RelayClientService.js.map +1 -1
  617. package/dist/services/SafeRestartService.d.ts +48 -0
  618. package/dist/services/SafeRestartService.d.ts.map +1 -0
  619. package/dist/services/SafeRestartService.js +173 -0
  620. package/dist/services/SafeRestartService.js.map +1 -0
  621. package/dist/services/ServerSettingsService.d.ts +41 -1
  622. package/dist/services/ServerSettingsService.d.ts.map +1 -1
  623. package/dist/services/ServerSettingsService.js +110 -1
  624. package/dist/services/ServerSettingsService.js.map +1 -1
  625. package/dist/services/SessionQueuePersistenceService.d.ts +55 -0
  626. package/dist/services/SessionQueuePersistenceService.d.ts.map +1 -0
  627. package/dist/services/SessionQueuePersistenceService.js +264 -0
  628. package/dist/services/SessionQueuePersistenceService.js.map +1 -0
  629. package/dist/services/WorkstreamService.d.ts +92 -0
  630. package/dist/services/WorkstreamService.d.ts.map +1 -0
  631. package/dist/services/WorkstreamService.js +627 -0
  632. package/dist/services/WorkstreamService.js.map +1 -0
  633. package/dist/services/index.d.ts +4 -0
  634. package/dist/services/index.d.ts.map +1 -1
  635. package/dist/services/index.js +4 -0
  636. package/dist/services/index.js.map +1 -1
  637. package/dist/services/projectWorkIdle.d.ts +42 -0
  638. package/dist/services/projectWorkIdle.d.ts.map +1 -0
  639. package/dist/services/projectWorkIdle.js +50 -0
  640. package/dist/services/projectWorkIdle.js.map +1 -0
  641. package/dist/services/voice/SpeechBackend.d.ts +18 -1
  642. package/dist/services/voice/SpeechBackend.d.ts.map +1 -1
  643. package/dist/services/voice/SpeechBackend.js +3 -0
  644. package/dist/services/voice/SpeechBackend.js.map +1 -1
  645. package/dist/services/voice/audioRetention.d.ts +20 -0
  646. package/dist/services/voice/audioRetention.d.ts.map +1 -1
  647. package/dist/services/voice/audioRetention.js +2 -0
  648. package/dist/services/voice/audioRetention.js.map +1 -1
  649. package/dist/services/voice/deepgramBackend.d.ts.map +1 -1
  650. package/dist/services/voice/deepgramBackend.js +4 -1
  651. package/dist/services/voice/deepgramBackend.js.map +1 -1
  652. package/dist/services/voice/localNemoBackend.d.ts +31 -0
  653. package/dist/services/voice/localNemoBackend.d.ts.map +1 -0
  654. package/dist/services/voice/localNemoBackend.js +181 -0
  655. package/dist/services/voice/localNemoBackend.js.map +1 -0
  656. package/dist/services/voice/localParakeetBackend.d.ts +31 -0
  657. package/dist/services/voice/localParakeetBackend.d.ts.map +1 -0
  658. package/dist/services/voice/localParakeetBackend.js +180 -0
  659. package/dist/services/voice/localParakeetBackend.js.map +1 -0
  660. package/dist/services/voice/localSttRuntime.d.ts +21 -0
  661. package/dist/services/voice/localSttRuntime.d.ts.map +1 -0
  662. package/dist/services/voice/localSttRuntime.js +87 -0
  663. package/dist/services/voice/localSttRuntime.js.map +1 -0
  664. package/dist/services/voice/localWhisperBackend.d.ts +2 -1
  665. package/dist/services/voice/localWhisperBackend.d.ts.map +1 -1
  666. package/dist/services/voice/localWhisperBackend.js +47 -34
  667. package/dist/services/voice/localWhisperBackend.js.map +1 -1
  668. package/dist/services/voice/nemo_worker.py +232 -0
  669. package/dist/services/voice/parakeet_worker.py +151 -0
  670. package/dist/services/voice/registry.d.ts +19 -4
  671. package/dist/services/voice/registry.d.ts.map +1 -1
  672. package/dist/services/voice/registry.js +72 -22
  673. package/dist/services/voice/registry.js.map +1 -1
  674. package/dist/services/voice/serialQueue.d.ts +17 -0
  675. package/dist/services/voice/serialQueue.d.ts.map +1 -0
  676. package/dist/services/voice/serialQueue.js +24 -0
  677. package/dist/services/voice/serialQueue.js.map +1 -0
  678. package/dist/services/voice/whisper_worker.py +94 -0
  679. package/dist/services/voice/xaiSttBackend.d.ts +1 -1
  680. package/dist/services/voice/xaiSttBackend.d.ts.map +1 -1
  681. package/dist/services/voice/xaiSttBackend.js +15 -3
  682. package/dist/services/voice/xaiSttBackend.js.map +1 -1
  683. package/dist/sessions/agent-excerpt.d.ts +29 -0
  684. package/dist/sessions/agent-excerpt.d.ts.map +1 -0
  685. package/dist/sessions/agent-excerpt.js +128 -0
  686. package/dist/sessions/agent-excerpt.js.map +1 -0
  687. package/dist/sessions/claude-messages.d.ts.map +1 -1
  688. package/dist/sessions/claude-messages.js +75 -4
  689. package/dist/sessions/claude-messages.js.map +1 -1
  690. package/dist/sessions/claude-summary.d.ts +33 -0
  691. package/dist/sessions/claude-summary.d.ts.map +1 -0
  692. package/dist/sessions/claude-summary.js +461 -0
  693. package/dist/sessions/claude-summary.js.map +1 -0
  694. package/dist/sessions/codex-discovery.d.ts +46 -0
  695. package/dist/sessions/codex-discovery.d.ts.map +1 -0
  696. package/dist/sessions/codex-discovery.js +269 -0
  697. package/dist/sessions/codex-discovery.js.map +1 -0
  698. package/dist/sessions/codex-reader.d.ts +96 -13
  699. package/dist/sessions/codex-reader.d.ts.map +1 -1
  700. package/dist/sessions/codex-reader.js +1069 -141
  701. package/dist/sessions/codex-reader.js.map +1 -1
  702. package/dist/sessions/dag.d.ts +25 -4
  703. package/dist/sessions/dag.d.ts.map +1 -1
  704. package/dist/sessions/dag.js +37 -4
  705. package/dist/sessions/dag.js.map +1 -1
  706. package/dist/sessions/gemini-reader.d.ts +3 -1
  707. package/dist/sessions/gemini-reader.d.ts.map +1 -1
  708. package/dist/sessions/gemini-reader.js +17 -8
  709. package/dist/sessions/gemini-reader.js.map +1 -1
  710. package/dist/sessions/grok-reader.d.ts +1 -0
  711. package/dist/sessions/grok-reader.d.ts.map +1 -1
  712. package/dist/sessions/grok-reader.js +11 -5
  713. package/dist/sessions/grok-reader.js.map +1 -1
  714. package/dist/sessions/normalization.d.ts +3 -1
  715. package/dist/sessions/normalization.d.ts.map +1 -1
  716. package/dist/sessions/normalization.js +72 -16
  717. package/dist/sessions/normalization.js.map +1 -1
  718. package/dist/sessions/null-reader.d.ts +31 -0
  719. package/dist/sessions/null-reader.d.ts.map +1 -0
  720. package/dist/sessions/null-reader.js +30 -0
  721. package/dist/sessions/null-reader.js.map +1 -0
  722. package/dist/sessions/opencode-db-reader.d.ts +66 -0
  723. package/dist/sessions/opencode-db-reader.d.ts.map +1 -0
  724. package/dist/sessions/opencode-db-reader.js +333 -0
  725. package/dist/sessions/opencode-db-reader.js.map +1 -0
  726. package/dist/sessions/opencode-reader.d.ts +50 -0
  727. package/dist/sessions/opencode-reader.d.ts.map +1 -1
  728. package/dist/sessions/opencode-reader.js +375 -71
  729. package/dist/sessions/opencode-reader.js.map +1 -1
  730. package/dist/sessions/pagination.d.ts.map +1 -1
  731. package/dist/sessions/pagination.js +119 -3
  732. package/dist/sessions/pagination.js.map +1 -1
  733. package/dist/sessions/persisted-augments.d.ts +2 -1
  734. package/dist/sessions/persisted-augments.d.ts.map +1 -1
  735. package/dist/sessions/persisted-augments.js +2 -2
  736. package/dist/sessions/persisted-augments.js.map +1 -1
  737. package/dist/sessions/pi-fork.d.ts +12 -0
  738. package/dist/sessions/pi-fork.d.ts.map +1 -0
  739. package/dist/sessions/pi-fork.js +125 -0
  740. package/dist/sessions/pi-fork.js.map +1 -0
  741. package/dist/sessions/pi-reader.d.ts +81 -0
  742. package/dist/sessions/pi-reader.d.ts.map +1 -0
  743. package/dist/sessions/pi-reader.js +413 -0
  744. package/dist/sessions/pi-reader.js.map +1 -0
  745. package/dist/sessions/provider-resolution.d.ts +10 -3
  746. package/dist/sessions/provider-resolution.d.ts.map +1 -1
  747. package/dist/sessions/provider-resolution.js +62 -6
  748. package/dist/sessions/provider-resolution.js.map +1 -1
  749. package/dist/sessions/reader.d.ts +17 -24
  750. package/dist/sessions/reader.d.ts.map +1 -1
  751. package/dist/sessions/reader.js +86 -157
  752. package/dist/sessions/reader.js.map +1 -1
  753. package/dist/sessions/recap-overlays.d.ts +38 -0
  754. package/dist/sessions/recap-overlays.d.ts.map +1 -0
  755. package/dist/sessions/recap-overlays.js +176 -0
  756. package/dist/sessions/recap-overlays.js.map +1 -0
  757. package/dist/sessions/summary-parser-worker-client.d.ts +80 -0
  758. package/dist/sessions/summary-parser-worker-client.d.ts.map +1 -0
  759. package/dist/sessions/summary-parser-worker-client.js +539 -0
  760. package/dist/sessions/summary-parser-worker-client.js.map +1 -0
  761. package/dist/sessions/summary-parser-worker-entry.d.ts +2 -0
  762. package/dist/sessions/summary-parser-worker-entry.d.ts.map +1 -0
  763. package/dist/sessions/summary-parser-worker-entry.js +29 -0
  764. package/dist/sessions/summary-parser-worker-entry.js.map +1 -0
  765. package/dist/sessions/summary-parser-worker-protocol.d.ts +105 -0
  766. package/dist/sessions/summary-parser-worker-protocol.d.ts.map +1 -0
  767. package/dist/sessions/summary-parser-worker-protocol.js +35 -0
  768. package/dist/sessions/summary-parser-worker-protocol.js.map +1 -0
  769. package/dist/sessions/summary-parser-worker-runner.d.ts +3 -0
  770. package/dist/sessions/summary-parser-worker-runner.d.ts.map +1 -0
  771. package/dist/sessions/summary-parser-worker-runner.js +158 -0
  772. package/dist/sessions/summary-parser-worker-runner.js.map +1 -0
  773. package/dist/sessions/types.d.ts +30 -1
  774. package/dist/sessions/types.d.ts.map +1 -1
  775. package/dist/startupEnv.d.ts +2 -0
  776. package/dist/startupEnv.d.ts.map +1 -0
  777. package/dist/startupEnv.js +97 -0
  778. package/dist/startupEnv.js.map +1 -0
  779. package/dist/subscriptions.d.ts.map +1 -1
  780. package/dist/subscriptions.js +28 -18
  781. package/dist/subscriptions.js.map +1 -1
  782. package/dist/supervisor/ExternalSessionTracker.d.ts +5 -1
  783. package/dist/supervisor/ExternalSessionTracker.d.ts.map +1 -1
  784. package/dist/supervisor/ExternalSessionTracker.js +98 -6
  785. package/dist/supervisor/ExternalSessionTracker.js.map +1 -1
  786. package/dist/supervisor/Process.d.ts +252 -32
  787. package/dist/supervisor/Process.d.ts.map +1 -1
  788. package/dist/supervisor/Process.js +1233 -219
  789. package/dist/supervisor/Process.js.map +1 -1
  790. package/dist/supervisor/Supervisor.d.ts +201 -5
  791. package/dist/supervisor/Supervisor.d.ts.map +1 -1
  792. package/dist/supervisor/Supervisor.js +1074 -55
  793. package/dist/supervisor/Supervisor.js.map +1 -1
  794. package/dist/supervisor/WorkerQueue.d.ts +3 -1
  795. package/dist/supervisor/WorkerQueue.d.ts.map +1 -1
  796. package/dist/supervisor/WorkerQueue.js +1 -0
  797. package/dist/supervisor/WorkerQueue.js.map +1 -1
  798. package/dist/supervisor/composeTimeAnchor.d.ts +36 -0
  799. package/dist/supervisor/composeTimeAnchor.d.ts.map +1 -0
  800. package/dist/supervisor/composeTimeAnchor.js +51 -0
  801. package/dist/supervisor/composeTimeAnchor.js.map +1 -0
  802. package/dist/supervisor/deferredDeliverySettings.d.ts +23 -0
  803. package/dist/supervisor/deferredDeliverySettings.d.ts.map +1 -0
  804. package/dist/supervisor/deferredDeliverySettings.js +40 -0
  805. package/dist/supervisor/deferredDeliverySettings.js.map +1 -0
  806. package/dist/supervisor/liveness.d.ts +5 -2
  807. package/dist/supervisor/liveness.d.ts.map +1 -1
  808. package/dist/supervisor/liveness.js +40 -2
  809. package/dist/supervisor/liveness.js.map +1 -1
  810. package/dist/supervisor/types.d.ts +56 -5
  811. package/dist/supervisor/types.d.ts.map +1 -1
  812. package/dist/supervisor/types.js +0 -2
  813. package/dist/supervisor/types.js.map +1 -1
  814. package/dist/uploads/AttachmentStagingService.d.ts +94 -0
  815. package/dist/uploads/AttachmentStagingService.d.ts.map +1 -0
  816. package/dist/uploads/AttachmentStagingService.js +673 -0
  817. package/dist/uploads/AttachmentStagingService.js.map +1 -0
  818. package/dist/uploads/index.d.ts +2 -0
  819. package/dist/uploads/index.d.ts.map +1 -1
  820. package/dist/uploads/index.js +1 -0
  821. package/dist/uploads/index.js.map +1 -1
  822. package/dist/uploads/manager.d.ts +1 -0
  823. package/dist/uploads/manager.d.ts.map +1 -1
  824. package/dist/uploads/manager.js +72 -12
  825. package/dist/uploads/manager.js.map +1 -1
  826. package/dist/utils/codexRolloutFiles.d.ts +16 -0
  827. package/dist/utils/codexRolloutFiles.d.ts.map +1 -0
  828. package/dist/utils/codexRolloutFiles.js +45 -0
  829. package/dist/utils/codexRolloutFiles.js.map +1 -0
  830. package/dist/utils/jsonl.d.ts +8 -0
  831. package/dist/utils/jsonl.d.ts.map +1 -1
  832. package/dist/utils/jsonl.js +158 -5
  833. package/dist/utils/jsonl.js.map +1 -1
  834. package/dist/utils/publicShareViewerUrl.d.ts.map +1 -1
  835. package/dist/utils/publicShareViewerUrl.js +2 -15
  836. package/dist/utils/publicShareViewerUrl.js.map +1 -1
  837. package/dist/watcher/EventBus.d.ts +42 -4
  838. package/dist/watcher/EventBus.d.ts.map +1 -1
  839. package/dist/watcher/EventBus.js.map +1 -1
  840. package/dist/watcher/FileWatcher.d.ts +47 -0
  841. package/dist/watcher/FileWatcher.d.ts.map +1 -1
  842. package/dist/watcher/FileWatcher.js +185 -14
  843. package/dist/watcher/FileWatcher.js.map +1 -1
  844. package/dist/watcher/index.d.ts +2 -2
  845. package/dist/watcher/index.d.ts.map +1 -1
  846. package/dist/watcher/index.js.map +1 -1
  847. package/dist/yaModuleEnv.d.ts +6 -6
  848. package/dist/yaModuleEnv.d.ts.map +1 -1
  849. package/dist/yaModuleEnv.js +12 -12
  850. package/dist/yaModuleEnv.js.map +1 -1
  851. package/package.json +5 -6
  852. package/client-dist/assets/de-BuEb60Yc.js +0 -6
  853. package/client-dist/assets/es-CRlmPKnE.js +0 -6
  854. package/client-dist/assets/fr-Cglgjc2X.js +0 -6
  855. package/client-dist/assets/index-BNj7ibmq.js +0 -524
  856. package/client-dist/assets/index-CAmsUazi.css +0 -1
  857. package/client-dist/assets/ja-DMb9mFPv.js +0 -6
  858. package/client-dist/assets/zh-CN-D1tbfamz.js +0 -6
@@ -9,11 +9,13 @@ import { homedir } from "node:os";
9
9
  import { promisify } from "node:util";
10
10
  import { HELPER_SIDE_MODEL_CHEAPEST, } from "../../../bundled/@yep-anywhere/shared/dist/index.js";
11
11
  import { isCodexCorrelationDebugEnabled, logCodexCorrelationDebug, summarizeCodexNormalizedMessage, } from "../../codex/correlationDebugLogger.js";
12
- import { canonicalizeCodexToolName, isCodexBackgroundProcessOutput, isCodexInterruptedToolOutput, normalizeCodexCommandExecutionOutput, normalizeCodexToolInvocation, normalizeCodexToolOutputWithContext, parseCodexToolArguments, } from "../../codex/normalization.js";
12
+ import { canonicalizeCodexToolName, isCodexBackgroundProcessOutput, isCodexInterruptedToolOutput, normalizeCodexCommandActionInvocation, normalizeCodexCommandExecutionOutput, normalizeCodexToolInvocation, normalizeCodexToolOutputWithContext, parseCodexToolArguments, } from "../../codex/normalization.js";
13
13
  import { getLogger } from "../../logging/logger.js";
14
14
  import { findCodexCliPath } from "../cli-detection.js";
15
15
  import { logSDKMessage } from "../messageLogger.js";
16
16
  import { MessageQueue } from "../messageQueue.js";
17
+ import { createAgentctlSessionEnvBridge } from "./agentctl-session-env.js";
18
+ import { CODEX_BUILTIN_COMMANDS } from "./staticSlashCommands.js";
17
19
  const log = getLogger().child({ component: "codex-provider" });
18
20
  const execFileAsync = promisify(execFile);
19
21
  function logSdkCorrelationDebug(sessionId, message, metadata = {}) {
@@ -58,13 +60,14 @@ const CODEX_CLI_GPT55_MIN_VERSION = "0.124.0";
58
60
  const CODEX_FAILURE_TRACE_LIMIT = 12;
59
61
  const CODEX_FAILURE_PREVIEW_CHARS = 240;
60
62
  const CODEX_RECAP_TIMEOUT_MS = 20_000;
63
+ const CODEX_SUMMARY_TIMEOUT_MS = 60_000;
61
64
  const CODEX_RECAP_MAX_TOTAL_CHARS = 6000;
62
65
  const CODEX_RECAP_CHEAPEST_MODEL_PREFERENCES = [
63
66
  "gpt-5.4-mini",
64
67
  "gpt-5.1-codex-mini",
65
68
  "gpt-5.3-codex-spark",
66
69
  ];
67
- const CODEX_DISABLE_LIVE_DELTAS_ENV = "YA_CODEX_DISABLE_LIVE_DELTAS";
70
+ const CODEX_DISABLE_LIVE_DELTAS_ENV = "YEP_CODEX_DISABLE_LIVE_DELTAS";
68
71
  const CODEX_LIVE_DELTA_NOTIFICATION_METHODS = new Set([
69
72
  "item/agentMessage/delta",
70
73
  "item/plan/delta",
@@ -78,13 +81,6 @@ function isCodexLiveDeltaSuppressionEnabled() {
78
81
  function isCodexLiveDeltaNotificationMethod(method) {
79
82
  return CODEX_LIVE_DELTA_NOTIFICATION_METHODS.has(method);
80
83
  }
81
- const CODEX_BUILTIN_COMMANDS = [
82
- {
83
- name: "goal",
84
- description: "Keep working toward a verifiable end state until it is met",
85
- argumentHint: "<verifiable end state>",
86
- },
87
- ];
88
84
  const CODEX_THINKING_OFF_MIN_REASONING_EFFORT_PREFIXES = [
89
85
  "gpt-5.3-codex-spark",
90
86
  ];
@@ -100,10 +96,12 @@ const CODEX_POLICY_OVERRIDES = {
100
96
  sandbox: null,
101
97
  };
102
98
  /**
103
- * When enabled, declare Codex session originator as "Codex Desktop"
104
- * when initializing app-server sessions.
99
+ * When enabled, declare Codex session originator as "Codex Desktop" when
100
+ * initializing app-server sessions. Disabled by default so we report
101
+ * "yep-anywhere" as the originator, making Yep Anywhere usage visible in the
102
+ * Codex/ChatGPT token-usage UI.
105
103
  */
106
- const DECLARE_CODEX_ORIGINATOR = true;
104
+ const DECLARE_CODEX_ORIGINATOR = false;
107
105
  const DECLARED_CODEX_ORIGINATOR = "Codex Desktop";
108
106
  const YEP_ANYWHERE_ORIGINATOR = "yep-anywhere";
109
107
  const PREFERRED_MODEL_ORDER = [
@@ -269,7 +267,21 @@ async function terminateChildProcess(child, graceMs = APP_SERVER_SHUTDOWN_GRACE_
269
267
  const exited = new Promise((resolve) => {
270
268
  child.once("exit", () => resolve());
271
269
  });
272
- const killTarget = process.platform !== "win32" && child.pid > 0 ? -child.pid : child.pid;
270
+ if (process.platform === "win32") {
271
+ const taskkill = new Promise((resolve) => {
272
+ execFile("taskkill", ["/pid", String(child.pid), "/T", "/F"], () => resolve());
273
+ });
274
+ await Promise.race([
275
+ taskkill,
276
+ new Promise((resolve) => setTimeout(resolve, graceMs)),
277
+ ]);
278
+ await Promise.race([
279
+ exited,
280
+ new Promise((resolve) => setTimeout(resolve, 100)),
281
+ ]);
282
+ return;
283
+ }
284
+ const killTarget = child.pid > 0 ? -child.pid : child.pid;
273
285
  try {
274
286
  process.kill(killTarget, "SIGTERM");
275
287
  }
@@ -356,6 +368,7 @@ class CodexAppServerClient {
356
368
  shouldSuppressNotification;
357
369
  process = null;
358
370
  stdoutBuffer = "";
371
+ closePromise = null;
359
372
  /** OS PID of the spawned app-server child process */
360
373
  get pid() {
361
374
  return this.process?.pid;
@@ -553,7 +566,10 @@ class CodexAppServerClient {
553
566
  async nextNotification(signal) {
554
567
  return await this.notifications.shift(signal);
555
568
  }
556
- close() {
569
+ async close() {
570
+ if (this.closePromise) {
571
+ return await this.closePromise;
572
+ }
557
573
  if (this.closed)
558
574
  return;
559
575
  this.closed = true;
@@ -565,7 +581,8 @@ class CodexAppServerClient {
565
581
  this.notifications.close(closeError);
566
582
  const child = this.process;
567
583
  this.process = null;
568
- void terminateChildProcess(child);
584
+ this.closePromise = terminateChildProcess(child);
585
+ await this.closePromise;
569
586
  }
570
587
  handleProcessClose(error) {
571
588
  if (this.closed)
@@ -1091,8 +1108,78 @@ export class CodexProvider {
1091
1108
  });
1092
1109
  return true;
1093
1110
  },
1111
+ runProviderCommand: async (command) => {
1112
+ // Only `/compact` is dispatched natively; every other slash command
1113
+ // falls through to ordinary turn delivery.
1114
+ const name = command.trim().replace(/^\/+/, "").toLowerCase();
1115
+ if (name !== "compact") {
1116
+ return { handled: false };
1117
+ }
1118
+ // Codex compaction takes no instructions, so any trailing argument is
1119
+ // intentionally dropped here — there is no app-server surface for it.
1120
+ if (!activeClient || !runtimeState.threadId) {
1121
+ return {
1122
+ handled: true,
1123
+ error: "Codex session is not ready for compaction yet",
1124
+ };
1125
+ }
1126
+ // A compact runs as its own (non-steerable) turn; refuse mid-turn so we
1127
+ // do not collide with active work or send `/compact` as plain text.
1128
+ if (runtimeState.activeTurnId) {
1129
+ return {
1130
+ handled: true,
1131
+ error: "Cannot compact while a turn is in progress",
1132
+ };
1133
+ }
1134
+ try {
1135
+ await activeClient.request("thread/compact/start", {
1136
+ threadId: runtimeState.threadId,
1137
+ });
1138
+ return { handled: true };
1139
+ }
1140
+ catch (error) {
1141
+ const message = error instanceof Error ? error.message : String(error);
1142
+ log.warn({ threadId: runtimeState.threadId, error: message }, "Codex thread/compact/start failed");
1143
+ return { handled: true, error: message };
1144
+ }
1145
+ },
1094
1146
  };
1095
1147
  }
1148
+ async forkSession(options) {
1149
+ const codexCommand = await this.resolveCodexCommand();
1150
+ const appServer = new CodexAppServerClient(codexCommand, options.cwd, this.getCodexEnv());
1151
+ appServer.setServerRequestHandler((request) => this.handleForkServerRequest(request));
1152
+ try {
1153
+ await appServer.connect();
1154
+ const experimentalApiEnabled = await this.initializeAppServer(appServer);
1155
+ appServer.notify("initialized");
1156
+ const rollbackCount = options.upToMessageId
1157
+ ? await this.resolveCodexForkRollbackCount(appServer, options.sessionId, options.upToMessageId)
1158
+ : 0;
1159
+ const policy = this.mapPermissionModeToThreadPolicy(undefined);
1160
+ const fork = await appServer.request("thread/fork", this.createThreadForkParams(options, policy, experimentalApiEnabled));
1161
+ const forkSessionId = fork.thread?.id;
1162
+ if (!forkSessionId) {
1163
+ throw new Error("Codex thread/fork did not return a thread id");
1164
+ }
1165
+ if (rollbackCount > 0) {
1166
+ await appServer.request("thread/rollback", {
1167
+ threadId: forkSessionId,
1168
+ numTurns: rollbackCount,
1169
+ });
1170
+ }
1171
+ log.info({
1172
+ sourceSessionId: options.sessionId,
1173
+ forkSessionId,
1174
+ upToMessageId: options.upToMessageId ?? null,
1175
+ rollbackCount,
1176
+ }, "Forked Codex app-server thread");
1177
+ return { sessionId: forkSessionId };
1178
+ }
1179
+ finally {
1180
+ await appServer.close();
1181
+ }
1182
+ }
1096
1183
  async probeCodexLiveness(activeClient, runtimeState) {
1097
1184
  const checkedAt = new Date();
1098
1185
  const source = "codex:thread/read";
@@ -1117,7 +1204,9 @@ export class CodexProvider {
1117
1204
  threadId: runtimeState.threadId,
1118
1205
  includeTurns: false,
1119
1206
  });
1120
- const status = response.thread?.status;
1207
+ const status = response.thread?.status && typeof response.thread.status === "object"
1208
+ ? response.thread.status
1209
+ : null;
1121
1210
  const statusType = status?.type;
1122
1211
  const activeFlags = Array.isArray(status?.activeFlags)
1123
1212
  ? status.activeFlags.filter((flag) => typeof flag === "string")
@@ -1186,7 +1275,17 @@ export class CodexProvider {
1186
1275
  */
1187
1276
  async *runSession(options, queue, signal, runtimeState, setActiveClient) {
1188
1277
  const codexCommand = await this.resolveCodexCommand();
1189
- const appServer = new CodexAppServerClient(codexCommand, options.cwd, this.getCodexEnv(), (notification) => this.shouldSuppressLiveDeltaNotification(notification, options));
1278
+ const agentctlSessionEnvBridge = createAgentctlSessionEnvBridge(options.resumeSessionId);
1279
+ const codexEnv = agentctlSessionEnvBridge.extendEnv(this.getCodexEnv());
1280
+ if (options.resumeSessionId) {
1281
+ // The bridge only reaches bash tool shells that source BASH_ENV, which
1282
+ // codex's sandbox may strip. For resume the id is known at spawn, so set
1283
+ // it directly in the app-server env too; every shell codex launches
1284
+ // inherits it regardless of BASH_ENV. New sessions (id unknown until
1285
+ // thread/start) stay on the bridge alone.
1286
+ codexEnv.AGENTCTL_SESSION_ID = options.resumeSessionId;
1287
+ }
1288
+ const appServer = new CodexAppServerClient(codexCommand, options.cwd, codexEnv, (notification) => this.shouldSuppressLiveDeltaNotification(notification, options));
1190
1289
  setActiveClient(appServer);
1191
1290
  let sessionId = options.resumeSessionId ?? "";
1192
1291
  const usageByTurnId = new Map();
@@ -1210,6 +1309,7 @@ export class CodexProvider {
1210
1309
  const threadStartParams = this.createThreadStartParams(options, policy);
1211
1310
  const threadResult = await this.startOrResumeThread(appServer, options, threadStartParams, threadResumeParams);
1212
1311
  sessionId = threadResult.thread.id;
1312
+ agentctlSessionEnvBridge.publishSessionId(sessionId);
1213
1313
  runtimeState.threadId = sessionId;
1214
1314
  failureTrace.sessionId = sessionId;
1215
1315
  log.info({
@@ -1366,7 +1466,8 @@ export class CodexProvider {
1366
1466
  }
1367
1467
  finally {
1368
1468
  runtimeState.activeTurnId = null;
1369
- appServer.close();
1469
+ await appServer.close();
1470
+ agentctlSessionEnvBridge.cleanup();
1370
1471
  }
1371
1472
  yield {
1372
1473
  type: "result",
@@ -1483,7 +1584,6 @@ export class CodexProvider {
1483
1584
  ...this.buildThreadPermissionParams(policy),
1484
1585
  config: this.buildThreadConfigOverrides(options),
1485
1586
  experimentalRawEvents: false,
1486
- persistExtendedHistory: false,
1487
1587
  };
1488
1588
  }
1489
1589
  createThreadResumeParams(options, sessionId, policy, experimentalApiEnabled = false) {
@@ -1494,13 +1594,78 @@ export class CodexProvider {
1494
1594
  cwd: options.cwd,
1495
1595
  ...this.buildThreadPermissionParams(policy),
1496
1596
  config: this.buildThreadConfigOverrides(options),
1497
- persistExtendedHistory: false,
1498
1597
  };
1499
1598
  if (experimentalApiEnabled) {
1500
1599
  params.excludeTurns = true;
1501
1600
  }
1502
1601
  return params;
1503
1602
  }
1603
+ createThreadForkParams(options, policy, experimentalApiEnabled = false) {
1604
+ const params = {
1605
+ threadId: options.sessionId,
1606
+ cwd: options.cwd,
1607
+ ...this.buildThreadPermissionParams(policy),
1608
+ config: null,
1609
+ };
1610
+ if (experimentalApiEnabled) {
1611
+ params.excludeTurns = true;
1612
+ }
1613
+ return params;
1614
+ }
1615
+ async resolveCodexForkRollbackCount(appServer, sessionId, upToMessageId) {
1616
+ const response = await appServer.request("thread/read", {
1617
+ threadId: sessionId,
1618
+ includeTurns: true,
1619
+ });
1620
+ const turns = response.thread.turns ?? [];
1621
+ return this.computeCodexForkRollbackCount(turns, upToMessageId);
1622
+ }
1623
+ computeCodexForkRollbackCount(turns, upToMessageId) {
1624
+ const anchor = this.findCodexForkAnchor(turns, upToMessageId);
1625
+ if (!anchor) {
1626
+ throw new Error(`Codex fork anchor ${upToMessageId} was not found in source thread`);
1627
+ }
1628
+ if (anchor.itemIndex !== null) {
1629
+ const turn = turns[anchor.turnIndex];
1630
+ if (!turn) {
1631
+ throw new Error(`Codex fork anchor ${upToMessageId} resolved to a missing turn`);
1632
+ }
1633
+ if (anchor.itemIndex < turn.items.length - 1) {
1634
+ throw new Error(`Codex fork anchor ${upToMessageId} is inside a turn; Codex can only fork at completed turn boundaries`);
1635
+ }
1636
+ }
1637
+ return turns.length - anchor.turnIndex - 1;
1638
+ }
1639
+ findCodexForkAnchor(turns, upToMessageId) {
1640
+ for (const [turnIndex, turn] of turns.entries()) {
1641
+ if (turn.id === upToMessageId ||
1642
+ `codex-turn-interrupted-${turn.id}` === upToMessageId) {
1643
+ return { turnIndex, itemIndex: null };
1644
+ }
1645
+ for (const [itemIndex, item] of turn.items.entries()) {
1646
+ if (this.codexItemMatchesForkAnchor(item, turn.id, upToMessageId)) {
1647
+ return { turnIndex, itemIndex };
1648
+ }
1649
+ }
1650
+ if (`codex-compaction-${turn.id}` === upToMessageId) {
1651
+ return { turnIndex, itemIndex: turn.items.length - 1 };
1652
+ }
1653
+ }
1654
+ return null;
1655
+ }
1656
+ codexItemMatchesForkAnchor(item, turnId, upToMessageId) {
1657
+ const candidates = new Set();
1658
+ candidates.add(item.id);
1659
+ candidates.add(`${item.id}-${turnId}`);
1660
+ candidates.add(`${item.id}-result`);
1661
+ const itemRecord = item;
1662
+ const clientId = this.getOptionalString(itemRecord.clientId);
1663
+ if (clientId) {
1664
+ candidates.add(clientId);
1665
+ candidates.add(`${clientId}-${turnId}`);
1666
+ }
1667
+ return candidates.has(upToMessageId);
1668
+ }
1504
1669
  buildThreadPermissionParams(policy) {
1505
1670
  return {
1506
1671
  approvalPolicy: policy.approvalPolicy,
@@ -1536,9 +1701,19 @@ export class CodexProvider {
1536
1701
  * not natively emit prompt_suggestion messages, but it can still run the YA
1537
1702
  * simulated recap helper without mutating the parent session transcript.
1538
1703
  */
1539
- async generateRecap(recentAssistantText, options) {
1704
+ async generateSummary(request) {
1705
+ switch (request.strategy) {
1706
+ case "side-session": {
1707
+ const text = await this.generateSideSessionRecap(request.recentAssistantText, request.model);
1708
+ return { text };
1709
+ }
1710
+ case "fork":
1711
+ return await this.generateForkBackedSummary(request);
1712
+ }
1713
+ }
1714
+ async generateSideSessionRecap(recentAssistantText, requestedModel) {
1540
1715
  const userPrompt = this.createRecapPrompt(recentAssistantText);
1541
- const model = await this.resolveRecapHelperModel(options?.model);
1716
+ const model = await this.resolveRecapHelperModel(requestedModel);
1542
1717
  const codexCommand = await this.resolveCodexCommand();
1543
1718
  const abortController = new AbortController();
1544
1719
  let timedOut = false;
@@ -1560,7 +1735,6 @@ export class CodexProvider {
1560
1735
  sandbox: "read-only",
1561
1736
  ephemeral: true,
1562
1737
  experimentalRawEvents: false,
1563
- persistExtendedHistory: false,
1564
1738
  developerInstructions: "You are a recap helper. Reply with the recap text only, no preamble. Do not call tools.",
1565
1739
  });
1566
1740
  const turnResult = await appServer.request("turn/start", {
@@ -1609,7 +1783,7 @@ export class CodexProvider {
1609
1783
  finally {
1610
1784
  clearTimeout(timeout);
1611
1785
  abortController.abort();
1612
- appServer.close();
1786
+ await appServer.close();
1613
1787
  }
1614
1788
  }
1615
1789
  createRecapPrompt(recentAssistantText) {
@@ -1646,6 +1820,174 @@ export class CodexProvider {
1646
1820
  transcript,
1647
1821
  ].join("\n");
1648
1822
  }
1823
+ async generateForkBackedSummary(request) {
1824
+ const userPrompt = request.purpose === "session-retitle"
1825
+ ? this.createSessionRetitlePrompt(request)
1826
+ : request.purpose === "recap"
1827
+ ? this.createForkedRecapPrompt()
1828
+ : this.createForkAfterSummaryPrompt(request);
1829
+ const codexCommand = await this.resolveCodexCommand();
1830
+ const appServer = new CodexAppServerClient(codexCommand, request.cwd, this.getCodexEnv());
1831
+ const abortController = new AbortController();
1832
+ let timedOut = false;
1833
+ const abortFromRequest = () => {
1834
+ abortController.abort();
1835
+ void appServer.close();
1836
+ };
1837
+ if (request.signal?.aborted) {
1838
+ abortController.abort();
1839
+ }
1840
+ else {
1841
+ request.signal?.addEventListener("abort", abortFromRequest, {
1842
+ once: true,
1843
+ });
1844
+ }
1845
+ const timeout = setTimeout(() => {
1846
+ timedOut = true;
1847
+ abortController.abort();
1848
+ void appServer.close();
1849
+ }, CODEX_SUMMARY_TIMEOUT_MS);
1850
+ timeout.unref?.();
1851
+ appServer.setServerRequestHandler((serverRequest) => this.handleNonTurnServerRequest(serverRequest, "summary helper"));
1852
+ try {
1853
+ if (abortController.signal.aborted) {
1854
+ throw new DOMException("Summary generation cancelled", "AbortError");
1855
+ }
1856
+ await appServer.connect();
1857
+ const experimentalApiEnabled = await this.initializeAppServer(appServer);
1858
+ appServer.notify("initialized");
1859
+ const threadResult = await appServer.request("thread/resume", this.createForkSummaryThreadResumeParams(request, experimentalApiEnabled));
1860
+ const threadId = threadResult.thread.id || request.generatorSessionId;
1861
+ const turnResult = await appServer.request("turn/start", {
1862
+ threadId,
1863
+ input: [{ type: "text", text: userPrompt, text_elements: [] }],
1864
+ effort: "low",
1865
+ summary: "auto",
1866
+ approvalPolicy: "untrusted",
1867
+ });
1868
+ const textByItemId = new Map();
1869
+ this.captureRecapTextFromTurnItems(turnResult.turn.items, textByItemId);
1870
+ if (turnResult.turn.status === "failed") {
1871
+ throw new Error(turnResult.turn.error?.message ?? "Codex summary generation failed");
1872
+ }
1873
+ const turnId = turnResult.turn.id;
1874
+ let turnComplete = turnResult.turn.status !== "inProgress";
1875
+ while (!turnComplete && !abortController.signal.aborted) {
1876
+ const notification = await appServer.nextNotification(abortController.signal);
1877
+ this.captureRecapTextFromNotification(notification, textByItemId);
1878
+ if (notification.method === "turn/completed") {
1879
+ const completed = this.asTurnCompletedNotification(notification.params);
1880
+ if (completed?.turn.id !== turnId) {
1881
+ continue;
1882
+ }
1883
+ this.captureRecapTextFromTurnItems(completed.turn.items, textByItemId);
1884
+ if (completed.turn.status === "failed") {
1885
+ throw new Error(completed.turn.error?.message ??
1886
+ "Codex summary generation failed");
1887
+ }
1888
+ turnComplete = true;
1889
+ continue;
1890
+ }
1891
+ if (notification.method === "error") {
1892
+ const error = this.asErrorNotification(notification.params);
1893
+ if (error?.turnId === turnId && !error.willRetry) {
1894
+ throw new Error(error.error.message ?? "Codex summary generation failed");
1895
+ }
1896
+ }
1897
+ }
1898
+ if (abortController.signal.aborted) {
1899
+ if (request.signal?.aborted) {
1900
+ throw new DOMException("Summary generation cancelled", "AbortError");
1901
+ }
1902
+ throw new Error("Timed out generating Codex summary");
1903
+ }
1904
+ const cleaned = [...textByItemId.values()].join("\n").trim();
1905
+ if (!cleaned) {
1906
+ throw new Error("Summary generation returned empty text");
1907
+ }
1908
+ return { text: cleaned };
1909
+ }
1910
+ catch (error) {
1911
+ if (request.signal?.aborted) {
1912
+ throw new DOMException("Summary generation cancelled", "AbortError");
1913
+ }
1914
+ if (timedOut) {
1915
+ throw new Error("Timed out generating Codex summary");
1916
+ }
1917
+ throw error;
1918
+ }
1919
+ finally {
1920
+ clearTimeout(timeout);
1921
+ request.signal?.removeEventListener("abort", abortFromRequest);
1922
+ abortController.abort();
1923
+ await appServer.close();
1924
+ }
1925
+ }
1926
+ createForkSummaryThreadResumeParams(request, experimentalApiEnabled = false) {
1927
+ const params = {
1928
+ threadId: request.generatorSessionId,
1929
+ model: null,
1930
+ cwd: request.cwd,
1931
+ approvalPolicy: "untrusted",
1932
+ sandbox: "read-only",
1933
+ config: null,
1934
+ developerInstructions: request.purpose === "session-retitle"
1935
+ ? "You are a title helper. Reply with the session title only, no preamble. Do not call tools."
1936
+ : request.purpose === "recap"
1937
+ ? "You are a recap helper. Reply with the recap text only, no preamble. Do not call tools."
1938
+ : "You are a handoff summary helper. Reply with the summary text only, no preamble. Do not call tools.",
1939
+ };
1940
+ if (experimentalApiEnabled) {
1941
+ params.excludeTurns = true;
1942
+ }
1943
+ return params;
1944
+ }
1945
+ createForkAfterSummaryPrompt(request) {
1946
+ const instructions = request.instructions?.trim();
1947
+ const boundaryContext = request.afterTurnContext?.trim();
1948
+ return [
1949
+ "The first non-empty line must be a concise title of at most 120 characters, with no trailing period.",
1950
+ "Write it as: Title: <title>",
1951
+ "Then leave one blank line before the handoff summary.",
1952
+ "",
1953
+ "Summarize the useful state after the retained fork boundary for a peer-agent handoff.",
1954
+ `The target fork retains the conversation through completed-turn message id ${request.afterTurnMessageId}.`,
1955
+ boundaryContext
1956
+ ? `The retained boundary is the completed turn ending with this excerpt:\n${boundaryContext}`
1957
+ : undefined,
1958
+ "The target fork already includes the original request and the assistant/tool work through that selected completed turn.",
1959
+ "Do not repeat setup, instruction loading, initial repository orientation, or investigation already present in that retained prefix.",
1960
+ "Preserve decisions, constraints, current state, changed files, verification evidence, open risks, and the next useful action.",
1961
+ "Do not continue the task. Write text that can be submitted as the next user turn in the target fork.",
1962
+ instructions ? "" : undefined,
1963
+ instructions ? "Additional user instructions:" : undefined,
1964
+ instructions || undefined,
1965
+ ]
1966
+ .filter((part) => part !== undefined)
1967
+ .join("\n");
1968
+ }
1969
+ createForkedRecapPrompt() {
1970
+ return [
1971
+ "The user stepped away and is coming back.",
1972
+ "Recap the current session state in under 40 words, 1-2 plain sentences, no markdown.",
1973
+ "Lead with what the assistant did or is doing; mention any pending next action.",
1974
+ "Do not greet, do not ask a question, do not add a sign-off.",
1975
+ ].join("\n");
1976
+ }
1977
+ createSessionRetitlePrompt(request) {
1978
+ const lengthTarget = request.lengthTarget ?? 80;
1979
+ const currentTitle = request.currentTitle?.trim();
1980
+ return [
1981
+ "What is a good new title for this session?",
1982
+ "",
1983
+ `Target length: under ${lengthTarget} characters.`,
1984
+ currentTitle ? `Current title: ${currentTitle}` : undefined,
1985
+ "Prefer a concrete task/result phrase over a generic chat title.",
1986
+ "Return only the title. Do not quote it. Do not add a trailing period.",
1987
+ ]
1988
+ .filter((part) => part !== undefined)
1989
+ .join("\n");
1990
+ }
1649
1991
  async resolveRecapHelperModel(requestedModel) {
1650
1992
  if (!requestedModel || requestedModel !== HELPER_SIDE_MODEL_CHEAPEST) {
1651
1993
  return requestedModel ?? null;
@@ -1660,7 +2002,13 @@ export class CodexProvider {
1660
2002
  null);
1661
2003
  }
1662
2004
  handleRecapServerRequest(request) {
1663
- log.warn({ method: request.method, requestId: request.id }, "Declining Codex recap helper server request");
2005
+ return this.handleNonTurnServerRequest(request, "recap helper");
2006
+ }
2007
+ handleForkServerRequest(request) {
2008
+ return this.handleNonTurnServerRequest(request, "fork");
2009
+ }
2010
+ handleNonTurnServerRequest(request, purpose) {
2011
+ log.warn({ method: request.method, requestId: request.id, purpose }, "Declining Codex non-turn server request");
1664
2012
  switch (request.method) {
1665
2013
  case "item/commandExecution/requestApproval":
1666
2014
  case "item/fileChange/requestApproval":
@@ -2532,6 +2880,11 @@ export class CodexProvider {
2532
2880
  return { id, type: "agent_message", text };
2533
2881
  }
2534
2882
  case "command_execution": {
2883
+ const commandActions = (Array.isArray(itemRecord.commandActions)
2884
+ ? itemRecord.commandActions
2885
+ : Array.isArray(itemRecord.command_actions)
2886
+ ? itemRecord.command_actions
2887
+ : undefined) ?? undefined;
2535
2888
  return {
2536
2889
  id,
2537
2890
  type: "command_execution",
@@ -2543,6 +2896,7 @@ export class CodexProvider {
2543
2896
  this.getOptionalNumber(itemRecord.exitCode) ??
2544
2897
  undefined,
2545
2898
  status: this.normalizeStatus(itemRecord.status),
2899
+ ...(commandActions ? { commandActions } : {}),
2546
2900
  };
2547
2901
  }
2548
2902
  case "file_change": {
@@ -2650,6 +3004,18 @@ export class CodexProvider {
2650
3004
  items,
2651
3005
  };
2652
3006
  }
3007
+ case "sub_agent_activity": {
3008
+ const kind = this.getOptionalString(itemRecord.kind) ?? "updated";
3009
+ const agentPath = this.getOptionalString(itemRecord.agentPath) ?? "";
3010
+ return {
3011
+ id,
3012
+ type: "subagent_activity",
3013
+ kind,
3014
+ agentThreadId: this.getOptionalString(itemRecord.agentThreadId) ?? "",
3015
+ agentPath,
3016
+ text: this.formatSubagentActivity(kind, agentPath),
3017
+ };
3018
+ }
2653
3019
  case "context_compaction":
2654
3020
  return { id, type: "context_compaction" };
2655
3021
  case "image_view": {
@@ -2688,6 +3054,19 @@ export class CodexProvider {
2688
3054
  }
2689
3055
  return "";
2690
3056
  }
3057
+ formatSubagentActivity(kind, agentPath) {
3058
+ const target = agentPath ? `: ${agentPath}` : "";
3059
+ switch (kind) {
3060
+ case "started":
3061
+ return `Subagent started${target}`;
3062
+ case "interacted":
3063
+ return `Subagent updated${target}`;
3064
+ case "interrupted":
3065
+ return `Subagent interrupted${target}`;
3066
+ default:
3067
+ return `Subagent ${kind}${target}`;
3068
+ }
3069
+ }
2691
3070
  normalizeStatus(status) {
2692
3071
  if (typeof status !== "string")
2693
3072
  return "unknown";
@@ -2891,8 +3270,17 @@ export class CodexProvider {
2891
3270
  buildItemMessageUuid(turnId, itemId) {
2892
3271
  return `${itemId}-${turnId}`;
2893
3272
  }
2894
- buildItemResultUuid(turnId, itemId) {
2895
- return `${this.buildItemMessageUuid(turnId, itemId)}-result`;
3273
+ // Tool items carry Codex's globally-unique call_id as their thread item id,
3274
+ // and the durable rollout persists the same call_id on the matching response
3275
+ // item. Key the rendered uuid on call_id alone (no turn scoping — call_id is
3276
+ // already unique) so the streamed message and its durable backfill row share
3277
+ // a uuid and dedup by id instead of the content+timestamp backstop. See
3278
+ // topics/stream-durable-id-dedup.md (Codex tool calls).
3279
+ buildItemToolUuid(callId) {
3280
+ return callId;
3281
+ }
3282
+ buildItemResultUuid(callId) {
3283
+ return `${callId}-result`;
2896
3284
  }
2897
3285
  isResultBackedThreadItem(item) {
2898
3286
  return (item.type === "command_execution" ||
@@ -2901,6 +3289,12 @@ export class CodexProvider {
2901
3289
  item.type === "dynamic_tool_call" ||
2902
3290
  item.type === "image_view");
2903
3291
  }
3292
+ // Thread items whose rendered uuid keys on call_id (item.id) so the streamed
3293
+ // message matches its durable backfill row. web_search emits a tool_use but is
3294
+ // not result-backed, so it is not covered by isResultBackedThreadItem.
3295
+ isToolBackedThreadItem(item) {
3296
+ return this.isResultBackedThreadItem(item) || item.type === "web_search";
3297
+ }
2904
3298
  recordLiveResultBackedToolItem(liveEventState, turnId, itemId) {
2905
3299
  const items = liveEventState.resultBackedToolItemsByTurnId.get(turnId) ?? new Set();
2906
3300
  items.add(itemId);
@@ -2977,7 +3371,7 @@ export class CodexProvider {
2977
3371
  const message = withCodexTimestamp({
2978
3372
  type: "user",
2979
3373
  session_id: sessionId,
2980
- uuid: this.buildItemResultUuid(turnId, itemId),
3374
+ uuid: this.buildItemResultUuid(itemId),
2981
3375
  _isStreaming: true,
2982
3376
  message: {
2983
3377
  role: "user",
@@ -3030,7 +3424,7 @@ export class CodexProvider {
3030
3424
  const message = withCodexTimestamp({
3031
3425
  type: "assistant",
3032
3426
  session_id: sessionId,
3033
- uuid: this.buildItemMessageUuid(params.turnId, callId),
3427
+ uuid: this.buildItemToolUuid(callId),
3034
3428
  message: {
3035
3429
  role: "assistant",
3036
3430
  content: [
@@ -3074,7 +3468,7 @@ export class CodexProvider {
3074
3468
  const message = withCodexTimestamp({
3075
3469
  type: "user",
3076
3470
  session_id: sessionId,
3077
- uuid: this.buildItemResultUuid(params.turnId, callId),
3471
+ uuid: this.buildItemResultUuid(callId),
3078
3472
  message: {
3079
3473
  role: "user",
3080
3474
  content: [toolResult],
@@ -3110,7 +3504,7 @@ export class CodexProvider {
3110
3504
  const message = withCodexTimestamp({
3111
3505
  type: "assistant",
3112
3506
  session_id: sessionId,
3113
- uuid: this.buildItemMessageUuid(params.turnId, callId),
3507
+ uuid: this.buildItemToolUuid(callId),
3114
3508
  message: {
3115
3509
  role: "assistant",
3116
3510
  content: [
@@ -3154,7 +3548,7 @@ export class CodexProvider {
3154
3548
  const message = withCodexTimestamp({
3155
3549
  type: "user",
3156
3550
  session_id: sessionId,
3157
- uuid: this.buildItemResultUuid(params.turnId, callId),
3551
+ uuid: this.buildItemResultUuid(callId),
3158
3552
  message: {
3159
3553
  role: "user",
3160
3554
  content: [toolResult],
@@ -3200,8 +3594,12 @@ export class CodexProvider {
3200
3594
  convertItemToSDKMessages(item, sessionId, turnId, sourceEvent) {
3201
3595
  const isComplete = sourceEvent === "item/completed";
3202
3596
  const observedAt = new Date().toISOString();
3203
- // Create unique UUID by combining item.id with turn ID.
3204
- const uuid = `${item.id}-${turnId}`;
3597
+ // Tool items key the uuid on call_id (item.id) so stream and durable rows
3598
+ // dedup by id; message/reasoning items use a counter id (item-N) with no
3599
+ // durable equivalent, so they stay turn-scoped and rely on the backstop.
3600
+ const uuid = this.isToolBackedThreadItem(item)
3601
+ ? this.buildItemToolUuid(item.id)
3602
+ : `${item.id}-${turnId}`;
3205
3603
  switch (item.type) {
3206
3604
  case "reasoning": {
3207
3605
  const message = withCodexTimestamp({
@@ -3248,9 +3646,10 @@ export class CodexProvider {
3248
3646
  }
3249
3647
  case "command_execution": {
3250
3648
  const messages = [];
3251
- const normalizedInvocation = normalizeCodexToolInvocation("Bash", {
3252
- command: item.command,
3253
- });
3649
+ const normalizedInvocation = normalizeCodexCommandActionInvocation(item.command, item.commandActions) ??
3650
+ normalizeCodexToolInvocation("Bash", {
3651
+ command: item.command,
3652
+ });
3254
3653
  const toolContext = {
3255
3654
  toolName: normalizedInvocation.toolName,
3256
3655
  input: normalizedInvocation.input,
@@ -3566,6 +3965,26 @@ export class CodexProvider {
3566
3965
  });
3567
3966
  return [message];
3568
3967
  }
3968
+ case "subagent_activity": {
3969
+ const message = withCodexTimestamp({
3970
+ type: "system",
3971
+ subtype: "subagent_activity",
3972
+ session_id: sessionId,
3973
+ uuid,
3974
+ content: item.text,
3975
+ codexSubagentKind: item.kind,
3976
+ codexSubagentThreadId: item.agentThreadId,
3977
+ codexSubagentPath: item.agentPath,
3978
+ }, observedAt);
3979
+ logSdkCorrelationDebug(sessionId, message, {
3980
+ eventKind: "subagent_activity",
3981
+ turnId,
3982
+ itemId: item.id,
3983
+ phase: isComplete ? "completed" : "started",
3984
+ sourceEvent,
3985
+ });
3986
+ return [message];
3987
+ }
3569
3988
  case "context_compaction": {
3570
3989
  const message = withCodexTimestamp({
3571
3990
  type: "system",
@@ -3690,6 +4109,7 @@ export class CodexProvider {
3690
4109
  case "acceptEdits":
3691
4110
  case "plan":
3692
4111
  case "bypassPermissions":
4112
+ case "auto":
3693
4113
  return mode;
3694
4114
  default:
3695
4115
  return undefined;