@jingyi0605/codingns4dsh 0.2.1-beta.13 → 0.2.1-beta.15

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 (392) hide show
  1. package/README.en.md +5 -5
  2. package/README.md +6 -9
  3. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts +1 -1
  4. package/data/build/dist/bootstrap/dsh-connection-adapter.d.ts.map +1 -1
  5. package/data/build/dist/bootstrap/index.d.ts +1 -1
  6. package/data/build/dist/bootstrap/index.d.ts.map +1 -1
  7. package/data/build/dist/client/bundle.js +1947 -585
  8. package/data/build/dist/client/bundle.js.map +1 -1
  9. package/data/build/dist/client/cli-slots.d.ts.map +1 -1
  10. package/data/build/dist/client/cli-slots.js +11 -3
  11. package/data/build/dist/client/cli-slots.js.map +1 -1
  12. package/data/build/dist/client/client.model-catalog-cache.js +9 -1
  13. package/data/build/dist/client/client.model-catalog-cache.js.map +1 -1
  14. package/data/build/dist/client/client.native-workspace-store.js +65 -15
  15. package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
  16. package/data/build/dist/client/client.transport.js +70 -4
  17. package/data/build/dist/client/client.transport.js.map +1 -1
  18. package/data/build/dist/client/desktop-assistant.js +180 -114
  19. package/data/build/dist/client/features/cli-adapters.js +4 -2
  20. package/data/build/dist/client/features/cli-adapters.js.map +1 -1
  21. package/data/build/dist/client/features/file-management.d.ts.map +1 -1
  22. package/data/build/dist/client/features/file-management.js +16 -0
  23. package/data/build/dist/client/features/file-management.js.map +1 -1
  24. package/data/build/dist/client/features/lan-access-panel.d.ts.map +1 -1
  25. package/data/build/dist/client/features/lan-access-panel.js +1 -0
  26. package/data/build/dist/client/features/lan-access-panel.js.map +1 -1
  27. package/data/build/dist/client/features/mobile-access.d.ts.map +1 -1
  28. package/data/build/dist/client/features/mobile-access.js +7 -0
  29. package/data/build/dist/client/features/mobile-access.js.map +1 -1
  30. package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
  31. package/data/build/dist/client/features/peer-host.js +3 -0
  32. package/data/build/dist/client/features/peer-host.js.map +1 -1
  33. package/data/build/dist/client/features/session-translation.js +2 -2
  34. package/data/build/dist/client/features/session-translation.js.map +1 -1
  35. package/data/build/dist/client/features/workspace-session-enhancement.d.ts.map +1 -1
  36. package/data/build/dist/client/features/workspace-session-enhancement.js +6 -0
  37. package/data/build/dist/client/features/workspace-session-enhancement.js.map +1 -1
  38. package/data/build/dist/client/file-management-dom.d.ts +20 -1
  39. package/data/build/dist/client/file-management-dom.d.ts.map +1 -1
  40. package/data/build/dist/client/file-management-dom.js +94 -18
  41. package/data/build/dist/client/file-management-dom.js.map +1 -1
  42. package/data/build/dist/client/file-viewer-copy-path-menu.d.ts +27 -0
  43. package/data/build/dist/client/file-viewer-copy-path-menu.d.ts.map +1 -0
  44. package/data/build/dist/client/file-viewer-copy-path-menu.js +101 -0
  45. package/data/build/dist/client/file-viewer-copy-path-menu.js.map +1 -0
  46. package/data/build/dist/client/git-management-settings.d.ts +4 -0
  47. package/data/build/dist/client/git-management-settings.d.ts.map +1 -0
  48. package/data/build/dist/client/git-management-settings.js +73 -0
  49. package/data/build/dist/client/git-management-settings.js.map +1 -0
  50. package/data/build/dist/client/git-management.d.ts +2 -1
  51. package/data/build/dist/client/git-management.d.ts.map +1 -1
  52. package/data/build/dist/client/git-management.js +55 -34
  53. package/data/build/dist/client/git-management.js.map +1 -1
  54. package/data/build/dist/client/git-panel-styles.d.ts +4 -0
  55. package/data/build/dist/client/git-panel-styles.d.ts.map +1 -1
  56. package/data/build/dist/client/git-panel-styles.js +14 -0
  57. package/data/build/dist/client/git-panel-styles.js.map +1 -1
  58. package/data/build/dist/client/locale.d.ts.map +1 -1
  59. package/data/build/dist/client/locale.js +10 -2
  60. package/data/build/dist/client/locale.js.map +1 -1
  61. package/data/build/dist/client/locales/cliManagement.d.ts.map +1 -1
  62. package/data/build/dist/client/locales/cliManagement.js +16 -0
  63. package/data/build/dist/client/locales/cliManagement.js.map +1 -1
  64. package/data/build/dist/client/locales/git.d.ts.map +1 -1
  65. package/data/build/dist/client/locales/git.js +30 -2
  66. package/data/build/dist/client/locales/git.js.map +1 -1
  67. package/data/build/dist/client/locales/peerHost.d.ts.map +1 -1
  68. package/data/build/dist/client/locales/peerHost.js +2 -0
  69. package/data/build/dist/client/locales/peerHost.js.map +1 -1
  70. package/data/build/dist/client/locales/quickApps.d.ts +6 -0
  71. package/data/build/dist/client/locales/quickApps.d.ts.map +1 -1
  72. package/data/build/dist/client/locales/quickApps.js +12 -0
  73. package/data/build/dist/client/locales/quickApps.js.map +1 -1
  74. package/data/build/dist/client/mobile-team-panel-dom.d.ts +14 -0
  75. package/data/build/dist/client/mobile-team-panel-dom.d.ts.map +1 -0
  76. package/data/build/dist/client/mobile-team-panel-dom.js +164 -0
  77. package/data/build/dist/client/mobile-team-panel-dom.js.map +1 -0
  78. package/data/build/dist/client/model-priority-pool.d.ts +23 -0
  79. package/data/build/dist/client/model-priority-pool.d.ts.map +1 -0
  80. package/data/build/dist/client/{session-translation-model-pool.js → model-priority-pool.js} +8 -9
  81. package/data/build/dist/client/model-priority-pool.js.map +1 -0
  82. package/data/build/dist/client/provider-icons.d.ts.map +1 -1
  83. package/data/build/dist/client/provider-icons.js +3 -1
  84. package/data/build/dist/client/provider-icons.js.map +1 -1
  85. package/data/build/dist/client/quick-apps/browser-storage.d.ts +24 -0
  86. package/data/build/dist/client/quick-apps/browser-storage.d.ts.map +1 -0
  87. package/data/build/dist/client/quick-apps/browser-storage.js +114 -0
  88. package/data/build/dist/client/quick-apps/browser-storage.js.map +1 -0
  89. package/data/build/dist/client/quick-apps/client.d.ts +3 -1
  90. package/data/build/dist/client/quick-apps/client.d.ts.map +1 -1
  91. package/data/build/dist/client/quick-apps/client.js +4 -4
  92. package/data/build/dist/client/quick-apps/client.js.map +1 -1
  93. package/data/build/dist/client/quick-apps/launcher.d.ts.map +1 -1
  94. package/data/build/dist/client/quick-apps/launcher.js +23 -8
  95. package/data/build/dist/client/quick-apps/launcher.js.map +1 -1
  96. package/data/build/dist/client/quick-apps/presentation.d.ts.map +1 -1
  97. package/data/build/dist/client/quick-apps/presentation.js +18 -2
  98. package/data/build/dist/client/quick-apps/presentation.js.map +1 -1
  99. package/data/build/dist/client/quick-apps/rail-preference.d.ts +5 -0
  100. package/data/build/dist/client/quick-apps/rail-preference.d.ts.map +1 -0
  101. package/data/build/dist/client/quick-apps/rail-preference.js +19 -0
  102. package/data/build/dist/client/quick-apps/rail-preference.js.map +1 -0
  103. package/data/build/dist/client/quick-apps/styles.d.ts.map +1 -1
  104. package/data/build/dist/client/quick-apps/styles.js +12 -2
  105. package/data/build/dist/client/quick-apps/styles.js.map +1 -1
  106. package/data/build/dist/client/quick-apps/viewer.d.ts.map +1 -1
  107. package/data/build/dist/client/quick-apps/viewer.js +13 -3
  108. package/data/build/dist/client/quick-apps/viewer.js.map +1 -1
  109. package/data/build/dist/client/style.css +219 -219
  110. package/data/build/dist/client/workspace-session-rightbar-dom.d.ts.map +1 -1
  111. package/data/build/dist/client/workspace-session-rightbar-dom.js +12 -21
  112. package/data/build/dist/client/workspace-session-rightbar-dom.js.map +1 -1
  113. package/data/build/dist/client/workspace-session-visibility-dom.d.ts +3 -0
  114. package/data/build/dist/client/workspace-session-visibility-dom.d.ts.map +1 -1
  115. package/data/build/dist/client/workspace-session-visibility-dom.js +43 -10
  116. package/data/build/dist/client/workspace-session-visibility-dom.js.map +1 -1
  117. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.d.ts +8 -0
  118. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.d.ts.map +1 -0
  119. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.js +71 -0
  120. package/data/build/dist/dsh-capabilities/client/composer-presentation-adapter.js.map +1 -0
  121. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.d.ts +3 -0
  122. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.d.ts.map +1 -0
  123. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.js +27 -0
  124. package/data/build/dist/dsh-capabilities/client/peer-host-attachment-adapter.js.map +1 -0
  125. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts +2 -1
  126. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts.map +1 -1
  127. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js +22 -47
  128. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js.map +1 -1
  129. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.d.ts +52 -0
  130. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.d.ts.map +1 -0
  131. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.js +109 -0
  132. package/data/build/dist/dsh-capabilities/host/agent-team-adapter.js.map +1 -0
  133. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js +1 -1
  134. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js.map +1 -1
  135. package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
  136. package/data/build/dist/dsh-capabilities/matrix.js +12 -10
  137. package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
  138. package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
  139. package/data/build/dist/dsh-capabilities/routes.js +13 -8
  140. package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
  141. package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
  142. package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
  143. package/data/build/dist/dsh-capabilities/types.js.map +1 -1
  144. package/data/build/dist/host/cli-adapters/acp-cli-driver.d.ts.map +1 -1
  145. package/data/build/dist/host/cli-adapters/acp-cli-driver.js +6 -3
  146. package/data/build/dist/host/cli-adapters/acp-cli-driver.js.map +1 -1
  147. package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
  148. package/data/build/dist/host/cli-adapters/claude-driver.js +4 -0
  149. package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
  150. package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
  151. package/data/build/dist/host/cli-adapters/codex-driver.js +13 -6
  152. package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
  153. package/data/build/dist/host/cli-adapters/command-code-acp-loader.d.ts.map +1 -1
  154. package/data/build/dist/host/cli-adapters/command-code-acp-loader.js +11 -1
  155. package/data/build/dist/host/cli-adapters/command-code-acp-loader.js.map +1 -1
  156. package/data/build/dist/host/cli-adapters/command-code-driver.js +5 -3
  157. package/data/build/dist/host/cli-adapters/command-code-driver.js.map +1 -1
  158. package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts +3 -1
  159. package/data/build/dist/host/cli-adapters/desktop-app-runtime.d.ts.map +1 -1
  160. package/data/build/dist/host/cli-adapters/desktop-app-runtime.js +41 -4
  161. package/data/build/dist/host/cli-adapters/desktop-app-runtime.js.map +1 -1
  162. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  163. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +2 -1
  164. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  165. package/data/build/dist/host/cli-adapters/dsh-tool-history.js +3 -2
  166. package/data/build/dist/host/cli-adapters/dsh-tool-history.js.map +1 -1
  167. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.d.ts.map +1 -1
  168. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js +3 -2
  169. package/data/build/dist/host/cli-adapters/dsh-virtual-providers.js.map +1 -1
  170. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  171. package/data/build/dist/host/cli-adapters/feature.js +134 -29
  172. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  173. package/data/build/dist/host/cli-adapters/gemini-driver.d.ts.map +1 -1
  174. package/data/build/dist/host/cli-adapters/gemini-driver.js +4 -2
  175. package/data/build/dist/host/cli-adapters/gemini-driver.js.map +1 -1
  176. package/data/build/dist/host/cli-adapters/grok-driver.d.ts +4 -0
  177. package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
  178. package/data/build/dist/host/cli-adapters/grok-driver.js +183 -9
  179. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  180. package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts.map +1 -1
  181. package/data/build/dist/host/cli-adapters/grok-performance-projection.js +2 -1
  182. package/data/build/dist/host/cli-adapters/grok-performance-projection.js.map +1 -1
  183. package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts.map +1 -1
  184. package/data/build/dist/host/cli-adapters/legacy-session-adapter.js +20 -3
  185. package/data/build/dist/host/cli-adapters/legacy-session-adapter.js.map +1 -1
  186. package/data/build/dist/host/cli-adapters/management-methods.d.ts +5 -0
  187. package/data/build/dist/host/cli-adapters/management-methods.d.ts.map +1 -1
  188. package/data/build/dist/host/cli-adapters/management-methods.js +9 -0
  189. package/data/build/dist/host/cli-adapters/management-methods.js.map +1 -1
  190. package/data/build/dist/host/cli-adapters/management-process.d.ts.map +1 -1
  191. package/data/build/dist/host/cli-adapters/management-process.js +13 -2
  192. package/data/build/dist/host/cli-adapters/management-process.js.map +1 -1
  193. package/data/build/dist/host/cli-adapters/management.d.ts.map +1 -1
  194. package/data/build/dist/host/cli-adapters/management.js +6 -1
  195. package/data/build/dist/host/cli-adapters/management.js.map +1 -1
  196. package/data/build/dist/host/cli-adapters/mcode-driver.d.ts.map +1 -1
  197. package/data/build/dist/host/cli-adapters/mcode-driver.js +11 -4
  198. package/data/build/dist/host/cli-adapters/mcode-driver.js.map +1 -1
  199. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts +1 -1
  200. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.d.ts.map +1 -1
  201. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js +11 -3
  202. package/data/build/dist/host/cli-adapters/native-subagent-dispatch.js.map +1 -1
  203. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts +7 -1
  204. package/data/build/dist/host/cli-adapters/native-team-subagent.d.ts.map +1 -1
  205. package/data/build/dist/host/cli-adapters/native-team-subagent.js +4 -2
  206. package/data/build/dist/host/cli-adapters/native-team-subagent.js.map +1 -1
  207. package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js +3 -1
  208. package/data/build/dist/host/cli-adapters/opencode-v2-protocol.js.map +1 -1
  209. package/data/build/dist/host/cli-adapters/pi-driver.d.ts.map +1 -1
  210. package/data/build/dist/host/cli-adapters/pi-driver.js +44 -10
  211. package/data/build/dist/host/cli-adapters/pi-driver.js.map +1 -1
  212. package/data/build/dist/host/cli-adapters/registry.d.ts +4 -1
  213. package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
  214. package/data/build/dist/host/cli-adapters/registry.js +65 -25
  215. package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
  216. package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts.map +1 -1
  217. package/data/build/dist/host/cli-adapters/standard-stream-driver.js +4 -0
  218. package/data/build/dist/host/cli-adapters/standard-stream-driver.js.map +1 -1
  219. package/data/build/dist/host/cli-adapters/subagent-tool.js +1 -1
  220. package/data/build/dist/host/cli-adapters/subagent-tool.js.map +1 -1
  221. package/data/build/dist/host/cli-adapters/team-input.d.ts +17 -0
  222. package/data/build/dist/host/cli-adapters/team-input.d.ts.map +1 -0
  223. package/data/build/dist/host/cli-adapters/team-input.js +67 -0
  224. package/data/build/dist/host/cli-adapters/team-input.js.map +1 -0
  225. package/data/build/dist/host/cli-adapters/update-check.d.ts.map +1 -1
  226. package/data/build/dist/host/cli-adapters/update-check.js +5 -5
  227. package/data/build/dist/host/cli-adapters/update-check.js.map +1 -1
  228. package/data/build/dist/host/cli-adapters/zcode-driver.d.ts.map +1 -1
  229. package/data/build/dist/host/cli-adapters/zcode-driver.js +6 -1
  230. package/data/build/dist/host/cli-adapters/zcode-driver.js.map +1 -1
  231. package/data/build/dist/host/cli-adapters/zcode-update.d.ts +8 -0
  232. package/data/build/dist/host/cli-adapters/zcode-update.d.ts.map +1 -0
  233. package/data/build/dist/host/cli-adapters/zcode-update.js +149 -0
  234. package/data/build/dist/host/cli-adapters/zcode-update.js.map +1 -0
  235. package/data/build/dist/host/cli-bridge/bridge-holder.d.ts +14 -0
  236. package/data/build/dist/host/cli-bridge/bridge-holder.d.ts.map +1 -1
  237. package/data/build/dist/host/cli-bridge/bridge-holder.js +53 -6
  238. package/data/build/dist/host/cli-bridge/bridge-holder.js.map +1 -1
  239. package/data/build/dist/host/cli-bridge/bridge-server.d.ts +6 -0
  240. package/data/build/dist/host/cli-bridge/bridge-server.d.ts.map +1 -1
  241. package/data/build/dist/host/cli-bridge/bridge-server.js +61 -6
  242. package/data/build/dist/host/cli-bridge/bridge-server.js.map +1 -1
  243. package/data/build/dist/host/cli-bridge/command-code-mod.d.ts.map +1 -1
  244. package/data/build/dist/host/cli-bridge/command-code-mod.js +86 -0
  245. package/data/build/dist/host/cli-bridge/command-code-mod.js.map +1 -1
  246. package/data/build/dist/host/cli-bridge/dispatch.js +1 -1
  247. package/data/build/dist/host/cli-bridge/dispatch.js.map +1 -1
  248. package/data/build/dist/host/cli-bridge/injections.d.ts +11 -0
  249. package/data/build/dist/host/cli-bridge/injections.d.ts.map +1 -1
  250. package/data/build/dist/host/cli-bridge/injections.js +62 -7
  251. package/data/build/dist/host/cli-bridge/injections.js.map +1 -1
  252. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.d.ts +1 -1
  253. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js +64 -7
  254. package/data/build/dist/host/cli-bridge/mcp-stdio-entry.js.map +1 -1
  255. package/data/build/dist/host/cli-bridge/pi-extension-entry.d.ts +3 -0
  256. package/data/build/dist/host/cli-bridge/pi-extension-entry.d.ts.map +1 -0
  257. package/data/build/dist/host/cli-bridge/pi-extension-entry.js +9 -0
  258. package/data/build/dist/host/cli-bridge/pi-extension-entry.js.map +1 -0
  259. package/data/build/dist/host/cli-bridge/pi-extension.d.ts +52 -0
  260. package/data/build/dist/host/cli-bridge/pi-extension.d.ts.map +1 -0
  261. package/data/build/dist/host/cli-bridge/pi-extension.js +273 -0
  262. package/data/build/dist/host/cli-bridge/pi-extension.js.map +1 -0
  263. package/data/build/dist/host/cli-bridge/search-dispatch.d.ts +20 -0
  264. package/data/build/dist/host/cli-bridge/search-dispatch.d.ts.map +1 -0
  265. package/data/build/dist/host/cli-bridge/search-dispatch.js +61 -0
  266. package/data/build/dist/host/cli-bridge/search-dispatch.js.map +1 -0
  267. package/data/build/dist/host/cli-bridge/team-adapters.d.ts +11 -0
  268. package/data/build/dist/host/cli-bridge/team-adapters.d.ts.map +1 -0
  269. package/data/build/dist/host/cli-bridge/team-adapters.js +23 -0
  270. package/data/build/dist/host/cli-bridge/team-adapters.js.map +1 -0
  271. package/data/build/dist/host/cli-bridge/team-dispatch.d.ts +28 -0
  272. package/data/build/dist/host/cli-bridge/team-dispatch.d.ts.map +1 -0
  273. package/data/build/dist/host/cli-bridge/team-dispatch.js +208 -0
  274. package/data/build/dist/host/cli-bridge/team-dispatch.js.map +1 -0
  275. package/data/build/dist/host/cli-bridge/team-tool.d.ts +3 -0
  276. package/data/build/dist/host/cli-bridge/team-tool.d.ts.map +1 -0
  277. package/data/build/dist/host/cli-bridge/team-tool.js +18 -0
  278. package/data/build/dist/host/cli-bridge/team-tool.js.map +1 -0
  279. package/data/build/dist/host/features/file-management.d.ts.map +1 -1
  280. package/data/build/dist/host/features/file-management.js +2 -1
  281. package/data/build/dist/host/features/file-management.js.map +1 -1
  282. package/data/build/dist/host/features/git-commit-message.d.ts +5 -0
  283. package/data/build/dist/host/features/git-commit-message.d.ts.map +1 -0
  284. package/data/build/dist/host/features/git-commit-message.js +66 -0
  285. package/data/build/dist/host/features/git-commit-message.js.map +1 -0
  286. package/data/build/dist/host/features/git-management.d.ts +11 -2
  287. package/data/build/dist/host/features/git-management.d.ts.map +1 -1
  288. package/data/build/dist/host/features/git-management.js +61 -7
  289. package/data/build/dist/host/features/git-management.js.map +1 -1
  290. package/data/build/dist/host/features/lan-access-dsh.d.ts.map +1 -1
  291. package/data/build/dist/host/features/lan-access-dsh.js +2 -2
  292. package/data/build/dist/host/features/lan-access-dsh.js.map +1 -1
  293. package/data/build/dist/host/features/quick-apps.js +2 -2
  294. package/data/build/dist/host/features/quick-apps.js.map +1 -1
  295. package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -1
  296. package/data/build/dist/host/features/session-prompt-translation.js +11 -3
  297. package/data/build/dist/host/features/session-prompt-translation.js.map +1 -1
  298. package/data/build/dist/host/index.d.ts.map +1 -1
  299. package/data/build/dist/host/index.js +6 -38
  300. package/data/build/dist/host/index.js.map +1 -1
  301. package/data/build/dist/host/lan-access-dsh.d.ts +9 -1
  302. package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
  303. package/data/build/dist/host/lan-access-dsh.js +38 -11
  304. package/data/build/dist/host/lan-access-dsh.js.map +1 -1
  305. package/data/build/dist/host/modules/quick-apps/egress.d.ts +35 -0
  306. package/data/build/dist/host/modules/quick-apps/egress.d.ts.map +1 -0
  307. package/data/build/dist/host/modules/quick-apps/egress.js +244 -0
  308. package/data/build/dist/host/modules/quick-apps/egress.js.map +1 -0
  309. package/data/build/dist/host/modules/quick-apps/registry.d.ts.map +1 -1
  310. package/data/build/dist/host/modules/quick-apps/registry.js +10 -1
  311. package/data/build/dist/host/modules/quick-apps/registry.js.map +1 -1
  312. package/data/build/dist/host/modules/quick-apps/remote.d.ts +1 -1
  313. package/data/build/dist/host/modules/quick-apps/remote.d.ts.map +1 -1
  314. package/data/build/dist/host/modules/quick-apps/remote.js +6 -5
  315. package/data/build/dist/host/modules/quick-apps/remote.js.map +1 -1
  316. package/data/build/dist/host/modules/quick-apps/service.d.ts +1 -1
  317. package/data/build/dist/host/modules/quick-apps/service.d.ts.map +1 -1
  318. package/data/build/dist/host/modules/quick-apps/service.js +8 -4
  319. package/data/build/dist/host/modules/quick-apps/service.js.map +1 -1
  320. package/data/build/dist/host/modules/quick-apps/static-handler.d.ts +1 -1
  321. package/data/build/dist/host/modules/quick-apps/static-handler.d.ts.map +1 -1
  322. package/data/build/dist/host/modules/quick-apps/static-handler.js +35 -3
  323. package/data/build/dist/host/modules/quick-apps/static-handler.js.map +1 -1
  324. package/data/build/dist/host/rpc.js +2 -2
  325. package/data/build/dist/host/rpc.js.map +1 -1
  326. package/data/build/dist/host/session-changes.d.ts.map +1 -1
  327. package/data/build/dist/host/session-changes.js +6 -2
  328. package/data/build/dist/host/session-changes.js.map +1 -1
  329. package/data/build/dist/host/session-migration-repair.js +48 -35
  330. package/data/build/dist/host/session-migration-repair.js.map +1 -1
  331. package/data/build/dist/host/settings.d.ts.map +1 -1
  332. package/data/build/dist/host/settings.js +8 -0
  333. package/data/build/dist/host/settings.js.map +1 -1
  334. package/data/build/dist/host/workspace-root.d.ts +14 -0
  335. package/data/build/dist/host/workspace-root.d.ts.map +1 -0
  336. package/data/build/dist/host/workspace-root.js +99 -0
  337. package/data/build/dist/host/workspace-root.js.map +1 -0
  338. package/data/build/dist/shared/cli-provider-route.d.ts +7 -0
  339. package/data/build/dist/shared/cli-provider-route.d.ts.map +1 -0
  340. package/data/build/dist/shared/cli-provider-route.js +13 -0
  341. package/data/build/dist/shared/cli-provider-route.js.map +1 -0
  342. package/data/build/dist/shared/contracts/agent-team.d.ts +14 -0
  343. package/data/build/dist/shared/contracts/agent-team.d.ts.map +1 -0
  344. package/data/build/dist/shared/contracts/agent-team.js +48 -0
  345. package/data/build/dist/shared/contracts/agent-team.js.map +1 -0
  346. package/data/build/dist/shared/contracts/cli-adapter.d.ts +10 -0
  347. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  348. package/data/build/dist/shared/contracts/config.d.ts +5 -1
  349. package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
  350. package/data/build/dist/shared/contracts/config.js +3 -0
  351. package/data/build/dist/shared/contracts/config.js.map +1 -1
  352. package/data/build/dist/shared/contracts/errors.d.ts +2 -2
  353. package/data/build/dist/shared/contracts/errors.d.ts.map +1 -1
  354. package/data/build/dist/shared/contracts/git.d.ts +17 -0
  355. package/data/build/dist/shared/contracts/git.d.ts.map +1 -1
  356. package/data/build/dist/shared/contracts/git.js +27 -1
  357. package/data/build/dist/shared/contracts/git.js.map +1 -1
  358. package/data/build/dist/shared/contracts/quick-apps.d.ts +2 -0
  359. package/data/build/dist/shared/contracts/quick-apps.d.ts.map +1 -1
  360. package/data/build/dist/shared/contracts/quick-apps.js.map +1 -1
  361. package/data/build/dist/shared/contracts/version.d.ts +9 -15
  362. package/data/build/dist/shared/contracts/version.d.ts.map +1 -1
  363. package/data/build/dist/shared/contracts/version.js +8 -14
  364. package/data/build/dist/shared/contracts/version.js.map +1 -1
  365. package/data/build/dist/shared/index.d.ts +2 -1
  366. package/data/build/dist/shared/index.d.ts.map +1 -1
  367. package/data/build/dist/shared/index.js +2 -1
  368. package/data/build/dist/shared/index.js.map +1 -1
  369. package/data/build/dist/shared/quick-app-browser-storage.d.ts +33 -0
  370. package/data/build/dist/shared/quick-app-browser-storage.d.ts.map +1 -0
  371. package/data/build/dist/shared/quick-app-browser-storage.js +33 -0
  372. package/data/build/dist/shared/quick-app-browser-storage.js.map +1 -0
  373. package/data/build/dist/shared/quick-app-network-allow.d.ts +8 -0
  374. package/data/build/dist/shared/quick-app-network-allow.d.ts.map +1 -0
  375. package/data/build/dist/shared/quick-app-network-allow.js +192 -0
  376. package/data/build/dist/shared/quick-app-network-allow.js.map +1 -0
  377. package/data/build/dist/shared/quick-app-network-bootstrap.d.ts +9 -0
  378. package/data/build/dist/shared/quick-app-network-bootstrap.d.ts.map +1 -0
  379. package/data/build/dist/shared/quick-app-network-bootstrap.js +134 -0
  380. package/data/build/dist/shared/quick-app-network-bootstrap.js.map +1 -0
  381. package/data/build/dist/shared/quick-app-storage-bootstrap.d.ts +9 -0
  382. package/data/build/dist/shared/quick-app-storage-bootstrap.d.ts.map +1 -0
  383. package/data/build/dist/shared/quick-app-storage-bootstrap.js +189 -0
  384. package/data/build/dist/shared/quick-app-storage-bootstrap.js.map +1 -0
  385. package/package.json +32 -32
  386. package/profile/README.md +2 -2
  387. package/profile/package.json +3 -3
  388. package/profile/version.json +3 -3
  389. package/version.json +3 -3
  390. package/data/build/dist/client/session-translation-model-pool.d.ts +0 -16
  391. package/data/build/dist/client/session-translation-model-pool.d.ts.map +0 -1
  392. package/data/build/dist/client/session-translation-model-pool.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  import { startSerialPolling } from './serial-polling.js';
2
- import { createElement, useEffect, useRef, useState, useSyncExternalStore } from 'react';
2
+ import { createElement, Fragment, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';
3
+ import { MAX_GIT_COMMIT_MESSAGE_CHARS } from '../shared/contracts/git.js';
4
+ import { GitManagementSettingsPanel } from './git-management-settings.js';
3
5
  import { buildHistoryGraph, GRAPH_DASH_ARRAY, GRAPH_LANE_WIDTH, GRAPH_ROW_HEIGHT, laneCenterX, laneColor, laneStroke, laneDashed, isUnpushed, segmentStroke } from './git-history-graph.js';
4
6
  import { CODINGNS_RPC_CHANNEL } from '../shared/contracts/transport.js';
5
7
  import { backdropPointerDownHandler, useDismissOnOutsidePointer } from './popup-dismiss.js';
@@ -46,7 +48,7 @@ export function registerGitManagementUi(ctx, services) {
46
48
  }));
47
49
  disposers.push(ctx.slots.inject('sidebar.right.pane.tab', () => ctx.slots.register({
48
50
  name: 'sidebar.right.pane.tab', key: GIT_PROVIDER_ID,
49
- inject: () => ({ rpc: services.rpc, remote: services.remote, uiContext: ctx, t }),
51
+ inject: () => ({ rpc: services.rpc, remote: services.remote, uiContext: ctx, settings: services.settings, t }),
50
52
  }, GitPanel)));
51
53
  disposers.push(ctx.slots.inject('sidebar.right.pane.tab.title', () => ctx.slots.register({
52
54
  name: 'sidebar.right.pane.tab.title', key: GIT_PROVIDER_ID,
@@ -89,6 +91,12 @@ function GitTabTitle({ useTabInfo, t }) {
89
91
  function GitPanel(props) {
90
92
  const sessionId = String(props.sessionId);
91
93
  const t = props.t;
94
+ const settingsStore = useMemo(() => ({
95
+ subscribe: (listener) => props.settings?.subscribe(listener) ?? (() => undefined),
96
+ read: () => props.settings?.getSnapshot(),
97
+ }), [props.settings]);
98
+ const settingsSnapshot = useSyncExternalStore(settingsStore.subscribe, settingsStore.read, settingsStore.read);
99
+ const generationEnabled = settingsSnapshot?.value?.gitManagement?.commitMessageEnabled !== false;
92
100
  const tabInfo = props.useTabInfo();
93
101
  // 聚合摘要晚到时重新解析归属;普通状态更新不应清空已经展开的 Git 视图。
94
102
  useGitWorkspaceSnapshot(props.uiContext);
@@ -98,44 +106,30 @@ function GitPanel(props) {
98
106
  const [history, setHistory] = useState([]);
99
107
  const [branches, setBranches] = useState(null);
100
108
  const [subject, setSubject] = useState('');
101
- const [busy, setBusy] = useState(false);
109
+ const [operationBusy, setBusy] = useState(false);
110
+ const [generating, setGenerating] = useState(false);
111
+ const draftRequest = useRef(null);
112
+ const busy = operationBusy || generating;
102
113
  const [activeOperation, setActiveOperation] = useState(null);
103
114
  const [toast, setToast] = useState(null);
104
115
  const [diffView, setDiffView] = useState(null);
105
116
  const [fileDiff, setFileDiff] = useState(null);
106
- const [singleColumn, setSingleColumn] = useState(false);
107
117
  const [activeColumn, setActiveColumn] = useState('files');
108
118
  const [historyScope, setHistoryScope] = useState('all');
109
119
  const [historyTotalCount, setHistoryTotalCount] = useState(0);
110
120
  const [historyLoadingMore, setHistoryLoadingMore] = useState(false);
111
- const contentGridRef = useRef(null);
112
121
  const historyExpanded = useRef(false);
113
122
  const gridVisible = status !== null && status.snapshot.enabled !== false;
123
+ useEffect(() => {
124
+ setGenerating(false);
125
+ return () => { draftRequest.current?.abort(); draftRequest.current = null; };
126
+ }, [workspaceId, generationEnabled, sessionId, projectedWorkspaceId]);
114
127
  useEffect(() => {
115
128
  if (toast === null)
116
129
  return;
117
130
  const timer = globalThis.setTimeout(() => setToast(null), 3200);
118
131
  return () => globalThis.clearTimeout(timer);
119
132
  }, [toast]);
120
- useEffect(() => {
121
- const element = contentGridRef.current;
122
- if (element === null) {
123
- setSingleColumn(false);
124
- return;
125
- }
126
- const update = () => {
127
- const tracks = getComputedStyle(element).gridTemplateColumns.split(' ').filter((track) => track !== '');
128
- setSingleColumn(tracks.length <= 1);
129
- };
130
- update();
131
- if (typeof ResizeObserver === 'undefined') {
132
- window.addEventListener('resize', update);
133
- return () => window.removeEventListener('resize', update);
134
- }
135
- const observer = new ResizeObserver(update);
136
- observer.observe(element);
137
- return () => observer.disconnect();
138
- }, [gridVisible]);
139
133
  const notify = (kind, message) => setToast({ kind, message });
140
134
  useEffect(() => {
141
135
  let disposed = false;
@@ -285,6 +279,31 @@ function GitPanel(props) {
285
279
  }
286
280
  void run('git/commit', { subject: value }, () => setSubject(''));
287
281
  };
282
+ const generateMessage = async () => {
283
+ if (!generationEnabled || busy || workspaceId === undefined || draftRequest.current !== null)
284
+ return;
285
+ const abort = new AbortController();
286
+ draftRequest.current = abort;
287
+ setGenerating(true);
288
+ notify('info', t('git.generatingMessage'));
289
+ try {
290
+ const draft = await call(props.rpc, 'git/generate-message', { workspaceId }, abort.signal);
291
+ if (abort.signal.aborted)
292
+ return;
293
+ setSubject(draft.message);
294
+ setToast(null);
295
+ }
296
+ catch (error) {
297
+ if (!abort.signal.aborted)
298
+ notify('error', error instanceof Error ? error.message : String(error));
299
+ }
300
+ finally {
301
+ if (draftRequest.current === abort) {
302
+ draftRequest.current = null;
303
+ setGenerating(false);
304
+ }
305
+ }
306
+ };
288
307
  const copyCommitHash = (commitHash) => {
289
308
  void copyText(commitHash).then((copied) => notify(copied ? 'success' : 'error', copied ? t('git.commitHashCopied') : t('git.copyUnsupported')));
290
309
  };
@@ -333,16 +352,17 @@ function GitPanel(props) {
333
352
  };
334
353
  const stageAll = () => { void run('git/stage', { targets: unstaged.map((item) => item.path) }); };
335
354
  const discardAll = () => { void run('git/discard', { targets: changes.map((item) => item.path) }); };
336
- return createElement('section', { style: panelStyle, 'data-git-management-panel': 'true' },
355
+ const panel = createElement('section', { className: gitPanelClass.panel, style: panelStyle, 'data-git-management-panel': 'true' },
337
356
  // 面板标题已由 Sidebar 标签页渲染,这里不再重复;只保留视图切换与操作菜单。
338
- createElement('header', { style: headerStyle }, singleColumn ? createElement('div', { style: columnSwitchStyle }, createElement((SegmentedControl), {
357
+ createElement('header', { style: headerStyle }, gridVisible ? createElement('div', { className: gitPanelClass.columnSwitch, style: columnSwitchStyle }, createElement((SegmentedControl), {
339
358
  id: 'codingns4dsh-git-view', value: activeColumn, onChange: setActiveColumn, label: t('git.viewSwitcherLabel'),
340
359
  options: [
341
360
  { value: 'files', label: t('git.switchToFiles'), title: t('git.switchToFiles') },
342
361
  { value: 'history', label: t('git.switchToHistory'), title: t('git.switchToHistory') },
343
362
  ],
344
- })) : null, createElement('div', { style: headerActionsStyle }, createElement(GitOperationsMenu, { busy, activeOperation, hasRemote: Boolean(status?.snapshot.hasRemote || branches?.remote.length), canUndo: history.length > 0, hasMoreVersions: history.length < historyTotalCount, stagedCount: staged.length, unstagedCount: unstaged.length, onStageAll: stageAll, onDiscardAll: discardAll, onLoadMore: loadMoreHistory, onOperation: runGitOperation, t }))), toast === null ? null : createElement('div', { role: toast.kind === 'error' ? 'alert' : 'status', 'aria-live': 'polite', style: { ...dshSettingsToastStyle, position: 'absolute', top: 8, right: 'auto', left: '50%', transform: 'translateX(-50%)', width: 'min(300px, calc(100% - 24px))', pointerEvents: 'none', borderColor: toast.kind === 'error' ? dshThemeColor.error : toast.kind === 'success' ? dshThemeColor.success : dshThemeColor.border } }, toast.message), status === null ? createElement('div', { style: emptyStyle }, t('git.readingStatus')) : null, status !== null && status.snapshot.enabled === false ? createElement('section', { style: sectionStyle }, createElement('strong', undefined, t('git.noRepository')), createElement('div', { style: mutedStyle }, t('git.initHint')), createElement('button', { type: 'button', disabled: busy, onClick: () => void run('git/init', {}), className: `${gitPanelClass.button} ${gitPanelClass.buttonPrimary}`, style: primaryButtonStyle }, t('git.init'))) : null, status !== null ? createElement('div', { style: summaryStyle }, t('git.summary', { staged: staged.length, unstaged: unstaged.length, total: historyTotalCount, scope: historyScope === 'all' ? t('git.allBranches') : t('git.currentBranch') })) : null, diffView !== null ? createElement(DiffViewer, { diff: diffView, onClose: () => setDiffView(null), t }) : null, fileDiff !== null ? createElement(FileDiffViewer, { path: fileDiff.path, staged: fileDiff.staged, diff: fileDiff.diff, onClose: () => setFileDiff(null), t }) : null, status !== null && status.snapshot.enabled !== false ? createElement('div', { ref: contentGridRef, style: contentGridStyle }, singleColumn && activeColumn !== 'files' ? null : createElement('div', { style: columnStyle }, createElement('section', { style: commitSectionStyle }, createElement('div', { style: sectionHeaderStyle }, createElement('strong', undefined, t('git.commitChanges')), createElement('span', { style: mutedStyle }, staged.length === 0 ? t('git.stagingEmpty') : t('git.stagedCount', { count: staged.length }))), createElement('div', { style: commitEditorRowStyle }, createElement('textarea', { value: subject, disabled: busy || workspaceId === undefined, className: gitPanelClass.field, onChange: (event) => setSubject(event.currentTarget.value), onKeyDown: (event) => { if (event.key === 'Enter')
345
- event.preventDefault(); }, placeholder: t('git.commitPlaceholder'), rows: 1, style: commitSubjectStyle }), createElement('button', { type: 'button', disabled: busy || workspaceId === undefined, onClick: () => notify('info', t('git.draftUnavailable')), className: `${gitPanelClass.button} ${gitPanelClass.field}`, style: draftButtonStyle, title: t('git.draftMessage'), 'aria-label': t('git.draftMessage') }, '✦')), createElement('div', { style: commitActionsStyle }, createElement('button', { type: 'button', disabled: busy || workspaceId === undefined, onClick: () => void run('git/status', {}, (value) => setStatus(value)), className: `${gitPanelClass.button} ${gitPanelClass.field}`, style: refreshActionStyle }, t('git.refresh')), createElement('button', { type: 'button', disabled: busy || workspaceId === undefined || staged.length === 0 || subject.trim().length === 0, onClick: commit, className: `${gitPanelClass.button} ${gitPanelClass.buttonPrimary}`, style: submitActionStyle }, t('git.commit')))), staged.length > 0 ? createElement(ChangeSection, { title: t('git.stagedFiles'), staged: true, items: staged, busy, onOpenDiff: openFileDiff, onAction: (action, path) => void run(`git/${action}`, { targets: [path] }), onBatchAction: (action, paths) => void run(`git/${action}`, { targets: paths }), onBulkAction: () => void run('git/unstage', { targets: staged.map((item) => item.path) }), t }) : null, unstaged.length > 0 ? createElement(ChangeSection, { title: t('git.unstagedFiles'), staged: false, items: unstaged, busy, onOpenDiff: openFileDiff, onAction: (action, path) => void run(`git/${action}`, { targets: [path] }), onBatchAction: (action, paths) => void run(`git/${action}`, { targets: paths }), onBulkAction: () => void run('git/stage', { targets: unstaged.map((item) => item.path) }), t }) : null), singleColumn && activeColumn !== 'history' ? null : createElement('div', { style: columnStyle }, createElement(HistorySection, { history, totalCount: historyTotalCount, hasMore: history.length < historyTotalCount, loadingMore: historyLoadingMore, onLoadMore: loadMoreHistory, branches, busy, scope: historyScope, hasRemote: Boolean(status?.snapshot.hasRemote || branches?.remote.length), onScopeChange: setHistoryScope, onSwitch: (branchName) => void run('git/switch', { branchName, create: false }, (value) => setBranches(normalizeBranchSnapshot(value))), onCopy: copyCommitHash, onCopyMessage: copyCommitMessage, onViewDiff: openCommitDiff, onUndo: () => runGitOperation('undo'), t }))) : null);
363
+ })) : null, createElement('div', { style: headerActionsStyle }, createElement(GitOperationsMenu, { busy, activeOperation, hasRemote: Boolean(status?.snapshot.hasRemote || branches?.remote.length), canUndo: history.length > 0, hasMoreVersions: history.length < historyTotalCount, stagedCount: staged.length, unstagedCount: unstaged.length, onStageAll: stageAll, onDiscardAll: discardAll, onLoadMore: loadMoreHistory, onOperation: runGitOperation, t }))), toast === null ? null : createElement('div', { role: toast.kind === 'error' ? 'alert' : 'status', 'aria-live': 'polite', style: { ...dshSettingsToastStyle, position: 'absolute', top: 8, right: 'auto', left: '50%', transform: 'translateX(-50%)', width: 'min(300px, calc(100% - 24px))', pointerEvents: 'none', borderColor: toast.kind === 'error' ? dshThemeColor.error : toast.kind === 'success' ? dshThemeColor.success : dshThemeColor.border } }, toast.message), status === null ? createElement('div', { style: emptyStyle }, t('git.readingStatus')) : null, status !== null && status.snapshot.enabled === false ? createElement('section', { style: sectionStyle }, createElement('strong', undefined, t('git.noRepository')), createElement('div', { style: mutedStyle }, t('git.initHint')), createElement('button', { type: 'button', disabled: busy, onClick: () => void run('git/init', {}), className: `${gitPanelClass.button} ${gitPanelClass.buttonPrimary}`, style: primaryButtonStyle }, t('git.init'))) : null, status !== null ? createElement('div', { style: summaryStyle }, t('git.summary', { staged: staged.length, unstaged: unstaged.length, total: historyTotalCount, scope: historyScope === 'all' ? t('git.allBranches') : t('git.currentBranch') })) : null, status !== null && status.snapshot.enabled !== false ? createElement('div', { className: gitPanelClass.contentGrid, style: contentGridStyle, 'data-active-column': activeColumn }, createElement('div', { className: gitPanelClass.column, style: columnStyle, 'data-git-column': 'files' }, createElement('section', { style: commitSectionStyle }, createElement('div', { style: sectionHeaderStyle }, createElement('strong', undefined, t('git.commitChanges')), createElement('span', { style: mutedStyle }, staged.length === 0 ? t('git.stagingEmpty') : t('git.stagedCount', { count: staged.length }))), createElement('div', { style: commitEditorRowStyle }, createElement('textarea', { value: subject, disabled: busy || workspaceId === undefined, maxLength: MAX_GIT_COMMIT_MESSAGE_CHARS, className: gitPanelClass.field, onChange: (event) => setSubject(event.currentTarget.value), placeholder: t('git.commitPlaceholder'), rows: Math.min(8, subject.split('\n').length), style: commitSubjectStyle }), generationEnabled && createElement('button', { type: 'button', disabled: busy || workspaceId === undefined || staged.length === 0, onClick: () => { void generateMessage(); }, className: `${gitPanelClass.button} ${gitPanelClass.field}`, style: draftButtonStyle, title: t(generating ? 'git.generatingMessage' : 'git.draftMessage'), 'aria-label': t('git.draftMessage'), 'aria-busy': generating }, generating ? '…' : '✦')), createElement('div', { style: commitActionsStyle }, createElement('button', { type: 'button', disabled: busy || workspaceId === undefined, onClick: () => void run('git/status', {}, (value) => setStatus(value)), className: `${gitPanelClass.button} ${gitPanelClass.field}`, style: refreshActionStyle }, t('git.refresh')), createElement('button', { type: 'button', disabled: busy || workspaceId === undefined || staged.length === 0 || subject.trim().length === 0, onClick: commit, className: `${gitPanelClass.button} ${gitPanelClass.buttonPrimary}`, style: submitActionStyle }, t('git.commit')))), staged.length > 0 ? createElement(ChangeSection, { title: t('git.stagedFiles'), staged: true, items: staged, busy, onOpenDiff: openFileDiff, onAction: (action, path) => void run(`git/${action}`, { targets: [path] }), onBatchAction: (action, paths) => void run(`git/${action}`, { targets: paths }), onBulkAction: () => void run('git/unstage', { targets: staged.map((item) => item.path) }), t }) : null, unstaged.length > 0 ? createElement(ChangeSection, { title: t('git.unstagedFiles'), staged: false, items: unstaged, busy, onOpenDiff: openFileDiff, onAction: (action, path) => void run(`git/${action}`, { targets: [path] }), onBatchAction: (action, paths) => void run(`git/${action}`, { targets: paths }), onBulkAction: () => void run('git/stage', { targets: unstaged.map((item) => item.path) }), t }) : null), createElement('div', { className: gitPanelClass.column, style: columnStyle, 'data-git-column': 'history' }, createElement(HistorySection, { history, totalCount: historyTotalCount, hasMore: history.length < historyTotalCount, loadingMore: historyLoadingMore, onLoadMore: loadMoreHistory, branches, busy, scope: historyScope, hasRemote: Boolean(status?.snapshot.hasRemote || branches?.remote.length), onScopeChange: setHistoryScope, onSwitch: (branchName) => void run('git/switch', { branchName, create: false }, (value) => setBranches(normalizeBranchSnapshot(value))), onCopy: copyCommitHash, onCopyMessage: copyCommitMessage, onViewDiff: openCommitDiff, onUndo: () => runGitOperation('undo'), t }))) : null);
364
+ // Fixed overlays must stay outside the layout containment used by container queries.
365
+ return createElement(Fragment, undefined, panel, diffView !== null ? createElement(DiffViewer, { diff: diffView, onClose: () => setDiffView(null), t }) : null, fileDiff !== null ? createElement(FileDiffViewer, { path: fileDiff.path, staged: fileDiff.staged, diff: fileDiff.diff, onClose: () => setFileDiff(null), t }) : null);
346
366
  }
347
367
  function ChangeSection({ title, staged, items, busy, onOpenDiff, onAction, onBatchAction, onBulkAction, t }) {
348
368
  const [hoveredPath, setHoveredPath] = useState(null);
@@ -1013,15 +1033,15 @@ function graphRailStyle(lane, stroke, dashed = false) {
1013
1033
  return { position: 'absolute', top: 0, bottom: 0, left: laneCenterX(lane) - 0.75, width: 1.5, borderRadius: dashed ? 0 : 1, background };
1014
1034
  }
1015
1035
  // 面板根节点不再铺底色:DSH 右侧栏的其它面板都是透明的,继承 Sidebar 表面色才不会出现色块接缝。
1016
- const panelStyle = { position: 'relative', userSelect: 'none', boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 12, minHeight: '100%', padding: '12px 14px 20px', overflow: 'auto', color: dshThemeColor.labelPrimary };
1036
+ const panelStyle = { position: 'relative', userSelect: 'none', boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 12, height: '100%', minHeight: 0, padding: '12px 14px 20px', overflow: 'auto', color: dshThemeColor.labelPrimary };
1017
1037
  const headerStyle = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12, minHeight: 28 };
1018
1038
  const tabTitleStyle = { display: 'inline-flex', alignItems: 'center', minWidth: 0, color: dshThemeColor.labelPrimary, fontSize: uiFontSize(12) };
1019
1039
  const headerActionsStyle = { display: 'inline-flex', alignItems: 'center', gap: 4 };
1020
1040
  // SegmentedControl 自带 indicator 与键盘走查;外层占满面板宽度后再将控件居中。
1021
- const columnSwitchStyle = { display: 'flex', alignItems: 'center', justifyContent: 'center', width: '100%', minWidth: 0 };
1041
+ const columnSwitchStyle = { alignItems: 'center', justifyContent: 'center', width: '100%', minWidth: 0 };
1022
1042
  const summaryStyle = { color: dshThemeColor.labelSecondary, fontSize: uiFontSize(12) };
1023
- const contentGridStyle = { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', alignItems: 'start', gap: 12 };
1024
- const columnStyle = { display: 'flex', flexDirection: 'column', gap: 12, minWidth: 0 };
1043
+ const contentGridStyle = { display: 'grid', alignItems: 'start', gap: 12 };
1044
+ const columnStyle = { flexDirection: 'column', gap: 12, minWidth: 0 };
1025
1045
  // 卡片用 layer-1:与 DSH 内置卡片同层,暗色下只比侧栏表面亮一档。
1026
1046
  const sectionStyle = { display: 'flex', flexDirection: 'column', gap: 8, padding: 10, border: `.5px solid ${dshThemeColor.menuBorder}`, borderRadius: 8, background: dshThemeColor.cardBackground };
1027
1047
  const sectionHeaderStyle = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 8, minHeight: 24, fontSize: uiFontSize(12) };
@@ -1074,7 +1094,7 @@ const diffCodeStyle = { minWidth: 0, paddingLeft: 10, color: 'inherit', font: 'i
1074
1094
  const commitSectionStyle = { ...sectionStyle, gap: 10 };
1075
1095
  /** 提交框与「生成提交信息」按钮同高,输入面沿用面板的表单风格(边框 + 输入底色 + 8px 圆角)。 */
1076
1096
  const commitEditorRowStyle = { display: 'flex', alignItems: 'stretch', gap: 8, minWidth: 0 };
1077
- const commitSubjectStyle = { width: '100%', minHeight: 34, boxSizing: 'border-box', resize: 'none', padding: '7px 10px', borderRadius: 8, font: 'inherit', fontSize: uiFontSize(12), lineHeight: '16px' };
1097
+ const commitSubjectStyle = { width: '100%', minHeight: 34, boxSizing: 'border-box', resize: 'vertical', padding: '7px 10px', borderRadius: 8, font: 'inherit', fontSize: uiFontSize(12), lineHeight: '16px' };
1078
1098
  const draftButtonStyle = { width: 34, flex: '0 0 auto', padding: 0, borderRadius: 8, fontSize: uiFontSize(16), lineHeight: 1 };
1079
1099
  const commitActionsStyle = { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 };
1080
1100
  const refreshActionStyle = { minHeight: 32, padding: '6px 12px', borderRadius: 8, fontSize: uiFontSize(12), lineHeight: '16px' };
@@ -1098,7 +1118,8 @@ export const gitManagementFeature = {
1098
1118
  const uiContext = context.services.uiContext;
1099
1119
  if (uiContext === undefined)
1100
1120
  throw new Error('Git 管理模块缺少 DSH UI 上下文');
1101
- context.resources.add(registerGitManagementUi(uiContext, { rpc: context.services.rpc, remote: context.services.remote, locale: context.services.locale }));
1121
+ context.resources.add(registerGitManagementUi(uiContext, { rpc: context.services.rpc, remote: context.services.remote, locale: context.services.locale, settings: context.services.settings }));
1102
1122
  },
1123
+ settingsPanel: GitManagementSettingsPanel,
1103
1124
  };
1104
1125
  //# sourceMappingURL=git-management.js.map