@jingyi0605/codingns4dsh 0.2.0-beta.2 → 0.2.0-rc.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 (604) hide show
  1. package/README.en.md +4 -4
  2. package/README.md +18 -7
  3. package/assets/provider-icons/antigravity.svg +39 -0
  4. package/assets/provider-icons/codebuddy.svg +37 -0
  5. package/assets/provider-icons/cursor-cli.svg +1 -0
  6. package/assets/provider-icons/kiro-cli.svg +11 -0
  7. package/assets/provider-icons/minimax-code.svg +4 -0
  8. package/assets/provider-icons/qoder-cn.svg +5 -0
  9. package/assets/provider-icons/qoder.svg +5 -0
  10. package/assets/provider-icons/workbuddy.svg +29 -0
  11. package/assets/provider-icons/zcode.svg +14 -0
  12. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.d.ts.map +1 -1
  13. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js +78 -1
  14. package/data/build/dist/bootstrap/dsh-peer-host-preboot-shim.js.map +1 -1
  15. package/data/build/dist/client/account-bar.d.ts +2 -1
  16. package/data/build/dist/client/account-bar.d.ts.map +1 -1
  17. package/data/build/dist/client/account-bar.js +21 -16
  18. package/data/build/dist/client/account-bar.js.map +1 -1
  19. package/data/build/dist/client/bundle.js +8147 -2158
  20. package/data/build/dist/client/bundle.js.map +1 -1
  21. package/data/build/dist/client/cli-catalog.d.ts +1 -1
  22. package/data/build/dist/client/cli-catalog.d.ts.map +1 -1
  23. package/data/build/dist/client/cli-catalog.js +11 -5
  24. package/data/build/dist/client/cli-catalog.js.map +1 -1
  25. package/data/build/dist/client/cli-slots.d.ts.map +1 -1
  26. package/data/build/dist/client/cli-slots.js +127 -21
  27. package/data/build/dist/client/cli-slots.js.map +1 -1
  28. package/data/build/dist/client/debug/ui.d.ts +2 -1
  29. package/data/build/dist/client/debug/ui.d.ts.map +1 -1
  30. package/data/build/dist/client/debug/ui.js +41 -34
  31. package/data/build/dist/client/debug/ui.js.map +1 -1
  32. package/data/build/dist/client/delegate-command.d.ts +17 -0
  33. package/data/build/dist/client/delegate-command.d.ts.map +1 -0
  34. package/data/build/dist/client/delegate-command.js +597 -0
  35. package/data/build/dist/client/delegate-command.js.map +1 -0
  36. package/data/build/dist/client/delegate-plan.d.ts +40 -0
  37. package/data/build/dist/client/delegate-plan.d.ts.map +1 -0
  38. package/data/build/dist/client/delegate-plan.js +63 -0
  39. package/data/build/dist/client/delegate-plan.js.map +1 -0
  40. package/data/build/dist/client/delegate-ui-dom.d.ts +86 -0
  41. package/data/build/dist/client/delegate-ui-dom.d.ts.map +1 -0
  42. package/data/build/dist/client/delegate-ui-dom.js +647 -0
  43. package/data/build/dist/client/delegate-ui-dom.js.map +1 -0
  44. package/data/build/dist/client/external-tool-stream.d.ts.map +1 -1
  45. package/data/build/dist/client/external-tool-stream.js +44 -36
  46. package/data/build/dist/client/external-tool-stream.js.map +1 -1
  47. package/data/build/dist/client/features/cli-adapters.d.ts +7 -2
  48. package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
  49. package/data/build/dist/client/features/cli-adapters.js +153 -95
  50. package/data/build/dist/client/features/cli-adapters.js.map +1 -1
  51. package/data/build/dist/client/features/debug.d.ts.map +1 -1
  52. package/data/build/dist/client/features/debug.js +5 -3
  53. package/data/build/dist/client/features/debug.js.map +1 -1
  54. package/data/build/dist/client/features/file-management.d.ts.map +1 -1
  55. package/data/build/dist/client/features/file-management.js +7 -4
  56. package/data/build/dist/client/features/file-management.js.map +1 -1
  57. package/data/build/dist/client/features/lan-access-panel.js +10 -10
  58. package/data/build/dist/client/features/lan-access-panel.js.map +1 -1
  59. package/data/build/dist/client/features/lan-access.d.ts.map +1 -1
  60. package/data/build/dist/client/features/lan-access.js +8 -3
  61. package/data/build/dist/client/features/lan-access.js.map +1 -1
  62. package/data/build/dist/client/features/login-protection-panel.d.ts.map +1 -1
  63. package/data/build/dist/client/features/login-protection-panel.js +9 -7
  64. package/data/build/dist/client/features/login-protection-panel.js.map +1 -1
  65. package/data/build/dist/client/features/login-protection.js +2 -2
  66. package/data/build/dist/client/features/login-protection.js.map +1 -1
  67. package/data/build/dist/client/features/mobile-access-panel.d.ts.map +1 -1
  68. package/data/build/dist/client/features/mobile-access-panel.js +8 -7
  69. package/data/build/dist/client/features/mobile-access-panel.js.map +1 -1
  70. package/data/build/dist/client/features/mobile-access.d.ts.map +1 -1
  71. package/data/build/dist/client/features/mobile-access.js +6 -2
  72. package/data/build/dist/client/features/mobile-access.js.map +1 -1
  73. package/data/build/dist/client/features/peer-host.d.ts +6 -4
  74. package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
  75. package/data/build/dist/client/features/peer-host.js +459 -27
  76. package/data/build/dist/client/features/peer-host.js.map +1 -1
  77. package/data/build/dist/client/features/reverse-proxy.js +2 -2
  78. package/data/build/dist/client/features/reverse-proxy.js.map +1 -1
  79. package/data/build/dist/client/features/terminal-enhancement.js +2 -2
  80. package/data/build/dist/client/features/terminal-enhancement.js.map +1 -1
  81. package/data/build/dist/client/features/workspace-session-enhancement-panel.js +1 -1
  82. package/data/build/dist/client/features/workspace-session-enhancement-panel.js.map +1 -1
  83. package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
  84. package/data/build/dist/client/features/workspace-session-enhancement.js +8 -3
  85. package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
  86. package/data/build/dist/client/file-management-dom.d.ts +3 -0
  87. package/data/build/dist/client/file-management-dom.d.ts.map +1 -1
  88. package/data/build/dist/client/file-management-dom.js +41 -30
  89. package/data/build/dist/client/file-management-dom.js.map +1 -1
  90. package/data/build/dist/client/git-history-graph.d.ts +2 -2
  91. package/data/build/dist/client/git-history-graph.d.ts.map +1 -1
  92. package/data/build/dist/client/git-history-graph.js +2 -2
  93. package/data/build/dist/client/git-history-graph.js.map +1 -1
  94. package/data/build/dist/client/git-management.d.ts +2 -0
  95. package/data/build/dist/client/git-management.d.ts.map +1 -1
  96. package/data/build/dist/client/git-management.js +103 -75
  97. package/data/build/dist/client/git-management.js.map +1 -1
  98. package/data/build/dist/client/git-workspace-events.d.ts +7 -0
  99. package/data/build/dist/client/git-workspace-events.d.ts.map +1 -0
  100. package/data/build/dist/client/git-workspace-events.js +32 -0
  101. package/data/build/dist/client/git-workspace-events.js.map +1 -0
  102. package/data/build/dist/client/index.d.ts +2 -0
  103. package/data/build/dist/client/index.d.ts.map +1 -1
  104. package/data/build/dist/client/index.js +6 -5
  105. package/data/build/dist/client/index.js.map +1 -1
  106. package/data/build/dist/client/locale.d.ts +7 -0
  107. package/data/build/dist/client/locale.d.ts.map +1 -1
  108. package/data/build/dist/client/locale.js +140 -42
  109. package/data/build/dist/client/locale.js.map +1 -1
  110. package/data/build/dist/client/locales/debug.d.ts +9 -0
  111. package/data/build/dist/client/locales/debug.d.ts.map +1 -0
  112. package/data/build/dist/client/locales/debug.js +163 -0
  113. package/data/build/dist/client/locales/debug.js.map +1 -0
  114. package/data/build/dist/client/locales/fileWorkspace.d.ts +9 -0
  115. package/data/build/dist/client/locales/fileWorkspace.d.ts.map +1 -0
  116. package/data/build/dist/client/locales/fileWorkspace.js +139 -0
  117. package/data/build/dist/client/locales/fileWorkspace.js.map +1 -0
  118. package/data/build/dist/client/locales/git.d.ts +9 -0
  119. package/data/build/dist/client/locales/git.d.ts.map +1 -0
  120. package/data/build/dist/client/locales/git.js +223 -0
  121. package/data/build/dist/client/locales/git.js.map +1 -0
  122. package/data/build/dist/client/locales/panels.d.ts +9 -0
  123. package/data/build/dist/client/locales/panels.d.ts.map +1 -0
  124. package/data/build/dist/client/locales/panels.js +33 -0
  125. package/data/build/dist/client/locales/panels.js.map +1 -0
  126. package/data/build/dist/client/locales/peerHost.d.ts +9 -0
  127. package/data/build/dist/client/locales/peerHost.d.ts.map +1 -0
  128. package/data/build/dist/client/locales/peerHost.js +153 -0
  129. package/data/build/dist/client/locales/peerHost.js.map +1 -0
  130. package/data/build/dist/client/locales/peerHostWorkspace.d.ts +9 -0
  131. package/data/build/dist/client/locales/peerHostWorkspace.d.ts.map +1 -0
  132. package/data/build/dist/client/locales/peerHostWorkspace.js +69 -0
  133. package/data/build/dist/client/locales/peerHostWorkspace.js.map +1 -0
  134. package/data/build/dist/client/locales/terminalAuth.d.ts +9 -0
  135. package/data/build/dist/client/locales/terminalAuth.d.ts.map +1 -0
  136. package/data/build/dist/client/locales/terminalAuth.js +71 -0
  137. package/data/build/dist/client/locales/terminalAuth.js.map +1 -0
  138. package/data/build/dist/client/locales/usage.d.ts +9 -0
  139. package/data/build/dist/client/locales/usage.d.ts.map +1 -0
  140. package/data/build/dist/client/locales/usage.js +215 -0
  141. package/data/build/dist/client/locales/usage.js.map +1 -0
  142. package/data/build/dist/client/mobile-session-interaction.d.ts +44 -0
  143. package/data/build/dist/client/mobile-session-interaction.d.ts.map +1 -0
  144. package/data/build/dist/client/mobile-session-interaction.js +308 -0
  145. package/data/build/dist/client/mobile-session-interaction.js.map +1 -0
  146. package/data/build/dist/client/mobile-sidebar-gestures.d.ts +55 -7
  147. package/data/build/dist/client/mobile-sidebar-gestures.d.ts.map +1 -1
  148. package/data/build/dist/client/mobile-sidebar-gestures.js +339 -40
  149. package/data/build/dist/client/mobile-sidebar-gestures.js.map +1 -1
  150. package/data/build/dist/client/mobile-sidebar-rail-dom.d.ts +10 -2
  151. package/data/build/dist/client/mobile-sidebar-rail-dom.d.ts.map +1 -1
  152. package/data/build/dist/client/mobile-sidebar-rail-dom.js +14 -6
  153. package/data/build/dist/client/mobile-sidebar-rail-dom.js.map +1 -1
  154. package/data/build/dist/client/model-catalog-cache.d.ts +5 -0
  155. package/data/build/dist/client/model-catalog-cache.d.ts.map +1 -0
  156. package/data/build/dist/client/model-catalog-cache.js +58 -0
  157. package/data/build/dist/client/model-catalog-cache.js.map +1 -0
  158. package/data/build/dist/client/peer-host-aggregate-refresh.d.ts +7 -0
  159. package/data/build/dist/client/peer-host-aggregate-refresh.d.ts.map +1 -1
  160. package/data/build/dist/client/peer-host-aggregate-refresh.js +13 -1
  161. package/data/build/dist/client/peer-host-aggregate-refresh.js.map +1 -1
  162. package/data/build/dist/client/peer-host-connection-button.d.ts +14 -1
  163. package/data/build/dist/client/peer-host-connection-button.d.ts.map +1 -1
  164. package/data/build/dist/client/peer-host-connection-button.js +12 -4
  165. package/data/build/dist/client/peer-host-connection-button.js.map +1 -1
  166. package/data/build/dist/client/peer-host-management-panel.d.ts +3 -0
  167. package/data/build/dist/client/peer-host-management-panel.d.ts.map +1 -1
  168. package/data/build/dist/client/peer-host-management-panel.js +83 -79
  169. package/data/build/dist/client/peer-host-management-panel.js.map +1 -1
  170. package/data/build/dist/client/peer-host-native-projection.d.ts +17 -1
  171. package/data/build/dist/client/peer-host-native-projection.d.ts.map +1 -1
  172. package/data/build/dist/client/peer-host-native-projection.js +54 -8
  173. package/data/build/dist/client/peer-host-native-projection.js.map +1 -1
  174. package/data/build/dist/client/peer-host-native-store-projection.d.ts +6 -2
  175. package/data/build/dist/client/peer-host-native-store-projection.d.ts.map +1 -1
  176. package/data/build/dist/client/peer-host-native-store-projection.js +308 -10
  177. package/data/build/dist/client/peer-host-native-store-projection.js.map +1 -1
  178. package/data/build/dist/client/peer-host-scoped-client.js +5 -5
  179. package/data/build/dist/client/peer-host-scoped-client.js.map +1 -1
  180. package/data/build/dist/client/peer-host-workspace-tab.d.ts +8 -0
  181. package/data/build/dist/client/peer-host-workspace-tab.d.ts.map +1 -1
  182. package/data/build/dist/client/peer-host-workspace-tab.js +48 -28
  183. package/data/build/dist/client/peer-host-workspace-tab.js.map +1 -1
  184. package/data/build/dist/client/provider-icon-assets.js +18 -0
  185. package/data/build/dist/client/provider-icon-assets.js.map +1 -1
  186. package/data/build/dist/client/provider-icons.d.ts +8 -2
  187. package/data/build/dist/client/provider-icons.d.ts.map +1 -1
  188. package/data/build/dist/client/provider-icons.js +28 -7
  189. package/data/build/dist/client/provider-icons.js.map +1 -1
  190. package/data/build/dist/client/pwa-install-prompt.d.ts +4 -1
  191. package/data/build/dist/client/pwa-install-prompt.d.ts.map +1 -1
  192. package/data/build/dist/client/pwa-install-prompt.js +8 -7
  193. package/data/build/dist/client/pwa-install-prompt.js.map +1 -1
  194. package/data/build/dist/client/quick-phrase-layout.d.ts +11 -0
  195. package/data/build/dist/client/quick-phrase-layout.d.ts.map +1 -1
  196. package/data/build/dist/client/quick-phrase-layout.js +20 -0
  197. package/data/build/dist/client/quick-phrase-layout.js.map +1 -1
  198. package/data/build/dist/client/quick-phrase-slot.d.ts.map +1 -1
  199. package/data/build/dist/client/quick-phrase-slot.js +20 -8
  200. package/data/build/dist/client/quick-phrase-slot.js.map +1 -1
  201. package/data/build/dist/client/remote-web-context.js +10 -6
  202. package/data/build/dist/client/remote-web-context.js.map +1 -1
  203. package/data/build/dist/client/service-tier.d.ts +54 -0
  204. package/data/build/dist/client/service-tier.d.ts.map +1 -0
  205. package/data/build/dist/client/service-tier.js +78 -0
  206. package/data/build/dist/client/service-tier.js.map +1 -0
  207. package/data/build/dist/client/session-changed-files-view.d.ts +8 -1
  208. package/data/build/dist/client/session-changed-files-view.d.ts.map +1 -1
  209. package/data/build/dist/client/session-changed-files-view.js +71 -28
  210. package/data/build/dist/client/session-changed-files-view.js.map +1 -1
  211. package/data/build/dist/client/settings-anchor.d.ts +9 -3
  212. package/data/build/dist/client/settings-anchor.d.ts.map +1 -1
  213. package/data/build/dist/client/settings-anchor.js +8 -2
  214. package/data/build/dist/client/settings-anchor.js.map +1 -1
  215. package/data/build/dist/client/settings-promo-styles.d.ts +28 -0
  216. package/data/build/dist/client/settings-promo-styles.d.ts.map +1 -0
  217. package/data/build/dist/client/settings-promo-styles.js +58 -0
  218. package/data/build/dist/client/settings-promo-styles.js.map +1 -0
  219. package/data/build/dist/client/settings-promo.d.ts +14 -0
  220. package/data/build/dist/client/settings-promo.d.ts.map +1 -0
  221. package/data/build/dist/client/settings-promo.js +68 -0
  222. package/data/build/dist/client/settings-promo.js.map +1 -0
  223. package/data/build/dist/client/settings-section.d.ts +2 -1
  224. package/data/build/dist/client/settings-section.d.ts.map +1 -1
  225. package/data/build/dist/client/settings-section.js +10 -7
  226. package/data/build/dist/client/settings-section.js.map +1 -1
  227. package/data/build/dist/client/subscription-slot.d.ts +4 -1
  228. package/data/build/dist/client/subscription-slot.d.ts.map +1 -1
  229. package/data/build/dist/client/subscription-slot.js +497 -56
  230. package/data/build/dist/client/subscription-slot.js.map +1 -1
  231. package/data/build/dist/client/terminal/model.d.ts +94 -4
  232. package/data/build/dist/client/terminal/model.d.ts.map +1 -1
  233. package/data/build/dist/client/terminal/model.js +392 -33
  234. package/data/build/dist/client/terminal/model.js.map +1 -1
  235. package/data/build/dist/client/terminal/recovery.d.ts +16 -1
  236. package/data/build/dist/client/terminal/recovery.d.ts.map +1 -1
  237. package/data/build/dist/client/terminal/recovery.js +101 -39
  238. package/data/build/dist/client/terminal/recovery.js.map +1 -1
  239. package/data/build/dist/client/terminal/styles.d.ts +10 -0
  240. package/data/build/dist/client/terminal/styles.d.ts.map +1 -1
  241. package/data/build/dist/client/terminal/styles.js +27 -3
  242. package/data/build/dist/client/terminal/styles.js.map +1 -1
  243. package/data/build/dist/client/terminal/ui.d.ts +3 -2
  244. package/data/build/dist/client/terminal/ui.d.ts.map +1 -1
  245. package/data/build/dist/client/terminal/ui.js +216 -103
  246. package/data/build/dist/client/terminal/ui.js.map +1 -1
  247. package/data/build/dist/client/terminal/xterm-view.d.ts +8 -1
  248. package/data/build/dist/client/terminal/xterm-view.d.ts.map +1 -1
  249. package/data/build/dist/client/terminal/xterm-view.js +394 -34
  250. package/data/build/dist/client/terminal/xterm-view.js.map +1 -1
  251. package/data/build/dist/client/workspace-session-archive-dom.d.ts +3 -0
  252. package/data/build/dist/client/workspace-session-archive-dom.d.ts.map +1 -1
  253. package/data/build/dist/client/workspace-session-archive-dom.js +131 -45
  254. package/data/build/dist/client/workspace-session-archive-dom.js.map +1 -1
  255. package/data/build/dist/client/workspace-session-logo-dom.d.ts +3 -0
  256. package/data/build/dist/client/workspace-session-logo-dom.d.ts.map +1 -1
  257. package/data/build/dist/client/workspace-session-logo-dom.js +3 -1
  258. package/data/build/dist/client/workspace-session-logo-dom.js.map +1 -1
  259. package/data/build/dist/client/workspace-session-visibility-dom.d.ts +3 -0
  260. package/data/build/dist/client/workspace-session-visibility-dom.d.ts.map +1 -1
  261. package/data/build/dist/client/workspace-session-visibility-dom.js +46 -17
  262. package/data/build/dist/client/workspace-session-visibility-dom.js.map +1 -1
  263. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +10 -0
  264. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
  265. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +20 -0
  266. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
  267. package/data/build/dist/host/browser-text.d.ts +30 -0
  268. package/data/build/dist/host/browser-text.d.ts.map +1 -0
  269. package/data/build/dist/host/browser-text.js +105 -0
  270. package/data/build/dist/host/browser-text.js.map +1 -0
  271. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts +58 -0
  272. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -0
  273. package/data/build/dist/host/cli-adapters/acp-cli-driver.js +271 -0
  274. package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -0
  275. package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts +30 -0
  276. package/data/build/dist/host/cli-adapters/antigravity-driver.d.ts.map +1 -0
  277. package/data/build/dist/host/cli-adapters/antigravity-driver.js +210 -0
  278. package/data/build/dist/host/cli-adapters/antigravity-driver.js.map +1 -0
  279. package/data/build/dist/host/cli-adapters/claude-driver.d.ts +28 -2
  280. package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
  281. package/data/build/dist/host/cli-adapters/claude-driver.js +74 -4
  282. package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
  283. package/data/build/dist/host/cli-adapters/claude-model-options.d.ts.map +1 -1
  284. package/data/build/dist/host/cli-adapters/claude-model-options.js +22 -9
  285. package/data/build/dist/host/cli-adapters/claude-model-options.js.map +1 -1
  286. package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts +139 -0
  287. package/data/build/dist/host/cli-adapters/codebuddy-driver.d.ts.map +1 -0
  288. package/data/build/dist/host/cli-adapters/codebuddy-driver.js +1721 -0
  289. package/data/build/dist/host/cli-adapters/codebuddy-driver.js.map +1 -0
  290. package/data/build/dist/host/cli-adapters/codebuddy-subscription.d.ts +53 -0
  291. package/data/build/dist/host/cli-adapters/codebuddy-subscription.d.ts.map +1 -0
  292. package/data/build/dist/host/cli-adapters/codebuddy-subscription.js +778 -0
  293. package/data/build/dist/host/cli-adapters/codebuddy-subscription.js.map +1 -0
  294. package/data/build/dist/host/cli-adapters/codex-driver.d.ts +22 -0
  295. package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
  296. package/data/build/dist/host/cli-adapters/codex-driver.js +254 -7
  297. package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
  298. package/data/build/dist/host/cli-adapters/command-code-driver.d.ts +43 -3
  299. package/data/build/dist/host/cli-adapters/command-code-driver.d.ts.map +1 -1
  300. package/data/build/dist/host/cli-adapters/command-code-driver.js +681 -74
  301. package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
  302. package/data/build/dist/host/cli-adapters/command-code-history.d.ts +147 -0
  303. package/data/build/dist/host/cli-adapters/command-code-history.d.ts.map +1 -0
  304. package/data/build/dist/host/cli-adapters/command-code-history.js +659 -0
  305. package/data/build/dist/host/cli-adapters/command-code-history.js.map +1 -0
  306. package/data/build/dist/host/cli-adapters/cursor-driver.d.ts +12 -0
  307. package/data/build/dist/host/cli-adapters/cursor-driver.d.ts.map +1 -0
  308. package/data/build/dist/host/cli-adapters/cursor-driver.js +20 -0
  309. package/data/build/dist/host/cli-adapters/cursor-driver.js.map +1 -0
  310. package/data/build/dist/host/cli-adapters/custom-upstream-classifier.d.ts +67 -0
  311. package/data/build/dist/host/cli-adapters/custom-upstream-classifier.d.ts.map +1 -0
  312. package/data/build/dist/host/cli-adapters/custom-upstream-classifier.js +169 -0
  313. package/data/build/dist/host/cli-adapters/custom-upstream-classifier.js.map +1 -0
  314. package/data/build/dist/host/cli-adapters/delegate-dispatch.d.ts +48 -0
  315. package/data/build/dist/host/cli-adapters/delegate-dispatch.d.ts.map +1 -0
  316. package/data/build/dist/host/cli-adapters/delegate-dispatch.js +111 -0
  317. package/data/build/dist/host/cli-adapters/delegate-dispatch.js.map +1 -0
  318. package/data/build/dist/host/cli-adapters/delegation-authorization.d.ts +19 -0
  319. package/data/build/dist/host/cli-adapters/delegation-authorization.d.ts.map +1 -0
  320. package/data/build/dist/host/cli-adapters/delegation-authorization.js +49 -0
  321. package/data/build/dist/host/cli-adapters/delegation-authorization.js.map +1 -0
  322. package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.d.ts +34 -0
  323. package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.d.ts.map +1 -0
  324. package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.js +121 -0
  325. package/data/build/dist/host/cli-adapters/delegation-mention-rewrite.js.map +1 -0
  326. package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts +32 -0
  327. package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts.map +1 -0
  328. package/data/build/dist/host/cli-adapters/desktop-app-runtime.js +121 -0
  329. package/data/build/dist/host/cli-adapters/desktop-app-runtime.js.map +1 -0
  330. package/data/build/dist/host/cli-adapters/driver.d.ts +6 -0
  331. package/data/build/dist/host/cli-adapters/driver.d.ts.map +1 -1
  332. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  333. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +5 -4
  334. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  335. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.d.ts +16 -0
  336. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.d.ts.map +1 -0
  337. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js +73 -0
  338. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js.map +1 -0
  339. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  340. package/data/build/dist/host/cli-adapters/feature.js +459 -26
  341. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  342. package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -1
  343. package/data/build/dist/host/cli-adapters/gemini-driver.js +21 -5
  344. package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
  345. package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
  346. package/data/build/dist/host/cli-adapters/grok-driver.js +24 -7
  347. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  348. package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts +22 -6
  349. package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts.map +1 -1
  350. package/data/build/dist/host/cli-adapters/json-rpc-process.js +118 -21
  351. package/data/build/dist/host/cli-adapters/json-rpc-process.js.map +1 -1
  352. package/data/build/dist/host/cli-adapters/kimi-driver.d.ts.map +1 -1
  353. package/data/build/dist/host/cli-adapters/kimi-driver.js +25 -4
  354. package/data/build/dist/host/cli-adapters/kimi-driver.js.map +1 -1
  355. package/data/build/dist/host/cli-adapters/kiro-driver.d.ts +12 -0
  356. package/data/build/dist/host/cli-adapters/kiro-driver.d.ts.map +1 -0
  357. package/data/build/dist/host/cli-adapters/kiro-driver.js +18 -0
  358. package/data/build/dist/host/cli-adapters/kiro-driver.js.map +1 -0
  359. package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts +11 -2
  360. package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts.map +1 -1
  361. package/data/build/dist/host/cli-adapters/legacy-session-adapter.js +26 -6
  362. package/data/build/dist/host/cli-adapters/legacy-session-adapter.js.map +1 -1
  363. package/data/build/dist/host/cli-adapters/mcode-catalog.d.ts +23 -0
  364. package/data/build/dist/host/cli-adapters/mcode-catalog.d.ts.map +1 -0
  365. package/data/build/dist/host/cli-adapters/mcode-catalog.js +120 -0
  366. package/data/build/dist/host/cli-adapters/mcode-catalog.js.map +1 -0
  367. package/data/build/dist/host/cli-adapters/mcode-driver.d.ts +56 -0
  368. package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -0
  369. package/data/build/dist/host/cli-adapters/mcode-driver.js +544 -0
  370. package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -0
  371. package/data/build/dist/host/cli-adapters/model-catalog.d.ts +35 -5
  372. package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
  373. package/data/build/dist/host/cli-adapters/model-catalog.js +213 -8
  374. package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
  375. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts +81 -0
  376. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts.map +1 -0
  377. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js +299 -0
  378. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js.map +1 -0
  379. package/data/build/dist/host/cli-adapters/native-subagent-holder.d.ts +4 -0
  380. package/data/build/dist/host/cli-adapters/native-subagent-holder.d.ts.map +1 -0
  381. package/data/build/dist/host/cli-adapters/native-subagent-holder.js +4 -0
  382. package/data/build/dist/host/cli-adapters/native-subagent-holder.js.map +1 -0
  383. package/data/build/dist/host/cli-adapters/native-team-proxy.js +18 -15
  384. package/data/build/dist/host/cli-adapters/native-team-proxy.js.map +1 -1
  385. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts +57 -0
  386. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts.map +1 -0
  387. package/data/build/dist/host/cli-adapters/native-team-subagent.js +126 -0
  388. package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -0
  389. package/data/build/dist/host/cli-adapters/new-api-subscription.d.ts +75 -0
  390. package/data/build/dist/host/cli-adapters/new-api-subscription.d.ts.map +1 -0
  391. package/data/build/dist/host/cli-adapters/new-api-subscription.js +959 -0
  392. package/data/build/dist/host/cli-adapters/new-api-subscription.js.map +1 -0
  393. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
  394. package/data/build/dist/host/cli-adapters/opencode-driver.js +22 -10
  395. package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
  396. package/data/build/dist/host/cli-adapters/pi-driver.js +24 -7
  397. package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
  398. package/data/build/dist/host/cli-adapters/provider-subscription.d.ts +41 -4
  399. package/data/build/dist/host/cli-adapters/provider-subscription.d.ts.map +1 -1
  400. package/data/build/dist/host/cli-adapters/provider-subscription.js +254 -40
  401. package/data/build/dist/host/cli-adapters/provider-subscription.js.map +1 -1
  402. package/data/build/dist/host/cli-adapters/qoder-driver.d.ts +71 -0
  403. package/data/build/dist/host/cli-adapters/qoder-driver.d.ts.map +1 -0
  404. package/data/build/dist/host/cli-adapters/qoder-driver.js +553 -0
  405. package/data/build/dist/host/cli-adapters/qoder-driver.js.map +1 -0
  406. package/data/build/dist/host/cli-adapters/qoder-subscription.d.ts +31 -0
  407. package/data/build/dist/host/cli-adapters/qoder-subscription.d.ts.map +1 -0
  408. package/data/build/dist/host/cli-adapters/qoder-subscription.js +178 -0
  409. package/data/build/dist/host/cli-adapters/qoder-subscription.js.map +1 -0
  410. package/data/build/dist/host/cli-adapters/registry-holder.d.ts +4 -0
  411. package/data/build/dist/host/cli-adapters/registry-holder.d.ts.map +1 -0
  412. package/data/build/dist/host/cli-adapters/registry-holder.js +9 -0
  413. package/data/build/dist/host/cli-adapters/registry-holder.js.map +1 -0
  414. package/data/build/dist/host/cli-adapters/registry.d.ts +54 -2
  415. package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
  416. package/data/build/dist/host/cli-adapters/registry.js +224 -18
  417. package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
  418. package/data/build/dist/host/cli-adapters/session-store.d.ts +10 -1
  419. package/data/build/dist/host/cli-adapters/session-store.d.ts.map +1 -1
  420. package/data/build/dist/host/cli-adapters/session-store.js +60 -6
  421. package/data/build/dist/host/cli-adapters/session-store.js.map +1 -1
  422. package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts +16 -1
  423. package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
  424. package/data/build/dist/host/cli-adapters/standard-stream-driver.js +150 -26
  425. package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
  426. package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts +10 -1
  427. package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts.map +1 -1
  428. package/data/build/dist/host/cli-adapters/stream-normalizer.js +23 -0
  429. package/data/build/dist/host/cli-adapters/stream-normalizer.js.map +1 -1
  430. package/data/build/dist/host/cli-adapters/subagent-tool.d.ts +5 -0
  431. package/data/build/dist/host/cli-adapters/subagent-tool.d.ts.map +1 -0
  432. package/data/build/dist/host/cli-adapters/subagent-tool.js +112 -0
  433. package/data/build/dist/host/cli-adapters/subagent-tool.js.map +1 -0
  434. package/data/build/dist/host/cli-adapters/zcode-driver.d.ts +57 -0
  435. package/data/build/dist/host/cli-adapters/zcode-driver.d.ts.map +1 -0
  436. package/data/build/dist/host/cli-adapters/zcode-driver.js +843 -0
  437. package/data/build/dist/host/cli-adapters/zcode-driver.js.map +1 -0
  438. package/data/build/dist/host/cli-adapters/zcode-subscription.d.ts +28 -0
  439. package/data/build/dist/host/cli-adapters/zcode-subscription.d.ts.map +1 -0
  440. package/data/build/dist/host/cli-adapters/zcode-subscription.js +212 -0
  441. package/data/build/dist/host/cli-adapters/zcode-subscription.js.map +1 -0
  442. package/data/build/dist/host/cli-bridge/bridge-holder.d.ts +27 -0
  443. package/data/build/dist/host/cli-bridge/bridge-holder.d.ts.map +1 -0
  444. package/data/build/dist/host/cli-bridge/bridge-holder.js +51 -0
  445. package/data/build/dist/host/cli-bridge/bridge-holder.js.map +1 -0
  446. package/data/build/dist/host/cli-bridge/bridge-server.d.ts +39 -0
  447. package/data/build/dist/host/cli-bridge/bridge-server.d.ts.map +1 -0
  448. package/data/build/dist/host/cli-bridge/bridge-server.js +140 -0
  449. package/data/build/dist/host/cli-bridge/bridge-server.js.map +1 -0
  450. package/data/build/dist/host/cli-bridge/command-code-mod.d.ts +29 -0
  451. package/data/build/dist/host/cli-bridge/command-code-mod.d.ts.map +1 -0
  452. package/data/build/dist/host/cli-bridge/command-code-mod.js +91 -0
  453. package/data/build/dist/host/cli-bridge/command-code-mod.js.map +1 -0
  454. package/data/build/dist/host/cli-bridge/dispatch.d.ts +19 -0
  455. package/data/build/dist/host/cli-bridge/dispatch.d.ts.map +1 -0
  456. package/data/build/dist/host/cli-bridge/dispatch.js +128 -0
  457. package/data/build/dist/host/cli-bridge/dispatch.js.map +1 -0
  458. package/data/build/dist/host/cli-bridge/injections.d.ts +28 -0
  459. package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -0
  460. package/data/build/dist/host/cli-bridge/injections.js +131 -0
  461. package/data/build/dist/host/cli-bridge/injections.js.map +1 -0
  462. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.d.ts +8 -0
  463. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.d.ts.map +1 -0
  464. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js +170 -0
  465. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js.map +1 -0
  466. package/data/build/dist/host/features/lan-access-dsh.d.ts.map +1 -1
  467. package/data/build/dist/host/features/lan-access-dsh.js +6 -2
  468. package/data/build/dist/host/features/lan-access-dsh.js.map +1 -1
  469. package/data/build/dist/host/features/peer-host.d.ts +21 -1
  470. package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
  471. package/data/build/dist/host/features/peer-host.js +176 -31
  472. package/data/build/dist/host/features/peer-host.js.map +1 -1
  473. package/data/build/dist/host/features/types.d.ts +2 -0
  474. package/data/build/dist/host/features/types.d.ts.map +1 -1
  475. package/data/build/dist/host/index.d.ts +15 -1
  476. package/data/build/dist/host/index.d.ts.map +1 -1
  477. package/data/build/dist/host/index.js +48 -2
  478. package/data/build/dist/host/index.js.map +1 -1
  479. package/data/build/dist/host/lan-access-dsh.d.ts +7 -1
  480. package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
  481. package/data/build/dist/host/lan-access-dsh.js +95 -19
  482. package/data/build/dist/host/lan-access-dsh.js.map +1 -1
  483. package/data/build/dist/host/login-attempt-guard.d.ts +55 -0
  484. package/data/build/dist/host/login-attempt-guard.d.ts.map +1 -0
  485. package/data/build/dist/host/login-attempt-guard.js +201 -0
  486. package/data/build/dist/host/login-attempt-guard.js.map +1 -0
  487. package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts +3 -0
  488. package/data/build/dist/host/modules/peer-host/host-api-proxy-service.d.ts.map +1 -1
  489. package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js +2 -0
  490. package/data/build/dist/host/modules/peer-host/host-api-proxy-service.js.map +1 -1
  491. package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.d.ts +1 -0
  492. package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.d.ts.map +1 -1
  493. package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.js +1 -0
  494. package/data/build/dist/host/modules/peer-host/peer-host-aggregate-service.js.map +1 -1
  495. package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.d.ts +1 -1
  496. package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.d.ts.map +1 -1
  497. package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.js +9 -1
  498. package/data/build/dist/host/modules/peer-host/peer-host-native-protocol.js.map +1 -1
  499. package/data/build/dist/host/modules/peer-host/peer-host-native-transport.d.ts +8 -0
  500. package/data/build/dist/host/modules/peer-host/peer-host-native-transport.d.ts.map +1 -1
  501. package/data/build/dist/host/modules/peer-host/peer-host-native-transport.js +9 -0
  502. package/data/build/dist/host/modules/peer-host/peer-host-native-transport.js.map +1 -1
  503. package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.d.ts +7 -0
  504. package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.d.ts.map +1 -1
  505. package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js +31 -3
  506. package/data/build/dist/host/modules/peer-host/peer-host-remote-summary-source.js.map +1 -1
  507. package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.d.ts +2 -0
  508. package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.d.ts.map +1 -1
  509. package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.js +26 -7
  510. package/data/build/dist/host/modules/peer-host/peer-host-virtual-registry.js.map +1 -1
  511. package/data/build/dist/host/modules/pwa/pwa-assets.d.ts +6 -4
  512. package/data/build/dist/host/modules/pwa/pwa-assets.d.ts.map +1 -1
  513. package/data/build/dist/host/modules/pwa/pwa-assets.js +11 -9
  514. package/data/build/dist/host/modules/pwa/pwa-assets.js.map +1 -1
  515. package/data/build/dist/host/modules/pwa/pwa-session-notifications.d.ts +3 -0
  516. package/data/build/dist/host/modules/pwa/pwa-session-notifications.d.ts.map +1 -1
  517. package/data/build/dist/host/modules/pwa/pwa-session-notifications.js +6 -4
  518. package/data/build/dist/host/modules/pwa/pwa-session-notifications.js.map +1 -1
  519. package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
  520. package/data/build/dist/host/native-session-bridge.js +106 -59
  521. package/data/build/dist/host/native-session-bridge.js.map +1 -1
  522. package/data/build/dist/host/rpc.js +8 -2
  523. package/data/build/dist/host/rpc.js.map +1 -1
  524. package/data/build/dist/host/settings.d.ts.map +1 -1
  525. package/data/build/dist/host/settings.js +14 -4
  526. package/data/build/dist/host/settings.js.map +1 -1
  527. package/data/build/dist/host/terminal/backends/local-pty-backend.d.ts.map +1 -1
  528. package/data/build/dist/host/terminal/backends/local-pty-backend.js +14 -0
  529. package/data/build/dist/host/terminal/backends/local-pty-backend.js.map +1 -1
  530. package/data/build/dist/host/terminal/backends/tmux-backend.d.ts +40 -1
  531. package/data/build/dist/host/terminal/backends/tmux-backend.d.ts.map +1 -1
  532. package/data/build/dist/host/terminal/backends/tmux-backend.js +291 -18
  533. package/data/build/dist/host/terminal/backends/tmux-backend.js.map +1 -1
  534. package/data/build/dist/host/terminal/runtime-adapter.d.ts +32 -0
  535. package/data/build/dist/host/terminal/runtime-adapter.d.ts.map +1 -1
  536. package/data/build/dist/host/terminal/runtime-adapter.js +8 -0
  537. package/data/build/dist/host/terminal/runtime-adapter.js.map +1 -1
  538. package/data/build/dist/host/terminal/runtime-manager.d.ts +3 -0
  539. package/data/build/dist/host/terminal/runtime-manager.d.ts.map +1 -1
  540. package/data/build/dist/host/terminal/runtime-manager.js +92 -4
  541. package/data/build/dist/host/terminal/runtime-manager.js.map +1 -1
  542. package/data/build/dist/host/terminal/terminal-controller.d.ts.map +1 -1
  543. package/data/build/dist/host/terminal/terminal-controller.js +58 -6
  544. package/data/build/dist/host/terminal/terminal-controller.js.map +1 -1
  545. package/data/build/dist/host/terminal/terminal-process-service.d.ts.map +1 -1
  546. package/data/build/dist/host/terminal/terminal-process-service.js +12 -2
  547. package/data/build/dist/host/terminal/terminal-process-service.js.map +1 -1
  548. package/data/build/dist/host/terminal/terminal-service.d.ts +41 -4
  549. package/data/build/dist/host/terminal/terminal-service.d.ts.map +1 -1
  550. package/data/build/dist/host/terminal/terminal-service.js +551 -61
  551. package/data/build/dist/host/terminal/terminal-service.js.map +1 -1
  552. package/data/build/dist/index.d.ts +2 -2
  553. package/data/build/dist/index.d.ts.map +1 -1
  554. package/data/build/dist/index.js +2 -2
  555. package/data/build/dist/index.js.map +1 -1
  556. package/data/build/dist/shared/contracts/cli-adapter.d.ts +69 -2
  557. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  558. package/data/build/dist/shared/contracts/config.d.ts +63 -10
  559. package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
  560. package/data/build/dist/shared/contracts/config.js +57 -5
  561. package/data/build/dist/shared/contracts/config.js.map +1 -1
  562. package/data/build/dist/shared/contracts/peer-host.d.ts +2 -0
  563. package/data/build/dist/shared/contracts/peer-host.d.ts.map +1 -1
  564. package/data/build/dist/shared/contracts/peer-host.js.map +1 -1
  565. package/data/build/dist/shared/contracts/subscription.d.ts +20 -1
  566. package/data/build/dist/shared/contracts/subscription.d.ts.map +1 -1
  567. package/data/build/dist/shared/contracts/subscription.js.map +1 -1
  568. package/data/build/dist/shared/contracts/terminal.d.ts +8 -1
  569. package/data/build/dist/shared/contracts/terminal.d.ts.map +1 -1
  570. package/data/build/dist/shared/contracts/version.d.ts +1 -1
  571. package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
  572. package/data/build/dist/shared/contracts/version.js +1 -1
  573. package/data/build/dist/shared/contracts/version.js.map +1 -1
  574. package/data/build/dist/shared/debug.d.ts +8 -0
  575. package/data/build/dist/shared/debug.d.ts.map +1 -1
  576. package/data/build/dist/shared/debug.js +43 -7
  577. package/data/build/dist/shared/debug.js.map +1 -1
  578. package/data/build/dist/shared/delegation-carrier.d.ts +24 -0
  579. package/data/build/dist/shared/delegation-carrier.d.ts.map +1 -0
  580. package/data/build/dist/shared/delegation-carrier.js +111 -0
  581. package/data/build/dist/shared/delegation-carrier.js.map +1 -0
  582. package/data/build/dist/shared/index.d.ts +3 -3
  583. package/data/build/dist/shared/index.d.ts.map +1 -1
  584. package/data/build/dist/shared/index.js +2 -2
  585. package/data/build/dist/shared/index.js.map +1 -1
  586. package/data/build/dist/shared/terminal-input.d.ts +8 -0
  587. package/data/build/dist/shared/terminal-input.d.ts.map +1 -0
  588. package/data/build/dist/shared/terminal-input.js +10 -0
  589. package/data/build/dist/shared/terminal-input.js.map +1 -0
  590. package/data/build/dist/transport/debug.d.ts +7 -0
  591. package/data/build/dist/transport/debug.d.ts.map +1 -1
  592. package/data/build/dist/transport/debug.js +33 -5
  593. package/data/build/dist/transport/debug.js.map +1 -1
  594. package/data/build/dist/transport/index.d.ts +1 -1
  595. package/data/build/dist/transport/index.d.ts.map +1 -1
  596. package/data/build/dist/transport/index.js +1 -1
  597. package/data/build/dist/transport/index.js.map +1 -1
  598. package/data/build/dist/typert.host.js +1 -1
  599. package/data/build/dist/typert.host.js.map +1 -1
  600. package/package.json +3 -1
  601. package/profile/README.md +2 -2
  602. package/profile/package.json +2 -2
  603. package/profile/version.json +1 -1
  604. package/version.json +1 -1
@@ -18,6 +18,7 @@ export interface PeerHostVirtualSessionSummary {
18
18
  readonly running: boolean;
19
19
  readonly blank: boolean;
20
20
  readonly cwd?: string;
21
+ readonly adapterId?: string;
21
22
  readonly projections: {
22
23
  readonly kind: 'cached';
23
24
  readonly values: {
@@ -27,7 +28,13 @@ export interface PeerHostVirtualSessionSummary {
27
28
  }
28
29
  export interface PeerHostNativeProjection {
29
30
  /** 记录新的聚合快照;返回 true 表示与上一次不同,调用方据此刷新原生数据。 */
30
- setAggregate(results: readonly AggregateHostResult[]): boolean;
31
+ setAggregate(results: readonly AggregateHostResult[], orderedWorkspaceIds?: readonly string[]): boolean;
32
+ /** 更新 Host 侧持久化的全局 Workspace 顺序;顺序变化必须触发原生 Store 刷新。 */
33
+ setWorkspaceOrder(orderedWorkspaceIds: readonly string[]): boolean;
34
+ /** 当前 Host 侧返回的混合 Workspace 顺序。 */
35
+ workspaceOrder(): readonly string[];
36
+ /** 当前本地 Host 的稳定 ID,用于把原生裸 Workspace ID 映射到虚拟顺序 ID。 */
37
+ localHostId(): string | undefined;
31
38
  /** 当前全部虚拟工作区(供原生 Workspace Store 合并)。 */
32
39
  workspaces(): readonly PeerHostVirtualWorkspaceView[];
33
40
  /** 当前全部虚拟会话摘要(供 `session/list` 响应合并)。 */
@@ -35,6 +42,15 @@ export interface PeerHostNativeProjection {
35
42
  /** 订阅聚合变化;原生 Store 的订阅会转发到这里。 */
36
43
  subscribe(listener: () => void): () => void;
37
44
  }
45
+ /**
46
+ * 为混合工作区生成只用于原生侧栏树归属的稳定路径。
47
+ *
48
+ * DSH 会把 `workspace.path` 的目录前缀关系解释成父子工作区。不同 Host 的真实
49
+ * 路径以及本地工作区之间都可能发生前缀重叠,因此列表层不能继续暴露真实目录。
50
+ * 这里使用不对应本机文件系统的 URI,并把完整虚拟 ID 编码成单一段,保证所有
51
+ * 工作区都是同一层的兄弟节点。文件和会话请求仍使用所属 Host 的真实路径。
52
+ */
53
+ export declare function createPeerHostWorkspaceDisplayPath(virtualWorkspaceId: string): string;
38
54
  /**
39
55
  * 把 PeerHost 聚合摘要投影成 DSH 原生列表可直接消费的虚拟资源。
40
56
  *
@@ -1 +1 @@
1
- {"version":3,"file":"peer-host-native-projection.d.ts","sourceRoot":"","sources":["../../../../src/client/peer-host-native-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAoD,MAAM,kCAAkC,CAAA;AAG7H,kEAAkE;AAClE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,oCAAoC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,iEAAiE;AACjE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAC/F;AAED,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,GAAG,OAAO,CAAA;IAC9D,yCAAyC;IACzC,UAAU,IAAI,SAAS,4BAA4B,EAAE,CAAA;IACrD,yCAAyC;IACzC,QAAQ,IAAI,SAAS,6BAA6B,EAAE,CAAA;IACpD,iCAAiC;IACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,IAAI,wBAAwB,CAwBzE"}
1
+ {"version":3,"file":"peer-host-native-projection.d.ts","sourceRoot":"","sources":["../../../../src/client/peer-host-native-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAoD,MAAM,kCAAkC,CAAA;AAI7H,kEAAkE;AAClE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,oCAAoC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,iEAAiE;AACjE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAC/F;AAED,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,YAAY,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EAAE,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAA;IACvG,wDAAwD;IACxD,iBAAiB,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAA;IAClE,mCAAmC;IACnC,cAAc,IAAI,SAAS,MAAM,EAAE,CAAA;IACnC,uDAAuD;IACvD,WAAW,IAAI,MAAM,GAAG,SAAS,CAAA;IACjC,yCAAyC;IACzC,UAAU,IAAI,SAAS,4BAA4B,EAAE,CAAA;IACrD,yCAAyC;IACzC,QAAQ,IAAI,SAAS,6BAA6B,EAAE,CAAA;IACpD,iCAAiC;IACjC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAErF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,IAAI,wBAAwB,CA8CzE"}
@@ -1,4 +1,16 @@
1
1
  import { createVirtualSessionId, createVirtualWorkspaceId } from '../shared/contracts/peer-host.js';
2
+ import { publishSessionAdapter } from './session-adapter-cache.js';
3
+ /**
4
+ * 为混合工作区生成只用于原生侧栏树归属的稳定路径。
5
+ *
6
+ * DSH 会把 `workspace.path` 的目录前缀关系解释成父子工作区。不同 Host 的真实
7
+ * 路径以及本地工作区之间都可能发生前缀重叠,因此列表层不能继续暴露真实目录。
8
+ * 这里使用不对应本机文件系统的 URI,并把完整虚拟 ID 编码成单一段,保证所有
9
+ * 工作区都是同一层的兄弟节点。文件和会话请求仍使用所属 Host 的真实路径。
10
+ */
11
+ export function createPeerHostWorkspaceDisplayPath(virtualWorkspaceId) {
12
+ return `codingns-peer-host://${encodeURIComponent(virtualWorkspaceId)}`;
13
+ }
2
14
  /**
3
15
  * 把 PeerHost 聚合摘要投影成 DSH 原生列表可直接消费的虚拟资源。
4
16
  *
@@ -9,20 +21,44 @@ import { createVirtualSessionId, createVirtualWorkspaceId } from '../shared/cont
9
21
  export function createPeerHostNativeProjection() {
10
22
  let workspaces = [];
11
23
  let sessions = [];
24
+ let orderedWorkspaceIds = [];
25
+ let localHostId;
12
26
  const listeners = new Set();
13
27
  return {
14
- setAggregate(results) {
28
+ setAggregate(results, nextOrderedWorkspaceIds) {
15
29
  const next = projectAggregate(results);
16
- const changed = !sameWorkspaces(workspaces, next.workspaces) || !sameSessions(sessions, next.sessions);
30
+ // 某次摘要失败可能暂时不带本地 Host;保留上一次稳定 ID,避免原生裸 ID
31
+ // 在这一轮被误当成未知项而跳到远端工作区之后。
32
+ const nextLocalHostId = next.localHostId ?? localHostId;
33
+ const nextOrder = nextOrderedWorkspaceIds === undefined
34
+ ? orderedWorkspaceIds
35
+ : normalizeWorkspaceOrder(nextOrderedWorkspaceIds);
36
+ const changed = !sameWorkspaces(workspaces, next.workspaces)
37
+ || !sameSessions(sessions, next.sessions)
38
+ || !sameIds(orderedWorkspaceIds, nextOrder)
39
+ || localHostId !== nextLocalHostId;
17
40
  if (!changed)
18
41
  return false;
19
42
  // 无变化时保留原引用:下游 Store 快照与 useSyncExternalStore 依赖引用稳定。
20
43
  workspaces = next.workspaces;
21
44
  sessions = next.sessions;
45
+ orderedWorkspaceIds = sameIds(orderedWorkspaceIds, nextOrder) ? orderedWorkspaceIds : nextOrder;
46
+ localHostId = nextLocalHostId;
47
+ for (const listener of [...listeners])
48
+ listener();
49
+ return true;
50
+ },
51
+ setWorkspaceOrder(nextOrderedWorkspaceIds) {
52
+ const next = normalizeWorkspaceOrder(nextOrderedWorkspaceIds);
53
+ if (sameIds(orderedWorkspaceIds, next))
54
+ return false;
55
+ orderedWorkspaceIds = next;
22
56
  for (const listener of [...listeners])
23
57
  listener();
24
58
  return true;
25
59
  },
60
+ workspaceOrder: () => orderedWorkspaceIds,
61
+ localHostId: () => localHostId,
26
62
  workspaces: () => workspaces,
27
63
  sessions: () => sessions,
28
64
  subscribe(listener) {
@@ -36,6 +72,7 @@ export function createPeerHostNativeProjection() {
36
72
  function projectAggregate(results) {
37
73
  const workspaces = [];
38
74
  const sessions = [];
75
+ const localHostId = results.find((host) => host.targetHostId === null)?.hostId;
39
76
  for (const host of results) {
40
77
  // 本地 Host 的资源由 DSH 自己提供;只投影远端,避免与原生条目重复。
41
78
  if (host.targetHostId === null)
@@ -47,13 +84,17 @@ function projectAggregate(results) {
47
84
  sessions.push(...projected.sessions);
48
85
  }
49
86
  }
50
- return { workspaces, sessions };
87
+ return { workspaces, sessions, localHostId };
88
+ }
89
+ function normalizeWorkspaceOrder(ids) {
90
+ return [...new Set(ids.filter((id) => typeof id === 'string' && id.trim() !== ''))];
51
91
  }
52
92
  function projectWorkspace(virtualHostId, workspace) {
53
93
  const virtualWorkspaceId = createVirtualWorkspaceId(virtualHostId, workspace.workspaceId);
54
- // 原生文件面板按工作区 path 解析目录,必须用远端真实根目录而不是 workspaceId,
55
- // 否则目标端会拿 workspaceId 当文件路径并报 `no entry at "<workspaceId>"`。
56
- const path = workspace.path;
94
+ // 真实路径保留给会话摘要和远端请求;Workspace Store 的 path 使用独立显示值,
95
+ // 防止 DSH 把本地与远端目录前缀识别成父子关系。
96
+ const displayPath = createPeerHostWorkspaceDisplayPath(virtualWorkspaceId);
97
+ const realPath = workspace.path;
57
98
  const sessionIds = [];
58
99
  const archivedSessionIds = [];
59
100
  const sessions = [];
@@ -66,7 +107,7 @@ function projectWorkspace(virtualHostId, workspace) {
66
107
  sessionIds.push(virtualSessionId);
67
108
  if (archived)
68
109
  archivedSessionIds.push(virtualSessionId);
69
- sessions.push(projectSession(virtualSessionId, session, path));
110
+ sessions.push(projectSession(virtualSessionId, session, realPath));
70
111
  updatedAt = Math.max(updatedAt, session.updatedAt);
71
112
  };
72
113
  for (const session of workspace.sessions)
@@ -76,7 +117,7 @@ function projectWorkspace(virtualHostId, workspace) {
76
117
  return {
77
118
  workspace: {
78
119
  workspaceId: virtualWorkspaceId,
79
- path,
120
+ path: displayPath,
80
121
  // Host 归属不再写进标题文本:侧栏由彩色标签表达,标题保持干净,可搜索、
81
122
  // 可重命名,也不会污染 hover 卡片与重命名初值。
82
123
  title: workspace.displayName,
@@ -90,6 +131,8 @@ function projectWorkspace(virtualHostId, workspace) {
90
131
  };
91
132
  }
92
133
  function projectSession(virtualSessionId, session, cwd) {
134
+ if (session.adapterId !== undefined)
135
+ publishSessionAdapter(virtualSessionId, session.adapterId);
93
136
  return {
94
137
  agentAvailable: true,
95
138
  sessionId: virtualSessionId,
@@ -100,6 +143,7 @@ function projectSession(virtualSessionId, session, cwd) {
100
143
  cwd,
101
144
  // DSH 列表行的标题只读投影值:cached 块只填没有原生水位的键,适合跨 Host 摘要。
102
145
  projections: { kind: 'cached', values: { title: session.title } },
146
+ ...(session.adapterId === undefined ? {} : { adapterId: session.adapterId }),
103
147
  };
104
148
  }
105
149
  function sameWorkspaces(previous, next) {
@@ -131,6 +175,8 @@ function sameSessions(previous, next) {
131
175
  && session.updatedAt === candidate.updatedAt
132
176
  && session.running === candidate.running
133
177
  && session.blank === candidate.blank
178
+ && session.cwd === candidate.cwd
179
+ && session.adapterId === candidate.adapterId
134
180
  && session.projections.values.title === candidate.projections.values.title;
135
181
  });
136
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"peer-host-native-projection.js","sourceRoot":"","sources":["../../../../src/client/peer-host-native-projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer-host-native-projection.js","sourceRoot":"","sources":["../../../../src/client/peer-host-native-projection.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,19 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
- import type { PeerHostNativeProjection } from './peer-host-native-projection.js';
2
+ import { type PeerHostNativeProjection } from './peer-host-native-projection.js';
3
3
  /**
4
4
  * 把虚拟工作区就地投影进 DSH 原生 Workspace Store。
5
5
  *
6
6
  * 原生侧栏在插件 apply 时按引用捕获 `workspaces.list`(`slots.provideRoot` 的 hooks
7
7
  * 与组件字段持有的是同一个对象),替换服务属性对它不可见;因此这里只改写这个对象
8
- * 自己的读取方法,写入口保持原生行为,禁用 PeerHost 后可以原样还原。
8
+ * 自己的读取方法,并就地包装拖拽写入口,禁用 PeerHost 后可以原样还原。
9
9
  */
10
10
  export declare function installPeerHostNativeStoreProjection(input: {
11
11
  readonly uiContext: Context | undefined;
12
12
  readonly projection: PeerHostNativeProjection;
13
+ /** 将原生拖拽写入 Host 侧持久化的混合顺序。 */
14
+ readonly moveWorkspace?: (virtualWorkspaceId: string, beforeVirtualWorkspaceId: string | null) => Promise<readonly string[]>;
15
+ /** 拖拽发生在首次聚合完成前时,主动刷新 Host 顺序并更新投影。 */
16
+ readonly refreshWorkspaceOrder?: () => Promise<readonly string[]>;
13
17
  }): () => void;
14
18
  /**
15
19
  * 触发一次原生会话列表刷新。
@@ -1 +1 @@
1
- {"version":3,"file":"peer-host-native-store-projection.d.ts","sourceRoot":"","sources":["../../../../src/client/peer-host-native-store-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAgC,MAAM,kCAAkC,CAAA;AAG9G;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAA;CAC9C,GAAG,MAAM,IAAI,CAmCb;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASjG"}
1
+ {"version":3,"file":"peer-host-native-store-projection.d.ts","sourceRoot":"","sources":["../../../../src/client/peer-host-native-store-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAsC,KAAK,wBAAwB,EAAqC,MAAM,kCAAkC,CAAA;AAcvJ;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,KAAK,EAAE;IAC1D,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAA;IAC7C,8BAA8B;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IAC5H,uCAAuC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;CAClE,GAAG,MAAM,IAAI,CAwDb;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CASjG"}
@@ -1,32 +1,46 @@
1
+ import { createPeerHostWorkspaceDisplayPath } from './peer-host-native-projection.js';
2
+ import { createVirtualWorkspaceId, parseVirtualWorkspaceId } from '../shared/contracts/peer-host.js';
1
3
  import { readNativeService, readNativeWorkspaceListStore } from './native-workspace-store.js';
2
4
  /**
3
5
  * 把虚拟工作区就地投影进 DSH 原生 Workspace Store。
4
6
  *
5
7
  * 原生侧栏在插件 apply 时按引用捕获 `workspaces.list`(`slots.provideRoot` 的 hooks
6
8
  * 与组件字段持有的是同一个对象),替换服务属性对它不可见;因此这里只改写这个对象
7
- * 自己的读取方法,写入口保持原生行为,禁用 PeerHost 后可以原样还原。
9
+ * 自己的读取方法,并就地包装拖拽写入口,禁用 PeerHost 后可以原样还原。
8
10
  */
9
11
  export function installPeerHostNativeStoreProjection(input) {
10
12
  const store = readNativeWorkspaceListStore(input.uiContext);
11
13
  if (store === undefined)
12
14
  return () => undefined;
15
+ const service = readNativeService(input.uiContext, 'workspaces');
16
+ const serviceRecord = isRecord(service) ? service : undefined;
17
+ const sessionStoreValue = readNativeService(input.uiContext, 'sessions', 'list');
18
+ const sessionStore = isSnapshotStore(sessionStoreValue) ? sessionStoreValue : undefined;
13
19
  const ownsGetSnapshot = Object.hasOwn(store, 'getSnapshot');
14
20
  const ownsSubscribe = Object.hasOwn(store, 'subscribe');
15
21
  const originalGetSnapshot = store.getSnapshot;
16
22
  const originalSubscribe = store.subscribe;
23
+ const originalInsertBefore = serviceRecord?.insertBefore;
24
+ const ownsInsertBefore = serviceRecord === undefined ? false : Object.hasOwn(serviceRecord, 'insertBefore');
17
25
  // `useSyncExternalStore` 要求快照引用稳定:按(原生快照, 虚拟资源)两个引用记忆化,
18
26
  // 聚合没变时返回同一个合并结果,避免原生组件无限重渲染。
19
27
  let cachedBase;
20
28
  let cachedVirtual;
29
+ let cachedOrder;
30
+ let cachedLocalHostId;
21
31
  let cachedMerged;
22
32
  store.getSnapshot = function patchedGetSnapshot() {
23
33
  const base = originalGetSnapshot.call(this);
24
34
  const virtual = input.projection.workspaces();
25
- if (base === cachedBase && virtual === cachedVirtual)
35
+ const order = input.projection.workspaceOrder();
36
+ const localHostId = input.projection.localHostId();
37
+ if (base === cachedBase && virtual === cachedVirtual && order === cachedOrder && localHostId === cachedLocalHostId)
26
38
  return cachedMerged;
27
39
  cachedBase = base;
28
40
  cachedVirtual = virtual;
29
- cachedMerged = mergeWorkspaceSnapshot(base, virtual);
41
+ cachedOrder = order;
42
+ cachedLocalHostId = localHostId;
43
+ cachedMerged = mergeWorkspaceSnapshot(base, virtual, order, localHostId);
30
44
  return cachedMerged;
31
45
  };
32
46
  store.subscribe = function patchedSubscribe(listener) {
@@ -37,6 +51,8 @@ export function installPeerHostNativeStoreProjection(input) {
37
51
  disposeStore();
38
52
  };
39
53
  };
54
+ const patchedInsertBefore = installWorkspaceInsertBeforeProjection(serviceRecord, originalInsertBefore, input);
55
+ const restoreSessionStore = installSessionDisplayPathProjection(store, sessionStore);
40
56
  return () => {
41
57
  if (ownsGetSnapshot)
42
58
  store.getSnapshot = originalGetSnapshot;
@@ -46,6 +62,17 @@ export function installPeerHostNativeStoreProjection(input) {
46
62
  store.subscribe = originalSubscribe;
47
63
  else
48
64
  delete store.subscribe;
65
+ if (serviceRecord !== undefined && patchedInsertBefore !== undefined && serviceRecord.insertBefore === patchedInsertBefore) {
66
+ if (ownsInsertBefore) {
67
+ if (originalInsertBefore === undefined)
68
+ delete serviceRecord.insertBefore;
69
+ else
70
+ serviceRecord.insertBefore = originalInsertBefore;
71
+ }
72
+ else
73
+ delete serviceRecord.insertBefore;
74
+ }
75
+ restoreSessionStore();
49
76
  };
50
77
  }
51
78
  /**
@@ -66,25 +93,293 @@ export async function refreshPeerHostNativeSessions(uiContext) {
66
93
  // 原生刷新失败只影响远端会话可见性,本机列表保持可用。
67
94
  }
68
95
  }
69
- /** 原生快照追加虚拟工作区与虚拟归档集合;快照形状不符时原样返回,注入失败不影响本机数据。 */
70
- function mergeWorkspaceSnapshot(snapshot, virtual) {
96
+ /** 合并并按 Host 侧顺序排列工作区;快照形状不符时原样返回,注入失败不影响本机数据。 */
97
+ function mergeWorkspaceSnapshot(snapshot, virtual, orderedWorkspaceIds, localHostId) {
71
98
  const record = asRecord(snapshot);
72
- if (record === null || !Array.isArray(record.items) || virtual.length === 0)
99
+ if (record === null || !Array.isArray(record.items))
73
100
  return snapshot;
74
- const known = new Set(record.items.flatMap((item) => {
101
+ const items = record.items;
102
+ const known = new Set(items.flatMap((item) => {
75
103
  const workspaceId = asRecord(item)?.workspaceId;
76
- return typeof workspaceId === 'string' ? [workspaceId] : [];
104
+ if (typeof workspaceId !== 'string')
105
+ return [];
106
+ const normalized = normalizeWorkspaceId(workspaceId, localHostId);
107
+ return normalized === workspaceId ? [workspaceId] : [workspaceId, normalized];
77
108
  }));
78
109
  const injected = virtual.filter((workspace) => !known.has(workspace.workspaceId));
79
110
  const archivedSessionIds = mergeArchivedSessionIds(record.archivedSessionIds, virtual);
80
- if (injected.length === 0 && archivedSessionIds === undefined)
111
+ const orderedItems = orderWorkspaceItems([...items, ...injected], orderedWorkspaceIds, localHostId);
112
+ const mergedItems = normalizeWorkspaceDisplayPaths(orderedItems, localHostId);
113
+ const itemsChanged = mergedItems.length !== items.length || mergedItems.some((item, index) => item !== items[index]);
114
+ if (!itemsChanged && archivedSessionIds === undefined)
81
115
  return snapshot;
82
116
  return {
83
117
  ...record,
84
- items: [...record.items, ...injected],
118
+ items: mergedItems,
85
119
  ...(archivedSessionIds === undefined ? {} : { archivedSessionIds }),
86
120
  };
87
121
  }
122
+ /**
123
+ * 原生 Remote 返回的远端工作区可能已经存在于底层 Store,此时不会走 injected
124
+ * 分支;本地条目也可能因真实目录前缀形成树层级。按虚拟 ID统一规范化 path,
125
+ * 保证所有工作区在 DSH 列表中都是同层兄弟节点。
126
+ */
127
+ function normalizeWorkspaceDisplayPaths(items, localHostId) {
128
+ let changed = false;
129
+ const normalized = items.map((item) => {
130
+ const record = asRecord(item);
131
+ const workspaceId = record?.workspaceId;
132
+ if (record === null || typeof workspaceId !== 'string')
133
+ return item;
134
+ const parsed = parseVirtualWorkspaceId(workspaceId);
135
+ // 底层 Store 的本地条目仍是裸 ID;聚合确认本地 Host 后也为它们生成
136
+ // 虚拟显示路径,消除本地工作区之间原有的目录树父子关系,保证远端可以
137
+ // 与任意本地条目互相拖拽。
138
+ const virtualWorkspaceId = parsed !== null
139
+ ? workspaceId
140
+ : localHostId === undefined ? undefined : createVirtualWorkspaceId(localHostId, workspaceId);
141
+ if (virtualWorkspaceId === undefined)
142
+ return item;
143
+ const displayPath = createPeerHostWorkspaceDisplayPath(virtualWorkspaceId);
144
+ if (record.path === displayPath)
145
+ return item;
146
+ changed = true;
147
+ return { ...record, path: displayPath };
148
+ });
149
+ return changed ? normalized : items;
150
+ }
151
+ /**
152
+ * 原生会话列表只把空白会话的 cwd 用于判断是否能复用。工作区树扁平化后,
153
+ * 让空白行看到同一个显示路径即可保留该判断;正式会话继续保留真实 cwd,
154
+ * 避免 Git、文件面板或远端工具拿到虚拟 URI。
155
+ */
156
+ function installSessionDisplayPathProjection(workspaceStore, sessionStore) {
157
+ if (sessionStore === undefined)
158
+ return () => undefined;
159
+ const originalGetSnapshot = sessionStore.getSnapshot;
160
+ const originalSubscribe = sessionStore.subscribe;
161
+ const ownsGetSnapshot = Object.hasOwn(sessionStore, 'getSnapshot');
162
+ const ownsSubscribe = Object.hasOwn(sessionStore, 'subscribe');
163
+ let cachedBase;
164
+ let cachedWorkspaceSnapshot;
165
+ let cachedMerged;
166
+ const patchedGetSnapshot = function patchedSessionGetSnapshot() {
167
+ const base = originalGetSnapshot.call(this);
168
+ const workspaceSnapshot = workspaceStore.getSnapshot();
169
+ if (base === cachedBase && workspaceSnapshot === cachedWorkspaceSnapshot)
170
+ return cachedMerged;
171
+ cachedBase = base;
172
+ cachedWorkspaceSnapshot = workspaceSnapshot;
173
+ cachedMerged = mergeBlankSessionCwds(base, workspaceSnapshot);
174
+ return cachedMerged;
175
+ };
176
+ const patchedSubscribe = function patchedSessionSubscribe(listener) {
177
+ const disposeStore = originalSubscribe.call(this, listener);
178
+ const disposeWorkspace = workspaceStore.subscribe(listener);
179
+ return () => {
180
+ disposeWorkspace();
181
+ disposeStore();
182
+ };
183
+ };
184
+ sessionStore.getSnapshot = patchedGetSnapshot;
185
+ sessionStore.subscribe = patchedSubscribe;
186
+ return () => {
187
+ if (sessionStore.getSnapshot === patchedGetSnapshot) {
188
+ if (ownsGetSnapshot)
189
+ sessionStore.getSnapshot = originalGetSnapshot;
190
+ else
191
+ delete sessionStore.getSnapshot;
192
+ }
193
+ if (sessionStore.subscribe === patchedSubscribe) {
194
+ if (ownsSubscribe)
195
+ sessionStore.subscribe = originalSubscribe;
196
+ else
197
+ delete sessionStore.subscribe;
198
+ }
199
+ };
200
+ }
201
+ function mergeBlankSessionCwds(snapshot, workspaceSnapshot) {
202
+ const state = asRecord(snapshot);
203
+ const byId = state?.byId;
204
+ const workspaceState = asRecord(workspaceSnapshot);
205
+ const items = Array.isArray(workspaceState?.items) ? workspaceState.items : [];
206
+ if (state === null || !isRecord(byId) || items.length === 0)
207
+ return snapshot;
208
+ let changed = false;
209
+ const nextById = { ...byId };
210
+ for (const [id, value] of Object.entries(byId)) {
211
+ const session = asRecord(value);
212
+ if (session === null || session.blank !== true)
213
+ continue;
214
+ const workspace = items.find((item) => {
215
+ const record = asRecord(item);
216
+ return Array.isArray(record?.sessionIds) && record.sessionIds.includes(id);
217
+ });
218
+ const displayPath = asRecord(workspace)?.path;
219
+ if (typeof displayPath !== 'string' || displayPath === '' || session.cwd === displayPath)
220
+ continue;
221
+ nextById[id] = { ...session, cwd: displayPath };
222
+ changed = true;
223
+ }
224
+ return changed ? { ...state, byId: nextById } : snapshot;
225
+ }
226
+ function installWorkspaceInsertBeforeProjection(service, original, input) {
227
+ const moveWorkspace = input.moveWorkspace;
228
+ if (service === undefined || typeof original !== 'function' || moveWorkspace === undefined)
229
+ return undefined;
230
+ const originalInsertBefore = original;
231
+ // 原生拖拽可能在上一次 RPC 尚未返回时再次触发;串行化移动,保证后一个操作
232
+ // 基于已经确认的顺序计算,避免响应乱序把列表写回旧位置。
233
+ let moveQueue = Promise.resolve();
234
+ const execute = async function (workspaceId, beforeWorkspaceId) {
235
+ if (typeof workspaceId !== 'string')
236
+ return callOriginalInsertBefore(originalInsertBefore, this, workspaceId, beforeWorkspaceId);
237
+ let localHostId = input.projection.localHostId();
238
+ let sourceVirtualId = normalizeWorkspaceId(workspaceId, localHostId);
239
+ let beforeVirtualId = beforeWorkspaceId === undefined || beforeWorkspaceId === null
240
+ ? null
241
+ : typeof beforeWorkspaceId === 'string' ? normalizeWorkspaceId(beforeWorkspaceId, localHostId) : null;
242
+ const sourceIsVirtual = parseVirtualWorkspaceId(workspaceId) !== null;
243
+ const beforeIsVirtual = typeof beforeWorkspaceId === 'string' && parseVirtualWorkspaceId(beforeWorkspaceId) !== null;
244
+ let previousOrder = input.projection.workspaceOrder();
245
+ // 本地原生条目在 localHostId 尚未从聚合快照到达时仍是裸 ID;Host 端会按
246
+ // 本地注册表把它解析成虚拟 ID,因此这类输入也可以先提交。远端虚拟 ID
247
+ // 必须保持合法格式,不能把任意字符串交给顺序 RPC。
248
+ const idsReady = () => (sourceVirtualId !== null || !sourceIsVirtual)
249
+ && (beforeWorkspaceId === undefined || beforeWorkspaceId === null || beforeVirtualId !== null || !beforeIsVirtual);
250
+ // 原生 Remote 可能先把虚拟工作区写入列表,聚合摘要随后才到达。
251
+ // 顺序快照暂时缺少该 ID 并不意味着拖拽无效;Host Registry 会把合法的
252
+ // 虚拟 ID作为延迟聚合/离线墓碑纳入顺序文件,不能在客户端提前拒绝。
253
+ const orderReady = () => idsReady();
254
+ // 裸本地 ID可以由 Host 端按稳定 localHostId 解析;拖拽路径不能为了补齐
255
+ // 聚合摘要而同步等待远端超时。顺序快照缺项也由 Host Registry 记录墓碑。
256
+ const needsHydration = !idsReady();
257
+ if ((needsHydration || !orderReady()) && input.refreshWorkspaceOrder !== undefined) {
258
+ try {
259
+ const refreshedOrder = await input.refreshWorkspaceOrder();
260
+ input.projection.setWorkspaceOrder(refreshedOrder);
261
+ previousOrder = input.projection.workspaceOrder();
262
+ localHostId = input.projection.localHostId();
263
+ sourceVirtualId = normalizeWorkspaceId(workspaceId, localHostId);
264
+ beforeVirtualId = beforeWorkspaceId === undefined || beforeWorkspaceId === null
265
+ ? null
266
+ : typeof beforeWorkspaceId === 'string' ? normalizeWorkspaceId(beforeWorkspaceId, localHostId) : null;
267
+ }
268
+ catch {
269
+ // 下面统一走稳定的拒绝分支;不要把网络或旧 Host 错误透传给原生 Controller。
270
+ }
271
+ }
272
+ if (!idsReady() || !orderReady()) {
273
+ if (sourceIsVirtual || beforeIsVirtual)
274
+ throw new Error('PeerHost Workspace 顺序尚未就绪,拒绝把虚拟 ID发给原生 Host');
275
+ return callOriginalInsertBefore(originalInsertBefore, this, workspaceId, beforeWorkspaceId);
276
+ }
277
+ if (sourceVirtualId === null && sourceIsVirtual) {
278
+ if (sourceIsVirtual || beforeIsVirtual)
279
+ throw new Error('PeerHost Workspace 顺序尚未就绪,拒绝把虚拟 ID发给原生 Host');
280
+ return callOriginalInsertBefore(originalInsertBefore, this, workspaceId, beforeWorkspaceId);
281
+ }
282
+ if (beforeWorkspaceId !== undefined && beforeWorkspaceId !== null && beforeVirtualId === null && beforeIsVirtual) {
283
+ throw new Error('PeerHost Workspace 顺序尚未就绪,拒绝把虚拟 ID发给原生 Host');
284
+ }
285
+ const sourceId = sourceVirtualId ?? workspaceId;
286
+ const beforeId = beforeVirtualId ?? (typeof beforeWorkspaceId === 'string' ? beforeWorkspaceId : null);
287
+ const previousBefore = previousOrder[previousOrder.indexOf(sourceId) + 1] ?? null;
288
+ // 先更新投影,原生侧栏可以立即完成布局;Host 顺序 RPC 只负责持久化。
289
+ // 网络失败时恢复拖拽前的顺序,避免显示层与持久层分叉。
290
+ const optimisticOrder = moveWorkspaceOrder(previousOrder, sourceId, beforeId);
291
+ input.projection.setWorkspaceOrder(optimisticOrder);
292
+ let nextOrder;
293
+ try {
294
+ nextOrder = await moveWorkspace(sourceId, beforeId);
295
+ }
296
+ catch (error) {
297
+ input.projection.setWorkspaceOrder(previousOrder);
298
+ throw error;
299
+ }
300
+ input.projection.setWorkspaceOrder(nextOrder);
301
+ // 远端条目没有本机实体;跨 Host 拖动只需要更新 Host 侧顺序。涉及本地项时,
302
+ // 仍让原生 Controller 更新自己的局部顺序,避免 DSH 的本地 Store 失去写入语义。
303
+ if (!sourceIsVirtual && (beforeWorkspaceId === undefined || beforeWorkspaceId === null || !beforeIsVirtual)) {
304
+ try {
305
+ await callOriginalInsertBefore(originalInsertBefore, this, workspaceId, beforeWorkspaceId);
306
+ }
307
+ catch (error) {
308
+ if (previousOrder.includes(sourceId)) {
309
+ try {
310
+ const rollbackOrder = await moveWorkspace(sourceId, previousBefore);
311
+ input.projection.setWorkspaceOrder(rollbackOrder);
312
+ }
313
+ catch {
314
+ // Host 侧顺序已经成功写入时,原生 Controller 失败不应掩盖原始错误。
315
+ }
316
+ }
317
+ throw error;
318
+ }
319
+ }
320
+ return undefined;
321
+ };
322
+ const patched = function (workspaceId, beforeWorkspaceId) {
323
+ const operation = moveQueue.then(() => execute.call(this, workspaceId, beforeWorkspaceId));
324
+ moveQueue = operation.then(() => undefined, () => undefined);
325
+ return operation;
326
+ };
327
+ service.insertBefore = patched;
328
+ return patched;
329
+ }
330
+ /** 在等待 Host 应答期间计算本地混合顺序;缺失项按墓碑锚点规则补入。 */
331
+ function moveWorkspaceOrder(current, sourceId, beforeId) {
332
+ const next = current.filter((id) => id !== sourceId);
333
+ if (beforeId !== null && !next.includes(beforeId))
334
+ next.push(beforeId);
335
+ if (beforeId === null)
336
+ next.push(sourceId);
337
+ else
338
+ next.splice(next.indexOf(beforeId), 0, sourceId);
339
+ return next;
340
+ }
341
+ function callOriginalInsertBefore(original, receiver, workspaceId, beforeWorkspaceId) {
342
+ if (beforeWorkspaceId === undefined || beforeWorkspaceId === null)
343
+ return original.call(receiver, workspaceId);
344
+ return original.call(receiver, workspaceId, beforeWorkspaceId);
345
+ }
346
+ function orderWorkspaceItems(items, orderedWorkspaceIds, localHostId) {
347
+ if (orderedWorkspaceIds.length === 0 || items.length < 2)
348
+ return items;
349
+ // 本地摘要短暂不可用时,Host 端 order 只会返回远端活动项;此时不能把本机
350
+ // 原生条目误判成“未知新项”并整体推到远端之后,保留原生顺序等待下一轮聚合。
351
+ if (localHostId === undefined && items.some((item) => {
352
+ const workspaceId = asRecord(item)?.workspaceId;
353
+ return typeof workspaceId === 'string' && parseVirtualWorkspaceId(workspaceId) === null;
354
+ }))
355
+ return items;
356
+ const hasLocalItem = localHostId !== undefined && items.some((item) => {
357
+ const workspaceId = asRecord(item)?.workspaceId;
358
+ return typeof workspaceId === 'string' && parseVirtualWorkspaceId(workspaceId) === null;
359
+ });
360
+ const hasLocalOrder = localHostId !== undefined && orderedWorkspaceIds.some((id) => parseVirtualWorkspaceId(id)?.hostId === localHostId);
361
+ if (hasLocalItem && !hasLocalOrder)
362
+ return items;
363
+ const ranks = new Map(orderedWorkspaceIds.map((id, index) => [id, index]));
364
+ const entries = items.map((item, index) => {
365
+ const workspaceId = asRecord(item)?.workspaceId;
366
+ const normalized = typeof workspaceId === 'string' ? normalizeWorkspaceId(workspaceId, localHostId) : null;
367
+ return { item, index, normalized };
368
+ });
369
+ // 聚合与顺序 RPC 可能跨越一次刷新边界:若当前快照中有条目尚未出现在
370
+ // 顺序列表,暂时保留原生顺序,避免把该条目错误地推到列表尾部造成抖动。
371
+ if (entries.some((entry) => entry.normalized === null || !ranks.has(entry.normalized)))
372
+ return items;
373
+ return entries
374
+ .map((entry) => ({ ...entry, rank: ranks.get(entry.normalized) }))
375
+ .sort((left, right) => left.rank - right.rank || left.index - right.index)
376
+ .map((entry) => entry.item);
377
+ }
378
+ function normalizeWorkspaceId(workspaceId, localHostId) {
379
+ if (parseVirtualWorkspaceId(workspaceId) !== null)
380
+ return workspaceId;
381
+ return localHostId === undefined ? null : createVirtualWorkspaceId(localHostId, workspaceId);
382
+ }
88
383
  /**
89
384
  * 把虚拟归档会话并入 Registry 级归档集合。
90
385
  *
@@ -111,4 +406,7 @@ function asRecord(value) {
111
406
  function isRecord(value) {
112
407
  return typeof value === 'object' && value !== null && !Array.isArray(value);
113
408
  }
409
+ function isSnapshotStore(value) {
410
+ return isRecord(value) && typeof value.getSnapshot === 'function' && typeof value.subscribe === 'function';
411
+ }
114
412
  //# sourceMappingURL=peer-host-native-store-projection.js.map