@cloudcli-ai/cloudcli 1.37.1 → 1.37.3

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 (402) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/abnfDiagram-N423BO3Z-CJntskwA.js +1 -0
  3. package/dist/assets/arc-CIfH4uMN.js +1 -0
  4. package/dist/assets/architectureDiagram-T3A2C74G-_IpEkukg.js +36 -0
  5. package/dist/assets/blockDiagram-VBNYF7ZC-BttxrpgZ.js +132 -0
  6. package/dist/assets/c4Diagram-5PPSVZJV-g51dSRr1.js +10 -0
  7. package/dist/assets/channel-C5xU9jMw.js +1 -0
  8. package/dist/assets/chunk-2GRJ4B5K-D_-LbQUa.js +1 -0
  9. package/dist/assets/chunk-2Q5K7J3B-BtlHzwaO.js +1 -0
  10. package/dist/assets/chunk-5RXB4S5H-UzkpvpAT.js +231 -0
  11. package/dist/assets/chunk-5VM5RSS4-BKwx5Gag.js +15 -0
  12. package/dist/assets/chunk-6Q2QTUOP-D_KEBH5f.js +88 -0
  13. package/dist/assets/chunk-GF5L2VYU-rK2DGyto.js +206 -0
  14. package/dist/assets/chunk-JWPE2WC7-CeBl_N9i.js +1 -0
  15. package/dist/assets/chunk-KBJHAD2P-BiQLWVIr.js +1 -0
  16. package/dist/assets/chunk-RYQCIY6F-C1knVGV5.js +1 -0
  17. package/dist/assets/chunk-XXDRQBXY-CtKbJkvF.js +1 -0
  18. package/dist/assets/classDiagram-JCYQIIEL-CRrL3vp7.js +1 -0
  19. package/dist/assets/classDiagram-v2-OCEON4UE-CRrL3vp7.js +1 -0
  20. package/dist/assets/cose-bilkent-JH36ORCC-DjX8y40Z.js +1 -0
  21. package/dist/assets/cynefin-VYW2F7L2-DM6YeRba.js +178 -0
  22. package/dist/assets/cynefinDiagram-MW4NZA55-wZJ-vy5B.js +62 -0
  23. package/dist/assets/cytoscape.esm-C10L9Icf.js +331 -0
  24. package/dist/assets/dagre-VZM6K2ZE-BzP0ejkH.js +4 -0
  25. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  26. package/dist/assets/diagram-7IWD3JNH-BTL_j23J.js +30 -0
  27. package/dist/assets/diagram-B4RE2ZJO-Cf1Norgu.js +3 -0
  28. package/dist/assets/diagram-LBJQPF4R-DPiUEKr-.js +24 -0
  29. package/dist/assets/diagram-Q27KOJAE-CTcTpiz5.js +24 -0
  30. package/dist/assets/diagram-UB23O5K3-DPMSdYm0.js +41 -0
  31. package/dist/assets/ebnfDiagram-BXEA7PRR-7yvD6uiF.js +1 -0
  32. package/dist/assets/erDiagram-JOGREHBK-CfgeDoV6.js +85 -0
  33. package/dist/assets/flowDiagram-UKHOOZJN-B27ng5zu.js +156 -0
  34. package/dist/assets/ganttDiagram-PKOTCBZU-CcC6b_7t.js +292 -0
  35. package/dist/assets/gitGraphDiagram-DS77QQ5N-BX5kPGrO.js +106 -0
  36. package/dist/assets/graph-Cx-EqisW.js +1 -0
  37. package/dist/assets/index-BTDHQ6Id.css +32 -0
  38. package/dist/assets/index-sFfz8iBR.js +4931 -0
  39. package/dist/assets/infoDiagram-6WML65LV-CUP-SlN4.js +2 -0
  40. package/dist/assets/init-Gi6I4Gst.js +1 -0
  41. package/dist/assets/ishikawaDiagram-WSZJBQD7-BTTDhOpX.js +70 -0
  42. package/dist/assets/journeyDiagram-NVQOT4AX-ARXcc61m.js +139 -0
  43. package/dist/assets/kanban-definition-27J2QSJJ-BieMpqMA.js +89 -0
  44. package/dist/assets/layout-D6BstSzF.js +1 -0
  45. package/dist/assets/linear-61vxjRnP.js +1 -0
  46. package/dist/assets/map-CV9uif0g.js +1 -0
  47. package/dist/assets/mermaid.core-nhnwkfQx.js +312 -0
  48. package/dist/assets/mindmap-definition-FAOFIHXS-Cm6x5vT1.js +96 -0
  49. package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  50. package/dist/assets/pegDiagram-VL7TDLO6-CcYBq_9H.js +1 -0
  51. package/dist/assets/pieDiagram-7S7Q4E2Y-CfvIjfzo.js +39 -0
  52. package/dist/assets/quadrantDiagram-CIZ2JOQS-SgYoWPNb.js +7 -0
  53. package/dist/assets/railroadDiagram-AXF67PYL-D2Mu5E_f.js +1 -0
  54. package/dist/assets/requirementDiagram-LRYGKXZP-Azwe_k4Q.js +84 -0
  55. package/dist/assets/sankeyDiagram-W5VNT64P-DN1Ju3PA.js +40 -0
  56. package/dist/assets/sequenceDiagram-SI44F4Z6-Bj4qC34S.js +162 -0
  57. package/dist/assets/server.browser-CtX3Hdl5.js +27 -0
  58. package/dist/assets/sizeCapture-X5ZJPWSS-Co4PdklG.js +1 -0
  59. package/dist/assets/stateDiagram-OKZ733FA-nOvL9dRC.js +1 -0
  60. package/dist/assets/stateDiagram-v2-UEYNNEHI-DNv8ppw7.js +1 -0
  61. package/dist/assets/swimlanes-SLNWSIFB-CCK3wMid.js +2 -0
  62. package/dist/assets/swimlanesDiagram-ULZ7WXOC-DnfbNQEp.js +8 -0
  63. package/dist/assets/timeline-definition-Z64GVDOM-BC29RNFm.js +120 -0
  64. package/dist/assets/{vendor-codemirror-OwyKSvPE.js → vendor-codemirror-CYrSt7-U.js} +18 -18
  65. package/dist/assets/vennDiagram-T6HMQDX7-pZlZCtEo.js +34 -0
  66. package/dist/assets/wardleyDiagram-T6FBY63Y-De8k2-zM.js +78 -0
  67. package/dist/assets/xychartDiagram-ELKLHX3M-Bk8ykH0w.js +7 -0
  68. package/dist/index.html +3 -3
  69. package/dist-server/server/index.js +8 -5
  70. package/dist-server/server/index.js.map +1 -1
  71. package/dist-server/server/modules/agent/agent.module.js +2 -1
  72. package/dist-server/server/modules/agent/agent.module.js.map +1 -1
  73. package/dist-server/server/modules/agent/agent.routes.js +2 -2
  74. package/dist-server/server/modules/agent/agent.routes.js.map +1 -1
  75. package/dist-server/server/modules/agent/tests/agent.routes.test.js +30 -1
  76. package/dist-server/server/modules/agent/tests/agent.routes.test.js.map +1 -1
  77. package/dist-server/server/modules/auth/auth.middleware.js +1 -1
  78. package/dist-server/server/modules/auth/auth.middleware.js.map +1 -1
  79. package/dist-server/server/modules/browser-use/browser-use-runtime.js +10 -0
  80. package/dist-server/server/modules/browser-use/browser-use-runtime.js.map +1 -0
  81. package/dist-server/server/modules/browser-use/browser-use.routes.js +39 -33
  82. package/dist-server/server/modules/browser-use/browser-use.routes.js.map +1 -1
  83. package/dist-server/server/modules/browser-use/browser-use.service.js +3 -6
  84. package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
  85. package/dist-server/server/modules/browser-use/index.js +2 -0
  86. package/dist-server/server/modules/browser-use/index.js.map +1 -1
  87. package/dist-server/server/modules/cli/cli.js +9 -3
  88. package/dist-server/server/modules/cli/cli.js.map +1 -1
  89. package/dist-server/server/modules/cli/cli.module.js +0 -1
  90. package/dist-server/server/modules/cli/cli.module.js.map +1 -1
  91. package/dist-server/server/modules/cli/cli.service.js +0 -18
  92. package/dist-server/server/modules/cli/cli.service.js.map +1 -1
  93. package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js +154 -0
  94. package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js.map +1 -0
  95. package/dist-server/server/modules/cli/tests/cli.service.test.js +0 -3
  96. package/dist-server/server/modules/cli/tests/cli.service.test.js.map +1 -1
  97. package/dist-server/server/modules/database/connection.js +1 -1
  98. package/dist-server/server/modules/database/connection.js.map +1 -1
  99. package/dist-server/server/modules/database/index.js +5 -0
  100. package/dist-server/server/modules/database/index.js.map +1 -1
  101. package/dist-server/server/modules/database/migrations.js +32 -1
  102. package/dist-server/server/modules/database/migrations.js.map +1 -1
  103. package/dist-server/server/modules/database/repositories/scheduled-messages.db.js +71 -0
  104. package/dist-server/server/modules/database/repositories/scheduled-messages.db.js.map +1 -0
  105. package/dist-server/server/modules/database/repositories/session-drafts.db.js +105 -0
  106. package/dist-server/server/modules/database/repositories/session-drafts.db.js.map +1 -0
  107. package/dist-server/server/modules/database/repositories/sessions.db.js +137 -5
  108. package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
  109. package/dist-server/server/modules/database/repositories/user-preferences.db.js +65 -0
  110. package/dist-server/server/modules/database/repositories/user-preferences.db.js.map +1 -0
  111. package/dist-server/server/modules/database/schema.js +92 -0
  112. package/dist-server/server/modules/database/schema.js.map +1 -1
  113. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +39 -0
  114. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
  115. package/dist-server/server/modules/database/tests/user-preferences.db.integration.test.js +105 -0
  116. package/dist-server/server/modules/database/tests/user-preferences.db.integration.test.js.map +1 -0
  117. package/dist-server/server/modules/file-tree/file-tree.service.js +18 -10
  118. package/dist-server/server/modules/file-tree/file-tree.service.js.map +1 -1
  119. package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js +62 -11
  120. package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js.map +1 -1
  121. package/dist-server/server/modules/git/git-branch.service.js +15 -0
  122. package/dist-server/server/modules/git/git-branch.service.js.map +1 -0
  123. package/dist-server/server/modules/git/git.routes.js +15 -7
  124. package/dist-server/server/modules/git/git.routes.js.map +1 -1
  125. package/dist-server/server/modules/git/tests/git-branch.service.test.js +52 -0
  126. package/dist-server/server/modules/git/tests/git-branch.service.test.js.map +1 -0
  127. package/dist-server/server/modules/git/tests/git-init.routes.test.js +84 -0
  128. package/dist-server/server/modules/git/tests/git-init.routes.test.js.map +1 -1
  129. package/dist-server/server/modules/notifications/index.js +3 -1
  130. package/dist-server/server/modules/notifications/index.js.map +1 -1
  131. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +22 -1
  132. package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -1
  133. package/dist-server/server/modules/projects/services/project-delete.service.js +12 -1
  134. package/dist-server/server/modules/projects/services/project-delete.service.js.map +1 -1
  135. package/dist-server/server/modules/projects/services/project-star.service.js +2 -2
  136. package/dist-server/server/modules/projects/services/project-star.service.js.map +1 -1
  137. package/dist-server/server/modules/providers/index.js +3 -0
  138. package/dist-server/server/modules/providers/index.js.map +1 -1
  139. package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js +20 -1
  140. package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js.map +1 -1
  141. package/dist-server/server/modules/providers/list/claude/claude-fork.provider.js +46 -0
  142. package/dist-server/server/modules/providers/list/claude/claude-fork.provider.js.map +1 -0
  143. package/dist-server/server/modules/providers/list/claude/claude-models.provider.js +35 -6
  144. package/dist-server/server/modules/providers/list/claude/claude-models.provider.js.map +1 -1
  145. package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js +422 -86
  146. package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js.map +1 -1
  147. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +388 -50
  148. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -1
  149. package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js +4 -1
  150. package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js.map +1 -1
  151. package/dist-server/server/modules/providers/list/claude/claude.provider.js +2 -0
  152. package/dist-server/server/modules/providers/list/claude/claude.provider.js.map +1 -1
  153. package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js +204 -0
  154. package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js.map +1 -0
  155. package/dist-server/server/modules/providers/list/codex/codex-fork.provider.js +32 -0
  156. package/dist-server/server/modules/providers/list/codex/codex-fork.provider.js.map +1 -0
  157. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +16 -0
  158. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
  159. package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js +60 -49
  160. package/dist-server/server/modules/providers/list/codex/codex-runtime.provider.js.map +1 -1
  161. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +8 -0
  162. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
  163. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +1565 -432
  164. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
  165. package/dist-server/server/modules/providers/list/codex/codex.provider.js +2 -0
  166. package/dist-server/server/modules/providers/list/codex/codex.provider.js.map +1 -1
  167. package/dist-server/server/modules/providers/list/cursor/cursor-runtime.provider.js +8 -6
  168. package/dist-server/server/modules/providers/list/cursor/cursor-runtime.provider.js.map +1 -1
  169. package/dist-server/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.js.map +1 -1
  170. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +258 -6
  171. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js.map +1 -1
  172. package/dist-server/server/modules/providers/provider.routes.js +29 -0
  173. package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
  174. package/dist-server/server/modules/providers/services/provider-capabilities.service.js +14 -0
  175. package/dist-server/server/modules/providers/services/provider-capabilities.service.js.map +1 -1
  176. package/dist-server/server/modules/providers/services/provider-token-usage.service.js +139 -35
  177. package/dist-server/server/modules/providers/services/provider-token-usage.service.js.map +1 -1
  178. package/dist-server/server/modules/providers/services/session-conversations-search.service.js +63 -7
  179. package/dist-server/server/modules/providers/services/session-conversations-search.service.js.map +1 -1
  180. package/dist-server/server/modules/providers/services/session-history-cache.service.js +87 -0
  181. package/dist-server/server/modules/providers/services/session-history-cache.service.js.map +1 -0
  182. package/dist-server/server/modules/providers/services/session-synchronizer.service.js +105 -32
  183. package/dist-server/server/modules/providers/services/session-synchronizer.service.js.map +1 -1
  184. package/dist-server/server/modules/providers/services/sessions-watcher.service.js +3 -60
  185. package/dist-server/server/modules/providers/services/sessions-watcher.service.js.map +1 -1
  186. package/dist-server/server/modules/providers/services/sessions.service.js +179 -9
  187. package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
  188. package/dist-server/server/modules/providers/tests/claude-auth.test.js +52 -0
  189. package/dist-server/server/modules/providers/tests/claude-auth.test.js.map +1 -1
  190. package/dist-server/server/modules/providers/tests/claude-models.test.js +39 -0
  191. package/dist-server/server/modules/providers/tests/claude-models.test.js.map +1 -0
  192. package/dist-server/server/modules/providers/tests/claude-sessions.test.js +465 -39
  193. package/dist-server/server/modules/providers/tests/claude-sessions.test.js.map +1 -1
  194. package/dist-server/server/modules/providers/tests/claude-subagent-echo.test.js +16 -0
  195. package/dist-server/server/modules/providers/tests/claude-subagent-echo.test.js.map +1 -0
  196. package/dist-server/server/modules/providers/tests/claude-token-budget.test.js +85 -0
  197. package/dist-server/server/modules/providers/tests/claude-token-budget.test.js.map +1 -0
  198. package/dist-server/server/modules/providers/tests/codex-message-editing.test.js +338 -0
  199. package/dist-server/server/modules/providers/tests/codex-message-editing.test.js.map +1 -0
  200. package/dist-server/server/modules/providers/tests/codex-runtime.test.js +51 -0
  201. package/dist-server/server/modules/providers/tests/codex-runtime.test.js.map +1 -0
  202. package/dist-server/server/modules/providers/tests/codex-session-fork.test.js +54 -0
  203. package/dist-server/server/modules/providers/tests/codex-session-fork.test.js.map +1 -0
  204. package/dist-server/server/modules/providers/tests/codex-sessions.test.js +304 -15
  205. package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
  206. package/dist-server/server/modules/providers/tests/opencode-models.test.js +117 -4
  207. package/dist-server/server/modules/providers/tests/opencode-models.test.js.map +1 -1
  208. package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +164 -1
  209. package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js.map +1 -1
  210. package/dist-server/server/modules/providers/tests/provider.routes.test.js +35 -0
  211. package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -1
  212. package/dist-server/server/modules/providers/tests/session-fork.test.js +113 -0
  213. package/dist-server/server/modules/providers/tests/session-fork.test.js.map +1 -0
  214. package/dist-server/server/modules/providers/tests/session-history-cache.service.test.js +120 -0
  215. package/dist-server/server/modules/providers/tests/session-history-cache.service.test.js.map +1 -0
  216. package/dist-server/server/modules/providers/tests/session-orphan-prune.test.js +90 -0
  217. package/dist-server/server/modules/providers/tests/session-orphan-prune.test.js.map +1 -0
  218. package/dist-server/server/modules/providers/tests/session-synchronizer-coalescing.test.js +122 -0
  219. package/dist-server/server/modules/providers/tests/session-synchronizer-coalescing.test.js.map +1 -0
  220. package/dist-server/server/modules/providers/tests/sessions.service.test.js +45 -1
  221. package/dist-server/server/modules/providers/tests/sessions.service.test.js.map +1 -1
  222. package/dist-server/server/modules/providers/tests/skills.test.js +15 -3
  223. package/dist-server/server/modules/providers/tests/skills.test.js.map +1 -1
  224. package/dist-server/server/modules/scheduled-messages/index.js +5 -0
  225. package/dist-server/server/modules/scheduled-messages/index.js.map +1 -0
  226. package/dist-server/server/modules/scheduled-messages/scheduled-messages.routes.js +47 -0
  227. package/dist-server/server/modules/scheduled-messages/scheduled-messages.routes.js.map +1 -0
  228. package/dist-server/server/modules/scheduled-messages/services/scheduled-message-dispatcher.service.js +163 -0
  229. package/dist-server/server/modules/scheduled-messages/services/scheduled-message-dispatcher.service.js.map +1 -0
  230. package/dist-server/server/modules/scheduled-messages/services/scheduled-messages.service.js +95 -0
  231. package/dist-server/server/modules/scheduled-messages/services/scheduled-messages.service.js.map +1 -0
  232. package/dist-server/server/modules/scheduled-messages/tests/scheduled-messages.test.js +255 -0
  233. package/dist-server/server/modules/scheduled-messages/tests/scheduled-messages.test.js.map +1 -0
  234. package/dist-server/server/modules/taskmaster/taskmaster.routes.js +23 -23
  235. package/dist-server/server/modules/taskmaster/taskmaster.routes.js.map +1 -1
  236. package/dist-server/server/modules/taskmaster/tests/taskmaster.routes.test.js +48 -0
  237. package/dist-server/server/modules/taskmaster/tests/taskmaster.routes.test.js.map +1 -1
  238. package/dist-server/server/modules/user/tests/user.service.test.js +70 -0
  239. package/dist-server/server/modules/user/tests/user.service.test.js.map +1 -1
  240. package/dist-server/server/modules/user/user.module.js +10 -1
  241. package/dist-server/server/modules/user/user.module.js.map +1 -1
  242. package/dist-server/server/modules/user/user.routes.js +44 -0
  243. package/dist-server/server/modules/user/user.routes.js.map +1 -1
  244. package/dist-server/server/modules/user/user.service.js +75 -0
  245. package/dist-server/server/modules/user/user.service.js.map +1 -1
  246. package/dist-server/server/modules/voice/tests/voice.service.test.js +3 -2
  247. package/dist-server/server/modules/voice/tests/voice.service.test.js.map +1 -1
  248. package/dist-server/server/modules/websocket/index.js +7 -0
  249. package/dist-server/server/modules/websocket/index.js.map +1 -1
  250. package/dist-server/server/modules/websocket/services/chat-run-registry.service.js +10 -44
  251. package/dist-server/server/modules/websocket/services/chat-run-registry.service.js.map +1 -1
  252. package/dist-server/server/modules/websocket/services/chat-session-writer.service.js +35 -5
  253. package/dist-server/server/modules/websocket/services/chat-session-writer.service.js.map +1 -1
  254. package/dist-server/server/modules/websocket/services/chat-websocket.service.js +166 -9
  255. package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
  256. package/dist-server/server/modules/websocket/services/session-upsert-broadcast.service.js +94 -0
  257. package/dist-server/server/modules/websocket/services/session-upsert-broadcast.service.js.map +1 -0
  258. package/dist-server/server/modules/websocket/services/shell-websocket.service.js +9 -3
  259. package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
  260. package/dist-server/server/modules/websocket/tests/chat-edit-send.test.js +263 -0
  261. package/dist-server/server/modules/websocket/tests/chat-edit-send.test.js.map +1 -0
  262. package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js +29 -3
  263. package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js.map +1 -1
  264. package/dist-server/server/modules/websocket/tests/session-upsert-broadcast.test.js +106 -0
  265. package/dist-server/server/modules/websocket/tests/session-upsert-broadcast.test.js.map +1 -0
  266. package/dist-server/server/modules/websocket/tests/shell-websocket.service.test.js +80 -0
  267. package/dist-server/server/modules/websocket/tests/shell-websocket.service.test.js.map +1 -1
  268. package/dist-server/server/shared/claude-cli-path.js +22 -5
  269. package/dist-server/server/shared/claude-cli-path.js.map +1 -1
  270. package/dist-server/server/shared/index.js +3 -0
  271. package/dist-server/server/shared/index.js.map +1 -0
  272. package/dist-server/server/shared/message-unification.js +376 -0
  273. package/dist-server/server/shared/message-unification.js.map +1 -0
  274. package/dist-server/server/shared/tests/claude-cli-path.test.js +45 -1
  275. package/dist-server/server/shared/tests/claude-cli-path.test.js.map +1 -1
  276. package/dist-server/server/shared/tests/message-unification.test.js +174 -0
  277. package/dist-server/server/shared/tests/message-unification.test.js.map +1 -0
  278. package/dist-server/server/shared/utils.js +42 -0
  279. package/dist-server/server/shared/utils.js.map +1 -1
  280. package/package.json +23 -16
  281. package/scripts/promote-dist-server.mjs +50 -0
  282. package/server/index.ts +12 -6
  283. package/server/modules/agent/agent.module.ts +2 -1
  284. package/server/modules/agent/agent.routes.ts +2 -2
  285. package/server/modules/agent/tests/agent.routes.test.ts +33 -1
  286. package/server/modules/auth/auth.middleware.ts +2 -2
  287. package/server/modules/browser-use/browser-use-runtime.ts +10 -0
  288. package/server/modules/browser-use/browser-use.routes.ts +96 -33
  289. package/server/modules/browser-use/browser-use.service.ts +5 -8
  290. package/server/modules/browser-use/index.ts +3 -0
  291. package/server/modules/cli/cli.module.ts +0 -1
  292. package/server/modules/cli/cli.service.ts +0 -20
  293. package/server/modules/cli/cli.ts +9 -3
  294. package/server/modules/cli/tests/cli-environment-bootstrap.test.ts +186 -0
  295. package/server/modules/cli/tests/cli.service.test.ts +0 -3
  296. package/server/modules/database/connection.ts +2 -1
  297. package/server/modules/database/index.ts +10 -0
  298. package/server/modules/database/migrations.ts +37 -0
  299. package/server/modules/database/repositories/scheduled-messages.db.ts +127 -0
  300. package/server/modules/database/repositories/session-drafts.db.ts +171 -0
  301. package/server/modules/database/repositories/sessions.db.ts +196 -3
  302. package/server/modules/database/repositories/user-preferences.db.ts +80 -0
  303. package/server/modules/database/schema.ts +96 -0
  304. package/server/modules/database/tests/sessions.db.integration.test.ts +52 -0
  305. package/server/modules/database/tests/user-preferences.db.integration.test.ts +135 -0
  306. package/server/modules/file-tree/file-tree.service.ts +21 -10
  307. package/server/modules/file-tree/tests/file-tree.service.test.ts +65 -11
  308. package/server/modules/git/git-branch.service.ts +43 -0
  309. package/server/modules/git/git.routes.ts +16 -9
  310. package/server/modules/git/tests/git-branch.service.test.ts +60 -0
  311. package/server/modules/git/tests/git-init.routes.test.ts +83 -0
  312. package/server/modules/notifications/index.ts +2 -0
  313. package/server/modules/notifications/services/notification-orchestrator.service.js +24 -1
  314. package/server/modules/projects/services/project-delete.service.ts +13 -1
  315. package/server/modules/projects/services/project-star.service.ts +2 -2
  316. package/server/modules/providers/index.ts +4 -0
  317. package/server/modules/providers/list/claude/claude-auth.provider.ts +21 -1
  318. package/server/modules/providers/list/claude/claude-fork.provider.ts +57 -0
  319. package/server/modules/providers/list/claude/claude-models.provider.ts +38 -6
  320. package/server/modules/providers/list/claude/claude-runtime.provider.js +463 -93
  321. package/server/modules/providers/list/claude/claude-sessions.provider.ts +478 -54
  322. package/server/modules/providers/list/claude/claude-skills.provider.ts +4 -1
  323. package/server/modules/providers/list/claude/claude.provider.ts +3 -0
  324. package/server/modules/providers/list/codex/codex-app-server.client.ts +243 -0
  325. package/server/modules/providers/list/codex/codex-fork.provider.ts +40 -0
  326. package/server/modules/providers/list/codex/codex-models.provider.ts +16 -0
  327. package/server/modules/providers/list/codex/{codex-runtime.provider.js → codex-runtime.provider.ts} +93 -66
  328. package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +9 -0
  329. package/server/modules/providers/list/codex/codex-sessions.provider.ts +1806 -477
  330. package/server/modules/providers/list/codex/codex.provider.ts +3 -0
  331. package/server/modules/providers/list/cursor/cursor-runtime.provider.js +8 -6
  332. package/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.ts +0 -1
  333. package/server/modules/providers/list/opencode/opencode-models.provider.ts +279 -6
  334. package/server/modules/providers/provider.routes.ts +36 -0
  335. package/server/modules/providers/services/provider-capabilities.service.ts +23 -0
  336. package/server/modules/providers/services/provider-token-usage.service.ts +166 -39
  337. package/server/modules/providers/services/session-conversations-search.service.ts +94 -7
  338. package/server/modules/providers/services/session-history-cache.service.ts +139 -0
  339. package/server/modules/providers/services/session-synchronizer.service.ts +125 -38
  340. package/server/modules/providers/services/sessions-watcher.service.ts +3 -64
  341. package/server/modules/providers/services/sessions.service.ts +201 -9
  342. package/server/modules/providers/tests/claude-auth.test.ts +58 -0
  343. package/server/modules/providers/tests/claude-models.test.ts +87 -0
  344. package/server/modules/providers/tests/claude-sessions.test.ts +552 -40
  345. package/server/modules/providers/tests/claude-subagent-echo.test.ts +25 -0
  346. package/server/modules/providers/tests/claude-token-budget.test.ts +104 -0
  347. package/server/modules/providers/tests/codex-message-editing.test.ts +419 -0
  348. package/server/modules/providers/tests/codex-runtime.test.ts +58 -0
  349. package/server/modules/providers/tests/codex-session-fork.test.ts +59 -0
  350. package/server/modules/providers/tests/codex-sessions.test.ts +337 -15
  351. package/server/modules/providers/tests/opencode-models.test.ts +166 -8
  352. package/server/modules/providers/tests/provider-token-usage.service.test.ts +188 -1
  353. package/server/modules/providers/tests/provider.routes.test.ts +61 -0
  354. package/server/modules/providers/tests/session-fork.test.ts +173 -0
  355. package/server/modules/providers/tests/session-history-cache.service.test.ts +143 -0
  356. package/server/modules/providers/tests/session-orphan-prune.test.ts +107 -0
  357. package/server/modules/providers/tests/session-synchronizer-coalescing.test.ts +136 -0
  358. package/server/modules/providers/tests/sessions.service.test.ts +67 -1
  359. package/server/modules/providers/tests/skills.test.ts +21 -5
  360. package/server/modules/scheduled-messages/index.ts +8 -0
  361. package/server/modules/scheduled-messages/scheduled-messages.routes.ts +68 -0
  362. package/server/modules/scheduled-messages/services/scheduled-message-dispatcher.service.ts +203 -0
  363. package/server/modules/scheduled-messages/services/scheduled-messages.service.ts +121 -0
  364. package/server/modules/scheduled-messages/tests/scheduled-messages.test.ts +310 -0
  365. package/server/modules/taskmaster/taskmaster.routes.ts +23 -33
  366. package/server/modules/taskmaster/tests/taskmaster.routes.test.ts +57 -0
  367. package/server/modules/user/tests/user.service.test.ts +90 -0
  368. package/server/modules/user/user.module.ts +10 -1
  369. package/server/modules/user/user.routes.ts +44 -0
  370. package/server/modules/user/user.service.ts +105 -0
  371. package/server/modules/voice/tests/voice.service.test.ts +3 -2
  372. package/server/modules/websocket/index.ts +8 -0
  373. package/server/modules/websocket/services/chat-run-registry.service.ts +17 -50
  374. package/server/modules/websocket/services/chat-session-writer.service.ts +36 -6
  375. package/server/modules/websocket/services/chat-websocket.service.ts +244 -15
  376. package/server/modules/websocket/services/session-upsert-broadcast.service.ts +108 -0
  377. package/server/modules/websocket/services/shell-websocket.service.ts +10 -3
  378. package/server/modules/websocket/tests/chat-edit-send.test.ts +309 -0
  379. package/server/modules/websocket/tests/chat-run-registry.test.ts +34 -3
  380. package/server/modules/websocket/tests/session-upsert-broadcast.test.ts +138 -0
  381. package/server/modules/websocket/tests/shell-websocket.service.test.ts +108 -0
  382. package/server/shared/claude-cli-path.ts +24 -6
  383. package/server/shared/index.ts +3 -0
  384. package/server/shared/interfaces.ts +62 -0
  385. package/server/shared/message-unification.ts +449 -0
  386. package/server/shared/tests/claude-cli-path.test.ts +58 -1
  387. package/server/shared/tests/message-unification.test.ts +218 -0
  388. package/server/shared/types.ts +123 -3
  389. package/server/shared/utils.ts +50 -0
  390. package/server/tsconfig.json +6 -2
  391. package/README.de.md +0 -257
  392. package/README.ja.md +0 -249
  393. package/README.ko.md +0 -249
  394. package/README.ru.md +0 -257
  395. package/README.tr.md +0 -258
  396. package/README.zh-CN.md +0 -249
  397. package/README.zh-TW.md +0 -249
  398. package/dist/assets/index-D3jfzuKN.css +0 -32
  399. package/dist/assets/index-DTMWjJj8.js +0 -1550
  400. package/dist-server/server/constants/config.js +0 -6
  401. package/dist-server/server/constants/config.js.map +0 -1
  402. package/server/constants/config.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"sessions-watcher.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/sessions-watcher.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions-watcher.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/sessions-watcher.service.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@ import { randomUUID } from 'node:crypto';
2
2
  import fsp from 'node:fs/promises';
3
3
  import path from 'node:path';
4
4
  import { projectsDb, sessionsDb } from '../../../modules/database/index.js';
5
- import { chatRunRegistry } from '../../../modules/websocket/index.js';
5
+ import { broadcastSessionUpserted, chatRunRegistry } from '../../../modules/websocket/index.js';
6
6
  import { providerRegistry } from '../../../modules/providers/provider.registry.js';
7
- import { AppError } from '../../../shared/utils.js';
7
+ import { sessionHistoryCache } from '../../../modules/providers/services/session-history-cache.service.js';
8
+ import { AppError, sliceTailPage } from '../../../shared/utils.js';
8
9
  const MAX_CLOUDCLI_SESSION_NAME_WORDS = 4;
9
10
  function buildCloudCliSessionName(initialMessage) {
10
11
  const words = initialMessage.trim().split(/\s+/).filter(Boolean);
@@ -145,6 +146,68 @@ export const sessionsService = {
145
146
  sessionName,
146
147
  };
147
148
  },
149
+ /**
150
+ * Branches a session into an independent one containing its conversation up
151
+ * to `upToAnchorId` (the whole thing when omitted).
152
+ *
153
+ * The source is left completely untouched — this is the "try two approaches"
154
+ * action, not a destructive one.
155
+ */
156
+ async forkSessionById(sessionId, options = {}) {
157
+ const source = sessionsDb.getSessionById(sessionId);
158
+ if (!source) {
159
+ throw new AppError(`Session "${sessionId}" was not found.`, {
160
+ code: 'SESSION_NOT_FOUND',
161
+ statusCode: 404,
162
+ });
163
+ }
164
+ const provider = source.provider;
165
+ const fork = providerRegistry.resolveProvider(provider).fork;
166
+ if (!fork) {
167
+ throw new AppError(`Sessions cannot be forked for provider "${provider}".`, {
168
+ code: 'FORK_NOT_SUPPORTED',
169
+ statusCode: 409,
170
+ });
171
+ }
172
+ // A session that has never run has no transcript to copy, so there is
173
+ // nothing a fork of it could resume from.
174
+ if (!source.provider_session_id || !source.jsonl_path) {
175
+ throw new AppError('This session has not produced a transcript yet.', {
176
+ code: 'FORK_SOURCE_NOT_READY',
177
+ statusCode: 409,
178
+ });
179
+ }
180
+ const sessionName = options.title?.trim()
181
+ || `${source.custom_name?.trim() || 'Session'} (fork)`;
182
+ const forked = await fork.forkSession({
183
+ providerSessionId: source.provider_session_id,
184
+ jsonlPath: source.jsonl_path,
185
+ projectPath: source.project_path ?? '',
186
+ upToAnchorId: options.upToAnchorId,
187
+ title: sessionName,
188
+ });
189
+ const forkSessionId = randomUUID();
190
+ sessionsDb.createForkedSession({
191
+ sessionId: forkSessionId,
192
+ provider,
193
+ projectPath: source.project_path ?? '',
194
+ customName: sessionName,
195
+ providerSessionId: forked.providerSessionId,
196
+ jsonlPath: forked.jsonlPath,
197
+ forkedFromSessionId: sessionId,
198
+ // A fork that silently dropped to the catalog default would answer
199
+ // differently from the conversation it was branched from.
200
+ model: source.model,
201
+ effort: source.effort,
202
+ });
203
+ await broadcastSessionUpserted(forkSessionId);
204
+ return {
205
+ sessionId: forkSessionId,
206
+ provider,
207
+ projectPath: source.project_path ?? '',
208
+ sessionName,
209
+ };
210
+ },
148
211
  /**
149
212
  * Resolves the provider-native id only for an explicit user copy action.
150
213
  * Normal session payloads continue to expose only the stable app id.
@@ -174,6 +237,63 @@ export const sessionsService = {
174
237
  * and every returned message is remapped back to the app session id so
175
238
  * provider ids never reach the frontend.
176
239
  */
240
+ /**
241
+ * Resolves where a conversation must resume from so that one already-sent
242
+ * message, and everything after it, is replaced.
243
+ *
244
+ * Returns `null` when the provider cannot do this at all, which is how the
245
+ * chat gateway knows to refuse the request rather than silently sending the
246
+ * edit as a new message at the end of the conversation.
247
+ */
248
+ async resolveEditAnchor(sessionId, anchorId) {
249
+ const session = sessionsDb.getSessionById(sessionId);
250
+ if (!session) {
251
+ throw new AppError(`Session "${sessionId}" was not found.`, {
252
+ code: 'SESSION_NOT_FOUND',
253
+ statusCode: 404,
254
+ });
255
+ }
256
+ const sessions = providerRegistry.resolveProvider(session.provider).sessions;
257
+ if (!sessions.resolveEditAnchor) {
258
+ return null;
259
+ }
260
+ return sessions.resolveEditAnchor(sessionId, anchorId);
261
+ },
262
+ /**
263
+ * Whether editing a message on this session's provider means rewinding it on
264
+ * disk first, rather than handing the anchor to the runtime as a resume
265
+ * option.
266
+ *
267
+ * Answering this without doing anything is the point: the rewind moves the
268
+ * session onto a different provider transcript and cannot be undone, so the
269
+ * gateway has to know which shape the run takes before it commits to one.
270
+ */
271
+ providerRewindsForEdit(sessionId) {
272
+ const session = sessionsDb.getSessionById(sessionId);
273
+ if (!session) {
274
+ throw new AppError(`Session "${sessionId}" was not found.`, {
275
+ code: 'SESSION_NOT_FOUND',
276
+ statusCode: 404,
277
+ });
278
+ }
279
+ return Boolean(providerRegistry.resolveProvider(session.provider).sessions.rewindSession);
280
+ },
281
+ /**
282
+ * Rewinds a session on disk so `keepThroughId` is the last row it holds.
283
+ *
284
+ * Only call this once the run is admitted — see `providerRewindsForEdit`.
285
+ */
286
+ async rewindSessionForEdit(sessionId, keepThroughId) {
287
+ const session = sessionsDb.getSessionById(sessionId);
288
+ if (!session) {
289
+ throw new AppError(`Session "${sessionId}" was not found.`, {
290
+ code: 'SESSION_NOT_FOUND',
291
+ statusCode: 404,
292
+ });
293
+ }
294
+ const sessions = providerRegistry.resolveProvider(session.provider).sessions;
295
+ await sessions.rewindSession?.(sessionId, keepThroughId);
296
+ },
177
297
  async fetchHistory(sessionId, options = {}) {
178
298
  const session = sessionsDb.getSessionById(sessionId);
179
299
  if (!session) {
@@ -194,12 +314,50 @@ export const sessionsService = {
194
314
  };
195
315
  }
196
316
  const provider = session.provider;
197
- const result = await providerRegistry.resolveProvider(provider).sessions.fetchHistory(sessionId, {
198
- limit: options.limit ?? null,
199
- offset: options.offset ?? 0,
200
- projectPath: session.project_path ?? '',
201
- providerSessionId: session.provider_session_id,
317
+ const providerSessions = providerRegistry.resolveProvider(provider).sessions;
318
+ const providerSessionId = session.provider_session_id;
319
+ const projectPath = session.project_path ?? '';
320
+ const requestedLimit = options.limit ?? null;
321
+ const requestedOffset = options.offset ?? 0;
322
+ // Claude and Codex history readers parse `jsonl_path` itself, so a page
323
+ // can be sliced from the stat-validated full-transcript cache instead of
324
+ // re-parsing the whole file per request. Cursor and OpenCode read their
325
+ // messages from elsewhere (store.db / shared SQLite), so that file's stat
326
+ // says nothing about their history — they stay on the direct path.
327
+ const transcriptPath = provider === 'claude' || provider === 'codex'
328
+ ? session.jsonl_path
329
+ : null;
330
+ const fullHistory = await sessionHistoryCache.getFullHistory({
331
+ sessionId,
332
+ transcriptPath,
333
+ loadFull: () => providerSessions.fetchHistory(sessionId, {
334
+ limit: null,
335
+ offset: 0,
336
+ projectPath,
337
+ providerSessionId,
338
+ }),
202
339
  });
340
+ let result;
341
+ if (fullHistory) {
342
+ // Providers slice with this same helper, so a cached page is identical
343
+ // to what a direct `(limit, offset)` read would have returned.
344
+ const { page, hasMore } = sliceTailPage(fullHistory.messages, requestedLimit, Math.max(0, requestedOffset));
345
+ result = {
346
+ ...fullHistory,
347
+ messages: page,
348
+ hasMore,
349
+ offset: requestedOffset,
350
+ limit: requestedLimit,
351
+ };
352
+ }
353
+ else {
354
+ result = await providerSessions.fetchHistory(sessionId, {
355
+ limit: requestedLimit,
356
+ offset: requestedOffset,
357
+ projectPath,
358
+ providerSessionId,
359
+ });
360
+ }
203
361
  return {
204
362
  ...result,
205
363
  messages: result.messages.map((message) => ({
@@ -301,9 +459,21 @@ export const sessionsService = {
301
459
  };
302
460
  }
303
461
  let removedFromDisk = false;
304
- if (options.deletedFromDisk && session.jsonl_path) {
305
- removedFromDisk = await removeFileIfExists(session.jsonl_path);
462
+ if (options.deletedFromDisk) {
463
+ // Every file the conversation has lived in, not just the one the row
464
+ // points at now: editing a message on a provider that rewinds by
465
+ // branching moves the session onto a copy and leaves the earlier
466
+ // transcript behind. Deleting only the current one would leave the
467
+ // replaced turns on disk, and unreachable through the app.
468
+ const transcripts = [
469
+ ...(session.jsonl_path ? [session.jsonl_path] : []),
470
+ ...sessionsDb.getSupersededTranscriptPaths(sessionId),
471
+ ];
472
+ for (const transcript of transcripts) {
473
+ removedFromDisk = (await removeFileIfExists(transcript)) || removedFromDisk;
474
+ }
306
475
  }
476
+ sessionsDb.clearSupersededProviderSessions(sessionId);
307
477
  const deleted = sessionsDb.deleteSessionById(sessionId);
308
478
  if (!deleted) {
309
479
  throw new AppError(`Session "${sessionId}" was not found.`, {
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/sessions.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/sessions.service.ts"],"names":[],"mappings":"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"}
@@ -110,6 +110,58 @@ test('checkCredentials: no CLAUDE_CODE_OAUTH_TOKEN, expired credentials file rep
110
110
  });
111
111
  });
112
112
  });
113
+ test('checkCredentials: expired access token with a live refresh token is still authenticated', async () => {
114
+ await withTempHome(async (homeDir) => {
115
+ await writeCredentialsFile(homeDir, {
116
+ claudeAiOauth: {
117
+ accessToken: 'stale-token',
118
+ refreshToken: 'live-refresh-token',
119
+ expiresAt: 1_000_000_000_000,
120
+ refreshTokenExpiresAt: Date.now() + 30 * 24 * 60 * 60 * 1000,
121
+ },
122
+ email: 'someone@example.com',
123
+ });
124
+ await withEnv({}, async () => {
125
+ const status = await checkCredentials(new ClaudeProviderAuth());
126
+ assert.equal(status.authenticated, true);
127
+ assert.equal(status.method, 'credentials_file');
128
+ assert.equal(status.email, 'someone@example.com');
129
+ });
130
+ });
131
+ });
132
+ test('checkCredentials: expired access token with a refresh token that has no recorded expiry is authenticated', async () => {
133
+ await withTempHome(async (homeDir) => {
134
+ await writeCredentialsFile(homeDir, {
135
+ claudeAiOauth: {
136
+ accessToken: 'stale-token',
137
+ refreshToken: 'live-refresh-token',
138
+ expiresAt: 1_000_000_000_000,
139
+ },
140
+ });
141
+ await withEnv({}, async () => {
142
+ const status = await checkCredentials(new ClaudeProviderAuth());
143
+ assert.equal(status.authenticated, true);
144
+ assert.equal(status.method, 'credentials_file');
145
+ });
146
+ });
147
+ });
148
+ test('checkCredentials: expired access token with an expired refresh token reports not authenticated', async () => {
149
+ await withTempHome(async (homeDir) => {
150
+ await writeCredentialsFile(homeDir, {
151
+ claudeAiOauth: {
152
+ accessToken: 'stale-token',
153
+ refreshToken: 'stale-refresh-token',
154
+ expiresAt: 1_000_000_000_000,
155
+ refreshTokenExpiresAt: 1_000_000_000_000,
156
+ },
157
+ });
158
+ await withEnv({}, async () => {
159
+ const status = await checkCredentials(new ClaudeProviderAuth());
160
+ assert.equal(status.authenticated, false);
161
+ assert.match(status.error ?? '', /expired/i);
162
+ });
163
+ });
164
+ });
113
165
  test('checkCredentials: ANTHROPIC_API_KEY takes precedence over CLAUDE_CODE_OAUTH_TOKEN', async () => {
114
166
  await withTempHome(async () => {
115
167
  await withEnv({ ANTHROPIC_API_KEY: 'test-api-key', CLAUDE_CODE_OAUTH_TOKEN: 'test-oauth-token' }, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-auth.test.js","sourceRoot":"","sources":["../../../../../server/modules/providers/tests/claude-auth.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-auth.test.js","sourceRoot":"","sources":["../../../../../server/modules/providers/tests/claude-auth.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yDAAyD,CAAC;AAa7F,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAmC,EAAE,CACpF,IAA+E,CAAC,gBAAgB,EAAE,CAAC;AAEtG,MAAM,QAAQ,GAAG,CAAC,yBAAyB,EAAE,mBAAmB,EAAE,sBAAsB,CAAU,CAAC;AAEnG,MAAM,OAAO,GAAG,KAAK,EACnB,SAA6D,EAC7D,EAAuB,EACvB,EAAE;IACF,MAAM,QAAQ,GAAuD,EAAE,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EAAE,EAAsC,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;QAClC,CAAC;QACD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAE,IAAa,EAAE,EAAE;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAe,EAAE,GAA2B,EAAE,EAAE;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC,CAAC;AAEF,IAAI,CAAC,oHAAoH,EAAE,KAAK,IAAI,EAAE;IACpI,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,eAAe;SAC7F,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mHAAmH,EAAE,KAAK,IAAI,EAAE;IACnI,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,iBAAiB,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAChG,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,eAAe;SAC7F,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qGAAqG,EAAE,KAAK,IAAI,EAAE;IACrH,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE;YACrF,KAAK,EAAE,qBAAqB;SAC7B,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kGAAkG,EAAE,KAAK,IAAI,EAAE;IAClH,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE;SAC5E,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;IACzG,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE;gBACb,WAAW,EAAE,aAAa;gBAC1B,YAAY,EAAE,oBAAoB;gBAClC,SAAS,EAAE,iBAAiB;gBAC5B,qBAAqB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;aAC7D;YACD,KAAK,EAAE,qBAAqB;SAC7B,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0GAA0G,EAAE,KAAK,IAAI,EAAE;IAC1H,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE;gBACb,WAAW,EAAE,aAAa;gBAC1B,YAAY,EAAE,oBAAoB;gBAClC,SAAS,EAAE,iBAAiB;aAC7B;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;IAChH,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACnC,MAAM,oBAAoB,CAAC,OAAO,EAAE;YAClC,aAAa,EAAE;gBACb,WAAW,EAAE,aAAa;gBAC1B,YAAY,EAAE,qBAAqB;gBACnC,SAAS,EAAE,iBAAiB;gBAC5B,qBAAqB,EAAE,iBAAiB;aACzC;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;IACnG,MAAM,YAAY,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,OAAO,CACX,EAAE,iBAAiB,EAAE,cAAc,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,EAClF,KAAK,IAAI,EAAE;YACT,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { extractClaudeEventModel } from '../../../modules/providers/list/claude/claude-models.provider.js';
4
+ const SESSION_ID = 'session-1';
5
+ test('ignores the <synthetic> placeholder Claude Code stamps on synthesized rows', () => {
6
+ assert.equal(extractClaudeEventModel({ sessionId: SESSION_ID, message: { model: '<synthetic>' } }, SESSION_ID), null);
7
+ assert.equal(extractClaudeEventModel({ sessionId: SESSION_ID, model: '<synthetic>' }, SESSION_ID), null);
8
+ });
9
+ test('still surfaces real model ids from message and event fields', () => {
10
+ assert.equal(extractClaudeEventModel({ sessionId: SESSION_ID, message: { model: 'claude-sonnet-5' } }, SESSION_ID), 'claude-sonnet-5');
11
+ assert.equal(extractClaudeEventModel({ sessionId: SESSION_ID, model: 'opus' }, SESSION_ID), 'opus');
12
+ });
13
+ test('skips a placeholder content part so a later real model tag still wins', () => {
14
+ assert.equal(extractClaudeEventModel({
15
+ sessionId: SESSION_ID,
16
+ message: {
17
+ content: [
18
+ { text: '<model><synthetic></model>' },
19
+ { text: '<model>claude-sonnet-5</model>' },
20
+ ],
21
+ },
22
+ }, SESSION_ID), 'claude-sonnet-5');
23
+ });
24
+ test('a placeholder stdout hit does not shadow a real <model> tag in the same text', () => {
25
+ const text = '<local-command-stdout>Set model to <synthetic></local-command-stdout>'
26
+ + '<model>claude-sonnet-5</model>';
27
+ assert.equal(extractClaudeEventModel({ sessionId: SESSION_ID, message: { content: text } }, SESSION_ID), 'claude-sonnet-5');
28
+ assert.equal(extractClaudeEventModel({ sessionId: SESSION_ID, message: { content: [{ text }] } }, SESSION_ID), 'claude-sonnet-5');
29
+ });
30
+ test('falls back to the message model when every content hit is a placeholder', () => {
31
+ assert.equal(extractClaudeEventModel({
32
+ sessionId: SESSION_ID,
33
+ message: {
34
+ content: '<model><synthetic></model>',
35
+ model: 'claude-sonnet-5',
36
+ },
37
+ }, SESSION_ID), 'claude-sonnet-5');
38
+ });
39
+ //# sourceMappingURL=claude-models.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-models.test.js","sourceRoot":"","sources":["../../../../../server/modules/providers/tests/claude-models.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AAEpG,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B,IAAI,CAAC,4EAA4E,EAAE,GAAG,EAAE;IACtF,MAAM,CAAC,KAAK,CACV,uBAAuB,CACrB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAC5D,UAAU,CACX,EACD,IAAI,CACL,CAAC;IACF,MAAM,CAAC,KAAK,CACV,uBAAuB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,UAAU,CAAC,EACpF,IAAI,CACL,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACvE,MAAM,CAAC,KAAK,CACV,uBAAuB,CACrB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAChE,UAAU,CACX,EACD,iBAAiB,CAClB,CAAC;IACF,MAAM,CAAC,KAAK,CACV,uBAAuB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAC7E,MAAM,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,MAAM,CAAC,KAAK,CACV,uBAAuB,CACrB;QACE,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,4BAA4B,EAAE;gBACtC,EAAE,IAAI,EAAE,gCAAgC,EAAE;aAC3C;SACF;KACF,EACD,UAAU,CACX,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;IACxF,MAAM,IAAI,GAAG,uEAAuE;UAChF,gCAAgC,CAAC;IACrC,MAAM,CAAC,KAAK,CACV,uBAAuB,CACrB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EACrD,UAAU,CACX,EACD,iBAAiB,CAClB,CAAC;IACF,MAAM,CAAC,KAAK,CACV,uBAAuB,CACrB,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAC3D,UAAU,CACX,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACnF,MAAM,CAAC,KAAK,CACV,uBAAuB,CACrB;QACE,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE;YACP,OAAO,EAAE,4BAA4B;YACrC,KAAK,EAAE,iBAAiB;SACzB;KACF,EACD,UAAU,CACX,EACD,iBAAiB,CAClB,CAAC;AACJ,CAAC,CAAC,CAAC"}