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

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 (441) hide show
  1. package/README.en.md +3 -3
  2. package/README.md +3 -3
  3. package/data/build/dist/client/account-bar.d.ts.map +1 -1
  4. package/data/build/dist/client/account-bar.js +24 -70
  5. package/data/build/dist/client/account-bar.js.map +1 -1
  6. package/data/build/dist/client/adapter-catalog-watch.d.ts +1 -1
  7. package/data/build/dist/client/adapter-catalog-watch.d.ts.map +1 -1
  8. package/data/build/dist/client/adapter-catalog-watch.js +2 -2
  9. package/data/build/dist/client/adapter-catalog-watch.js.map +1 -1
  10. package/data/build/dist/client/bundle.js +30007 -15931
  11. package/data/build/dist/client/bundle.js.map +1 -1
  12. package/data/build/dist/client/cli-management-dialog.d.ts +21 -0
  13. package/data/build/dist/client/cli-management-dialog.d.ts.map +1 -0
  14. package/data/build/dist/client/cli-management-dialog.js +215 -0
  15. package/data/build/dist/client/cli-management-dialog.js.map +1 -0
  16. package/data/build/dist/client/cli-management-terminal.d.ts +9 -0
  17. package/data/build/dist/client/cli-management-terminal.d.ts.map +1 -0
  18. package/data/build/dist/client/cli-management-terminal.js +30 -0
  19. package/data/build/dist/client/cli-management-terminal.js.map +1 -0
  20. package/data/build/dist/client/cli-settings-dialog.d.ts +9 -0
  21. package/data/build/dist/client/cli-settings-dialog.d.ts.map +1 -0
  22. package/data/build/dist/client/cli-settings-dialog.js +45 -0
  23. package/data/build/dist/client/cli-settings-dialog.js.map +1 -0
  24. package/data/build/dist/client/cli-settings-rpc.js +1 -1
  25. package/data/build/dist/client/cli-settings-rpc.js.map +1 -1
  26. package/data/build/dist/client/cli-slots.d.ts +4 -0
  27. package/data/build/dist/client/cli-slots.d.ts.map +1 -1
  28. package/data/build/dist/client/cli-slots.js +15 -7
  29. package/data/build/dist/client/cli-slots.js.map +1 -1
  30. package/data/build/dist/client/client.editor-engine.js +4 -1
  31. package/data/build/dist/client/client.editor-engine.js.map +1 -1
  32. package/data/build/dist/client/client.native-workspace-store.js +1 -1
  33. package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
  34. package/data/build/dist/client/client.primitives-adapter.js +53 -0
  35. package/data/build/dist/client/client.primitives-adapter.js.map +1 -1
  36. package/data/build/dist/client/client.session-translation.js +16 -0
  37. package/data/build/dist/client/client.session-translation.js.map +1 -1
  38. package/data/build/dist/client/client.transport.js +459 -44
  39. package/data/build/dist/client/client.transport.js.map +1 -1
  40. package/data/build/dist/client/conversation-translation-settings.d.ts +2 -1
  41. package/data/build/dist/client/conversation-translation-settings.d.ts.map +1 -1
  42. package/data/build/dist/client/conversation-translation-settings.js +7 -5
  43. package/data/build/dist/client/conversation-translation-settings.js.map +1 -1
  44. package/data/build/dist/client/desktop-assistant.js +457 -42
  45. package/data/build/dist/client/editor-engine.d.ts +1 -1
  46. package/data/build/dist/client/editor-engine.d.ts.map +1 -1
  47. package/data/build/dist/client/editor-engine.js +4 -1
  48. package/data/build/dist/client/editor-engine.js.map +1 -1
  49. package/data/build/dist/client/features/cli-adapters.d.ts +3 -1
  50. package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
  51. package/data/build/dist/client/features/cli-adapters.js +181 -105
  52. package/data/build/dist/client/features/cli-adapters.js.map +1 -1
  53. package/data/build/dist/client/features/file-management.d.ts.map +1 -1
  54. package/data/build/dist/client/features/file-management.js +2 -0
  55. package/data/build/dist/client/features/file-management.js.map +1 -1
  56. package/data/build/dist/client/features/index.d.ts.map +1 -1
  57. package/data/build/dist/client/features/index.js +2 -0
  58. package/data/build/dist/client/features/index.js.map +1 -1
  59. package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
  60. package/data/build/dist/client/features/peer-host.js +3 -0
  61. package/data/build/dist/client/features/peer-host.js.map +1 -1
  62. package/data/build/dist/client/features/quick-apps.d.ts +3 -0
  63. package/data/build/dist/client/features/quick-apps.d.ts.map +1 -0
  64. package/data/build/dist/client/features/quick-apps.js +14 -0
  65. package/data/build/dist/client/features/quick-apps.js.map +1 -0
  66. package/data/build/dist/client/html-workspace-files.d.ts +4 -0
  67. package/data/build/dist/client/html-workspace-files.d.ts.map +1 -0
  68. package/data/build/dist/client/html-workspace-files.js +114 -0
  69. package/data/build/dist/client/html-workspace-files.js.map +1 -0
  70. package/data/build/dist/client/locale.d.ts.map +1 -1
  71. package/data/build/dist/client/locale.js +6 -0
  72. package/data/build/dist/client/locale.js.map +1 -1
  73. package/data/build/dist/client/locales/cliManagement.d.ts +3 -0
  74. package/data/build/dist/client/locales/cliManagement.d.ts.map +1 -0
  75. package/data/build/dist/client/locales/cliManagement.js +139 -0
  76. package/data/build/dist/client/locales/cliManagement.js.map +1 -0
  77. package/data/build/dist/client/locales/fileWorkspace.d.ts.map +1 -1
  78. package/data/build/dist/client/locales/fileWorkspace.js +4 -0
  79. package/data/build/dist/client/locales/fileWorkspace.js.map +1 -1
  80. package/data/build/dist/client/locales/panels.js +2 -2
  81. package/data/build/dist/client/locales/panels.js.map +1 -1
  82. package/data/build/dist/client/locales/quickApps.d.ts +130 -0
  83. package/data/build/dist/client/locales/quickApps.d.ts.map +1 -0
  84. package/data/build/dist/client/locales/quickApps.js +150 -0
  85. package/data/build/dist/client/locales/quickApps.js.map +1 -0
  86. package/data/build/dist/client/native-model-translation-menu.d.ts.map +1 -1
  87. package/data/build/dist/client/native-model-translation-menu.js +3 -1
  88. package/data/build/dist/client/native-model-translation-menu.js.map +1 -1
  89. package/data/build/dist/client/quick-apps/client.d.ts +29 -0
  90. package/data/build/dist/client/quick-apps/client.d.ts.map +1 -0
  91. package/data/build/dist/client/quick-apps/client.js +68 -0
  92. package/data/build/dist/client/quick-apps/client.js.map +1 -0
  93. package/data/build/dist/client/quick-apps/document.d.ts +26 -0
  94. package/data/build/dist/client/quick-apps/document.d.ts.map +1 -0
  95. package/data/build/dist/client/quick-apps/document.js +110 -0
  96. package/data/build/dist/client/quick-apps/document.js.map +1 -0
  97. package/data/build/dist/client/quick-apps/file-picker.d.ts +14 -0
  98. package/data/build/dist/client/quick-apps/file-picker.d.ts.map +1 -0
  99. package/data/build/dist/client/quick-apps/file-picker.js +51 -0
  100. package/data/build/dist/client/quick-apps/file-picker.js.map +1 -0
  101. package/data/build/dist/client/quick-apps/launcher.d.ts +7 -0
  102. package/data/build/dist/client/quick-apps/launcher.d.ts.map +1 -0
  103. package/data/build/dist/client/quick-apps/launcher.js +252 -0
  104. package/data/build/dist/client/quick-apps/launcher.js.map +1 -0
  105. package/data/build/dist/client/quick-apps/presentation.d.ts +16 -0
  106. package/data/build/dist/client/quick-apps/presentation.d.ts.map +1 -0
  107. package/data/build/dist/client/quick-apps/presentation.js +31 -0
  108. package/data/build/dist/client/quick-apps/presentation.js.map +1 -0
  109. package/data/build/dist/client/quick-apps/reorder-animation.d.ts +6 -0
  110. package/data/build/dist/client/quick-apps/reorder-animation.d.ts.map +1 -0
  111. package/data/build/dist/client/quick-apps/reorder-animation.js +50 -0
  112. package/data/build/dist/client/quick-apps/reorder-animation.js.map +1 -0
  113. package/data/build/dist/client/quick-apps/reorder.d.ts +26 -0
  114. package/data/build/dist/client/quick-apps/reorder.d.ts.map +1 -0
  115. package/data/build/dist/client/quick-apps/reorder.js +128 -0
  116. package/data/build/dist/client/quick-apps/reorder.js.map +1 -0
  117. package/data/build/dist/client/quick-apps/styles.d.ts +3 -0
  118. package/data/build/dist/client/quick-apps/styles.d.ts.map +1 -0
  119. package/data/build/dist/client/quick-apps/styles.js +143 -0
  120. package/data/build/dist/client/quick-apps/styles.js.map +1 -0
  121. package/data/build/dist/client/quick-apps/ui.d.ts +20 -0
  122. package/data/build/dist/client/quick-apps/ui.d.ts.map +1 -0
  123. package/data/build/dist/client/quick-apps/ui.js +21 -0
  124. package/data/build/dist/client/quick-apps/ui.js.map +1 -0
  125. package/data/build/dist/client/quick-apps/viewer.d.ts +16 -0
  126. package/data/build/dist/client/quick-apps/viewer.d.ts.map +1 -0
  127. package/data/build/dist/client/quick-apps/viewer.js +155 -0
  128. package/data/build/dist/client/quick-apps/viewer.js.map +1 -0
  129. package/data/build/dist/client/quick-apps/workspace-picker.d.ts +19 -0
  130. package/data/build/dist/client/quick-apps/workspace-picker.d.ts.map +1 -0
  131. package/data/build/dist/client/quick-apps/workspace-picker.js +30 -0
  132. package/data/build/dist/client/quick-apps/workspace-picker.js.map +1 -0
  133. package/data/build/dist/client/session-translation-chat.d.ts +1 -1
  134. package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
  135. package/data/build/dist/client/session-translation-chat.js +26 -22
  136. package/data/build/dist/client/session-translation-chat.js.map +1 -1
  137. package/data/build/dist/client/sidebar-footer-style.d.ts +13 -0
  138. package/data/build/dist/client/sidebar-footer-style.d.ts.map +1 -0
  139. package/data/build/dist/client/sidebar-footer-style.js +54 -0
  140. package/data/build/dist/client/sidebar-footer-style.js.map +1 -0
  141. package/data/build/dist/client/terminal/model.d.ts.map +1 -1
  142. package/data/build/dist/client/terminal/model.js +2 -1
  143. package/data/build/dist/client/terminal/model.js.map +1 -1
  144. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts +4 -0
  145. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts.map +1 -0
  146. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js +8 -0
  147. package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js.map +1 -0
  148. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +18 -0
  149. package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
  150. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +21 -0
  151. package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
  152. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts +18 -0
  153. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts.map +1 -0
  154. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js +11 -0
  155. package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js.map +1 -0
  156. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts +8 -0
  157. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts.map +1 -0
  158. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js +100 -0
  159. package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js.map +1 -0
  160. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts +3 -0
  161. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts.map +1 -0
  162. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js +22 -0
  163. package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js.map +1 -0
  164. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts +11 -0
  165. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts.map +1 -0
  166. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js +97 -0
  167. package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js.map +1 -0
  168. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts +36 -0
  169. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts.map +1 -0
  170. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js +164 -0
  171. package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js.map +1 -0
  172. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts +44 -0
  173. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts.map +1 -0
  174. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js +240 -0
  175. package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js.map +1 -0
  176. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts +37 -0
  177. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts.map +1 -0
  178. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js +35 -0
  179. package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js.map +1 -0
  180. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts +13 -0
  181. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts.map +1 -0
  182. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js +30 -0
  183. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js.map +1 -0
  184. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts +21 -0
  185. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts.map +1 -0
  186. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js +132 -0
  187. package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js.map +1 -0
  188. package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts +10 -0
  189. package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts.map +1 -0
  190. package/data/build/dist/dsh-capabilities/host/quick-app-transport.js +33 -0
  191. package/data/build/dist/dsh-capabilities/host/quick-app-transport.js.map +1 -0
  192. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts +7 -0
  193. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts.map +1 -0
  194. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js +18 -0
  195. package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js.map +1 -0
  196. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts +13 -0
  197. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts.map +1 -0
  198. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js +24 -0
  199. package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js.map +1 -0
  200. package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
  201. package/data/build/dist/dsh-capabilities/matrix.js +7 -1
  202. package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
  203. package/data/build/dist/dsh-capabilities/routes.d.ts +1 -0
  204. package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
  205. package/data/build/dist/dsh-capabilities/routes.js +16 -0
  206. package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
  207. package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
  208. package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
  209. package/data/build/dist/dsh-capabilities/types.js.map +1 -1
  210. package/data/build/dist/host/cli-adapters/binary-detection.d.ts.map +1 -1
  211. package/data/build/dist/host/cli-adapters/binary-detection.js +7 -3
  212. package/data/build/dist/host/cli-adapters/binary-detection.js.map +1 -1
  213. package/data/build/dist/host/cli-adapters/claude-driver.d.ts +1 -0
  214. package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
  215. package/data/build/dist/host/cli-adapters/claude-driver.js +179 -20
  216. package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
  217. package/data/build/dist/host/cli-adapters/codex-driver.d.ts +18 -0
  218. package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
  219. package/data/build/dist/host/cli-adapters/codex-driver.js +97 -5
  220. package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
  221. package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts +91 -0
  222. package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts.map +1 -0
  223. package/data/build/dist/host/cli-adapters/codex-performance-projection.js +8 -0
  224. package/data/build/dist/host/cli-adapters/codex-performance-projection.js.map +1 -0
  225. package/data/build/dist/host/cli-adapters/codex-performance.d.ts +16 -0
  226. package/data/build/dist/host/cli-adapters/codex-performance.d.ts.map +1 -0
  227. package/data/build/dist/host/cli-adapters/codex-performance.js +81 -0
  228. package/data/build/dist/host/cli-adapters/codex-performance.js.map +1 -0
  229. package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
  230. package/data/build/dist/host/cli-adapters/dsh-message-projector.js +17 -4
  231. package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
  232. package/data/build/dist/host/cli-adapters/feature.d.ts +2 -0
  233. package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
  234. package/data/build/dist/host/cli-adapters/feature.js +37 -8
  235. package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
  236. package/data/build/dist/host/cli-adapters/grok-driver.d.ts +2 -0
  237. package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
  238. package/data/build/dist/host/cli-adapters/grok-driver.js +161 -25
  239. package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
  240. package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts +123 -0
  241. package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts.map +1 -0
  242. package/data/build/dist/host/cli-adapters/grok-performance-projection.js +47 -0
  243. package/data/build/dist/host/cli-adapters/grok-performance-projection.js.map +1 -0
  244. package/data/build/dist/host/cli-adapters/grok-usage.d.ts +45 -0
  245. package/data/build/dist/host/cli-adapters/grok-usage.d.ts.map +1 -0
  246. package/data/build/dist/host/cli-adapters/grok-usage.js +197 -0
  247. package/data/build/dist/host/cli-adapters/grok-usage.js.map +1 -0
  248. package/data/build/dist/host/cli-adapters/management-installation.d.ts +5 -0
  249. package/data/build/dist/host/cli-adapters/management-installation.d.ts.map +1 -0
  250. package/data/build/dist/host/cli-adapters/management-installation.js +131 -0
  251. package/data/build/dist/host/cli-adapters/management-installation.js.map +1 -0
  252. package/data/build/dist/host/cli-adapters/management-methods.d.ts +32 -0
  253. package/data/build/dist/host/cli-adapters/management-methods.d.ts.map +1 -0
  254. package/data/build/dist/host/cli-adapters/management-methods.js +135 -0
  255. package/data/build/dist/host/cli-adapters/management-methods.js.map +1 -0
  256. package/data/build/dist/host/cli-adapters/management-process.d.ts +7 -0
  257. package/data/build/dist/host/cli-adapters/management-process.d.ts.map +1 -0
  258. package/data/build/dist/host/cli-adapters/management-process.js +51 -0
  259. package/data/build/dist/host/cli-adapters/management-process.js.map +1 -0
  260. package/data/build/dist/host/cli-adapters/management.d.ts +32 -0
  261. package/data/build/dist/host/cli-adapters/management.d.ts.map +1 -0
  262. package/data/build/dist/host/cli-adapters/management.js +172 -0
  263. package/data/build/dist/host/cli-adapters/management.js.map +1 -0
  264. package/data/build/dist/host/cli-adapters/model-catalog.d.ts +1 -0
  265. package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
  266. package/data/build/dist/host/cli-adapters/model-catalog.js +62 -0
  267. package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
  268. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +22 -0
  269. package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
  270. package/data/build/dist/host/cli-adapters/opencode-driver.js +105 -17
  271. package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
  272. package/data/build/dist/host/cli-adapters/process-utils.d.ts +2 -0
  273. package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
  274. package/data/build/dist/host/cli-adapters/process-utils.js +16 -11
  275. package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
  276. package/data/build/dist/host/cli-adapters/registry.d.ts +3 -0
  277. package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
  278. package/data/build/dist/host/cli-adapters/registry.js +33 -5
  279. package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
  280. package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts +74 -0
  281. package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts.map +1 -0
  282. package/data/build/dist/host/cli-adapters/session-performance-projection.js +83 -0
  283. package/data/build/dist/host/cli-adapters/session-performance-projection.js.map +1 -0
  284. package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts +3 -1
  285. package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts.map +1 -1
  286. package/data/build/dist/host/cli-adapters/stream-normalizer.js +2 -0
  287. package/data/build/dist/host/cli-adapters/stream-normalizer.js.map +1 -1
  288. package/data/build/dist/host/cli-adapters/update-check.d.ts +34 -0
  289. package/data/build/dist/host/cli-adapters/update-check.d.ts.map +1 -0
  290. package/data/build/dist/host/cli-adapters/update-check.js +263 -0
  291. package/data/build/dist/host/cli-adapters/update-check.js.map +1 -0
  292. package/data/build/dist/host/features/file-management.d.ts.map +1 -1
  293. package/data/build/dist/host/features/file-management.js +8 -0
  294. package/data/build/dist/host/features/file-management.js.map +1 -1
  295. package/data/build/dist/host/features/index.d.ts.map +1 -1
  296. package/data/build/dist/host/features/index.js +2 -0
  297. package/data/build/dist/host/features/index.js.map +1 -1
  298. package/data/build/dist/host/features/lan-access-dsh.js +1 -1
  299. package/data/build/dist/host/features/lan-access-dsh.js.map +1 -1
  300. package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
  301. package/data/build/dist/host/features/peer-host.js +7 -0
  302. package/data/build/dist/host/features/peer-host.js.map +1 -1
  303. package/data/build/dist/host/features/quick-apps.d.ts +4 -0
  304. package/data/build/dist/host/features/quick-apps.d.ts.map +1 -0
  305. package/data/build/dist/host/features/quick-apps.js +158 -0
  306. package/data/build/dist/host/features/quick-apps.js.map +1 -0
  307. package/data/build/dist/host/features/session-prompt-translation.d.ts +1 -1
  308. package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -1
  309. package/data/build/dist/host/features/session-prompt-translation.js +2 -1
  310. package/data/build/dist/host/features/session-prompt-translation.js.map +1 -1
  311. package/data/build/dist/host/features/session-translation-protection.d.ts +6 -0
  312. package/data/build/dist/host/features/session-translation-protection.d.ts.map +1 -1
  313. package/data/build/dist/host/features/session-translation-protection.js +21 -0
  314. package/data/build/dist/host/features/session-translation-protection.js.map +1 -1
  315. package/data/build/dist/host/features/session-translation-recovery.d.ts +3 -2
  316. package/data/build/dist/host/features/session-translation-recovery.d.ts.map +1 -1
  317. package/data/build/dist/host/features/session-translation-recovery.js +6 -3
  318. package/data/build/dist/host/features/session-translation-recovery.js.map +1 -1
  319. package/data/build/dist/host/features/session-translation-service.d.ts +3 -0
  320. package/data/build/dist/host/features/session-translation-service.d.ts.map +1 -1
  321. package/data/build/dist/host/features/session-translation-service.js +14 -8
  322. package/data/build/dist/host/features/session-translation-service.js.map +1 -1
  323. package/data/build/dist/host/features/types.d.ts +10 -0
  324. package/data/build/dist/host/features/types.d.ts.map +1 -1
  325. package/data/build/dist/host/html-workspace-files.d.ts +3 -0
  326. package/data/build/dist/host/html-workspace-files.d.ts.map +1 -0
  327. package/data/build/dist/host/html-workspace-files.js +135 -0
  328. package/data/build/dist/host/html-workspace-files.js.map +1 -0
  329. package/data/build/dist/host/index.d.ts.map +1 -1
  330. package/data/build/dist/host/index.js +27 -2
  331. package/data/build/dist/host/index.js.map +1 -1
  332. package/data/build/dist/host/lan-access-dsh.d.ts +5 -1
  333. package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
  334. package/data/build/dist/host/lan-access-dsh.js +43 -2
  335. package/data/build/dist/host/lan-access-dsh.js.map +1 -1
  336. package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts +5 -0
  337. package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts.map +1 -0
  338. package/data/build/dist/host/modules/peer-host/quick-app-gateway.js +27 -0
  339. package/data/build/dist/host/modules/peer-host/quick-app-gateway.js.map +1 -0
  340. package/data/build/dist/host/modules/quick-apps/browse.d.ts +5 -0
  341. package/data/build/dist/host/modules/quick-apps/browse.d.ts.map +1 -0
  342. package/data/build/dist/host/modules/quick-apps/browse.js +37 -0
  343. package/data/build/dist/host/modules/quick-apps/browse.js.map +1 -0
  344. package/data/build/dist/host/modules/quick-apps/code-revision.d.ts +4 -0
  345. package/data/build/dist/host/modules/quick-apps/code-revision.d.ts.map +1 -0
  346. package/data/build/dist/host/modules/quick-apps/code-revision.js +39 -0
  347. package/data/build/dist/host/modules/quick-apps/code-revision.js.map +1 -0
  348. package/data/build/dist/host/modules/quick-apps/documents.d.ts +14 -0
  349. package/data/build/dist/host/modules/quick-apps/documents.d.ts.map +1 -0
  350. package/data/build/dist/host/modules/quick-apps/documents.js +87 -0
  351. package/data/build/dist/host/modules/quick-apps/documents.js.map +1 -0
  352. package/data/build/dist/host/modules/quick-apps/errors.d.ts +8 -0
  353. package/data/build/dist/host/modules/quick-apps/errors.d.ts.map +1 -0
  354. package/data/build/dist/host/modules/quick-apps/errors.js +15 -0
  355. package/data/build/dist/host/modules/quick-apps/errors.js.map +1 -0
  356. package/data/build/dist/host/modules/quick-apps/file-api.d.ts +30 -0
  357. package/data/build/dist/host/modules/quick-apps/file-api.d.ts.map +1 -0
  358. package/data/build/dist/host/modules/quick-apps/file-api.js +149 -0
  359. package/data/build/dist/host/modules/quick-apps/file-api.js.map +1 -0
  360. package/data/build/dist/host/modules/quick-apps/launches.d.ts +35 -0
  361. package/data/build/dist/host/modules/quick-apps/launches.d.ts.map +1 -0
  362. package/data/build/dist/host/modules/quick-apps/launches.js +80 -0
  363. package/data/build/dist/host/modules/quick-apps/launches.js.map +1 -0
  364. package/data/build/dist/host/modules/quick-apps/paths.d.ts +14 -0
  365. package/data/build/dist/host/modules/quick-apps/paths.d.ts.map +1 -0
  366. package/data/build/dist/host/modules/quick-apps/paths.js +72 -0
  367. package/data/build/dist/host/modules/quick-apps/paths.js.map +1 -0
  368. package/data/build/dist/host/modules/quick-apps/registry.d.ts +30 -0
  369. package/data/build/dist/host/modules/quick-apps/registry.d.ts.map +1 -0
  370. package/data/build/dist/host/modules/quick-apps/registry.js +186 -0
  371. package/data/build/dist/host/modules/quick-apps/registry.js.map +1 -0
  372. package/data/build/dist/host/modules/quick-apps/remote.d.ts +38 -0
  373. package/data/build/dist/host/modules/quick-apps/remote.d.ts.map +1 -0
  374. package/data/build/dist/host/modules/quick-apps/remote.js +237 -0
  375. package/data/build/dist/host/modules/quick-apps/remote.js.map +1 -0
  376. package/data/build/dist/host/modules/quick-apps/service.d.ts +27 -0
  377. package/data/build/dist/host/modules/quick-apps/service.d.ts.map +1 -0
  378. package/data/build/dist/host/modules/quick-apps/service.js +170 -0
  379. package/data/build/dist/host/modules/quick-apps/service.js.map +1 -0
  380. package/data/build/dist/host/modules/quick-apps/static-handler.d.ts +8 -0
  381. package/data/build/dist/host/modules/quick-apps/static-handler.d.ts.map +1 -0
  382. package/data/build/dist/host/modules/quick-apps/static-handler.js +181 -0
  383. package/data/build/dist/host/modules/quick-apps/static-handler.js.map +1 -0
  384. package/data/build/dist/host/native-session-bridge.d.ts +5 -0
  385. package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
  386. package/data/build/dist/host/native-session-bridge.js +3 -0
  387. package/data/build/dist/host/native-session-bridge.js.map +1 -1
  388. package/data/build/dist/host/rpc.d.ts.map +1 -1
  389. package/data/build/dist/host/rpc.js +8 -3
  390. package/data/build/dist/host/rpc.js.map +1 -1
  391. package/data/build/dist/host/settings.d.ts.map +1 -1
  392. package/data/build/dist/host/settings.js +13 -0
  393. package/data/build/dist/host/settings.js.map +1 -1
  394. package/data/build/dist/host/workspace-file-mutations.d.ts +2 -0
  395. package/data/build/dist/host/workspace-file-mutations.d.ts.map +1 -0
  396. package/data/build/dist/host/workspace-file-mutations.js +15 -0
  397. package/data/build/dist/host/workspace-file-mutations.js.map +1 -0
  398. package/data/build/dist/shared/codex-performance.d.ts +3 -0
  399. package/data/build/dist/shared/codex-performance.d.ts.map +1 -0
  400. package/data/build/dist/shared/codex-performance.js +2 -0
  401. package/data/build/dist/shared/codex-performance.js.map +1 -0
  402. package/data/build/dist/shared/contracts/cli-adapter.d.ts +25 -0
  403. package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
  404. package/data/build/dist/shared/contracts/cli-management.d.ts +29 -0
  405. package/data/build/dist/shared/contracts/cli-management.d.ts.map +1 -0
  406. package/data/build/dist/shared/contracts/cli-management.js +2 -0
  407. package/data/build/dist/shared/contracts/cli-management.js.map +1 -0
  408. package/data/build/dist/shared/contracts/config.d.ts +2 -0
  409. package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
  410. package/data/build/dist/shared/contracts/config.js.map +1 -1
  411. package/data/build/dist/shared/contracts/quick-apps.d.ts +68 -0
  412. package/data/build/dist/shared/contracts/quick-apps.d.ts.map +1 -0
  413. package/data/build/dist/shared/contracts/quick-apps.js +4 -0
  414. package/data/build/dist/shared/contracts/quick-apps.js.map +1 -0
  415. package/data/build/dist/shared/contracts/session-translation.d.ts +8 -3
  416. package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
  417. package/data/build/dist/shared/contracts/session-translation.js +14 -0
  418. package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
  419. package/data/build/dist/shared/contracts/version.d.ts +1 -1
  420. package/data/build/dist/shared/contracts/version.js +1 -1
  421. package/data/build/dist/shared/peer-host-http-routes.d.ts +4 -0
  422. package/data/build/dist/shared/peer-host-http-routes.d.ts.map +1 -1
  423. package/data/build/dist/shared/peer-host-http-routes.js +4 -0
  424. package/data/build/dist/shared/peer-host-http-routes.js.map +1 -1
  425. package/data/build/dist/shared/quick-app-proxy-path.d.ts +6 -0
  426. package/data/build/dist/shared/quick-app-proxy-path.d.ts.map +1 -0
  427. package/data/build/dist/shared/quick-app-proxy-path.js +18 -0
  428. package/data/build/dist/shared/quick-app-proxy-path.js.map +1 -0
  429. package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts +7 -0
  430. package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts.map +1 -0
  431. package/data/build/dist/shared/quick-apps-bootstrap-locale.js +10 -0
  432. package/data/build/dist/shared/quick-apps-bootstrap-locale.js.map +1 -0
  433. package/data/build/dist/shared/request-performance.d.ts +15 -0
  434. package/data/build/dist/shared/request-performance.d.ts.map +1 -0
  435. package/data/build/dist/shared/request-performance.js +3 -0
  436. package/data/build/dist/shared/request-performance.js.map +1 -0
  437. package/package.json +1 -1
  438. package/profile/README.md +2 -2
  439. package/profile/package.json +2 -2
  440. package/profile/version.json +1 -1
  441. package/version.json +1 -1
@@ -0,0 +1,186 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { stat } from 'node:fs/promises';
3
+ import { QUICK_APP_LIMITS } from '../../../shared/contracts/quick-apps.js';
4
+ import { appPath, publicPath, resolveAppPath, withinScope } from './paths.js';
5
+ import { conflict, deny, QuickAppError } from './errors.js';
6
+ export class QuickAppRegistry {
7
+ storage;
8
+ workspaceRoot;
9
+ hostId;
10
+ remoteValidate;
11
+ pending = Promise.resolve();
12
+ stopped = false;
13
+ constructor(storage, workspaceRoot, hostId = 'local', remoteValidate) {
14
+ this.storage = storage;
15
+ this.workspaceRoot = workspaceRoot;
16
+ this.hostId = hostId;
17
+ this.remoteValidate = remoteValidate;
18
+ }
19
+ list() { return [...structuredClone(this.storage.read())].sort((a, b) => a.order - b.order); }
20
+ get(id) {
21
+ const app = this.list().find(item => item.id === id);
22
+ if (!app)
23
+ throw new QuickAppError(404, 'QUICK_APP_UNAVAILABLE', 'The shortcut no longer exists.');
24
+ return app;
25
+ }
26
+ root(app) {
27
+ if (app.hostId !== this.hostId)
28
+ throw new QuickAppError(503, 'QUICK_APP_HOST_UNAVAILABLE', 'The owning Host is not connected through a verified Quick Apps route.');
29
+ const root = this.workspaceRoot(app.workspaceId);
30
+ if (!root)
31
+ throw new QuickAppError(404, 'QUICK_APP_WORKSPACE_UNAVAILABLE', 'The exact workspace is unavailable.');
32
+ return root;
33
+ }
34
+ async validate(app) {
35
+ if (app.hostId !== this.hostId && this.remoteValidate) {
36
+ await this.remoteValidate(app);
37
+ return;
38
+ }
39
+ const root = this.root(app);
40
+ if (!withinScope(app.documentRoot, app.entryPath) || !publicPath(app.entryPath))
41
+ deny();
42
+ if (!(await stat(await resolveAppPath(root, app.documentRoot))).isDirectory())
43
+ deny();
44
+ if (!(await stat(await resolveAppPath(root, app.entryPath))).isFile())
45
+ deny();
46
+ for (const mount of app.mounts)
47
+ if (!(await stat(await resolveAppPath(root, mount.workspacePath))).isDirectory())
48
+ deny();
49
+ }
50
+ async availability(app, htmlAvailable) {
51
+ if (app.hostId !== this.hostId)
52
+ return 'disconnected-host';
53
+ if (!this.workspaceRoot(app.workspaceId))
54
+ return 'missing-workspace';
55
+ try {
56
+ await this.validate(app);
57
+ }
58
+ catch {
59
+ return 'missing-file';
60
+ }
61
+ return app.kind === 'html' && !htmlAvailable ? 'unsupported-runtime' : 'available';
62
+ }
63
+ upsert(input, expectedRevision) {
64
+ return this.serialize(async () => {
65
+ const data = parseDefinition(input);
66
+ const apps = this.list();
67
+ const existing = data.id ? apps.find(app => app.id === data.id) : undefined;
68
+ if (existing ? expectedRevision !== existing.revision : expectedRevision !== 0 || Boolean(data.id))
69
+ conflict();
70
+ if (!existing && apps.length >= QUICK_APP_LIMITS.shortcuts)
71
+ throw new QuickAppError(429, 'QUICK_APP_LIMIT', 'Too many shortcuts.');
72
+ const app = { ...data, id: existing?.id ?? randomUUID(), revision: (existing?.revision ?? 0) + 1 };
73
+ await this.validate(app);
74
+ await this.storage.write([...apps.filter(item => item.id !== app.id), app]);
75
+ return app;
76
+ });
77
+ }
78
+ remove(id, expectedRevision) {
79
+ return this.serialize(async () => {
80
+ if (this.get(id).revision !== expectedRevision)
81
+ conflict();
82
+ await this.storage.write(this.list().filter(app => app.id !== id));
83
+ });
84
+ }
85
+ reorder(input) {
86
+ return this.serialize(async () => {
87
+ if (!Array.isArray(input) || input.length > QUICK_APP_LIMITS.shortcuts)
88
+ deny('Invalid shortcut order.');
89
+ const expected = new Map();
90
+ for (const item of input) {
91
+ if (!item || typeof item.id !== 'string' || !Number.isSafeInteger(item.expectedRevision) || expected.has(item.id))
92
+ deny('Invalid shortcut order.');
93
+ expected.set(item.id, item.expectedRevision);
94
+ }
95
+ const apps = this.list();
96
+ if (apps.length !== expected.size || apps.some(app => expected.get(app.id) !== app.revision))
97
+ conflict();
98
+ const byId = new Map(apps.map(app => [app.id, app]));
99
+ const ordered = [...expected.keys()].map((id, order) => {
100
+ const app = byId.get(id);
101
+ return app.order === order ? app : { ...app, order, revision: app.revision + 1 };
102
+ });
103
+ // Ordering only changes metadata, including shortcuts whose Host or source is unavailable.
104
+ if (ordered.some(app => app !== byId.get(app.id)))
105
+ await this.storage.write(ordered);
106
+ return ordered;
107
+ });
108
+ }
109
+ revokeWorkspaceAccess(id, expectedRevision) {
110
+ return this.serialize(async () => {
111
+ const app = this.get(id);
112
+ if (app.revision !== expectedRevision)
113
+ conflict();
114
+ if (app.fileAccess !== 'workspace')
115
+ return app;
116
+ const { fileAccess: _access, ...definition } = app;
117
+ const updated = { ...definition, revision: app.revision + 1 };
118
+ // Revocation must work even when the entry or workspace is no longer accessible.
119
+ await this.storage.write(this.list().map(item => item.id === id ? updated : item));
120
+ return updated;
121
+ });
122
+ }
123
+ async dispose() { this.stopped = true; await this.pending.catch(() => undefined); }
124
+ serialize(operation) {
125
+ const next = this.pending.catch(() => undefined).then(() => {
126
+ if (this.stopped)
127
+ throw new QuickAppError(410, 'QUICK_APP_REVOKED', 'Quick Apps is disabled.');
128
+ return operation();
129
+ });
130
+ this.pending = next;
131
+ return next;
132
+ }
133
+ }
134
+ /** Ordering revisions protect metadata writes without changing launch files or permissions. */
135
+ export function quickAppDefinitionKey(app) {
136
+ const { order: _order, revision: _revision, ...definition } = app;
137
+ return JSON.stringify(definition);
138
+ }
139
+ function text(value) {
140
+ if (typeof value !== 'string' || value.trim() === '' || value.length > 512 || /[\x00-\x1f]/u.test(value))
141
+ deny('Invalid shortcut metadata.');
142
+ return value.trim();
143
+ }
144
+ export function parseDefinition(input) {
145
+ if (!input || typeof input !== 'object' || Array.isArray(input))
146
+ deny();
147
+ const value = input;
148
+ if (value.kind !== 'html' && value.kind !== 'text')
149
+ deny();
150
+ if (value.fileAccess !== undefined && value.fileAccess !== 'workspace')
151
+ deny('Invalid workspace access policy.');
152
+ if (!Array.isArray(value.mounts) || value.mounts.length > 8 || typeof value.spaFallback !== 'boolean' || !Number.isSafeInteger(value.order))
153
+ deny();
154
+ const prefixes = [];
155
+ const mounts = value.mounts.map(item => {
156
+ if (!item || typeof item !== 'object' || item.read !== true || typeof item.urlPrefix !== 'string' || !item.urlPrefix.startsWith('/'))
157
+ deny();
158
+ const prefix = appPath(item.urlPrefix.slice(1), false);
159
+ if (prefix === '__quickapp' || prefix.startsWith('__quickapp/') || prefixes.some(previous => withinScope(previous, prefix) || withinScope(prefix, previous)))
160
+ deny('Overlapping or reserved mount.');
161
+ prefixes.push(prefix);
162
+ const workspacePath = appPath(item.workspacePath);
163
+ if (!publicPath(workspacePath))
164
+ deny();
165
+ return { urlPrefix: `/${prefix}`, workspacePath, read: true };
166
+ });
167
+ const entryPath = appPath(value.entryPath, false);
168
+ if (value.kind === 'html' && !/\.html?$/iu.test(entryPath))
169
+ deny('Choose an HTML entry file.');
170
+ return { id: value.id ? text(value.id) : '', title: text(value.title), hostId: text(value.hostId), workspaceId: text(value.workspaceId),
171
+ ...(value.kind === 'html' && value.fileAccess === 'workspace' ? { fileAccess: 'workspace' } : {}),
172
+ entryPath, documentRoot: appPath(value.documentRoot), kind: value.kind, spaFallback: value.spaFallback, mounts, order: value.order };
173
+ }
174
+ export function parsePermissions(value) {
175
+ if (!value || typeof value !== 'object')
176
+ deny();
177
+ const input = value;
178
+ const paths = (key) => {
179
+ if (!Array.isArray(input[key]) || input[key].length > 8)
180
+ deny('Invalid file permissions.');
181
+ return input[key].map((path) => { const normalized = appPath(path); if (!publicPath(normalized))
182
+ deny(); return normalized; });
183
+ };
184
+ return { read: paths('read'), write: paths('write'), delete: paths('delete') };
185
+ }
186
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAC1E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAO3D,MAAM,OAAO,gBAAgB;IAGN;IAAmC;IAAuD;IAC5F;IAHX,OAAO,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IAC7C,OAAO,GAAG,KAAK,CAAA;IACvB,YAAqB,OAAwB,EAAW,aAA4C,EAAW,SAAS,OAAO,EAC5G,cAAiD;QAD/C,YAAO,GAAP,OAAO,CAAiB;QAAW,kBAAa,GAAb,aAAa,CAA+B;QAAW,WAAM,GAAN,MAAM,CAAU;QAC5G,mBAAc,GAAd,cAAc,CAAmC;IAAG,CAAC;IAExE,IAAI,KAA0B,OAAO,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;IAClH,GAAG,CAAC,EAAU;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,uBAAuB,EAAE,gCAAgC,CAAC,CAAA;QACjG,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,IAAI,CAAC,GAAa;QAChB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,4BAA4B,EAAE,uEAAuE,CAAC,CAAA;QACnK,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,iCAAiC,EAAE,qCAAqC,CAAC,CAAA;QACjH,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,GAAa;QAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAAC,OAAM;QAAC,CAAC;QACjG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,IAAI,EAAE,CAAA;QACvF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAAE,IAAI,EAAE,CAAA;QACrF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,CAAA;QAC7E,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM;YAAE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAAE,IAAI,EAAE,CAAA;IAC1H,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,GAAa,EAAE,aAAsB;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,mBAAmB,CAAA;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,mBAAmB,CAAA;QACpE,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,cAAc,CAAA;QAAC,CAAC;QAChE,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,CAAA;IACpF,CAAC;IACD,MAAM,CAAC,KAAc,EAAE,gBAAwB;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC3E,IAAI,QAAQ,CAAC,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,QAAQ,EAAE,CAAA;YAC9G,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAA;YAClI,MAAM,GAAG,GAAa,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;YAC5G,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACxB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC3E,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,CAAC,EAAU,EAAE,gBAAwB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,KAAK,gBAAgB;gBAAE,QAAQ,EAAE,CAAA;YAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,CAAC,KAAc;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS;gBAAE,IAAI,CAAC,yBAAyB,CAAC,CAAA;YACvG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,IAAI,CAAC,yBAAyB,CAAC,CAAA;gBAClJ,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC9C,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YACxB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC;gBAAE,QAAQ,EAAE,CAAA;YACxG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YACpD,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;gBACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAA;gBACzB,OAAO,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAA;YAClF,CAAC,CAAC,CAAA;YACF,2FAA2F;YAC3F,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACpF,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,qBAAqB,CAAC,EAAU,EAAE,gBAAwB;QACxD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACxB,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB;gBAAE,QAAQ,EAAE,CAAA;YACjD,IAAI,GAAG,CAAC,UAAU,KAAK,WAAW;gBAAE,OAAO,GAAG,CAAA;YAC9C,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,GAAG,CAAA;YAClD,MAAM,OAAO,GAAG,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAA;YAC7D,iFAAiF;YACjF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;YAClF,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,CAAC,OAAO,KAAoB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC;IACzF,SAAS,CAAI,SAA2B;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACzD,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,yBAAyB,CAAC,CAAA;YAC9F,OAAO,SAAS,EAAE,CAAA;QACpB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,+FAA+F;AAC/F,MAAM,UAAU,qBAAqB,CAAC,GAAa;IACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,GAAG,GAAG,CAAA;IACjE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,4BAA4B,CAAC,CAAA;IAC5I,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,CAAA;IACvE,MAAM,KAAK,GAAG,KAAgC,CAAA;IAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,IAAI,EAAE,CAAA;IAC1D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;QAAE,IAAI,CAAC,kCAAkC,CAAC,CAAA;IAChH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,CAAA;IACnJ,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACrC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,IAAI,EAAE,CAAA;QAC5I,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QACtD,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAAE,IAAI,CAAC,gCAAgC,CAAC,CAAA;QACpM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACjD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,IAAI,EAAE,CAAA;QACtC,OAAO,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,IAAa,EAAE,CAAA;IACxE,CAAC,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,IAAI,CAAC,4BAA4B,CAAC,CAAA;IAC9F,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QACrI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAe,EAAE,CAAA;AAClJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,IAAI,EAAE,CAAA;IAC/C,MAAM,KAAK,GAAG,KAAgC,CAAA;IAC9C,MAAM,KAAK,GAAG,CAAC,GAAW,EAAY,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAC1F,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,GAAG,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,IAAI,EAAE,CAAC,CAAC,OAAO,UAAU,CAAA,CAAC,CAAC,CAAC,CAAA;IACxI,CAAC,CAAA;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAA;AAChF,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { QuickApp } from '../../../shared/contracts/quick-apps.js';
2
+ import { type QuickAppOriginProvider } from '../../../dsh-capabilities/host/quick-app-origin-adapter.js';
3
+ /** Only the authenticated PeerHost management carrier may implement this gateway. */
4
+ export interface QuickAppPeerGateway {
5
+ call(hostId: string, workspaceId: string, action: string, payload: Record<string, unknown>, signal?: AbortSignal): Promise<unknown>;
6
+ }
7
+ export declare function quickAppTargetWorkspace(app: Pick<QuickApp, 'hostId' | 'workspaceId'>): string;
8
+ /** Remote definitions are validated and held on the file-owning Host, never trusted as grants. */
9
+ export declare class QuickAppRemoteOwner {
10
+ private readonly origins?;
11
+ private apps;
12
+ private readonly registry;
13
+ private readonly service;
14
+ private pending;
15
+ private stopped;
16
+ constructor(workspaceRoot: (id: string) => string | null, origins?: QuickAppOriginProvider | undefined);
17
+ handle(action: string, input: Record<string, unknown>, principal: string): Promise<unknown>;
18
+ dispose(): Promise<void>;
19
+ }
20
+ /** Controlling Host owns routing references; app payloads can never select a mutation destination. */
21
+ export declare class QuickAppRemoteController {
22
+ private readonly gateway;
23
+ private readonly protectedUi;
24
+ private readonly proxy?;
25
+ private readonly active;
26
+ private readonly opening;
27
+ private readonly origins;
28
+ private stopped;
29
+ constructor(gateway: () => QuickAppPeerGateway | undefined, protectedUi?: (origin?: string) => boolean, proxy?: QuickAppOriginProvider | undefined);
30
+ call(app: QuickApp, action: string, payload?: Record<string, unknown>, signal?: AbortSignal): Promise<any>;
31
+ launch(app: QuickApp, principal: string, uiOrigin: string | undefined, signal?: AbortSignal): Promise<unknown>;
32
+ owns(id: string): boolean;
33
+ document(id: string, principal: string, input: Record<string, unknown>, currentApp: (id: string) => QuickApp): Promise<unknown>;
34
+ close(id: string, principal: string): Promise<void>;
35
+ invalidate(app: QuickApp): Promise<void>;
36
+ dispose(): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=remote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/remote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAA+C,MAAM,yCAAyC,CAAA;AAKpH,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,4DAA4D,CAAA;AAKhI,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACpI;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,MAAM,CAI7F;AAED,kGAAkG;AAClG,qBAAa,mBAAmB;IAM4B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IALnF,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,OAAO,CAAQ;gBACX,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAAmB,OAAO,CAAC,EAAE,sBAAsB,YAAA;IAI3G,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmCrF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B;AAED,sGAAsG;AACtG,qBAAa,wBAAwB;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAyC,OAAO,CAAC,QAAQ,CAAC,WAAW;IACvG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IALzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4J;IACnL,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,OAAO,CAAQ;gBACM,OAAO,EAAE,MAAM,mBAAmB,GAAG,SAAS,EAAmB,WAAW,GAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,OAAqB,EAClI,KAAK,CAAC,EAAE,sBAAsB,YAAA;IAC3C,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAMpH,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA+D9G,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/H,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B"}
@@ -0,0 +1,237 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { readBody } from './static-handler.js';
3
+ import { QUICK_APP_LIMITS } from '../../../shared/contracts/quick-apps.js';
4
+ import { QUICK_APP_DESKTOP_ORIGIN } from '../../../shared/quick-app-proxy-path.js';
5
+ import { parseVirtualWorkspaceId } from '../../../shared/contracts/peer-host.js';
6
+ import { validateQuickAppOrigin } from '../../../dsh-capabilities/host/quick-app-origin-adapter.js';
7
+ import { QuickAppRegistry, parseDefinition, quickAppDefinitionKey } from './registry.js';
8
+ import { QuickAppService } from './service.js';
9
+ import { deny, QuickAppError } from './errors.js';
10
+ export function quickAppTargetWorkspace(app) {
11
+ const parsed = parseVirtualWorkspaceId(app.workspaceId);
12
+ if (!parsed || parsed.hostId !== app.hostId)
13
+ deny('The shortcut does not belong to this Host.');
14
+ return parsed.workspaceId;
15
+ }
16
+ /** Remote definitions are validated and held on the file-owning Host, never trusted as grants. */
17
+ export class QuickAppRemoteOwner {
18
+ origins;
19
+ apps = [];
20
+ registry;
21
+ service;
22
+ pending = Promise.resolve();
23
+ stopped = false;
24
+ constructor(workspaceRoot, origins) {
25
+ this.origins = origins;
26
+ this.registry = new QuickAppRegistry({ read: () => this.apps, write: async (apps) => { this.apps = [...apps]; } }, workspaceRoot);
27
+ this.service = new QuickAppService(this.registry, origins);
28
+ }
29
+ handle(action, input, principal) {
30
+ if (this.stopped)
31
+ return Promise.reject(new QuickAppError(410, 'QUICK_APP_REVOKED', 'Quick Apps is disabled.'));
32
+ // File mutations own their physical-file queue. Do not queue revocation behind a pending save.
33
+ if (action === 'document')
34
+ return this.service.documents.handle(String(input.id), principal, input);
35
+ if (action === 'resource')
36
+ return this.service.resource(String(input.id), principal, input.request);
37
+ // Serialize definition replacement with grant/launch: a stale queued request cannot borrow a newer grant.
38
+ const next = this.pending.catch(() => undefined).then(async () => {
39
+ if (this.stopped)
40
+ deny();
41
+ if (action === 'close') {
42
+ this.service.launches.requireOwner(String(input.id), principal);
43
+ await this.service.launches.revoke(String(input.id));
44
+ return { ok: true };
45
+ }
46
+ if (!['validate', 'launch', 'grant', 'revoke'].includes(action))
47
+ deny();
48
+ const definition = parseDefinition(input.app);
49
+ if (definition.hostId !== 'local' || !definition.id)
50
+ deny();
51
+ const id = createHash('sha256').update(JSON.stringify([principal, definition.id])).digest('hex');
52
+ let app = this.apps.find(item => item.id === id);
53
+ const candidate = { ...definition, id, revision: app?.revision ?? 1 };
54
+ const uiOrigin = typeof input.uiOrigin === 'string' ? input.uiOrigin : undefined;
55
+ if (action === 'validate')
56
+ return { availability: await this.registry.availability(candidate, Boolean(this.origins) && (this.origins?.available?.(uiOrigin) ?? true)),
57
+ fileAccess: candidate.fileAccess, runtimeReason: this.origins?.diagnostic?.(uiOrigin), isolation: this.origins?.isolation };
58
+ if (action === 'revoke') {
59
+ await this.service.invalidate(id);
60
+ this.apps = this.apps.filter(item => item.id !== id);
61
+ return { ok: true };
62
+ }
63
+ await this.registry.validate(candidate);
64
+ if (!app || quickAppDefinitionKey(app) !== quickAppDefinitionKey(candidate)) {
65
+ if (!app && this.apps.length >= QUICK_APP_LIMITS.shortcuts)
66
+ throw new QuickAppError(429, 'QUICK_APP_LIMIT', 'Too many remote shortcuts for this module lifetime.');
67
+ await this.service.invalidate(id);
68
+ app = { ...candidate, revision: (app?.revision ?? 0) + 1 };
69
+ this.apps = [...this.apps.filter(item => item.id !== id), app];
70
+ }
71
+ if (action === 'grant') {
72
+ await this.service.grant(id, app.revision, input.permissions);
73
+ return { ok: true };
74
+ }
75
+ return this.service.launch(id, principal, undefined, uiOrigin);
76
+ });
77
+ this.pending = next;
78
+ return next;
79
+ }
80
+ async dispose() { this.stopped = true; await this.pending.catch(() => undefined); await this.service.dispose(); this.apps = []; }
81
+ }
82
+ /** Controlling Host owns routing references; app payloads can never select a mutation destination. */
83
+ export class QuickAppRemoteController {
84
+ gateway;
85
+ protectedUi;
86
+ proxy;
87
+ active = new Map();
88
+ opening = new Set();
89
+ origins = new Set();
90
+ stopped = false;
91
+ constructor(gateway, protectedUi = () => false, proxy) {
92
+ this.gateway = gateway;
93
+ this.protectedUi = protectedUi;
94
+ this.proxy = proxy;
95
+ }
96
+ async call(app, action, payload = {}, signal) {
97
+ const gateway = this.gateway();
98
+ if (!gateway || this.stopped && action !== 'close')
99
+ throw new QuickAppError(503, 'QUICK_APP_HOST_UNAVAILABLE', 'The owning Host is unavailable.');
100
+ const workspaceId = quickAppTargetWorkspace(app);
101
+ return gateway.call(app.hostId, workspaceId, action, { ...payload, app: { ...app, hostId: 'local', workspaceId } }, signal);
102
+ }
103
+ launch(app, principal, uiOrigin, signal) {
104
+ for (const [id, value] of this.active)
105
+ if (value.expiresAt <= Date.now())
106
+ void this.close(id, value.principal).catch(() => undefined);
107
+ if (this.stopped || this.active.size + this.opening.size >= QUICK_APP_LIMITS.launches || this.origins.size >= QUICK_APP_LIMITS.originHistory)
108
+ return Promise.reject(new QuickAppError(429, 'QUICK_APP_LIMIT', 'Too many remote launches.'));
109
+ const operation = (async () => {
110
+ const result = await this.call(app, 'launch', { uiOrigin }, signal);
111
+ if (result?.kind === 'text') {
112
+ if (typeof result.content !== 'string' || typeof result.title !== 'string' || Buffer.byteLength(result.content) > QUICK_APP_LIMITS.textBytes)
113
+ deny();
114
+ // Older peers remain viewable, but expose no editing capability or launch to route.
115
+ if (result.launchId === undefined) {
116
+ signal?.throwIfAborted();
117
+ if (this.stopped)
118
+ deny();
119
+ return result;
120
+ }
121
+ }
122
+ else if (result?.kind !== 'html')
123
+ deny('The owning Host returned an invalid launch.');
124
+ if (typeof result.launchId !== 'string' || !Number.isFinite(result.expiresAt) || result.expiresAt <= Date.now() || result.expiresAt > Date.now() + QUICK_APP_LIMITS.lifetimeMs)
125
+ deny();
126
+ let disposeProxy;
127
+ try {
128
+ if (result.kind === 'html' && result.isolation === 'sandbox-proxy') {
129
+ if (this.proxy?.isolation !== 'sandbox-proxy')
130
+ throw new QuickAppError(503, 'QUICK_APP_RELAY_UNAVAILABLE', 'The controlling Host needs the workspace preview proxy.');
131
+ const remoteBase = result.basePath;
132
+ // Desktop resources stay behind the authenticated relay; only the controlling lease reaches the browser.
133
+ const ownerUiOrigin = uiOrigin === QUICK_APP_DESKTOP_ORIGIN ? result.origin : uiOrigin ?? '';
134
+ validateQuickAppOrigin({ ...result, uiOrigin: ownerUiOrigin, ownerHostId: app.hostId, cookieName: 'quickapp-proxy', remote: true,
135
+ activate: async () => ({ url: '' }), dispose: async () => undefined }, app.hostId, this.origins);
136
+ if (!result.url.startsWith(result.origin + remoteBase))
137
+ deny('Invalid remote preview address.');
138
+ const lease = await this.proxy.open((req, res) => {
139
+ void (async () => {
140
+ const headers = {};
141
+ for (const name of ['accept', 'origin', 'content-type', 'if-match', 'if-none-match', 'sec-fetch-mode', 'sec-fetch-dest']) {
142
+ const value = req.headers[name];
143
+ if (typeof value === 'string')
144
+ headers[name] = value;
145
+ }
146
+ const timeout = AbortSignal.any([AbortSignal.timeout(30_000), ...(signal ? [signal] : [])]);
147
+ const request = { method: req.method ?? 'GET', path: req.url ?? '/', headers,
148
+ ...(req.method === 'PUT' ? { body: await readBody(req, timeout) } : {}) };
149
+ const response = await this.call(app, 'resource', { id: result.launchId, request }, timeout);
150
+ if (!Number.isInteger(response?.status) || response.status < 200 || response.status > 599 || typeof response.bodyBase64 !== 'string'
151
+ || response.bodyBase64.length > Math.ceil(QUICK_APP_LIMITS.staticBytes / 3) * 4)
152
+ deny('Invalid remote preview response.');
153
+ for (const name of ['content-type', 'content-length', 'content-security-policy', 'cache-control', 'referrer-policy', 'x-content-type-options', 'access-control-allow-origin', 'access-control-allow-methods', 'access-control-allow-headers']) {
154
+ const value = response.headers[name];
155
+ if (typeof value === 'string')
156
+ res.setHeader(name, value);
157
+ }
158
+ const location = response.headers.location;
159
+ if (location) {
160
+ if (!location.startsWith(remoteBase))
161
+ deny();
162
+ res.setHeader('Location', lease.basePath + location.slice(remoteBase.length));
163
+ }
164
+ res.writeHead(response.status);
165
+ res.end(req.method === 'HEAD' ? undefined : Buffer.from(response.bodyBase64, 'base64'));
166
+ })().catch(() => { if (res.headersSent)
167
+ res.destroy();
168
+ else
169
+ res.writeHead(502, { 'Cache-Control': 'no-store' }).end(); });
170
+ }, uiOrigin);
171
+ disposeProxy = lease.dispose;
172
+ const path = result.url.slice((result.origin + remoteBase).length);
173
+ const activation = await lease.activate(randomUUID(), `/${path}`);
174
+ result.url = activation.url;
175
+ result.origin = lease.origin;
176
+ result.basePath = lease.basePath;
177
+ }
178
+ else if (result.kind === 'html') {
179
+ if (typeof result.origin !== 'string' || typeof result.url !== 'string')
180
+ deny();
181
+ if (result.isolation === 'lan-port' && !this.protectedUi(uiOrigin))
182
+ throw new QuickAppError(503, 'QUICK_APP_RELAY_UNAVAILABLE', 'The controlling LAN proxy needs the app origin guard.');
183
+ validateQuickAppOrigin({ origin: result.origin, uiOrigin: uiOrigin ?? '', ownerHostId: app.hostId, remote: true, cookieName: '__Host-quickapp',
184
+ ...(result.isolation === 'lan-port' ? { isolation: 'lan-port' } : {}), activate: async () => ({ url: '' }), dispose: async () => undefined }, app.hostId, this.origins);
185
+ if (new URL(result.url).origin !== result.origin)
186
+ deny('The owning Host returned an invalid app address.');
187
+ this.origins.add(result.origin);
188
+ }
189
+ }
190
+ catch (error) {
191
+ await disposeProxy?.();
192
+ await this.call(app, 'close', { id: result.launchId }).catch(() => undefined);
193
+ throw error;
194
+ }
195
+ if (this.stopped || signal?.aborted) {
196
+ await disposeProxy?.();
197
+ await this.call(app, 'close', { id: result.launchId });
198
+ signal?.throwIfAborted();
199
+ deny();
200
+ }
201
+ const id = randomUUID();
202
+ const onAbort = () => { void this.close(id, principal).catch(() => undefined); };
203
+ signal?.addEventListener('abort', onAbort, { once: true });
204
+ this.active.set(id, { app, principal, targetId: result.launchId, expiresAt: result.expiresAt, removeAbort: () => signal?.removeEventListener('abort', onAbort), ...(disposeProxy ? { disposeProxy } : {}) });
205
+ return { ...result, launchId: id };
206
+ })();
207
+ this.opening.add(operation);
208
+ void operation.finally(() => this.opening.delete(operation)).catch(() => undefined);
209
+ return operation;
210
+ }
211
+ owns(id) { return this.active.has(id); }
212
+ async document(id, principal, input, currentApp) {
213
+ const launch = this.active.get(id);
214
+ if (!launch || launch.principal !== principal || launch.expiresAt <= Date.now() || quickAppDefinitionKey(currentApp(launch.app.id)) !== quickAppDefinitionKey(launch.app))
215
+ deny();
216
+ return this.call(launch.app, 'document', { operation: input.operation, path: input.path, content: input.content, version: input.version, id: launch.targetId });
217
+ }
218
+ async close(id, principal) {
219
+ const launch = this.active.get(id);
220
+ if (!launch || launch.principal !== principal)
221
+ deny();
222
+ this.active.delete(id);
223
+ launch.removeAbort();
224
+ await launch.disposeProxy?.();
225
+ await this.call(launch.app, 'close', { id: launch.targetId });
226
+ }
227
+ async invalidate(app) {
228
+ await Promise.all([...this.active.entries()].filter(([, value]) => value.app.id === app.id).map(([id, value]) => this.close(id, value.principal)));
229
+ await this.call(app, 'revoke');
230
+ }
231
+ async dispose() {
232
+ this.stopped = true;
233
+ await Promise.allSettled(this.opening);
234
+ await Promise.allSettled([...this.active].map(([id, value]) => this.close(id, value.principal)));
235
+ }
236
+ }
237
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/remote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type QuickAppOriginProvider } from '../../../dsh-capabilities/host/quick-app-origin-adapter.js';
2
+ import type { QuickAppProxyRequest, QuickAppProxyResponse } from '../../../shared/contracts/quick-apps.js';
3
+ import { QuickAppRegistry } from './registry.js';
4
+ import { QuickAppLaunches } from './launches.js';
5
+ import { QuickAppFileApi } from './file-api.js';
6
+ import { QuickAppDocuments } from './documents.js';
7
+ export declare class QuickAppService {
8
+ readonly registry: QuickAppRegistry;
9
+ private readonly originsProvider?;
10
+ readonly launches: QuickAppLaunches;
11
+ readonly files: QuickAppFileApi;
12
+ readonly documents: QuickAppDocuments;
13
+ private readonly approvals;
14
+ private readonly origins;
15
+ private readonly opening;
16
+ private readonly proxyPaths;
17
+ private stopped;
18
+ constructor(registry: QuickAppRegistry, originsProvider?: QuickAppOriginProvider | undefined);
19
+ list(uiOrigin?: string): Promise<unknown>;
20
+ grant(id: string, revision: number, permissions: unknown): Promise<void>;
21
+ launch(id: string, principal: string, connectionSignal?: AbortSignal, uiOrigin?: string): Promise<unknown>;
22
+ private open;
23
+ invalidate(id: string): Promise<void>;
24
+ resource(id: string, principal: string, input: QuickAppProxyRequest): Promise<QuickAppProxyResponse>;
25
+ dispose(): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../../src/host/modules/quick-apps/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwD,KAAK,sBAAsB,EAAE,MAAM,4DAA4D,CAAA;AAC9J,OAAO,KAAK,EAAuB,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAE/H,OAAO,EAAE,gBAAgB,EAA2C,MAAM,eAAe,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAMlD,qBAAa,eAAe;IASd,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IARlF,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2H;IACrJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,OAAO,CAAQ;gBACF,QAAQ,EAAE,gBAAgB,EAAmB,eAAe,CAAC,EAAE,sBAAsB,YAAA;IAKpG,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAS5F,IAAI;IAgEZ,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAOpG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}