@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
@@ -0,0 +1,23 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { AssistantChatCatalog } from '../shared/contracts/assistant.js';
3
+ import type { CodingNsTranslator } from './locale.js';
4
+ interface ModelSelection {
5
+ readonly provider: string;
6
+ readonly model: string;
7
+ }
8
+ interface ModelPoolProps {
9
+ readonly models: readonly ModelSelection[];
10
+ readonly catalog: AssistantChatCatalog | null;
11
+ readonly disabled: boolean;
12
+ readonly pending: boolean;
13
+ readonly t: CodingNsTranslator;
14
+ readonly onChange: (models: readonly ModelSelection[]) => Promise<boolean>;
15
+ readonly titleKey?: string;
16
+ readonly pickerTitleKey?: string;
17
+ readonly helpKey?: string;
18
+ readonly saveRejectedKey?: string;
19
+ }
20
+ /** The persisted pool owns priority; modal choices and drag previews remain local until confirmed. */
21
+ export declare function ModelPriorityPool({ models: pool, catalog, disabled, pending, t, onChange, titleKey, pickerTitleKey, helpKey, saveRejectedKey, }: ModelPoolProps): ReactElement;
22
+ export {};
23
+ //# sourceMappingURL=model-priority-pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-priority-pool.d.ts","sourceRoot":"","sources":["../../../../src/client/model-priority-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA+B,YAAY,EAAE,MAAM,OAAO,CAAA;AAKtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAE5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIrD,UAAU,cAAc;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAClC;AAUD,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EACvF,QAAmC,EAAE,cAA+C,EAAE,OAAiC,EACvH,eAA4C,GAC7C,EAAE,cAAc,GAAG,YAAY,CAuM/B"}
@@ -4,8 +4,7 @@ import { isSessionTranslationAdapter } from '../shared/contracts/session-transla
4
4
  import { uiFontSize } from './font-scale.js';
5
5
  import { dshSettingsHelpStyle, dshThemeColor } from './theme.js';
6
6
  /** The persisted pool owns priority; modal choices and drag previews remain local until confirmed. */
7
- export function SessionTranslationModelPool({ value, catalog, disabled, pending, t, onChange }) {
8
- const pool = value.translationModels ?? (value.translationModel === undefined ? [] : [value.translationModel]);
7
+ export function ModelPriorityPool({ models: pool, catalog, disabled, pending, t, onChange, titleKey = 'translation.modelTitle', pickerTitleKey = 'translation.modelPickerTitle', helpKey = 'translation.modelHelp', saveRejectedKey = 'translation.saveRejected', }) {
9
8
  const available = new Map((catalog?.models ?? [])
10
9
  .filter((model) => !isSessionTranslationAdapter(model.provider))
11
10
  .map((model) => [modelKey(model), model]));
@@ -137,7 +136,7 @@ export function SessionTranslationModelPool({ value, catalog, disabled, pending,
137
136
  setSaveFailed(false);
138
137
  setSelection(new Set());
139
138
  } },
140
- }, t('translation.modelAdd'))), pool.length === 0 ? createElement('div', { className: 'codingns-translation-pool-empty' }, createElement(resolveDataIcon(), { size: 22 }), createElement('span', null, t('translation.modelPoolEmpty'))) : createElement('ol', { ref: list, className: 'codingns-translation-pool-list', 'aria-label': t('translation.modelTitle'),
139
+ }, t('translation.modelAdd'))), pool.length === 0 ? createElement('div', { className: 'codingns-translation-pool-empty' }, createElement(resolveDataIcon(), { size: 22 }), createElement('span', null, t('translation.modelPoolEmpty'))) : createElement('ol', { ref: list, className: 'codingns-translation-pool-list', 'aria-label': t(titleKey),
141
140
  onPointerMove: moveDrag, onPointerUp: finishDrag, onPointerCancel: cancelDrag, onLostPointerCapture: cancelDrag,
142
141
  }, ...(preview?.order ?? pool).map((model, index) => {
143
142
  const key = modelKey(model);
@@ -154,14 +153,14 @@ export function SessionTranslationModelPool({ value, catalog, disabled, pending,
154
153
  onClick: () => { if (!locked)
155
154
  void onChange(pool.filter((item) => modelKey(item) !== key)); },
156
155
  }, createElement(resolveAssistantControlIcon('close'), { size: 14 })));
157
- })), createElement('div', { className: 'codingns-translation-pool-toolbar' }, createElement('span', { style: { ...dshSettingsHelpStyle, flex: 1 } }, t('translation.modelHelp')), pool.length > 0 && createElement(DshButton, { type: 'button', size: 'sm', disabled: disabled || pickerOpen,
156
+ })), createElement('div', { className: 'codingns-translation-pool-toolbar' }, createElement('span', { style: { ...dshSettingsHelpStyle, flex: 1 } }, t(helpKey)), pool.length > 0 && createElement(DshButton, { type: 'button', size: 'sm', disabled: disabled || pickerOpen,
158
157
  style: { color: dshThemeColor.error }, 'aria-haspopup': 'dialog', 'aria-expanded': resetOpen,
159
158
  onClick: () => { if (!locked) {
160
159
  setResetFailed(false);
161
160
  setResetOpen(true);
162
161
  } },
163
162
  }, t('translation.modelFollowDefault'))), createElement('span', { role: 'status', 'aria-live': 'polite', className: 'codingns-translation-pool-status' }, announcement), createElement(DshModal, {
164
- open: pickerOpen, onClose: closePicker, title: t('translation.modelPickerTitle'), closeLabel: t('translation.modelCancel'),
163
+ open: pickerOpen, onClose: closePicker, title: t(pickerTitleKey), closeLabel: t('translation.modelCancel'),
165
164
  description: t('translation.modelPickerHelp'), className: 'codingns-translation-model-picker',
166
165
  contentClassName: 'codingns-translation-model-picker-content',
167
166
  footer: createElement(Fragment, null, createElement('span', { className: 'codingns-translation-picker-count', 'aria-live': 'polite', style: dshSettingsHelpStyle }, t('translation.modelPickerCount', { count: additions.length })), createElement(DshButton, { type: 'button', variant: 'outline', disabled: pending, onClick: closePicker }, t('translation.modelCancel')), createElement(DshButton, { type: 'button', variant: 'primary', disabled: disabled || additions.length === 0,
@@ -170,7 +169,7 @@ export function SessionTranslationModelPool({ value, catalog, disabled, pending,
170
169
  }, createElement('div', { className: 'codingns-translation-picker-body', 'aria-busy': pending }, createElement(DshInput, { type: 'search', value: search, placeholder: t('translation.modelSearch'),
171
170
  'aria-label': t('translation.modelSearch'), ...{ 'data-modal-autofocus': true }, disabled,
172
171
  onChange: (event) => setSearch(event.currentTarget.value),
173
- }), createElement('div', { className: 'codingns-translation-picker-list', role: 'group', 'aria-label': t('translation.modelPickerTitle') }, ...filtered.map((model) => {
172
+ }), createElement('div', { className: 'codingns-translation-picker-list', role: 'group', 'aria-label': t(pickerTitleKey) }, ...filtered.map((model) => {
174
173
  const key = modelKey(model);
175
174
  return createElement('div', { key, className: `codingns-translation-picker-choice${selection?.has(key) ? ' is-selected' : ''}` }, createElement(DshCheckbox, { checked: selection?.has(key) === true, disabled, label: model.label,
176
175
  onChange: (checked) => {
@@ -186,7 +185,7 @@ export function SessionTranslationModelPool({ value, catalog, disabled, pending,
186
185
  });
187
186
  },
188
187
  }), createElement('span', { className: 'codingns-translation-picker-provider', style: dshSettingsHelpStyle }, t(isOfficialProvider(model.provider) ? 'translation.modelOfficial' : 'translation.modelThirdParty')));
189
- }), filtered.length > 0 ? null : createElement('div', { className: 'codingns-translation-pool-empty', role: 'status' }, t(catalog === null ? 'translation.modelLoading' : candidates.length > 0 ? 'translation.modelNoMatches' : available.size > 0 ? 'translation.modelAllAdded' : 'translation.modelEmpty'))), saveFailed && createElement('span', { role: 'alert', style: { ...dshSettingsHelpStyle, color: dshThemeColor.error } }, t('translation.saveRejected')))), createElement(DshModal, {
188
+ }), filtered.length > 0 ? null : createElement('div', { className: 'codingns-translation-pool-empty', role: 'status' }, t(catalog === null ? 'translation.modelLoading' : candidates.length > 0 ? 'translation.modelNoMatches' : available.size > 0 ? 'translation.modelAllAdded' : 'translation.modelEmpty'))), saveFailed && createElement('span', { role: 'alert', style: { ...dshSettingsHelpStyle, color: dshThemeColor.error } }, t(saveRejectedKey)))), createElement(DshModal, {
190
189
  open: resetOpen, onClose: closeReset, title: t('translation.modelResetTitle'), closeLabel: t('translation.modelCancel'),
191
190
  description: t('translation.modelResetHelp', { count: pool.length }),
192
191
  footer: createElement(Fragment, null, createElement(DshButton, { type: 'button', variant: 'outline', disabled: pending,
@@ -194,7 +193,7 @@ export function SessionTranslationModelPool({ value, catalog, disabled, pending,
194
193
  }, t('translation.modelCancel')), createElement(DshButton, { type: 'button', variant: 'outline', disabled,
195
194
  style: { color: dshThemeColor.error }, onClick: () => { void confirmReset(); },
196
195
  }, t('translation.modelResetConfirm'))),
197
- }, resetFailed ? createElement('span', { role: 'alert', style: { ...dshSettingsHelpStyle, color: dshThemeColor.error } }, t('translation.saveRejected')) : undefined));
196
+ }, resetFailed ? createElement('span', { role: 'alert', style: { ...dshSettingsHelpStyle, color: dshThemeColor.error } }, t(saveRejectedKey)) : undefined));
198
197
  }
199
198
  function modelKey(model) { return JSON.stringify([model.provider, model.model]); }
200
199
  function moveModel(pool, source, target) {
@@ -243,4 +242,4 @@ const modelPoolCss = `
243
242
  .codingns-translation-picker-count{margin-right:auto}
244
243
  @media(max-width:480px){.codingns-translation-pool-row{gap:6px;padding-right:8px}.codingns-translation-pool-unavailable{max-width:70px}.codingns-translation-picker-choice{padding:10px}}
245
244
  `;
246
- //# sourceMappingURL=session-translation-model-pool.js.map
245
+ //# sourceMappingURL=model-priority-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-priority-pool.js","sourceRoot":"","sources":["../../../../src/client/model-priority-pool.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-icons.d.ts","sourceRoot":"","sources":["../../../../src/client/provider-icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,sCAAsC;AACtC,eAAO,MAAM,sBAAsB,YAAY,CAAA;AAE/C;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAoBtE,CAAA;AAED,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAA;AAEjD,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAOlF;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAWpG;AAOD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"provider-icons.d.ts","sourceRoot":"","sources":["../../../../src/client/provider-icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGhF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,sCAAsC;AACtC,eAAO,MAAM,sBAAsB,YAAY,CAAA;AAE/C;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAoBtE,CAAA;AAED,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAA;AAEjD,0CAA0C;AAC1C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAOlF;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAWpG;AAQD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { resolveCodingNsTranslator } from './locale.js';
2
+ import { fromCliProviderId } from '../shared/cli-provider-route.js';
2
3
  /** 未绑定和未知 Agent 使用中性灰,绝不冒充任一已知品牌色。 */
3
4
  export const PROVIDER_NEUTRAL_COLOR = '#71717a';
4
5
  /**
@@ -63,7 +64,8 @@ export function providerVisual(adapterId, t) {
63
64
  }
64
65
  /** 兼容旧版 CN profile 的会话快照,但不重新暴露第二个 Provider。 */
65
66
  function normalizeProviderAdapterId(adapterId) {
66
- return adapterId === 'codebuddy-cn' ? 'codebuddy' : adapterId;
67
+ const normalized = fromCliProviderId(adapterId) ?? adapterId;
68
+ return normalized === 'codebuddy-cn' ? 'codebuddy' : normalized;
67
69
  }
68
70
  export { PROVIDER_DEFINITIONS, PROVIDER_ICONS };
69
71
  //# sourceMappingURL=provider-icons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-icons.js","sourceRoot":"","sources":["../../../../src/client/provider-icons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-icons.js","sourceRoot":"","sources":["../../../../src/client/provider-icons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type QuickAppStorageArea, type QuickAppStorageEntries } from '../../shared/quick-app-browser-storage.js';
2
+ export declare function storageFailure(error: unknown): {
3
+ name: string;
4
+ message: string;
5
+ };
6
+ /** Only this object chooses the namespace; requests cannot provide storage keys or identities. */
7
+ export declare function createQuickAppBrowserStore(scope: string, resolve: (area: QuickAppStorageArea) => Storage): {
8
+ read: (area: QuickAppStorageArea) => QuickAppStorageEntries;
9
+ execute(request: unknown): {
10
+ id: number;
11
+ value: unknown;
12
+ entries: [string, string][];
13
+ };
14
+ };
15
+ /** Exact window + launch token authenticate the initial transfer; Origin:null alone never does. */
16
+ export declare function attachQuickAppStorageBroker(options: {
17
+ owner: Window;
18
+ frame(): HTMLIFrameElement | null;
19
+ token: string;
20
+ scope: string;
21
+ expiresAt: number;
22
+ onError(error: Error): void;
23
+ }): () => void;
24
+ //# sourceMappingURL=browser-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-storage.d.ts","sourceRoot":"","sources":["../../../../../src/client/quick-apps/browser-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EAAE,KAAK,sBAAsB,EAA+B,MAAM,2CAA2C,CAAA;AAEvI,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAEhF;AAED,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO;iBAGnF,mBAAmB,KAAG,sBAAsB;qBAQhC,OAAO;;;;;EAkBxC;AAED,mGAAmG;AACnG,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAC/H,GAAG,MAAM,IAAI,CA2Cb"}
@@ -0,0 +1,114 @@
1
+ import { QUICK_APP_STORAGE_LIMITS, QUICK_APP_STORAGE_PROTOCOL, isQuickAppStorageRequest, validateQuickAppStorageEntries } from '../../shared/quick-app-browser-storage.js';
2
+ export function storageFailure(error) {
3
+ return { name: error instanceof Error ? error.name : 'UnknownError', message: error instanceof Error ? error.message : 'Application storage failed.' };
4
+ }
5
+ /** Only this object chooses the namespace; requests cannot provide storage keys or identities. */
6
+ export function createQuickAppBrowserStore(scope, resolve) {
7
+ const key = scope;
8
+ if (!key.startsWith('codingns.quickApps.storage.v1:') || key.length > 8192)
9
+ throw new DOMException('Invalid application storage scope.', 'SecurityError');
10
+ const read = (area) => {
11
+ const text = resolve(area).getItem(key);
12
+ if (text !== null && text.length * 2 > QUICK_APP_STORAGE_LIMITS.bytes)
13
+ throw new DOMException('Application storage quota exceeded.', 'QuotaExceededError');
14
+ let entries;
15
+ try {
16
+ entries = text === null ? [] : JSON.parse(text);
17
+ }
18
+ catch {
19
+ throw new DOMException('Application storage is not valid JSON.', 'DataError');
20
+ }
21
+ validateQuickAppStorageEntries(entries);
22
+ return entries;
23
+ };
24
+ return { read, execute(request) {
25
+ if (!isQuickAppStorageRequest(request))
26
+ throw new DOMException('Invalid application storage request.', 'SecurityError');
27
+ const store = resolve(request.area);
28
+ // Clearing a damaged namespace must not require parsing the damaged value first.
29
+ const entries = new Map(request.operation === 'clear' ? [] : read(request.area));
30
+ let value = null;
31
+ switch (request.operation) {
32
+ case 'getItem':
33
+ value = entries.get(request.key) ?? null;
34
+ break;
35
+ case 'setItem':
36
+ entries.set(request.key, request.value);
37
+ break;
38
+ case 'removeItem':
39
+ entries.delete(request.key);
40
+ break;
41
+ case 'keys':
42
+ value = [...entries.keys()];
43
+ break;
44
+ }
45
+ const snapshot = [...entries];
46
+ validateQuickAppStorageEntries(snapshot);
47
+ if (request.operation === 'clear')
48
+ store.removeItem(key);
49
+ else if (request.operation === 'setItem' || request.operation === 'removeItem')
50
+ store.setItem(key, JSON.stringify(snapshot));
51
+ return { id: request.id, value, entries: snapshot };
52
+ } };
53
+ }
54
+ /** Exact window + launch token authenticate the initial transfer; Origin:null alone never does. */
55
+ export function attachQuickAppStorageBroker(options) {
56
+ const { owner, token, expiresAt, onError } = options;
57
+ const store = createQuickAppBrowserStore(options.scope, area => area === 'local' ? owner.localStorage : owner.sessionStorage);
58
+ let active = true;
59
+ let port;
60
+ let documentId;
61
+ const shutdown = () => {
62
+ port?.postMessage({ type: 'closed', error: { name: 'SecurityError', message: 'The application storage channel was closed.' } });
63
+ port?.close();
64
+ port = undefined;
65
+ };
66
+ const connect = (event) => {
67
+ const frameWindow = options.frame()?.contentWindow;
68
+ const data = event.data;
69
+ if (!active || Date.now() >= expiresAt || !frameWindow || event.source !== frameWindow || event.origin !== 'null'
70
+ || !data || data.type !== QUICK_APP_STORAGE_PROTOCOL || data.token !== token || typeof data.documentId !== 'string'
71
+ || !/^[a-f0-9]{32}$/u.test(data.documentId) || documentId === data.documentId)
72
+ return;
73
+ shutdown();
74
+ documentId = data.documentId;
75
+ const channel = new MessageChannel();
76
+ port = channel.port1;
77
+ const current = port;
78
+ const snapshot = {};
79
+ const errors = {};
80
+ for (const area of ['local', 'session']) {
81
+ try {
82
+ snapshot[area] = store.read(area);
83
+ }
84
+ catch (error) {
85
+ errors[area] = storageFailure(error);
86
+ onError(new Error(errors[area].message));
87
+ }
88
+ }
89
+ current.onmessage = message => {
90
+ if (current !== port)
91
+ return;
92
+ if (!active || Date.now() >= expiresAt) {
93
+ shutdown();
94
+ return;
95
+ }
96
+ try {
97
+ current.postMessage(store.execute(message.data));
98
+ }
99
+ catch (error) {
100
+ const failure = storageFailure(error);
101
+ const id = message.data?.id;
102
+ current.postMessage({ id, error: failure });
103
+ onError(new Error(failure.message));
104
+ if (!isQuickAppStorageRequest(message.data))
105
+ shutdown();
106
+ }
107
+ };
108
+ frameWindow.postMessage({ type: QUICK_APP_STORAGE_PROTOCOL, token, documentId, snapshot, errors }, '*', [channel.port2]);
109
+ };
110
+ owner.addEventListener('message', connect);
111
+ const expiry = setTimeout(() => { active = false; shutdown(); owner.removeEventListener('message', connect); }, Math.max(0, Math.min(expiresAt - Date.now(), 2_147_483_647)));
112
+ return () => { active = false; clearTimeout(expiry); owner.removeEventListener('message', connect); shutdown(); };
113
+ }
114
+ //# sourceMappingURL=browser-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-storage.js","sourceRoot":"","sources":["../../../../../src/client/quick-apps/browser-storage.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare class QuickAppsClient {
8
8
  constructor(rpc: CodingNsRpcClient);
9
9
  call<T>(action: string, payload?: unknown): Promise<T>;
10
10
  reorder(apps: readonly QuickApp[], current: () => boolean): Promise<readonly QuickApp[]>;
11
- open(id: string): Promise<QuickAppView | undefined>;
11
+ open(id: string, browserStorage?: boolean): Promise<QuickAppView | undefined>;
12
12
  close(): Promise<void>;
13
13
  }
14
14
  export type QuickAppView = ({
@@ -25,5 +25,7 @@ export type QuickAppView = ({
25
25
  expiresAt: number;
26
26
  isolation?: 'lan-port' | 'sandbox-proxy';
27
27
  basePath?: string;
28
+ storageToken?: string;
29
+ storageScope?: string;
28
30
  };
29
31
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/client/quick-apps/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAItF,mGAAmG;AACnG,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAoB;gBACP,GAAG,EAAE,iBAAiB;IAC7C,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,OAAO,CAAC,CAAC,CAAC;IAS1D,OAAO,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAiBxF,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAanD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAGD,MAAM,MAAM,YAAY,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,GAC7J;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/client/quick-apps/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAItF,mGAAmG;AACnG,qBAAa,eAAe;IAGd,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAoB;gBACP,GAAG,EAAE,iBAAiB;IAC7C,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,GAAG,OAAO,CAAC,CAAC,CAAC;IAS1D,OAAO,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAiBxF,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAa1E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAGD,MAAM,MAAM,YAAY,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,GAC7J;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA"}
@@ -35,19 +35,19 @@ export class QuickAppsClient {
35
35
  saved.push(app);
36
36
  continue;
37
37
  }
38
- const { id, title, hostId, workspaceId, entryPath, documentRoot, kind, fileAccess, spaFallback, mounts } = app;
38
+ const { id, title, hostId, workspaceId, entryPath, documentRoot, kind, fileAccess, spaFallback, networkAllow, mounts } = app;
39
39
  saved.push(await this.call('upsert', { expectedRevision: app.revision,
40
- app: { id, title, hostId, workspaceId, entryPath, documentRoot, kind, ...(fileAccess ? { fileAccess } : {}), spaFallback, mounts, order } }));
40
+ app: { id, title, hostId, workspaceId, entryPath, documentRoot, kind, ...(fileAccess ? { fileAccess } : {}), spaFallback, ...(networkAllow?.length ? { networkAllow } : {}), mounts, order } }));
41
41
  }
42
42
  return saved;
43
43
  }
44
- async open(id) {
44
+ async open(id, browserStorage = true) {
45
45
  const closing = this.close();
46
46
  const generation = this.generation;
47
47
  await closing;
48
48
  if (generation !== this.generation)
49
49
  return undefined;
50
- const result = await this.call('launch', { id });
50
+ const result = await this.call('launch', { id, ...(browserStorage ? { browserStorage: true } : {}) });
51
51
  if (generation !== this.generation) {
52
52
  if (result.launchId)
53
53
  await this.call('close', { id: result.launchId });
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/client/quick-apps/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../src/client/quick-apps/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../../../../src/client/quick-apps/launcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAqBlE,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CA4MvH"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../../../../src/client/quick-apps/launcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAuBlE,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CAsNvH"}
@@ -4,6 +4,7 @@ import { DshFileTypeIcon, DshFolderIcon, DshInput, DshModal, classifyDshFileType
4
4
  import { useCodingNsTranslator } from '../locale.js';
5
5
  import { readNativeWorkspaceSnapshot, readNativeWorkspaceListStore } from '../native-workspace-store.js';
6
6
  import { QuickAppsClient } from './client.js';
7
+ import { parseQuickAppNetworkAllow } from '../../shared/quick-app-network-allow.js';
7
8
  import { draftChanged, entryTitle, newQuickAppDraft, quickAppEntryPatch, shortcutIcon } from './presentation.js';
8
9
  import { QuickAppActions, QuickAppButton, QuickAppControlIcon, QuickAppField } from './ui.js';
9
10
  import { quickAppsCss } from './styles.js';
@@ -11,6 +12,7 @@ import { QuickAppWorkspacePicker } from './workspace-picker.js';
11
12
  import { QuickAppFilePicker } from './file-picker.js';
12
13
  import { QuickAppViewer } from './viewer.js';
13
14
  import { useQuickAppReorder } from './reorder.js';
15
+ import { readQuickAppsRailCollapsed, writeQuickAppsRailCollapsed } from './rail-preference.js';
14
16
  import { sidebarFooterControlStyle, useSidebarFooterAlignment } from '../sidebar-footer-style.js';
15
17
  export function QuickAppsLauncher({ services, wide }) {
16
18
  const rail = useSidebarFooterAlignment(wide);
@@ -18,9 +20,11 @@ export function QuickAppsLauncher({ services, wide }) {
18
20
  const formId = useId();
19
21
  const client = useMemo(() => new QuickAppsClient(services.rpc), [services.rpc]);
20
22
  const [screen, setScreen] = useState(null);
21
- const [mode, setMode] = useState('normal');
23
+ const [mode, setMode] = useState(() => readQuickAppsRailCollapsed() ? 'collapsed' : 'normal');
22
24
  const editing = mode === 'edit';
23
25
  const collapsed = mode === 'collapsed';
26
+ const expandRail = () => { writeQuickAppsRailCollapsed(false); setMode('normal'); };
27
+ const collapseRail = () => { writeQuickAppsRailCollapsed(true); setMode('collapsed'); };
24
28
  const [pickingFile, setPickingFile] = useState(false);
25
29
  const [apps, setApps] = useState([]);
26
30
  const [notice, setNotice] = useState(null);
@@ -120,13 +124,22 @@ export function QuickAppsLauncher({ services, wide }) {
120
124
  invalid.workspaceId = t('quickApps.chooseWorkspace');
121
125
  if (!draft.entryPath.trim())
122
126
  invalid.entryPath = t('quickApps.entryRequired');
127
+ const lines = (draft.networkAllow ?? []).map(line => line.trim()).filter(Boolean);
128
+ let networkAllow = [];
129
+ try {
130
+ networkAllow = parseQuickAppNetworkAllow(lines);
131
+ }
132
+ catch {
133
+ invalid.networkAllow = t('quickApps.networkAllowInvalid');
134
+ }
123
135
  if (Object.keys(invalid).length) {
124
136
  setErrors(invalid);
125
137
  return;
126
138
  }
127
139
  void perform(async (current) => {
128
- const saved = await client.call('upsert', { app: { ...draft, fileAccess: draft.kind === 'html' ? 'workspace' : undefined,
129
- title: draft.title.trim() || entryTitle(draft.entryPath) }, expectedRevision: draft.expectedRevision });
140
+ const { networkAllow: _draftAllow, ...fields } = draft;
141
+ const saved = await client.call('upsert', { app: { ...fields, fileAccess: draft.kind === 'html' ? 'workspace' : undefined,
142
+ title: draft.title.trim() || entryTitle(draft.entryPath), ...(networkAllow.length ? { networkAllow } : {}) }, expectedRevision: draft.expectedRevision });
130
143
  if (draft.kind === 'html' && saved.fileAccess !== 'workspace')
131
144
  throw new Error(t('quickApps.workspaceAccessHostUpdate'));
132
145
  if (!current())
@@ -180,7 +193,9 @@ export function QuickAppsLauncher({ services, wide }) {
180
193
  setPickingFile(false);
181
194
  updateDraft({ workspaceId: workspace.workspaceId, hostId: workspace.hostId ?? 'local', entryPath: '', documentRoot: '', mounts: [], spaFallback: false });
182
195
  } }), field('entryPath', draft), field('title', draft), pickingFile && selected ? h(QuickAppFilePicker, { key: `${draft.hostId}:${draft.workspaceId}`, client, workspace: selected, value: draft.entryPath, t,
183
- onClose: () => setPickingFile(false), onSelect: path => { setEntry(draft, path); setPickingFile(false); } }) : null, h(QuickAppField, { id: `${formId}-kind`, label: t('quickApps.kind') }, h('select', { id: `${formId}-kind`, className: 'qa-select', value: draft.kind, disabled: busy, onChange: (event) => updateDraft({ kind: event.target.value }) }, h('option', { value: 'html' }, t('quickApps.html')), h('option', { value: 'text' }, t('quickApps.text')))), draft.kind === 'html' && selected ? h('p', { className: 'qa-help' }, t('quickApps.workspaceAccessHelp', { workspace: selected.title })) : null, draft.id ? h('fieldset', { className: 'qa-management', disabled: busy || changed, 'aria-label': t('quickApps.accessAndRemoval') }, changed ? h('p', { className: 'qa-help' }, t('quickApps.saveBeforeAccess')) : null, h(QuickAppActions, null, draft.kind === 'html' ? button(t('quickApps.revoke'), () => {
196
+ onClose: () => setPickingFile(false), onSelect: path => { setEntry(draft, path); setPickingFile(false); } }) : null, h(QuickAppField, { id: `${formId}-kind`, label: t('quickApps.kind') }, h('select', { id: `${formId}-kind`, className: 'qa-select', value: draft.kind, disabled: busy, onChange: (event) => updateDraft({ kind: event.target.value }) }, h('option', { value: 'html' }, t('quickApps.html')), h('option', { value: 'text' }, t('quickApps.text')))), h(QuickAppField, { id: `${formId}-network-allow`, label: t('quickApps.networkAllow'), error: errors.networkAllow, help: t('quickApps.networkAllowHelp') }, h('textarea', { id: `${formId}-network-allow`, className: 'qa-allow', rows: 4, value: (draft.networkAllow ?? []).join('\n'), disabled: busy, spellCheck: false,
197
+ placeholder: t('quickApps.networkAllowPlaceholder'), 'aria-invalid': Boolean(errors.networkAllow), 'aria-describedby': `${formId}-network-allow-help`,
198
+ onChange: (event) => updateDraft({ networkAllow: event.target.value.split('\n') }) })), draft.kind === 'html' && selected ? h('p', { className: 'qa-help' }, t('quickApps.workspaceAccessHelp', { workspace: selected.title })) : null, draft.id ? h('fieldset', { className: 'qa-management', disabled: busy || changed, 'aria-label': t('quickApps.accessAndRemoval') }, changed ? h('p', { className: 'qa-help' }, t('quickApps.saveBeforeAccess')) : null, h(QuickAppActions, null, draft.kind === 'html' ? button(t('quickApps.revoke'), () => {
184
199
  void perform(async (current) => {
185
200
  const result = await client.call('revoke', { id: draft.id });
186
201
  if (!current())
@@ -217,9 +232,9 @@ export function QuickAppsLauncher({ services, wide }) {
217
232
  'aria-expanded': icon === 'collapse' || icon === 'expand' ? !collapsed : undefined, onClick,
218
233
  }, h(QuickAppControlIcon, { icon }));
219
234
  return h('section', { ref: rail, className: 'codingns-quick-app-rail', 'data-wide': wide, 'data-collapsed': collapsed, 'aria-label': t('quickApps.title'), 'aria-busy': busy }, h('style', null, quickAppsCss), h('header', { className: 'qa-rail-header' }, wide ? h('h2', null, t('quickApps.title')) : null, wide && loaded && !collapsed ? h('span', { className: 'qa-count', 'aria-label': t('quickApps.count', { count: apps.length }) }, apps.length) : null, h('div', { className: 'qa-controls' }, !collapsed ? editing ? control(t('quickApps.add'), 'add', add)
220
- : control(t('quickApps.manage'), 'edit', () => { setMode('edit'); setNotice(null); }) : null, collapsed ? control(t('quickApps.expandBar'), 'expand', () => setMode('normal'))
235
+ : control(t('quickApps.manage'), 'edit', () => { setMode('edit'); setNotice(null); }) : null, collapsed ? control(t('quickApps.expandBar'), 'expand', expandRail)
221
236
  : editing ? control(t('quickApps.done'), 'done', () => { setMode('normal'); setNotice(null); })
222
- : control(t('quickApps.collapseBar'), 'collapse', () => setMode('collapsed')))), !collapsed ? h('div', { className: 'qa-rail-content' }, !screen && notice ? h('p', { className: 'qa-rail-notice', role: notice.tone === 'error' ? 'alert' : 'status', title: notice.text }, wide ? notice.text : '!') : null, !loaded && !notice ? h('p', { className: 'qa-rail-notice', role: 'status', title: t('quickApps.loading') }, wide ? t('quickApps.loading') : '…') : null, !screen && (!loaded || notice?.tone === 'error') && !busy ? control(t('quickApps.retry'), 'retry', () => { void perform(refresh); }) : null, loaded && !apps.length && wide ? h('p', { className: 'qa-rail-notice' }, t('quickApps.empty')) : null, h('div', { className: 'qa-grid', ...reorder.gridProps }, ...reorder.apps.map(app => {
237
+ : control(t('quickApps.collapseBar'), 'collapse', collapseRail))), !collapsed ? h('div', { className: 'qa-rail-content' }, !screen && notice ? h('p', { className: 'qa-rail-notice', role: notice.tone === 'error' ? 'alert' : 'status', title: notice.text }, wide ? notice.text : '!') : null, !loaded && !notice ? h('p', { className: 'qa-rail-notice', role: 'status', title: t('quickApps.loading') }, wide ? t('quickApps.loading') : '…') : null, !screen && (!loaded || notice?.tone === 'error') && !busy ? control(t('quickApps.retry'), 'retry', () => { void perform(refresh); }) : null, loaded && !apps.length && wide ? h('p', { className: 'qa-rail-notice' }, t('quickApps.empty')) : null, h('div', { className: 'qa-grid', ...reorder.gridProps }, ...reorder.apps.map(app => {
223
238
  const icon = shortcutIcon(app);
224
239
  const workspace = workspaces.find(item => item.workspaceId === app.workspaceId && (item.hostId ?? 'local') === app.hostId);
225
240
  const available = app.availability === 'available';
@@ -238,14 +253,14 @@ export function QuickAppsLauncher({ services, wide }) {
238
253
  setNotice({ tone: 'error', text: status });
239
254
  return;
240
255
  }
241
- void perform(async (current) => { const view = await client.open(app.id); if (current() && view)
256
+ void perform(async (current) => { const view = await client.open(app.id, app.kind === 'html'); if (current() && view)
242
257
  navigate({ kind: 'view', app, view }); });
243
258
  } }, h('span', { className: 'qa-icon', style: icon.style, 'aria-hidden': true }, icon.text, !available ? h('span', { className: 'qa-unavailable' }, '!') : null), h('strong', null, app.title)), editing ? h('button', { type: 'button', className: 'qa-remove', disabled: busy,
244
259
  title: t('quickApps.removeNamed', { title: app.title }), 'aria-label': t('quickApps.removeNamed', { title: app.title }),
245
260
  onClick: () => navigate({ kind: 'remove', app }),
246
261
  }, h(QuickAppControlIcon, { icon: 'remove' })) : null);
247
262
  }))) : null, screen?.kind === 'view' ? h(QuickAppViewer, { key: screen.app.id, app: screen.app, view: screen.view, client, busy, error: notice?.tone === 'error' ? notice.text : undefined, t, onClose: close,
248
- onReload: () => { void perform(async (current) => { const view = await client.open(screen.app.id); if (current() && view)
263
+ onReload: () => { void perform(async (current) => { const view = await client.open(screen.app.id, screen.app.kind === 'html'); if (current() && view)
249
264
  setScreen({ ...screen, view }); }); } })
250
265
  : screen ? h(DshModal, { open: true, title, closeLabel: t('quickApps.close'), onClose: close, className: 'codingns-quick-app-dialog', contentClassName: 'qa-content', footer }, h('div', { className: 'qa-body', 'aria-busy': busy }, notice ? h('div', { className: 'qa-notice', role: notice.tone === 'error' ? 'alert' : 'status' }, notice.text) : null, body)) : null);
251
266
  }