@jingyi0605/codingns 0.5.1 → 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 (196) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-SffCV4Vb.js → AdaptiveButlerPage-uFwDdN-F.js} +3 -3
  2. package/dist/public/assets/App-BZvapsi8.js +30 -0
  3. package/dist/public/assets/App-CcDXqFl1.css +1 -0
  4. package/dist/public/assets/{BootstrapPage--zExdgfM.js → BootstrapPage-gHSoa4JN.js} +1 -1
  5. package/dist/public/assets/ConversationPage-z3sXtKZ7.js +4 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DvI9CIKi.js → DesktopDetachPreviewPage-4eMRxiBW.js} +1 -1
  7. package/dist/public/assets/DesktopWindowPage-CZcoGApB.js +2 -0
  8. package/dist/public/assets/FileContextPanel-C3qex8bb.js +1 -0
  9. package/dist/public/assets/GitSidebar-BK6H16XU.js +6 -0
  10. package/dist/public/assets/{MobileCreateSessionSheet-CXSKMnYn.js → MobileCreateSessionSheet-BYfbvK8o.js} +1 -1
  11. package/dist/public/assets/MobileSheet-Ckug8hTb.js +1 -0
  12. package/dist/public/assets/{MobileTopHeaderFrame-BWorAJ1C.js → MobileTopHeaderFrame-Bwv8Ovm_.js} +1 -1
  13. package/dist/public/assets/MobileWorkspaceSwitcherHeader-RqWrBdn2.js +1 -0
  14. package/dist/public/assets/RelayConnectEntryPage-D_4YL-YH.js +1 -0
  15. package/dist/public/assets/ServerSettingsModal-CMSm3BZU.js +1 -0
  16. package/dist/public/assets/SessionIndexPage-DuK10DL5.js +1 -0
  17. package/dist/public/assets/SettingsPage-fyD-xaHL.js +1 -0
  18. package/dist/public/assets/TerminalManagerPanel-CCLr1Ypk.js +1 -0
  19. package/dist/public/assets/{TerminalPage-CvnHXBhw.js → TerminalPage-DaooFaJ4.js} +19 -19
  20. package/dist/public/assets/{TerminalRuntimeFallbackModal-D7Aq186N.js → TerminalRuntimeFallbackModal-aUzjEBwP.js} +1 -1
  21. package/dist/public/assets/ToolFilesPage-CGxBvYG0.js +1 -0
  22. package/dist/public/assets/ToolGitPage-C264yjS9.js +1 -0
  23. package/dist/public/assets/ToolProcessesPage-BOP4A1cb.js +1 -0
  24. package/dist/public/assets/ToolsHomePage-CQxGiKQA.js +1 -0
  25. package/dist/public/assets/WorkbenchLandingPage-CvAY68ca.js +1 -0
  26. package/dist/public/assets/WorkbenchLayout-DGm8Tc5M.js +3 -0
  27. package/dist/public/assets/{WorkbenchModal-B09hC9b5.js → WorkbenchModal-0tPIIhca.js} +1 -1
  28. package/dist/public/assets/{WorkbenchShellRoute-DsW4mBTX.css → WorkbenchShellRoute-BF0nHWOk.css} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-DBBOsJo9.js +1 -0
  30. package/dist/public/assets/WorkspaceDebugDetailPage-CDerFYd2.js +1 -0
  31. package/dist/public/assets/WorkspaceDetailPage-BlJc1CHE.js +1 -0
  32. package/dist/public/assets/WorkspaceHomePage-BUsKJ3lv.js +1 -0
  33. package/dist/public/assets/client-runtime-manager-BZpL17fc.js +1 -0
  34. package/dist/public/assets/{default-session-permission-mode-D0wZ9Jek.js → default-session-permission-mode-DT4SGiwp.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-Db5LXC8h.js +31 -0
  36. package/dist/public/assets/index-BZLcEHW3.js +42 -0
  37. package/dist/public/assets/index-BbspQPC2.css +1 -0
  38. package/dist/public/assets/login-direct-candidate-resolver-1mxe_Oh8.js +1 -0
  39. package/dist/public/assets/{preferences-service-gOt2ZjKZ.js → preferences-service-DWnzl5a0.js} +1 -1
  40. package/dist/public/assets/relay-entry-C5_Iay0I.js +1 -0
  41. package/dist/public/assets/session-runtime-machine-DdLeDqQr.js +17 -0
  42. package/dist/public/assets/{styles-BWPBZvze.css → styles-CsEMfdaS.css} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-BMT-rSEe.js → terminal-runtime-meta-cdtWVfCm.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-zMcEOGca.js → useRegisteredDebugTemplates-oFAQNIqh.js} +1 -1
  45. package/dist/public/assets/window-BVUB8gMK.js +1 -0
  46. package/dist/public/index.html +2 -2
  47. package/dist/server/config/env.d.ts +2 -0
  48. package/dist/server/config/env.js +39 -0
  49. package/dist/server/config/env.js.map +1 -1
  50. package/dist/server/modules/client/npm-global-package-service.d.ts +7 -1
  51. package/dist/server/modules/client/npm-global-package-service.js +149 -43
  52. package/dist/server/modules/client/npm-global-package-service.js.map +1 -1
  53. package/dist/server/modules/client/service-update-task-service.js +6 -2
  54. package/dist/server/modules/client/service-update-task-service.js.map +1 -1
  55. package/dist/server/modules/client/service-update-types.d.ts +2 -0
  56. package/dist/server/modules/git/git-controller.d.ts +3 -0
  57. package/dist/server/modules/git/git-controller.js +3 -0
  58. package/dist/server/modules/git/git-controller.js.map +1 -1
  59. package/dist/server/modules/git/git-read-service.js +47 -1
  60. package/dist/server/modules/git/git-read-service.js.map +1 -1
  61. package/dist/server/modules/git/git-write-service.d.ts +4 -0
  62. package/dist/server/modules/git/git-write-service.js +24 -0
  63. package/dist/server/modules/git/git-write-service.js.map +1 -1
  64. package/dist/server/modules/git/types.d.ts +1 -0
  65. package/dist/server/modules/git/workspace-repo-guard.d.ts +2 -0
  66. package/dist/server/modules/git/workspace-repo-guard.js +24 -10
  67. package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
  68. package/dist/server/modules/parallel-sessions/parallel-session-controller.d.ts +53 -0
  69. package/dist/server/modules/parallel-sessions/parallel-session-controller.js +70 -0
  70. package/dist/server/modules/parallel-sessions/parallel-session-controller.js.map +1 -0
  71. package/dist/server/modules/parallel-sessions/parallel-session-group-service.d.ts +83 -0
  72. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js +591 -0
  73. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js.map +1 -0
  74. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.d.ts +56 -0
  75. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js +483 -0
  76. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js.map +1 -0
  77. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.d.ts +16 -1
  78. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js.map +1 -1
  79. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.d.ts +2 -1
  80. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js +18 -0
  81. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js.map +1 -1
  82. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.d.ts +2 -0
  83. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js +129 -0
  84. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js.map +1 -0
  85. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.d.ts +13 -0
  86. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js +2 -0
  87. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js.map +1 -0
  88. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.d.ts +6 -0
  89. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +110 -10
  90. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  91. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.d.ts +16 -4
  92. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +220 -102
  93. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -1
  94. package/dist/server/modules/relay-tunnel/relay-tunnel-service.d.ts +4 -1
  95. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +257 -162
  96. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  97. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +3 -0
  98. package/dist/server/modules/sessions/codex-app-server-helper-client.js +56 -45
  99. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  100. package/dist/server/modules/sessions/codex-app-server-helper-process.js +21 -2
  101. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  102. package/dist/server/modules/sessions/session-activity-inspector.js +6 -8
  103. package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
  104. package/dist/server/modules/sessions/session-history-service.d.ts +11 -1
  105. package/dist/server/modules/sessions/session-history-service.js +204 -21
  106. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  107. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -0
  108. package/dist/server/modules/sessions/session-live-runtime-service.js +208 -25
  109. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  110. package/dist/server/modules/workbench/codex-archive-watcher.d.ts +16 -0
  111. package/dist/server/modules/workbench/codex-archive-watcher.js +50 -0
  112. package/dist/server/modules/workbench/codex-archive-watcher.js.map +1 -0
  113. package/dist/server/modules/workbench/workbench-service.d.ts +43 -4
  114. package/dist/server/modules/workbench/workbench-service.js +72 -9
  115. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  116. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -1
  117. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +26 -3
  118. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  119. package/dist/server/modules/workspace/workspace-service.d.ts +3 -1
  120. package/dist/server/modules/workspace/workspace-service.js +10 -2
  121. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  122. package/dist/server/modules/worktree/worktree-base-ref-resolver.d.ts +20 -0
  123. package/dist/server/modules/worktree/worktree-base-ref-resolver.js +111 -0
  124. package/dist/server/modules/worktree/worktree-base-ref-resolver.js.map +1 -0
  125. package/dist/server/modules/worktree/worktree-cleanup-service.js +9 -3
  126. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
  127. package/dist/server/modules/worktree/worktree-manager.d.ts +0 -1
  128. package/dist/server/modules/worktree/worktree-manager.js +14 -20
  129. package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
  130. package/dist/server/routes/git.js +1 -0
  131. package/dist/server/routes/git.js.map +1 -1
  132. package/dist/server/routes/parallel-groups.d.ts +3 -0
  133. package/dist/server/routes/parallel-groups.js +9 -0
  134. package/dist/server/routes/parallel-groups.js.map +1 -0
  135. package/dist/server/server/create-server.d.ts +8 -0
  136. package/dist/server/server/create-server.js +48 -9
  137. package/dist/server/server/create-server.js.map +1 -1
  138. package/dist/server/server/workbench-runtime-terminal-sync.d.ts +14 -0
  139. package/dist/server/server/workbench-runtime-terminal-sync.js +17 -0
  140. package/dist/server/server/workbench-runtime-terminal-sync.js.map +1 -0
  141. package/dist/server/storage/repositories/parallel-session-group-repository.d.ts +11 -0
  142. package/dist/server/storage/repositories/parallel-session-group-repository.js +131 -0
  143. package/dist/server/storage/repositories/parallel-session-group-repository.js.map +1 -0
  144. package/dist/server/storage/repositories/parallel-session-member-repository.d.ts +12 -0
  145. package/dist/server/storage/repositories/parallel-session-member-repository.js +150 -0
  146. package/dist/server/storage/repositories/parallel-session-member-repository.js.map +1 -0
  147. package/dist/server/storage/repositories/session-isolated-workspace-repository.d.ts +15 -0
  148. package/dist/server/storage/repositories/session-isolated-workspace-repository.js +230 -0
  149. package/dist/server/storage/repositories/session-isolated-workspace-repository.js.map +1 -0
  150. package/dist/server/storage/sqlite/schema.sql +73 -0
  151. package/dist/server/types/domain.d.ts +72 -0
  152. package/dist/server/ws/workbench-ws-hub.d.ts +3 -1
  153. package/dist/server/ws/workbench-ws-hub.js +189 -20
  154. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  155. package/dist/server/ws/ws-server.js +141 -8
  156. package/dist/server/ws/ws-server.js.map +1 -1
  157. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
  158. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +67 -6
  159. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  160. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +3 -0
  161. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +46 -22
  162. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  163. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +558 -309
  164. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  165. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +29 -5
  166. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  167. package/package.json +1 -1
  168. package/dist/public/assets/App-DUAg5urj.css +0 -1
  169. package/dist/public/assets/App-WOLwMld_.js +0 -30
  170. package/dist/public/assets/ConversationPage-D9pzRmOg.js +0 -2
  171. package/dist/public/assets/DesktopWindowPage-D8FpOSLE.js +0 -2
  172. package/dist/public/assets/FileContextPanel-C8T7oqRN.js +0 -1
  173. package/dist/public/assets/GitSidebar-Bze7DNnc.js +0 -6
  174. package/dist/public/assets/MobileSheet-Gzc14EpR.js +0 -1
  175. package/dist/public/assets/MobileWorkspaceSwitcherHeader-DOr4pTUq.js +0 -1
  176. package/dist/public/assets/ServerSettingsModal-BYB0GvTl.js +0 -1
  177. package/dist/public/assets/SessionIndexPage-CR3IARXX.js +0 -1
  178. package/dist/public/assets/SettingsPage-B_BQtnwE.js +0 -1
  179. package/dist/public/assets/TerminalManagerPanel-PQ-EM64j.js +0 -1
  180. package/dist/public/assets/ToolFilesPage-Qzkc6K2I.js +0 -1
  181. package/dist/public/assets/ToolGitPage-BdNDN-cV.js +0 -1
  182. package/dist/public/assets/ToolProcessesPage-EXJ9DHWI.js +0 -1
  183. package/dist/public/assets/ToolsHomePage-CjF3CWzR.js +0 -1
  184. package/dist/public/assets/WorkbenchLandingPage-DZPk4SmX.js +0 -1
  185. package/dist/public/assets/WorkbenchLayout-rwQib5In.js +0 -3
  186. package/dist/public/assets/WorkbenchShellRoute-Cerk5uK7.js +0 -1
  187. package/dist/public/assets/WorkspaceDebugDetailPage-Bcq8s-Ma.js +0 -1
  188. package/dist/public/assets/WorkspaceDetailPage-DNAa8pKr.js +0 -1
  189. package/dist/public/assets/WorkspaceHomePage-BoiLuACV.js +0 -1
  190. package/dist/public/assets/client-runtime-manager-CRQ-F5d2.js +0 -1
  191. package/dist/public/assets/file-tree-icon-Dp_xhVfD.js +0 -31
  192. package/dist/public/assets/index-C2G8Gmf1.js +0 -42
  193. package/dist/public/assets/index-CpPTUeA3.css +0 -1
  194. package/dist/public/assets/session-runtime-machine-Dq3pW-UF.js +0 -17
  195. package/dist/public/assets/window-BWqRixxq.js +0 -1
  196. /package/dist/public/assets/{styles-CSUx5LGe.js → styles-DRVvx_kv.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"session-activity-inspector.js","sourceRoot":"","sources":["../../../../src/modules/sessions/session-activity-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAsBjD,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE7D,MAAM,UAAU,sBAAsB,CACpC,QAAoB,EACpB,WAAmB,EACnB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,OAAO,kBAAkB,CACvB;YACE,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI;YAC1B,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,MAAM;SACtB,EACD,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,IAAI,KAAkC,CAAC;IACvC,IAAI,OAAuC,CAAC;IAE5C,IAAI,CAAC;QACH,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,kBAAkB,CACvB;YACE,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI;YAC1B,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,MAAM;SACtB,EACD,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE9C,IACE,MAAM;WACH,MAAM,CAAC,QAAQ,KAAK,QAAQ;WAC5B,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;WAChC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAC7B,CAAC;QACD,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,cAAc,GAClB,QAAQ,KAAK,aAAa;QACxB,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;QACpD,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAExD,kBAAkB,CAAC,WAAW,EAAE;QAC9B,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,cAAc;KAC3B,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAuC,EACvC,OAAe,EACf,GAAW;IAEX,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,QAAQ,CAAE,MAAM,CAAC,OAA+C,EAAE,WAAW,CAAC,CAAC;YAElG,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;gBAChE,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAE5D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAErC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;oBAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEjC,IAAI,MAAM,EAAE,CAAC;wBACX,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC/B,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;oBAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAE1C,IAAI,MAAM,EAAE,CAAC;wBACX,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC5E,MAAM,SAAS,GAAG,CAAC,qBAAqB,IAAI,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAEzF,OAAO;QACL,eAAe;QACf,WAAW;QACX,oBAAoB,EAAE,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAClF,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAuC,EACvC,OAAe,EACf,GAAW;IAEX,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAC7C,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAC3C,IAAI,oBAAoB,GAAkB,IAAI,CAAC;IAC/C,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,qBAAqB,GAAkB,IAAI,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEzC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;gBAClC,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;gBAChC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;gBACnE,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,mBAAmB,CAAC;YACxE,CAAC;YAED,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;gBACjC,iBAAiB,GAAG,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;gBACrE,qBAAqB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC;YAED,SAAS;QACX,CAAC;QAED,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAEzD,IAAI,WAAW,KAAK,eAAe,IAAI,WAAW,KAAK,kBAAkB,EAAE,CAAC;YAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEzC,IAAI,MAAM,EAAE,CAAC;gBACX,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,WAAW,KAAK,sBAAsB,IAAI,WAAW,KAAK,yBAAyB,EAAE,CAAC;YACxF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEzC,IAAI,MAAM,EAAE,CAAC;gBACX,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/E,MAAM,oBAAoB,GACxB,CAAC,kBAAkB,IAAI,oBAAoB,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,qBAAqB,GACzB,CAAC,kBAAkB,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACxG,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC5E,MAAM,SAAS,GACb,CAAC,kBAAkB;WAChB,CAAC,oBAAoB;WACrB,CAAC,qBAAqB;WACtB,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAElD,OAAO;QACL,eAAe;QACf,WAAW;QACX,oBAAoB,EAClB,kBAAkB;YAChB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,oBAAoB;gBACpB,CAAC,CAAC,iBAAiB;gBACrB,CAAC,CAAC,qBAAqB;oBACrB,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,SAAS;wBACT,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI;QACd,SAAS,EACP,kBAAkB;YAChB,CAAC,CAAC,4BAA4B,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;YAC7E,CAAC,CAAC,IAAI;QACV,WAAW,EACT,kBAAkB;YAChB,CAAC,CAAC,oBAAoB,IAAI,mBAAmB;YAC7C,CAAC,CAAC,oBAAoB;gBACpB,CAAC,CAAC,qBAAqB,IAAI,wBAAwB;gBACnD,CAAC,CAAC,IAAI;QACZ,aAAa,EACX,kBAAkB;YAChB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,oBAAoB;gBACpB,CAAC,CAAC,aAAa;gBACjB,CAAC,CAAC,qBAAqB;oBACrB,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,MAAM;KACf,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAmC,EACnC,GAAW,EACX,OAAgB;IAEhB,IAAI,IAAI,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,YAAY,EAAE,QAAQ;YACtB,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO;YACL,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,EAAE,CAAC;QACzC,OAAO;YACL,YAAY,EAAE,aAAa;YAC3B,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;QACzF,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,oBAAoB,EAAE,IAAI;QAC1B,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAgC;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7B,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,uBAAuB,MAAM,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CACxB,SAAwB,EACxB,OAAe,EACf,GAAW;IAEX,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACnE,oDAAoD;IACpD,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;QAChC,CAAC,CAAC,OAAO,CAAC;IAEd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,GAAG,GAAG,UAAU,IAAI,gBAAgB,CAAC;AAC9C,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAqB,EAAE,QAAgB;IAC3E,MAAM,UAAU,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAExC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GACf,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC;WACtC,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC;WACvC,UAAU,CAAC,KAAK,CACjB,sFAAsF,CACvF,CAAC;IAEJ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,cAAc,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA+B;IAC7D,MAAM,SAAS,GAAqB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzC,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QACxD,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC;gBACnE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;SAClC,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,CAAC,MAAiC,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,IAAmB,EAAE,KAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAmB,EAAE,KAAoB;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB;IAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEpD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAiBD,SAAS,kBAAkB,CAAC,QAAgB,EAAE,KAA0B;IACtE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEnC,OAAO,aAAa,CAAC,IAAI,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QAED,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"session-activity-inspector.js","sourceRoot":"","sources":["../../../../src/modules/sessions/session-activity-inspector.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ import type { SessionIndexRepository } from "../../storage/repositories/session-
7
7
  import type { SessionStateRepository } from "../../storage/repositories/session-state-repository.js";
8
8
  import type { SessionStatusSnapshotRepository } from "../../storage/repositories/session-status-snapshot-repository.js";
9
9
  import type { WorkspaceRepository } from "../../storage/repositories/workspace-repository.js";
10
+ import type { ParallelSessionGroupRepository } from "../../storage/repositories/parallel-session-group-repository.js";
11
+ import type { ParallelSessionMemberRepository } from "../../storage/repositories/parallel-session-member-repository.js";
12
+ import type { SessionIsolatedWorkspaceRepository } from "../../storage/repositories/session-isolated-workspace-repository.js";
10
13
  import { SessionActivityAuthorityService, type SessionActivityObservation } from "./session-activity-authority-service.js";
11
14
  import { SessionChangedFileService } from "./session-changed-file-service.js";
12
15
  import { SessionMessageAttachmentService } from "./session-message-attachment-service.js";
@@ -38,6 +41,7 @@ interface ForkSessionInput {
38
41
  sourceMessageSnapshot?: ForkSourceMessageSnapshot | null;
39
42
  strategy?: ForkStrategy;
40
43
  targetProvider?: string | null;
44
+ targetWorkspaceId?: string | null;
41
45
  sessionKind?: "default" | "annotation";
42
46
  annotationSourceMessageId?: string | null;
43
47
  annotationSourceText?: string | null;
@@ -90,17 +94,21 @@ export declare class SessionHistoryService {
90
94
  private readonly openCodeModelOptionsService;
91
95
  private readonly providerCliCommandPaths;
92
96
  private readonly providerCliAvailability;
97
+ private readonly parallelSessionGroupRepository;
98
+ private readonly parallelSessionMemberRepository;
99
+ private readonly sessionIsolatedWorkspaceRepository;
93
100
  private readonly providerDiscoveryHelperClient;
94
101
  private readonly providerSessionDiscoveryConfig;
95
102
  private readonly taskManager;
96
103
  private readonly workspaceDiscoveryStatuses;
97
104
  private readonly workspaceStateRefreshStatuses;
98
105
  private readonly providerCapabilityCache;
106
+ private readonly codexDirtyBindingRepairStates;
99
107
  private readonly liveActivityObservationResolvers;
100
108
  private readonly sessionDeletedObservers;
101
109
  private readonly workspaceSessionRelations;
102
110
  private workspaceStateRefreshTaskSequence;
103
- constructor(db: Database.Database, workspaceRepository: WorkspaceRepository, sessionBindingRepository: SessionBindingRepository, sessionChangedFileService: SessionChangedFileService, sessionIndexRepository: SessionIndexRepository, sessionMessageAttachmentService: SessionMessageAttachmentService, sessionStateRepository: SessionStateRepository, sessionStatusSnapshotRepository: SessionStatusSnapshotRepository, config: HostConfig, sessionActivityAuthorityService?: SessionActivityAuthorityService, sessionMessageOriginRepository?: Pick<SessionMessageOriginRepository, "listBySessionAndMessageIds" | "listUnresolvedBySessionAndContents" | "resolveMessageId"> | null, sessionForkRepository?: Pick<SessionForkRepository, "upsert" | "findBySessionId"> | null, adapterOverrides?: SessionHistoryAdapterOverrides, taskManager?: TaskManager);
111
+ constructor(db: Database.Database, workspaceRepository: WorkspaceRepository, sessionBindingRepository: SessionBindingRepository, sessionChangedFileService: SessionChangedFileService, sessionIndexRepository: SessionIndexRepository, sessionMessageAttachmentService: SessionMessageAttachmentService, sessionStateRepository: SessionStateRepository, sessionStatusSnapshotRepository: SessionStatusSnapshotRepository, config: HostConfig, sessionActivityAuthorityService?: SessionActivityAuthorityService, sessionMessageOriginRepository?: Pick<SessionMessageOriginRepository, "listBySessionAndMessageIds" | "listUnresolvedBySessionAndContents" | "resolveMessageId"> | null, sessionForkRepository?: Pick<SessionForkRepository, "upsert" | "findBySessionId"> | null, adapterOverrides?: SessionHistoryAdapterOverrides, taskManager?: TaskManager, parallelSessionGroupRepository?: Pick<ParallelSessionGroupRepository, "listByIds"> | null, parallelSessionMemberRepository?: Pick<ParallelSessionMemberRepository, "findBySessionId" | "listBySessionIds" | "listByGroupIds"> | null, sessionIsolatedWorkspaceRepository?: Pick<SessionIsolatedWorkspaceRepository, "findByOwnerSessionId" | "listByOwnerSessionIds" | "listBySourceWorkspaceId"> | null);
104
112
  observeBackgroundTaskMetrics(): TaskMetricsSnapshot;
105
113
  registerLiveActivityObservationResolver(resolver: LiveActivityObservationResolver): {
106
114
  close(): void;
@@ -183,6 +191,8 @@ export declare class SessionHistoryService {
183
191
  private buildWorkspaceSessionRelationMap;
184
192
  private enrichSessionItems;
185
193
  private enrichSessionItem;
194
+ private buildParallelProjectionBySessionId;
195
+ private listProjectedIsolatedWorkspaceSessions;
186
196
  private pullSessionHistory;
187
197
  private pullRecentSessionHistory;
188
198
  private publishHistoryEnvelope;
@@ -11,6 +11,7 @@ import { inspectSessionActivity } from "./session-activity-inspector.js";
11
11
  import { SessionActivityAuthorityService } from "./session-activity-authority-service.js";
12
12
  import { mapSessionProviderError } from "./session-provider-error-mapper.js";
13
13
  import { SessionForkRepository } from "../../storage/repositories/session-fork-repository.js";
14
+ import { buildParallelGroupColorToken, resolveParallelDisplayParentSessionId } from "../parallel-sessions/parallel-session-group-service.js";
14
15
  import { enrichClaudeCapabilities } from "../provider/claude-model-options.js";
15
16
  import { CodexModelOptionsService, createFallbackCodexModelOptions, enrichCodexCapabilities } from "../provider/codex-model-options.js";
16
17
  import { OpenCodeModelOptionsService, createFallbackOpenCodeModelOptions, enrichOpenCodeCapabilities } from "../provider/opencode-model-options.js";
@@ -31,6 +32,13 @@ const SESSION_START_DEFERRED_PROVIDERS = new Set([
31
32
  "gemini",
32
33
  "kimi"
33
34
  ]);
35
+ const MUTABLE_HISTORY_TAIL_PROVIDERS = new Set([
36
+ "claude-code",
37
+ "codex",
38
+ "gemini",
39
+ "kimi",
40
+ "opencode"
41
+ ]);
34
42
  const MUTABLE_HISTORY_TAIL_REFRESH_INTERVAL_MS = 1_200;
35
43
  const WORKSPACE_DISCOVERY_BACKGROUND_MAX_AGE_MS = 15_000;
36
44
  const WORKSPACE_DISCOVERY_SCAN_CONCURRENCY = 2;
@@ -40,6 +48,7 @@ const SESSION_TRANSACTION_HOTSPOT_THRESHOLD_MS = 150;
40
48
  const WORKSPACE_STATE_REFRESH_COOLDOWN_MS = 1_500;
41
49
  const SQLITE_BUSY_RETRY_LIMIT = 3;
42
50
  const SQLITE_BUSY_RETRY_DELAY_MS = 100;
51
+ const CODEX_DIRTY_BINDING_REPAIR_COOLDOWN_MS = 5_000;
43
52
  export class SessionHistoryService {
44
53
  db;
45
54
  workspaceRepository;
@@ -61,17 +70,21 @@ export class SessionHistoryService {
61
70
  openCodeModelOptionsService;
62
71
  providerCliCommandPaths;
63
72
  providerCliAvailability;
73
+ parallelSessionGroupRepository;
74
+ parallelSessionMemberRepository;
75
+ sessionIsolatedWorkspaceRepository;
64
76
  providerDiscoveryHelperClient = getSharedProviderDiscoveryHelperClient();
65
77
  providerSessionDiscoveryConfig;
66
78
  taskManager;
67
79
  workspaceDiscoveryStatuses = new Map();
68
80
  workspaceStateRefreshStatuses = new Map();
69
81
  providerCapabilityCache = new Map();
82
+ codexDirtyBindingRepairStates = new Map();
70
83
  liveActivityObservationResolvers = new Set();
71
84
  sessionDeletedObservers = new Set();
72
85
  workspaceSessionRelations = new Map();
73
86
  workspaceStateRefreshTaskSequence = 0;
74
- constructor(db, workspaceRepository, sessionBindingRepository, sessionChangedFileService, sessionIndexRepository, sessionMessageAttachmentService, sessionStateRepository, sessionStatusSnapshotRepository, config, sessionActivityAuthorityService = new SessionActivityAuthorityService(), sessionMessageOriginRepository = null, sessionForkRepository = null, adapterOverrides = {}, taskManager = createTaskManager()) {
87
+ constructor(db, workspaceRepository, sessionBindingRepository, sessionChangedFileService, sessionIndexRepository, sessionMessageAttachmentService, sessionStateRepository, sessionStatusSnapshotRepository, config, sessionActivityAuthorityService = new SessionActivityAuthorityService(), sessionMessageOriginRepository = null, sessionForkRepository = null, adapterOverrides = {}, taskManager = createTaskManager(), parallelSessionGroupRepository = null, parallelSessionMemberRepository = null, sessionIsolatedWorkspaceRepository = null) {
75
88
  this.db = db;
76
89
  this.workspaceRepository = workspaceRepository;
77
90
  this.sessionBindingRepository = sessionBindingRepository;
@@ -86,6 +99,9 @@ export class SessionHistoryService {
86
99
  this.providerSessionDeleteCli =
87
100
  adapterOverrides.providerSessionDeleteCli ?? new CodingnsProviderSessionDeleteCli(config);
88
101
  this.taskManager = taskManager;
102
+ this.parallelSessionGroupRepository = parallelSessionGroupRepository;
103
+ this.parallelSessionMemberRepository = parallelSessionMemberRepository;
104
+ this.sessionIsolatedWorkspaceRepository = sessionIsolatedWorkspaceRepository;
89
105
  this.claudeCodeHomeDir = config.claudeCodeHomeDir;
90
106
  this.providerCliCommandPaths = {
91
107
  "claude-code": process.platform === "win32" ? "claude.cmd" : "claude",
@@ -263,18 +279,30 @@ export class SessionHistoryService {
263
279
  }
264
280
  async readSessionHistory(sessionId, cursor, limit, direction = "forward", userId) {
265
281
  const startedAt = Date.now();
282
+ const resolveStartedAt = Date.now();
266
283
  const resolvedSessionId = this.resolveCanonicalSessionId(sessionId, userId);
284
+ const resolveSessionIdMs = Date.now() - resolveStartedAt;
285
+ const bindingLookupStartedAt = Date.now();
267
286
  let binding = this.getBindingOrThrow(resolvedSessionId);
287
+ const bindingLookupMs = Date.now() - bindingLookupStartedAt;
288
+ let repairBindingMs = 0;
268
289
  if (userId) {
290
+ const repairStartedAt = Date.now();
269
291
  binding = await this.repairCodexDirtyBindingBeforeHistoryRead(resolvedSessionId, userId, binding);
292
+ repairBindingMs = Date.now() - repairStartedAt;
270
293
  }
271
294
  const current = this.sessionStatusSnapshotRepository.findBySessionId(resolvedSessionId);
272
295
  const safeLimit = clampLimit(limit);
296
+ const knownTotalLookupStartedAt = Date.now();
273
297
  const knownTotalMessageCount = direction === "backward" && cursor === null
274
298
  ? this.sessionIndexRepository.findIndexRecordBySessionId(resolvedSessionId)?.messageCount ?? null
275
299
  : null;
300
+ const knownTotalLookupMs = Date.now() - knownTotalLookupStartedAt;
276
301
  let readDurationMs = 0;
277
302
  let refreshStateDurationMs = 0;
303
+ let snapshotSyncingMs = 0;
304
+ let snapshotIdleMs = 0;
305
+ const snapshotSyncingStartedAt = Date.now();
278
306
  this.upsertSnapshot(resolvedSessionId, {
279
307
  syncStatus: "syncing",
280
308
  syncCursor: current?.syncCursor ?? cursor,
@@ -283,10 +311,12 @@ export class SessionHistoryService {
283
311
  lastErrorDetail: current?.lastErrorDetail ?? null,
284
312
  resumedAt: current?.resumedAt ?? null
285
313
  });
314
+ snapshotSyncingMs = Date.now() - snapshotSyncingStartedAt;
286
315
  try {
287
316
  const readStartedAt = Date.now();
288
317
  const page = await this.readPage(resolvedSessionId, binding.provider, binding.providerSessionId, binding.rawStoreRef, cursor, safeLimit, direction, knownTotalMessageCount);
289
318
  readDurationMs = Date.now() - readStartedAt;
319
+ const snapshotIdleStartedAt = Date.now();
290
320
  this.upsertSnapshot(resolvedSessionId, {
291
321
  syncStatus: "idle",
292
322
  syncCursor: direction === "backward" && cursor !== null
@@ -297,6 +327,7 @@ export class SessionHistoryService {
297
327
  lastErrorDetail: current?.lastErrorDetail ?? null,
298
328
  resumedAt: current?.resumedAt ?? null
299
329
  });
330
+ snapshotIdleMs = Date.now() - snapshotIdleStartedAt;
300
331
  logPerformance("session.read_history", Date.now() - startedAt, {
301
332
  sessionId: resolvedSessionId,
302
333
  requestedSessionId: sessionId,
@@ -306,10 +337,17 @@ export class SessionHistoryService {
306
337
  hasCursor: cursor !== null,
307
338
  messageCount: page.messages.length,
308
339
  total: page.total,
340
+ resolveSessionIdMs,
341
+ bindingLookupMs,
342
+ repairBindingMs,
343
+ knownTotalLookupMs,
344
+ snapshotSyncingMs,
345
+ snapshotIdleMs,
309
346
  readMs: readDurationMs,
310
347
  refreshStateMs: refreshStateDurationMs
311
348
  }, {
312
- thresholdMs: 300
349
+ thresholdMs: 0,
350
+ force: true
313
351
  });
314
352
  return page;
315
353
  }
@@ -321,6 +359,12 @@ export class SessionHistoryService {
321
359
  direction,
322
360
  limit: safeLimit,
323
361
  hasCursor: cursor !== null,
362
+ resolveSessionIdMs,
363
+ bindingLookupMs,
364
+ repairBindingMs,
365
+ knownTotalLookupMs,
366
+ snapshotSyncingMs,
367
+ snapshotIdleMs,
324
368
  readMs: readDurationMs,
325
369
  refreshStateMs: refreshStateDurationMs,
326
370
  error: error instanceof Error ? error.message : "unknown"
@@ -393,9 +437,11 @@ export class SessionHistoryService {
393
437
  return this.sessionChangedFileService.listBySessionId(sessionId);
394
438
  }
395
439
  listWorkspaceSessions(workspaceId, userId) {
396
- return this.enrichSessionItems(workspaceId, this.sessionIndexRepository
440
+ const directItems = this.sessionIndexRepository
397
441
  .listByWorkspace(workspaceId, userId)
398
- .filter((item) => !this.isPendingSessionAlias(item)));
442
+ .filter((item) => !this.isPendingSessionAlias(item));
443
+ const projectedItems = this.listProjectedIsolatedWorkspaceSessions(workspaceId, userId);
444
+ return this.enrichSessionItems(workspaceId, sortSessionListItemsByRecentActivity(mergeSessionListItemsBySessionId([...directItems, ...projectedItems])));
399
445
  }
400
446
  getProviderCapabilitiesSnapshot(provider) {
401
447
  try {
@@ -628,7 +674,8 @@ export class SessionHistoryService {
628
674
  }
629
675
  async forkSession(input) {
630
676
  const binding = this.getBindingOrThrow(input.sessionId);
631
- const workspace = this.getWorkspaceOrThrow(binding.workspaceId);
677
+ const targetWorkspaceId = input.targetWorkspaceId?.trim() || binding.workspaceId;
678
+ const workspace = this.getWorkspaceOrThrow(targetWorkspaceId);
632
679
  const targetProvider = input.targetProvider?.trim() || binding.provider;
633
680
  this.assertProviderCapabilityEnabled(targetProvider, "canStartSession", "当前 provider 不支持 fork 创建会话");
634
681
  const sourceMessageId = input.sourceType === "message"
@@ -756,7 +803,7 @@ export class SessionHistoryService {
756
803
  messages: reconstructedMessages
757
804
  });
758
805
  const startedSession = await this.startSessionDirect({
759
- workspaceId: sourceBinding.workspaceId,
806
+ workspaceId: input.targetWorkspaceId?.trim() || sourceBinding.workspaceId,
760
807
  userId: input.userId,
761
808
  provider: input.targetProvider,
762
809
  initialPrompt: inheritedPrompt,
@@ -794,7 +841,7 @@ export class SessionHistoryService {
794
841
  createdAt: timestamp
795
842
  });
796
843
  })();
797
- const relationMap = this.workspaceSessionRelations.get(sourceBinding.workspaceId)
844
+ const relationMap = this.workspaceSessionRelations.get(input.targetWorkspaceId?.trim() || sourceBinding.workspaceId)
798
845
  ?? new Map();
799
846
  relationMap.set(startedSession.sessionId, {
800
847
  parentSessionId: input.sessionId,
@@ -804,7 +851,7 @@ export class SessionHistoryService {
804
851
  isSubagent: startedSession.isSubagent ?? false,
805
852
  subagentLabel: startedSession.subagentLabel ?? null
806
853
  });
807
- this.workspaceSessionRelations.set(sourceBinding.workspaceId, relationMap);
854
+ this.workspaceSessionRelations.set(input.targetWorkspaceId?.trim() || sourceBinding.workspaceId, relationMap);
808
855
  return this.getSessionListItemOrThrow(startedSession.sessionId, input.userId);
809
856
  }
810
857
  async readForkSourceMessages(sessionId, binding, sourceType, sourceMessageId, sourceMessageSnapshot = null) {
@@ -1095,7 +1142,10 @@ export class SessionHistoryService {
1095
1142
  async deleteSession(sessionId, userId) {
1096
1143
  const binding = this.getBindingOrThrow(sessionId);
1097
1144
  const existing = this.getSessionListItemOrThrow(sessionId, userId);
1098
- if (existing.runningState === "starting" || existing.runningState === "running") {
1145
+ const resolvedExisting = existing.runningState === "starting" || existing.runningState === "running"
1146
+ ? await this.refreshRuntimeFallbackSession(sessionId, userId).catch(() => existing)
1147
+ : existing;
1148
+ if (resolvedExisting.runningState === "starting" || resolvedExisting.runningState === "running") {
1099
1149
  throw new AppError({
1100
1150
  statusCode: 409,
1101
1151
  errorCode: "SESSION_DELETE_RUNNING",
@@ -1685,13 +1735,14 @@ export class SessionHistoryService {
1685
1735
  }
1686
1736
  enrichSessionItems(workspaceId, items) {
1687
1737
  const relationMap = this.workspaceSessionRelations.get(workspaceId);
1738
+ const projectionBySessionId = this.buildParallelProjectionBySessionId(items);
1688
1739
  if (!relationMap) {
1689
- return items.map((item) => this.enrichSessionItem(item));
1740
+ return items.map((item) => this.enrichSessionItem(item, projectionBySessionId.get(item.sessionId)));
1690
1741
  }
1691
1742
  return items.map((item) => {
1692
1743
  const relation = relationMap.get(item.sessionId);
1693
1744
  if (!relation) {
1694
- return this.enrichSessionItem(item);
1745
+ return this.enrichSessionItem(item, projectionBySessionId.get(item.sessionId));
1695
1746
  }
1696
1747
  return this.enrichSessionItem({
1697
1748
  ...item,
@@ -1701,10 +1752,12 @@ export class SessionHistoryService {
1701
1752
  annotationSourceText: relation.annotationSourceText,
1702
1753
  isSubagent: relation.isSubagent,
1703
1754
  subagentLabel: relation.subagentLabel
1704
- });
1755
+ }, projectionBySessionId.get(item.sessionId));
1705
1756
  });
1706
1757
  }
1707
- enrichSessionItem(item) {
1758
+ enrichSessionItem(item, projection) {
1759
+ const resolvedProjection = projection
1760
+ ?? this.buildParallelProjectionBySessionId([item]).get(item.sessionId);
1708
1761
  const relation = this.workspaceSessionRelations.get(item.workspaceId)?.get(item.sessionId);
1709
1762
  const nextItem = relation
1710
1763
  ? {
@@ -1726,7 +1779,90 @@ export class SessionHistoryService {
1726
1779
  subagentLabel: item.subagentLabel ?? null
1727
1780
  };
1728
1781
  const resolution = this.sessionActivityAuthorityService.resolvePersistedSession(nextItem);
1729
- return applySessionActivityResolution(nextItem, resolution);
1782
+ return applySessionActivityResolution({
1783
+ ...nextItem,
1784
+ parallelGroup: resolvedProjection?.parallelGroup ?? null,
1785
+ displayParentSessionId: resolvedProjection?.displayParentSessionId ?? null,
1786
+ sessionIsolatedWorkspace: resolvedProjection?.sessionIsolatedWorkspace ?? null
1787
+ }, resolution);
1788
+ }
1789
+ buildParallelProjectionBySessionId(items) {
1790
+ const projectionBySessionId = new Map();
1791
+ if (!this.parallelSessionGroupRepository
1792
+ || !this.parallelSessionMemberRepository
1793
+ || !this.sessionIsolatedWorkspaceRepository
1794
+ || items.length === 0) {
1795
+ return projectionBySessionId;
1796
+ }
1797
+ const sessionIds = items.map((item) => item.sessionId);
1798
+ const members = this.parallelSessionMemberRepository
1799
+ .listBySessionIds(sessionIds)
1800
+ .filter((member) => member.deletedAt === null);
1801
+ if (members.length === 0) {
1802
+ return projectionBySessionId;
1803
+ }
1804
+ const groupIds = [...new Set(members.map((member) => member.groupId))];
1805
+ const groups = this.parallelSessionGroupRepository
1806
+ .listByIds(groupIds)
1807
+ .filter((group) => group.status !== "deleted");
1808
+ const groupById = new Map(groups.map((group) => [group.id, group]));
1809
+ const activeMembersByGroupId = new Map();
1810
+ for (const member of this.parallelSessionMemberRepository.listByGroupIds(groupIds)) {
1811
+ if (member.deletedAt !== null) {
1812
+ continue;
1813
+ }
1814
+ const groupMembers = activeMembersByGroupId.get(member.groupId) ?? [];
1815
+ groupMembers.push(member);
1816
+ activeMembersByGroupId.set(member.groupId, groupMembers);
1817
+ }
1818
+ const isolatedWorkspaceBySessionId = new Map(this.sessionIsolatedWorkspaceRepository
1819
+ .listByOwnerSessionIds(sessionIds)
1820
+ .map((record) => [record.ownerSessionId, record]));
1821
+ for (const member of members) {
1822
+ const group = groupById.get(member.groupId);
1823
+ if (!group) {
1824
+ continue;
1825
+ }
1826
+ const activeMembers = activeMembersByGroupId.get(member.groupId) ?? [member];
1827
+ const isolatedWorkspace = isolatedWorkspaceBySessionId.get(member.sessionId) ?? null;
1828
+ projectionBySessionId.set(member.sessionId, {
1829
+ parallelGroup: {
1830
+ groupId: group.id,
1831
+ role: member.sessionId === group.anchorSessionId ? "anchor" : "member",
1832
+ memberCount: activeMembers.length,
1833
+ sourceType: group.sourceType,
1834
+ sourceSessionId: group.sourceSessionId,
1835
+ anchorSessionId: group.anchorSessionId,
1836
+ colorToken: buildParallelGroupColorToken(group.id)
1837
+ },
1838
+ displayParentSessionId: resolveParallelDisplayParentSessionId(group, member),
1839
+ sessionIsolatedWorkspace: isolatedWorkspace
1840
+ ? {
1841
+ id: isolatedWorkspace.id,
1842
+ workspaceId: isolatedWorkspace.workspaceId,
1843
+ sourceWorkspaceId: isolatedWorkspace.sourceWorkspaceId,
1844
+ branchName: isolatedWorkspace.branchName,
1845
+ lifecycleStatus: isolatedWorkspace.lifecycleStatus,
1846
+ promotedAt: isolatedWorkspace.promotedAt,
1847
+ createdAt: isolatedWorkspace.createdAt,
1848
+ updatedAt: isolatedWorkspace.updatedAt
1849
+ }
1850
+ : null
1851
+ });
1852
+ }
1853
+ return projectionBySessionId;
1854
+ }
1855
+ listProjectedIsolatedWorkspaceSessions(workspaceId, userId) {
1856
+ if (!this.sessionIsolatedWorkspaceRepository) {
1857
+ return [];
1858
+ }
1859
+ return this.sessionIsolatedWorkspaceRepository
1860
+ .listBySourceWorkspaceId(workspaceId)
1861
+ .filter((record) => record.lifecycleStatus === "active"
1862
+ || record.lifecycleStatus === "removing")
1863
+ .map((record) => this.sessionIndexRepository.findBySessionId(record.ownerSessionId, userId))
1864
+ .filter((item) => Boolean(item))
1865
+ .filter((item) => !this.isPendingSessionAlias(item));
1730
1866
  }
1731
1867
  async pullSessionHistory(sessionId, cursor, limit, deliveredMessages, onEnvelope, envelopeType, isClosed = () => false) {
1732
1868
  let currentCursor = cursor;
@@ -2619,15 +2755,40 @@ export class SessionHistoryService {
2619
2755
  }
2620
2756
  async repairCodexDirtyBindingBeforeHistoryRead(sessionId, userId, binding) {
2621
2757
  if (!shouldRepairCodexDirtyBinding(binding)) {
2758
+ this.codexDirtyBindingRepairStates.delete(sessionId);
2622
2759
  return binding;
2623
2760
  }
2624
- await this.discoverWorkspaceSessions(binding.workspaceId, userId, {
2625
- force: true,
2626
- refreshStateMode: "deferred"
2627
- }).catch(() => {
2628
- return [];
2761
+ const existingState = this.codexDirtyBindingRepairStates.get(sessionId);
2762
+ if (existingState?.promise) {
2763
+ return existingState.promise;
2764
+ }
2765
+ const now = Date.now();
2766
+ if (existingState &&
2767
+ now - existingState.lastAttemptedAt < CODEX_DIRTY_BINDING_REPAIR_COOLDOWN_MS) {
2768
+ return this.getBindingOrThrow(sessionId);
2769
+ }
2770
+ const repairPromise = (async () => {
2771
+ await this.discoverWorkspaceSessions(binding.workspaceId, userId, {
2772
+ force: true,
2773
+ refreshStateMode: "deferred"
2774
+ }).catch(() => {
2775
+ return [];
2776
+ });
2777
+ return this.getBindingOrThrow(sessionId);
2778
+ })();
2779
+ this.codexDirtyBindingRepairStates.set(sessionId, {
2780
+ promise: repairPromise,
2781
+ lastAttemptedAt: now
2782
+ });
2783
+ return repairPromise.finally(() => {
2784
+ const currentState = this.codexDirtyBindingRepairStates.get(sessionId);
2785
+ if (!currentState || currentState.promise !== repairPromise) {
2786
+ return;
2787
+ }
2788
+ currentState.promise = null;
2789
+ currentState.lastAttemptedAt = Date.now();
2790
+ this.codexDirtyBindingRepairStates.set(sessionId, currentState);
2629
2791
  });
2630
- return this.getBindingOrThrow(sessionId);
2631
2792
  }
2632
2793
  resolveLiveActivityObservation(sessionId) {
2633
2794
  for (const resolver of this.liveActivityObservationResolvers) {
@@ -3234,7 +3395,7 @@ function createDeliveredHistoryMessageState() {
3234
3395
  };
3235
3396
  }
3236
3397
  function shouldRefreshMutableHistoryTail(provider, page, cursor, deliveredMessages) {
3237
- if (provider !== "kimi" || cursor === null || page.messages.length > 0) {
3398
+ if (!MUTABLE_HISTORY_TAIL_PROVIDERS.has(provider) || cursor === null || page.messages.length > 0) {
3238
3399
  return false;
3239
3400
  }
3240
3401
  return Date.now() - deliveredMessages.lastMutableTailRefreshAtMs >= MUTABLE_HISTORY_TAIL_REFRESH_INTERVAL_MS;
@@ -3490,6 +3651,11 @@ function shouldPreserveRuntimeTerminalState(current, inspection) {
3490
3651
  return inspection.lastEventAt.localeCompare(current.lastEventAt) <= 0;
3491
3652
  }
3492
3653
  if (current.runningState === "starting" || current.runningState === "running") {
3654
+ if (inspection.completedAtCandidate
3655
+ || inspection.errorCode
3656
+ || inspection.runningState === "interrupted") {
3657
+ return false;
3658
+ }
3493
3659
  return inspection.lastEventAt.localeCompare(current.lastEventAt) <= 0;
3494
3660
  }
3495
3661
  return false;
@@ -3717,6 +3883,23 @@ async function runBatchedTransactions(items, batchSize, transaction, logOptions)
3717
3883
  maxBatchMs
3718
3884
  };
3719
3885
  }
3886
+ function mergeSessionListItemsBySessionId(items) {
3887
+ const itemBySessionId = new Map();
3888
+ for (const item of items) {
3889
+ itemBySessionId.set(item.sessionId, item);
3890
+ }
3891
+ return [...itemBySessionId.values()];
3892
+ }
3893
+ function sortSessionListItemsByRecentActivity(items) {
3894
+ return [...items].sort((left, right) => {
3895
+ const leftPrimary = left.lastMessageAt ?? left.updatedAt;
3896
+ const rightPrimary = right.lastMessageAt ?? right.updatedAt;
3897
+ if (leftPrimary !== rightPrimary) {
3898
+ return rightPrimary.localeCompare(leftPrimary);
3899
+ }
3900
+ return right.updatedAt.localeCompare(left.updatedAt);
3901
+ });
3902
+ }
3720
3903
  function applyImmediateModelOptionFallbacks(capabilities, codexSnapshot, openCodeSnapshot) {
3721
3904
  if (capabilities.provider === "codex") {
3722
3905
  return {