@vantran-se/openchamber-web 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/README.md +32 -24
  2. package/bin/cli.js +1 -3
  3. package/bin/cli.test.js +40 -16
  4. package/bin/lib/DOCUMENTATION.md +6 -5
  5. package/bin/lib/cli-args.js +6 -1
  6. package/bin/lib/cli-args.test.js +34 -0
  7. package/bin/lib/cli-lifecycle.js +0 -1
  8. package/bin/lib/cli-network.js +8 -2
  9. package/bin/lib/cli-process.js +1 -1
  10. package/bin/lib/cli-settings-accessors.test.js +21 -13
  11. package/bin/lib/cli-startup.js +17 -11
  12. package/bin/lib/cli-startup.test.js +92 -2
  13. package/bin/lib/commands-connect-url.js +8 -1
  14. package/bin/lib/commands-schedule.js +8 -2
  15. package/bin/lib/commands-serve.js +15 -21
  16. package/bin/lib/commands-update.js +12 -24
  17. package/bin/lib/commands-update.test.js +14 -46
  18. package/dist/assets/DiffView-Cv9MSXl1.js +4 -0
  19. package/dist/assets/FilePreviewCommentMenu-D4kLseHj.js +4 -0
  20. package/dist/assets/FilesView-BVoD8I2x.js +14 -0
  21. package/dist/assets/{GitView-DzuzhIPx.js → GitView-Bzb8p-ew.js} +4 -4
  22. package/dist/assets/GuestSurfacePane-Crdbvsxo.js +1 -0
  23. package/dist/assets/InProgressOperationBanner-CwMjNQgk.js +2 -0
  24. package/dist/assets/{JsonTreeView-B_EPRjzy.js → JsonTreeView-DRKHZfsn.js} +1 -1
  25. package/dist/assets/MarkdownImageGallery-DZtqT1Zn.js +1 -0
  26. package/dist/assets/MarkdownRendererImpl-CqG7HCNd.js +10 -0
  27. package/dist/assets/OnboardingScreen-DMIxwYK5.js +1 -0
  28. package/dist/assets/{PatchDiff-6yh1csza.js → PatchDiff-CUcCg1jk.js} +1 -1
  29. package/dist/assets/PierreDiffViewer-CnnR-dnD.js +228 -0
  30. package/dist/assets/PlanView-RCBadcY7.js +5 -0
  31. package/dist/assets/SettingsView-CjBjZFRO.js +30 -0
  32. package/dist/assets/SettingsWindow-DyM7QuhI.js +1 -0
  33. package/dist/assets/SubmoduleDiffSummary-BWIfgMED.js +1 -0
  34. package/dist/assets/ToolOutputDialog-Q0P3FuAi.js +15 -0
  35. package/dist/assets/ToolPartDiffPreview-p7qR9FpU.js +8 -0
  36. package/dist/assets/{VirtualizedFileDiff-BTJVRkyo.js → VirtualizedFileDiff-CFpjL8Ns.js} +3 -3
  37. package/dist/assets/{Virtualizer-xCEYz34p.js → Virtualizer-C0IsclZn.js} +1 -1
  38. package/dist/assets/WalkthroughView-DI31zD02.js +4 -0
  39. package/dist/assets/appThemeRegistry-B9gkFq9i.js +1 -0
  40. package/dist/assets/{computeVirtualFileMetrics-CmPe29DM.js → computeVirtualFileMetrics-C2WM6JC2.js} +2 -2
  41. package/dist/assets/de-YKfk5MmC.js +14 -0
  42. package/dist/assets/es-_gwT0kr-.js +20 -0
  43. package/dist/assets/fileTreeStatus-D438yi8M.js +1 -0
  44. package/dist/assets/fr-DqzvXmIm.js +18 -0
  45. package/dist/assets/index-BLaHKdtx.js +1 -0
  46. package/dist/assets/index-BkMXRrVQ.css +1 -0
  47. package/dist/assets/index-DxNa7xYB.js +65 -0
  48. package/dist/assets/initializeSharedPreferences-Bck5EAWP.js +1 -0
  49. package/dist/assets/{isDiffPlainText-CQmDCnEv.js → isDiffPlainText-Dgbw8VKk.js} +1 -1
  50. package/dist/assets/{isFilePlainText-CYBUzW4I.js → isFilePlainText-_ZS5UYRj.js} +1 -1
  51. package/dist/assets/ja-B-GFYhQE.js +20 -0
  52. package/dist/assets/ko-mzksfqDC.js +20 -0
  53. package/dist/assets/main-C5Xx8dn_.js +2 -0
  54. package/dist/assets/main-CfBSQM1H.js +990 -0
  55. package/dist/assets/markdownCore-BmWwW1ll.js +7 -0
  56. package/dist/assets/miniChat-mnKwy4vQ.js +2 -0
  57. package/dist/assets/mobile-DeEQd0wZ.js +2 -0
  58. package/dist/assets/nl-CWQr6NSq.js +20 -0
  59. package/dist/assets/{parseDiffFromFile-Cy0PNxun.js → parseDiffFromFile-BUgn-T9p.js} +2 -2
  60. package/dist/assets/patchFileDiff-Dt8LhgBh.js +13 -0
  61. package/dist/assets/pl-UmRcDUX2.js +20 -0
  62. package/dist/assets/pt-BR-BSLybvVF.js +20 -0
  63. package/dist/assets/relocateRestoredSession-B5E9xb3T.js +1 -0
  64. package/dist/assets/renderElectronMiniChatApp-C0a9A5_J.js +2 -0
  65. package/dist/assets/renderMobileApp-BNncg3Pk.js +25 -0
  66. package/dist/assets/runtimeEndpointReset-CZ5aafpl.js +62 -0
  67. package/dist/assets/{selectionMarkdown-TkYk5h9l.js → selectionMarkdown-CUN3wUld.js} +9 -9
  68. package/dist/assets/{sessionOwnership-Bs1xbRfB.js → sessionOwnership-BSuxCEhb.js} +1 -1
  69. package/dist/assets/shikiHighlight-DHDx-6eM.js +1 -0
  70. package/dist/assets/space-apply-DM_2pRW7.js +1 -0
  71. package/dist/assets/space-close-Bpomt8z0.js +1 -0
  72. package/dist/assets/{surface-B6n7wJtt.js → surface-C-jQaGnL.js} +1 -1
  73. package/dist/assets/{textMateThemeFromAppTheme-CDlKffWz.js → textMateThemeFromAppTheme-DlsTphbY.js} +1 -1
  74. package/dist/assets/tr-gaTrX_HK.js +11 -0
  75. package/dist/assets/uk-CnJF6ykl.js +20 -0
  76. package/dist/assets/{useAppFontEffects-DCqCVGlT.js → useAppFontEffects-DGlvOqP_.js} +194 -233
  77. package/dist/assets/useInlineCommentController-kMN4Wg_D.js +2 -0
  78. package/dist/assets/{useRootScrollLock-BowwS8kq.js → useRootScrollLock-DMPpvpNP.js} +2 -2
  79. package/dist/assets/{vendor-base-ui-DX96QhTP.js → vendor-base-ui-Det7U81h.js} +1 -1
  80. package/dist/assets/{vendor-codemirror-autocomplete-DW1FQz9_.js → vendor-codemirror-autocomplete-BSHQHbKu.js} +1 -1
  81. package/dist/assets/{vendor-codemirror-commands-DpmhalwN.js → vendor-codemirror-commands-C4G_dPWe.js} +1 -1
  82. package/dist/assets/{vendor-codemirror-lang-angular-BqExbN1M.js → vendor-codemirror-lang-angular-B6LbBGHB.js} +1 -1
  83. package/dist/assets/{vendor-codemirror-lang-cpp-DZA36HfS.js → vendor-codemirror-lang-cpp-BWWXBx7W.js} +1 -1
  84. package/dist/assets/{vendor-codemirror-lang-css-B07blnnZ.js → vendor-codemirror-lang-css-Cayfb29q.js} +1 -1
  85. package/dist/assets/{vendor-codemirror-lang-go-BM8K9D1-.js → vendor-codemirror-lang-go-BoKlCNKw.js} +1 -1
  86. package/dist/assets/{vendor-codemirror-lang-html-DaH9adfE.js → vendor-codemirror-lang-html-BQWerHsJ.js} +1 -1
  87. package/dist/assets/{vendor-codemirror-lang-java-CsdC0viz.js → vendor-codemirror-lang-java-DWX7Fq_K.js} +1 -1
  88. package/dist/assets/{vendor-codemirror-lang-javascript-CpGYXGuo.js → vendor-codemirror-lang-javascript-DbpEcZM0.js} +2 -2
  89. package/dist/assets/{vendor-codemirror-lang-jinja-BBeGzXw5.js → vendor-codemirror-lang-jinja-D1JIJRA7.js} +1 -1
  90. package/dist/assets/{vendor-codemirror-lang-json-58T70Hqs.js → vendor-codemirror-lang-json-BzgckzmB.js} +1 -1
  91. package/dist/assets/{vendor-codemirror-lang-less-BI-xCA59.js → vendor-codemirror-lang-less-B9EpDXFi.js} +1 -1
  92. package/dist/assets/{vendor-codemirror-lang-liquid-zEcMa-zy.js → vendor-codemirror-lang-liquid-9U7kRbSf.js} +1 -1
  93. package/dist/assets/{vendor-codemirror-lang-markdown-BLKnlLP4.js → vendor-codemirror-lang-markdown-D2TEBIvZ.js} +1 -1
  94. package/dist/assets/{vendor-codemirror-lang-php-9f35M83-.js → vendor-codemirror-lang-php-BT6sDVzE.js} +1 -1
  95. package/dist/assets/vendor-codemirror-lang-python-jAMtYiA9.js +3 -0
  96. package/dist/assets/{vendor-codemirror-lang-rust-MNDL_jZQ.js → vendor-codemirror-lang-rust-CVO56EiL.js} +1 -1
  97. package/dist/assets/{vendor-codemirror-lang-sass-p9epsSNm.js → vendor-codemirror-lang-sass-DZlOoUWu.js} +1 -1
  98. package/dist/assets/{vendor-codemirror-lang-sql-Bqzh0EXX.js → vendor-codemirror-lang-sql-fZ6t1DPw.js} +1 -1
  99. package/dist/assets/{vendor-codemirror-lang-vue-BnNUWV-p.js → vendor-codemirror-lang-vue-DxbqrLiE.js} +1 -1
  100. package/dist/assets/{vendor-codemirror-lang-wast-C2a-oLmk.js → vendor-codemirror-lang-wast-DyU1Gt-I.js} +1 -1
  101. package/dist/assets/vendor-codemirror-lang-xml-C9a_K5_p.js +1 -0
  102. package/dist/assets/{vendor-codemirror-lang-yaml-C0sjswB0.js → vendor-codemirror-lang-yaml-Cptq8l0e.js} +1 -1
  103. package/dist/assets/{vendor-codemirror-language-ByBn5zIW.js → vendor-codemirror-language-DufXoQvE.js} +2 -2
  104. package/dist/assets/vendor-codemirror-language-data-CtwSWKtX.js +2 -0
  105. package/dist/assets/{vendor-codemirror-search-ib-sHD5W.js → vendor-codemirror-search-CvXM_pZg.js} +1 -1
  106. package/dist/assets/{vendor-codemirror-state-G3UuR-be.js → vendor-codemirror-state-Dek9sMtw.js} +1 -1
  107. package/dist/assets/{vendor-codemirror-view-Bniqp7p5.js → vendor-codemirror-view-1e0FQ6Wn.js} +1 -1
  108. package/dist/assets/vendor-framer-motion-DxDVhOLc.js +9 -0
  109. package/dist/assets/vendor-katex-CuQvj9-L.js +257 -0
  110. package/dist/assets/vendor-katex-DdZNUVNG.css +1 -0
  111. package/dist/assets/{vendor-motion-dom-DcCgeG69.js → vendor-motion-dom-HXPOMxb7.js} +1 -1
  112. package/dist/assets/{vendor-opencode-client-DHzhmLwV.js → vendor-opencode-client-BmFcUkbQ.js} +1 -1
  113. package/dist/assets/{vendor-replit-codemirror-vim-DkzqxN2H.js → vendor-replit-codemirror-vim-BlJRn-cW.js} +2 -2
  114. package/dist/assets/{vendor-tanstack-react-virtual-H_JmXOFV.js → vendor-tanstack-react-virtual-CvuLsk7D.js} +1 -1
  115. package/dist/assets/{vendor-tanstack-virtual-core-Dxc8hSTB.js → vendor-tanstack-virtual-core-DPaNcJcT.js} +1 -1
  116. package/dist/assets/zh-CN-t2vigSB1.js +20 -0
  117. package/dist/assets/zh-TW-jAgqBokB.js +20 -0
  118. package/dist/index.html +6 -6
  119. package/dist/mini-chat.html +6 -6
  120. package/dist/mobile.html +6 -6
  121. package/package.json +8 -5
  122. package/server/index.js +80 -36
  123. package/server/lib/agent-memory/actions.js +1 -6
  124. package/server/lib/agent-memory/routes.js +1 -2
  125. package/server/lib/agent-memory/runtime.js +1 -8
  126. package/server/lib/agent-tool/DOCUMENTATION.md +7 -3
  127. package/server/lib/agent-tool/runtime.js +3 -6
  128. package/server/lib/agent-tool/runtime.test.js +0 -2
  129. package/server/lib/browser-control/DOCUMENTATION.md +6 -0
  130. package/server/lib/changelog/update-notes.js +1 -1
  131. package/server/lib/context-obligatory/runtime.js +1 -2
  132. package/server/lib/dev-tunnel/DOCUMENTATION.md +8 -0
  133. package/server/lib/dev-tunnel/client.js +21 -10
  134. package/server/lib/dev-tunnel/tunnel.test.js +34 -0
  135. package/server/lib/dispatch-results/runtime.js +1 -1
  136. package/server/lib/enterprise-mode.d.ts +1 -0
  137. package/server/lib/enterprise-mode.js +13 -2
  138. package/server/lib/enterprise-mode.test.js +21 -0
  139. package/server/lib/event-stream/DOCUMENTATION.md +2 -2
  140. package/server/lib/event-stream/index.js +1 -3
  141. package/server/lib/event-stream/translate-v2.js +1 -9
  142. package/server/lib/event-stream/translate-v2.test.js +0 -11
  143. package/server/lib/fs/DOCUMENTATION.md +5 -2
  144. package/server/lib/fs/routes.js +62 -15
  145. package/server/lib/fs/routes.test.js +278 -48
  146. package/server/lib/fs/workspace-file-names.js +104 -0
  147. package/server/lib/fs/workspace-file-names.test.js +62 -0
  148. package/server/lib/git/DOCUMENTATION.md +17 -5
  149. package/server/lib/git/contributor-provenance-storage.js +9 -6
  150. package/server/lib/git/contributor-provenance-storage.test.js +29 -0
  151. package/server/lib/git/credential-broker.js +1 -1
  152. package/server/lib/git/credential-resolver.js +1 -4
  153. package/server/lib/git/credentials.js +1 -0
  154. package/server/lib/git/discovery-endpoint.js +1 -1
  155. package/server/lib/git/identity-provisioning.js +2 -1
  156. package/server/lib/git/identity-storage.js +3 -4
  157. package/server/lib/git/lfs-discovery.js +14 -14
  158. package/server/lib/git/lfs-discovery.test.js +16 -6
  159. package/server/lib/git/network-operation-plan.js +50 -62
  160. package/server/lib/git/network-operation-plan.test.js +103 -1
  161. package/server/lib/git/network-operation-registry.js +4 -6
  162. package/server/lib/git/network-operation-storage.js +4 -6
  163. package/server/lib/git/network-operations.js +12 -4
  164. package/server/lib/git/network-operations.test.js +19 -6
  165. package/server/lib/git/redaction.js +2 -1
  166. package/server/lib/git/repository-credential-runtime.js +5 -3
  167. package/server/lib/git/repository-credential-runtime.test.js +22 -0
  168. package/server/lib/git/routes.js +31 -137
  169. package/server/lib/git/routes.test.js +2 -2
  170. package/server/lib/git/service.js +143 -27
  171. package/server/lib/git/service.test.js +215 -1
  172. package/server/lib/git/ssh-credential-storage.js +1 -4
  173. package/server/lib/git/submodule-discovery.js +1 -1
  174. package/server/lib/git/worktree-bootstrap-storage.js +3 -4
  175. package/server/lib/git/worktree-bootstrap-storage.test.js +15 -0
  176. package/server/lib/git/worktree-creation.js +194 -0
  177. package/server/lib/git/worktree-creation.test.js +155 -0
  178. package/server/lib/github/DOCUMENTATION.md +11 -6
  179. package/server/lib/github/auth.js +2 -4
  180. package/server/lib/github/device-flow.js +2 -2
  181. package/server/lib/github/gh-cli-credential.js +1 -0
  182. package/server/lib/github/octokit.js +31 -0
  183. package/server/lib/github/pr-status.js +35 -18
  184. package/server/lib/github/pr-status.test.js +271 -3
  185. package/server/lib/github/reference-search.js +102 -13
  186. package/server/lib/github/reference-search.test.js +48 -7
  187. package/server/lib/github/routes.auth.test.js +18 -0
  188. package/server/lib/github/routes.js +360 -6
  189. package/server/lib/github/routes.mutations.test.js +239 -0
  190. package/server/lib/github/routes.test.js +134 -2
  191. package/server/lib/gitlab/DOCUMENTATION.md +5 -1
  192. package/server/lib/gitlab/auth-storage.test.js +1 -0
  193. package/server/lib/gitlab/mappers.js +30 -1
  194. package/server/lib/gitlab/resources.js +230 -6
  195. package/server/lib/gitlab/resources.test.js +179 -0
  196. package/server/lib/gitlab/routes.js +200 -6
  197. package/server/lib/gitlab/routes.test.js +186 -2
  198. package/server/lib/gitlab/validation.js +1 -5
  199. package/server/lib/guests/DOCUMENTATION.md +1 -1
  200. package/server/lib/guests/oauth.js +2 -2
  201. package/server/lib/guests/service.js +1 -1
  202. package/server/lib/guests/sockets.js +1 -1
  203. package/server/lib/injected-env.d.ts +8 -0
  204. package/server/lib/injected-env.js +50 -0
  205. package/server/lib/injected-env.test.js +56 -0
  206. package/server/lib/linear/DOCUMENTATION.md +5 -6
  207. package/server/lib/linear/issues.js +62 -4
  208. package/server/lib/linear/issues.test.js +68 -0
  209. package/server/lib/linear/oauth.js +5 -5
  210. package/server/lib/linear/parse.js +2 -9
  211. package/server/lib/message-queue/DOCUMENTATION.md +23 -1
  212. package/server/lib/message-queue/runtime.js +85 -12
  213. package/server/lib/message-queue/runtime.test.js +172 -2
  214. package/server/lib/notifications/apns-runtime.js +5 -6
  215. package/server/lib/notifications/apns-runtime.test.js +20 -4
  216. package/server/lib/openchamber-control/DOCUMENTATION.md +19 -1
  217. package/server/lib/openchamber-control/actions.js +2 -1
  218. package/server/lib/openchamber-control/service.js +119 -20
  219. package/server/lib/openchamber-control/service.test.js +166 -0
  220. package/server/lib/openchamber-sessions/archive-store.js +1 -6
  221. package/server/lib/openchamber-sessions/routes.js +47 -12
  222. package/server/lib/openchamber-sessions/routes.test.js +65 -2
  223. package/server/lib/openchamber-sessions/session-metadata-store.js +1 -6
  224. package/server/lib/opencode/DOCUMENTATION.md +22 -8
  225. package/server/lib/opencode/agents.js +62 -0
  226. package/server/lib/opencode/auth-state-runtime.js +3 -1
  227. package/server/lib/opencode/auth.d.ts +1 -1
  228. package/server/lib/opencode/auth.js +8 -0
  229. package/server/lib/opencode/auth.test.js +31 -0
  230. package/server/lib/opencode/config-entity-routes.js +16 -0
  231. package/server/lib/opencode/config-entity-v2.test.js +16 -1
  232. package/server/lib/opencode/config-paths.test.js +2 -2
  233. package/server/lib/opencode/config-v2.js +2 -4
  234. package/server/lib/opencode/feature-routes-runtime.js +89 -49
  235. package/server/lib/opencode/lifecycle.js +41 -21
  236. package/server/lib/opencode/lifecycle.test.js +50 -2
  237. package/server/lib/opencode/model-discovery.js +1 -1
  238. package/server/lib/opencode/model-discovery.test.js +17 -0
  239. package/server/lib/opencode/models-metadata.js +0 -2
  240. package/server/lib/opencode/openchamber-routes.test.js +3 -3
  241. package/server/lib/opencode/plugins.js +6 -9
  242. package/server/lib/opencode/provider-source-route.test.js +101 -3
  243. package/server/lib/opencode/providers-disabled.test.js +59 -0
  244. package/server/lib/opencode/providers.js +34 -0
  245. package/server/lib/opencode/proxy.js +11 -3
  246. package/server/lib/opencode/routes.js +40 -2
  247. package/server/lib/opencode/settings-helpers.js +27 -1
  248. package/server/lib/opencode/settings-helpers.test.js +19 -7
  249. package/server/lib/opencode/settings-registry.json +27 -16
  250. package/server/lib/opencode/settings-runtime.test.js +18 -0
  251. package/server/lib/opencode/shared-service-runtime.js +23 -104
  252. package/server/lib/opencode/shared.js +77 -46
  253. package/server/lib/opencode/shared.test.js +12 -12
  254. package/server/lib/opencode/shutdown-runtime.test.js +2 -3
  255. package/server/lib/opencode/skill-routes.js +123 -38
  256. package/server/lib/opencode/skill-routes.test.js +201 -0
  257. package/server/lib/opencode/skills.js +81 -34
  258. package/server/lib/opencode/skills.test.js +176 -21
  259. package/server/lib/opencode/startup-pipeline-runtime.js +6 -3
  260. package/server/lib/opencode/startup-pipeline-runtime.test.js +2 -1
  261. package/server/lib/opencode/watcher.test.js +0 -54
  262. package/server/lib/outbound-proxy.js +52 -0
  263. package/server/lib/outbound-proxy.test.js +55 -0
  264. package/server/lib/package-manager.js +23 -17
  265. package/server/lib/package-manager.test.js +5 -18
  266. package/server/lib/permission-auto-accept/DOCUMENTATION.md +1 -1
  267. package/server/lib/permission-auto-accept/runtime.js +19 -47
  268. package/server/lib/permission-auto-accept/runtime.test.js +2 -2
  269. package/server/lib/project-context/DOCUMENTATION.md +7 -1
  270. package/server/lib/project-context/routes.js +1 -2
  271. package/server/lib/project-context/runtime.js +12 -14
  272. package/server/lib/project-context/runtime.test.js +78 -2
  273. package/server/lib/projects/project-config.js +30 -15
  274. package/server/lib/projects/project-config.test.js +30 -0
  275. package/server/lib/projects/project-setup.js +1 -2
  276. package/server/lib/projects/routes.js +1 -2
  277. package/server/lib/quota/DOCUMENTATION.md +35 -7
  278. package/server/lib/quota/index.js +1 -0
  279. package/server/lib/quota/providers/claude/index.js +1 -1
  280. package/server/lib/quota/providers/cline-pass.js +1 -1
  281. package/server/lib/quota/providers/exe-dev.js +1 -1
  282. package/server/lib/quota/providers/google/index.js +1 -1
  283. package/server/lib/quota/providers/hyper.js +1 -1
  284. package/server/lib/quota/providers/kimi.js +116 -36
  285. package/server/lib/quota/providers/kimi.test.js +128 -3
  286. package/server/lib/quota/providers/opencode-go.js +144 -21
  287. package/server/lib/quota/providers/opencode-go.test.js +229 -6
  288. package/server/lib/quota/providers/openrouter.js +1 -1
  289. package/server/lib/quota/providers/zenmux.js +1 -1
  290. package/server/lib/quota/utils/auth.js +1 -0
  291. package/server/lib/quota/utils/transformers.js +2 -6
  292. package/server/lib/relay/DOCUMENTATION.md +18 -3
  293. package/server/lib/relay/e2ee.js +7 -7
  294. package/server/lib/relay/host-client.js +84 -13
  295. package/server/lib/relay/host-client.test.js +201 -1
  296. package/server/lib/relay/identity.js +6 -29
  297. package/server/lib/relay/identity.test.js +18 -28
  298. package/server/lib/relay/key-store.js +141 -0
  299. package/server/lib/relay/key-store.test.js +138 -0
  300. package/server/lib/relay/service.js +8 -8
  301. package/server/lib/relay/service.test.js +10 -5
  302. package/server/lib/relay/signing-key.js +13 -36
  303. package/server/lib/relay/tunnel-codec.js +10 -10
  304. package/server/lib/route-module-exports.test.js +22 -0
  305. package/server/lib/routing/DOCUMENTATION.md +23 -3
  306. package/server/lib/routing/cache.js +87 -0
  307. package/server/lib/routing/defaults.js +11 -0
  308. package/server/lib/routing/history.js +12 -4
  309. package/server/lib/routing/runtime.js +39 -3
  310. package/server/lib/routing/runtime.test.js +81 -2
  311. package/server/lib/routing/store.js +12 -1
  312. package/server/lib/routing/store.test.js +13 -0
  313. package/server/lib/scheduled-tasks/DOCUMENTATION.md +59 -1
  314. package/server/lib/scheduled-tasks/existing-session.js +119 -0
  315. package/server/lib/scheduled-tasks/existing-session.test.js +350 -0
  316. package/server/lib/scheduled-tasks/loops.js +1 -8
  317. package/server/lib/scheduled-tasks/routes.js +8 -8
  318. package/server/lib/scheduled-tasks/runtime.js +103 -13
  319. package/server/lib/scheduled-tasks/runtime.test.js +48 -0
  320. package/server/lib/scheduled-tasks/service.js +33 -11
  321. package/server/lib/scheduled-tasks/service.test.js +128 -2
  322. package/server/lib/scheduled-tasks/session-defaults.js +27 -0
  323. package/server/lib/scheduled-tasks/session-defaults.test.js +19 -0
  324. package/server/lib/session-assist/context.js +1 -0
  325. package/server/lib/session-folders/routes.js +2 -2
  326. package/server/lib/session-goal/objectives.js +1 -1
  327. package/server/lib/session-knowledge/routes.js +2 -2
  328. package/server/lib/session-knowledge/runtime.js +1 -2
  329. package/server/lib/session-work/DOCUMENTATION.md +39 -14
  330. package/server/lib/session-work/questions.js +31 -2
  331. package/server/lib/session-work/runtime.js +22 -13
  332. package/server/lib/session-work/runtime.test.js +43 -26
  333. package/server/lib/session-work/state.js +10 -4
  334. package/server/lib/session-work/state.test.js +8 -1
  335. package/server/lib/shared/DOCUMENTATION.md +89 -0
  336. package/server/lib/shared/guards.js +53 -0
  337. package/server/lib/shared/guards.test.js +112 -0
  338. package/server/lib/skills-catalog/DOCUMENTATION.md +10 -8
  339. package/server/lib/skills-catalog/cache.js +3 -2
  340. package/server/lib/skills-catalog/curated-sources.js +5 -1
  341. package/server/lib/skills-catalog/git.js +107 -20
  342. package/server/lib/skills-catalog/git.test.js +78 -0
  343. package/server/lib/skills-catalog/install.js +21 -12
  344. package/server/lib/skills-catalog/scan.js +25 -15
  345. package/server/lib/skills-catalog/source.js +26 -1
  346. package/server/lib/skills-catalog/source.test.js +27 -0
  347. package/server/lib/source-control/DOCUMENTATION.md +2 -1
  348. package/server/lib/source-control/audit-storage.js +7 -6
  349. package/server/lib/source-control/audit-storage.test.js +11 -0
  350. package/server/lib/source-control/binding-service.js +2 -5
  351. package/server/lib/source-control/change-request-worktree.js +90 -0
  352. package/server/lib/source-control/change-request-worktree.test.js +121 -0
  353. package/server/lib/source-control/mutation-executor.js +1 -1
  354. package/server/lib/source-control/mutation-storage.js +11 -5
  355. package/server/lib/source-control/provider-instance.js +1 -2
  356. package/server/lib/source-control/repository-identity.js +1 -1
  357. package/server/lib/source-control/routes.js +14 -2
  358. package/server/lib/spaces/DOCUMENTATION.md +42 -17
  359. package/server/lib/spaces/command-stream.test.js +15 -0
  360. package/server/lib/spaces/dispatcher.js +7 -0
  361. package/server/lib/spaces/dispatcher.test.js +17 -0
  362. package/server/lib/spaces/hardening.js +2 -2
  363. package/server/lib/spaces/hardening.test.js +1 -1
  364. package/server/lib/spaces/host.js +2 -0
  365. package/server/lib/spaces/journey.js +66 -5
  366. package/server/lib/spaces/journey.test.js +95 -4
  367. package/server/lib/spaces/layout.js +1 -1
  368. package/server/lib/spaces/places/docker-disk.js +38 -14
  369. package/server/lib/spaces/places/docker-disk.test.js +80 -1
  370. package/server/lib/spaces/places/docker.js +35 -11
  371. package/server/lib/spaces/places/fake-docker.js +22 -3
  372. package/server/lib/spaces/places/memory-place.js +3 -0
  373. package/server/lib/spaces/places/packed.docker.live.test.js +1 -1
  374. package/server/lib/spaces/routes.js +5 -0
  375. package/server/lib/spaces/routes.test.js +4 -2
  376. package/server/lib/spaces/run-command.js +9 -2
  377. package/server/lib/spaces/tools.js +4 -5
  378. package/server/lib/spaces/tools.test.js +2 -2
  379. package/server/lib/terminal/runtime.js +18 -6
  380. package/server/lib/terminal/runtime.test.js +66 -0
  381. package/server/lib/tts/index.js +3 -0
  382. package/server/lib/tts/service.js +4 -2
  383. package/server/lib/walkthrough/DOCUMENTATION.md +3 -1
  384. package/server/lib/walkthrough/index.js +2 -3
  385. package/server/lib/walkthrough/pr-source.test.js +22 -0
  386. package/server/lib/walkthrough/sources.js +6 -1
  387. package/server/opencode-proxy.test.js +127 -0
  388. package/bin/lib/commands-startup.test.js +0 -15
  389. package/dist/assets/CodeMirrorCommentWidgets-CVDSjcrP.js +0 -1
  390. package/dist/assets/DiffView-Ct7vL3fD.js +0 -4
  391. package/dist/assets/FilesView-DT0uEYgT.js +0 -17
  392. package/dist/assets/GuestSurfacePane-DVvk1VPu.js +0 -1
  393. package/dist/assets/LinearIssuesView-C10MwA9h.js +0 -1
  394. package/dist/assets/MarkdownImageGallery-BbN_K_3d.js +0 -1
  395. package/dist/assets/MarkdownRendererImpl-BLt2Tkk9.js +0 -10
  396. package/dist/assets/OnboardingScreen-Bgp5A3WB.js +0 -1
  397. package/dist/assets/PierreDiffViewer-CWJLj-S-.js +0 -210
  398. package/dist/assets/PlanView-DsRWnsOI.js +0 -5
  399. package/dist/assets/PublishDialog-CCeKloRu.js +0 -2
  400. package/dist/assets/SettingsView-BuPPsNPp.js +0 -30
  401. package/dist/assets/SettingsWindow-CM5fL8Ot.js +0 -1
  402. package/dist/assets/SubmoduleDiffSummary-CfsMcfiQ.js +0 -1
  403. package/dist/assets/ToolOutputDialog-mZrfSofz.js +0 -15
  404. package/dist/assets/ToolPartDiffPreview-BUGCRYEL.js +0 -8
  405. package/dist/assets/WalkthroughView-ClBo7PPd.js +0 -4
  406. package/dist/assets/appThemeRegistry-CxzMxR-H.js +0 -1
  407. package/dist/assets/de-CBla4hjd.js +0 -14
  408. package/dist/assets/es-BmnZtxTD.js +0 -20
  409. package/dist/assets/fileTreeStatus-BSHFIGEg.js +0 -1
  410. package/dist/assets/fr-OVKIBUZO.js +0 -18
  411. package/dist/assets/index-CKCFKmjF.js +0 -1
  412. package/dist/assets/index-Dbx4V4GN.css +0 -1
  413. package/dist/assets/index-vQ1Pg1cr.js +0 -61
  414. package/dist/assets/ja-6v-yr-gE.js +0 -20
  415. package/dist/assets/ko-I_ZLvgQ9.js +0 -20
  416. package/dist/assets/main-CmO4dRtR.js +0 -2
  417. package/dist/assets/main-b9vqhlYM.js +0 -999
  418. package/dist/assets/markdownCore-BPEZRQfP.js +0 -7
  419. package/dist/assets/miniChat-B5Oi7B-6.js +0 -2
  420. package/dist/assets/mobile-CVtShif9.js +0 -2
  421. package/dist/assets/nl-DcvIJf46.js +0 -20
  422. package/dist/assets/patchFileDiff-CW3wCH1O.js +0 -13
  423. package/dist/assets/pl-JxCUl0sd.js +0 -20
  424. package/dist/assets/pt-BR-L89mjja2.js +0 -20
  425. package/dist/assets/relocateRestoredSession-DYh_9oBa.js +0 -1
  426. package/dist/assets/renderElectronMiniChatApp-BD-1JHSg.js +0 -2
  427. package/dist/assets/renderMobileApp-7s5InXt1.js +0 -25
  428. package/dist/assets/runtimeEndpointReset-DqLJC6L1.js +0 -53
  429. package/dist/assets/shikiHighlight-CXgZnvHh.js +0 -1
  430. package/dist/assets/space-apply-1trGVIl8.js +0 -1
  431. package/dist/assets/space-close-y7j-NuBv.js +0 -1
  432. package/dist/assets/tr-ka5J1flt.js +0 -11
  433. package/dist/assets/uk-PyGe6Q_u.js +0 -20
  434. package/dist/assets/useInlineCommentController-CrjSGCpi.js +0 -2
  435. package/dist/assets/vendor-codemirror-lang-python-B7ClrMIT.js +0 -3
  436. package/dist/assets/vendor-codemirror-lang-xml-C8tGnS64.js +0 -1
  437. package/dist/assets/vendor-codemirror-language-data-q2bKO1EM.js +0 -2
  438. package/dist/assets/vendor-framer-motion-Bq3iTZ6r.js +0 -1
  439. package/dist/assets/vendor-katex-CHD9BdDO.js +0 -257
  440. package/dist/assets/vendor-katex-Cp579UoJ.css +0 -1
  441. package/dist/assets/zh-CN-B0P2tybJ.js +0 -20
  442. package/dist/assets/zh-TW-Bs9C5cN8.js +0 -20
@@ -1 +0,0 @@
1
- import{R as d,j as v,c as ve,f as ke}from"./vendor-react-BUCujlKS.js";import{i as A,S as be,E as we,o as N,l as j}from"./vendor-codemirror-state-G3UuR-be.js";import{E as k,V as D,s as Se,f as Ce,h as Ne,i as Q,k as H,D as z,W as Ee}from"./vendor-codemirror-view-Bniqp7p5.js";import{h as Re,k as Fe,l as Pe,j as Me}from"./vendor-codemirror-commands-DpmhalwN.js";import{i as Te,y as Oe,H as X,x as T,z as qe}from"./vendor-codemirror-language-ByBn5zIW.js";import{a as C,g as q,b as Z,c as J,o as ze,d as $e}from"./vendor-codemirror-search-ib-sHD5W.js";import{v as We,g as Be}from"./vendor-replit-codemirror-vim-DkzqxN2H.js";import{h as He,I as ee,aw as Le,B as _e,ax as Ae,av as je,il as De,kp as Ie}from"./useAppFontEffects-DCqCVGlT.js";import{a as t,c as Ke}from"./vendor-lezer-highlight-CDMHUZ74.js";const he=be.define(),Ve=4,O=A.define({create:()=>0,update(e,o){if(!C(o.state))return 0;for(const n of o.effects)n.is(he)&&(e=n.value);return e},provide:e=>k.contentAttributes.from(e,o=>o>0?{style:`padding-top: ${o}px`}:{})}),te=e=>parseFloat(getComputedStyle(e.contentDOM).paddingTop)||0,Ge=D.fromClass(class{constructor(e){this.view=e,e.requestMeasure({read:te,write:o=>{this.padding=o}}),this.trackPanel()}observer=null;panel=null;padding=0;update(e){C(e.startState)!==C(e.state)&&this.trackPanel(),e.state.field(O)!==e.startState.field(O)&&this.view.requestMeasure({read:o=>({scrollTop:o.scrollDOM.scrollTop,padding:te(o)}),write:({scrollTop:o,padding:n},a)=>{const c=n-this.padding;this.padding=n,o!==0&&(a.scrollDOM.scrollTop=c>0&&o<c?0:o+c)}})}destroy(){this.observer?.disconnect()}trackPanel(){this.view.requestMeasure({read:e=>C(e.state)?e.dom.querySelector(".cm-panels-top"):null,write:e=>{e!==this.panel&&(this.observer?.disconnect(),this.observer=null,this.panel=e,e&&(this.observer=new ResizeObserver(()=>this.syncSpace()),this.observer.observe(e)))}})}syncSpace(){const{panel:e,view:o}=this;if(!e||!C(o.state))return;const n=Math.ceil(e.getBoundingClientRect().bottom-o.scrollDOM.getBoundingClientRect().top)+Ve;n!==o.state.field(O)&&o.dispatch({effects:he.of(n)})}});function oe(){return[O,Ge]}const Ue=e=>e!==null&&typeof e=="object"&&"updateStatus"in e&&typeof e.updateStatus=="function",Ye=e=>{const o=document.createElement("div");o.className="cm-vim-panel";const n=Be(e);if(!n)return{top:!1,dom:o};n.state.statusbar=o;const a=n.state.vimPlugin;return Ue(a)&&a.updateStatus(),{top:!1,dom:o,destroy(){n.state.statusbar===o&&(n.state.statusbar=null)}}};function re(e){return e?[We(),Se.of(Ye),Ce()]:[]}const Qe={next:"Next match",prev:"Previous match",select:"Select all matches",replace:"Replace",replaceAll:"Replace all",close:"Close"},Xe={case:"Match case",re:"Regular expression",word:"Match whole word"};function Ze(e){const o=e.querySelector(".cm-search");if(o){for(const[n,a]of Object.entries(Qe)){const c=o.querySelector(`button[name="${n}"]`);c&&!c.title&&(c.title=a)}for(const[n,a]of Object.entries(Xe)){const r=o.querySelector(`input[name="${n}"]`)?.parentElement;r&&!r.title&&(r.title=a)}}}const L=new WeakMap;function Je(e,o){const n=q(e.state);if(!n.valid)return L.delete(e),0;const a=L.get(e);if(!o&&a?.doc===e.state.doc&&a.query.eq(n))return a.total;const c=n.getCursor(e.state);let r=0;for(let u=c.next();!u.done;u=c.next())r+=1;return L.set(e,{query:n,doc:e.state.doc,total:r}),r}function et(e){const o=q(e.state);if(!o.valid)return 0;const n=e.state.selection.main,a=o.getCursor(e.state);let c=0,r=0;for(let u=a.next();!u.done;u=a.next()){const i=u.value;if(c+=1,r===0&&(r=c),n.from===i.from&&n.to===i.to||n.from<i.to&&n.to>i.from||i.from>=n.head)return c}return r}function ne(e,o,n=!1){const a=e.querySelector(".cm-search");if(!a)return;let c=a.querySelector(".cm-search-message");if(!c){c=document.createElement("span"),c.className="cm-search-message",c.setAttribute("aria-live","polite");const i=a.querySelector('button[name="next"]'),f=i?.parentNode===a?i:a.firstChild;a.insertBefore(c,f)}const r=Je(o,n),u=r===0?0:et(o);c.textContent=r===0?"":`${u}/${r}`}const ae=new N,ce=new N,se=new N,ie=new N,le=new N,ue=new N,de=new N,me=e=>e,_=Oe,tt=ze,ot=$e;class rt extends Ee{constructor(o,n){super(),this.id=o,this.containerMap=n}toDOM(){let o=this.containerMap.get(this.id);return o||(o=document.createElement("div"),o.className="oc-block-widget",o.dataset.widgetId=this.id,this.containerMap.set(this.id,o)),o}eq(o){return o.id===this.id}destroy(){}}const fe=(e,o)=>!e||e.length===0?[]:A.define({create(n){const a=new j,c=[...e].sort((r,u)=>r.afterLine-u.afterLine);for(const r of c){const u=n.doc.lines;if(r.afterLine>u)continue;const i=n.doc.line(r.afterLine);a.add(i.to,i.to,z.widget({widget:new rt(r.id,o),block:!0,side:1}))}return a.finish()},update(n,a){return n.map(a.changes)},provide:n=>k.decorations.from(n)}),pe=e=>{if(!e)return[];const o=Math.max(1,e.start),n=Math.max(o,e.end);return D.fromClass(class{decorations;constructor(a){this.decorations=this.build(a)}update(a){(a.docChanged||a.viewportChanged)&&(this.decorations=this.build(a.view))}build(a){const c=new j;for(let r=o;r<=n&&r<=a.state.doc.lines;r+=1){const u=a.state.doc.line(r);c.add(u.from,u.from,z.line({class:"oc-cm-selected-line"}))}return c.finish()}},{decorations:a=>a.decorations})};function kt({value:e,onChange:o,extensions:n,className:a,readOnly:c,lineNumbersConfig:r,highlightLines:u,onViewReady:i,onViewDestroy:f,blockWidgets:m,enableSearch:g,searchOpen:P,onSearchOpenChange:E,vimMode:x}){const M=d.useRef(null),b=d.useRef(null),$=d.useRef(e),I=d.useRef(o),K=d.useRef(i),V=d.useRef(f),G=d.useRef(E),R=d.useRef(m),W=d.useRef(x),B=d.useRef(new Map),[ye,U]=d.useState([]),w=d.useCallback(s=>{const h=(s??[]).map(l=>{const p=B.current.get(l.id);return p?{id:l.id,content:l.content,container:p}:null}).filter(l=>l!==null);U(l=>l.length===h.length&&l.every((p,y)=>{const F=h[y];return p.id===F.id&&p.content===F.content&&p.container===F.container})?l:h)},[]),S=d.useCallback(s=>{const h=M.current,l=s??b.current;if(!h||!l)return;const p=l.dom.querySelector(".cm-gutters"),y=p instanceof HTMLElement?p.getBoundingClientRect().width:0;h.style.setProperty("--oc-editor-gutter-width",`${y}px`)},[]);return d.useEffect(()=>{$.current=e},[e]),d.useEffect(()=>{I.current=o},[o]),d.useEffect(()=>{K.current=i,V.current=f},[i,f]),d.useEffect(()=>{G.current=E},[E]),d.useEffect(()=>{R.current=m,w(m)},[m,w]),d.useEffect(()=>{if(!M.current)return;const s=(()=>{if(typeof document>"u")return null;const l=document.querySelector('meta[name="csp-nonce"]')?.getAttribute("content");if(l)return l;const p=window.__OPENCHAMBER_CSP_NONCE__;return typeof p=="string"&&p.length>0?p:null})(),h=we.create({doc:$.current,extensions:[...s?[k.cspNonce.of(s)]:[],Ne({fixed:!0}),ae.of(Q(r)),Re(),Te.of(" "),de.of(re(x)),H.of([Fe,...Pe,...Me]),k.updateListener.of(l=>{S(l.view),(l.viewportChanged||l.geometryChanged)&&w(R.current);const p=C(l.startState),y=C(l.state);p!==y&&G.current?.(y);const F=!q(l.startState).eq(q(l.state));if(y&&(p!==y||F||l.docChanged||l.selectionSet)&&ne(l.view.dom,l.view,p!==y||F||l.docChanged),!l.docChanged)return;const Y=l.state.doc.toString();$.current=Y,I.current(Y),w(R.current)}),ce.of(k.editable.of(!c)),se.of(n??[]),ie.of(pe(u)),le.of(fe(m,B.current)),ue.of(g?[Z({top:!0}),oe(),H.of(me(J))]:[])]});return b.current=new k({state:h,parent:M.current}),_(b.current,b.current.state.doc.length,200),b.current.requestMeasure(),requestAnimationFrame(()=>{S(b.current),w(R.current)}),b.current&&K.current?.(b.current),()=>{V.current?.(),b.current?.destroy(),b.current=null,U([])}},[R,S,w]),d.useEffect(()=>{const s=b.current;s&&(s.dispatch({effects:[ae.reconfigure(Q(r)),ce.reconfigure(k.editable.of(!c)),se.reconfigure(n??[]),ie.reconfigure(pe(u)),le.reconfigure(fe(m,B.current)),ue.reconfigure(g?[Z({top:!0}),oe(),H.of(me(J))]:[])]}),_(s,s.state.doc.length,200),s.requestMeasure(),requestAnimationFrame(()=>{S(s),w(R.current)}))},[n,u,r,c,m,g,S,w]),d.useEffect(()=>{const s=b.current;if(!s){W.current=x;return}W.current!==x&&(W.current=x,s.dispatch({effects:de.reconfigure(re(x))}))},[x]),d.useEffect(()=>{const s=b.current;!s||g===!1||(P?(tt(s),requestAnimationFrame(()=>{Ze(s.dom),ne(s.dom,s,!0)})):ot(s))},[P,g]),d.useEffect(()=>{const s=b.current;if(!s)return;const h=s.state.doc.toString();h!==e&&(s.dispatch({changes:{from:0,to:h.length,insert:e}}),_(s,s.state.doc.length,300),s.requestMeasure(),requestAnimationFrame(()=>S(s)))},[e,S]),v.jsxs(v.Fragment,{children:[v.jsx("div",{ref:M,className:He("oc-surface-code h-full w-full","[&_.cm-editor]:h-full [&_.cm-editor]:w-full","[&_.cm-scroller]:font-mono [&_.cm-scroller]:text-[var(--text-code)] [&_.cm-scroller]:leading-6",a)}),ye.map(s=>ve.createPortal(s.content,s.container,s.id))]})}const wt=e=>{const o=ke.c(11),{currentMode:n,onToggle:a}=e,c=n==="preview",r=c?"Switch to edit mode":"Switch to preview mode",u=c?"Edit":"Preview";let i;o[0]!==c?(i=c?v.jsx(ee,{name:"eye",className:"size-4","aria-hidden":"true"}):v.jsx(ee,{name:"eye-off",className:"size-4","aria-hidden":"true"}),o[0]=c,o[1]=i):i=o[1];let f;o[2]!==r||o[3]!==a||o[4]!==i?(f=v.jsx(Le,{asChild:!0,children:v.jsx(_e,{variant:"ghost",size:"sm",onClick:a,"aria-label":r,className:"h-5 w-5 p-0",children:i})}),o[2]=r,o[3]=a,o[4]=i,o[5]=f):f=o[5];let m;o[6]!==u?(m=v.jsx(Ae,{sideOffset:8,children:u}),o[6]=u,o[7]=m):m=o[7];let g;return o[8]!==f||o[9]!==m?(g=v.jsxs(je,{children:[f,m]}),o[8]=f,o[9]=m,o[10]=g):g=o[10],g};function St(e,o){const n=e.metadata.variant==="dark",a=e.config?.fonts?.mono||"monospace",c=e.colors.syntax.highlights||{},r=De(e.colors.syntax),u=o?.fontSize?`${o.fontSize}px`:"var(--text-code)",i=e.colors.syntax.base.background,f=k.theme({"&":{backgroundColor:i,color:e.colors.syntax.base.foreground,fontSize:u,lineHeight:"1.5",position:"relative"},".cm-scroller":{fontFamily:`var(--font-mono, ${a})`,backgroundColor:i},".cm-comment":{color:e.colors.syntax.base.comment},".cm-keyword":{color:e.colors.syntax.base.keyword},".cm-string":{color:e.colors.syntax.base.string},".cm-string-2":{color:r.stringEscape||e.colors.syntax.base.string},".cm-number":{color:e.colors.syntax.base.number},".cm-operator":{color:e.colors.syntax.base.operator},".cm-punctuation":{color:r.punctuation||e.colors.syntax.base.comment},".cm-atom":{color:r.boolean||e.colors.syntax.base.number},".cm-builtin":{color:r.functionCall||e.colors.syntax.base.function},".cm-def":{color:r.variableGlobal||e.colors.syntax.base.variable},".cm-attribute":{color:r.variableOther||r.variableProperty||e.colors.syntax.base.operator},".cm-meta":{color:e.colors.syntax.base.comment},".cm-property":{color:r.variableProperty||e.colors.syntax.base.keyword},".cm-variable":{color:e.colors.syntax.base.variable},".cm-variable-2":{color:r.variableOther||e.colors.syntax.base.function},".cm-variable-3":{color:r.variableGlobal||e.colors.syntax.base.type},".cm-tag":{color:r.tag||e.colors.syntax.base.keyword},".cm-link":{color:r.url||e.colors.syntax.base.keyword,textDecoration:"underline"},".cm-content":{caretColor:e.colors.interactive.cursor},".cm-cursor, .cm-dropCursor":{borderLeftColor:e.colors.interactive.cursor},"&.cm-focused .cm-selectionBackground, .cm-selectionBackground, ::selection":{backgroundColor:e.colors.interactive.selection},".cm-gutters":{backgroundColor:i,color:c.lineNumber||e.colors.syntax.base.comment,borderRight:`1px solid ${e.colors.interactive.border}`,position:"sticky",paddingRight:"8px",left:0,zIndex:2,boxShadow:`0 0 0 ${i}`},".cm-gutter":{backgroundColor:i},".cm-gutterElement":{backgroundColor:i},".cm-lineNumbers":{backgroundColor:i},".cm-lineNumbers .cm-gutterElement":{paddingLeft:"8px",paddingRight:"8px",minWidth:"42px"},".cm-activeLineGutter":{color:c.lineNumberActive||e.colors.syntax.base.foreground},".cm-activeLine":{backgroundColor:`color-mix(in srgb, ${e.colors.syntax.base.foreground} 5%, transparent)`},".cm-panels":{backgroundColor:"transparent",color:e.colors.surface.elevatedForeground,position:"absolute",top:"0",right:"0",left:"auto",width:"auto",zIndex:10,pointerEvents:"none"},".cm-panels-top":{borderBottom:"none",position:"absolute",top:"6px",right:"14px",left:"auto",width:"auto"},".cm-panels-bottom":{position:"static",width:"100%",pointerEvents:"auto"},".cm-panels-bottom .cm-vim-panel":{borderTop:`1px solid ${e.colors.interactive.border}`,backgroundColor:e.colors.surface.elevated,color:e.colors.surface.mutedForeground,fontFamily:"var(--font-mono)",fontSize:"12px",minHeight:"22px",padding:"2px 8px"},".cm-panel.cm-search":{pointerEvents:"auto",padding:"4px",backgroundColor:`color-mix(in srgb, ${e.colors.surface.elevated} 85%, transparent)`,border:`1px solid ${e.colors.interactive.border}`,borderRadius:"10px",boxShadow:`0 2px 8px color-mix(in srgb, ${e.colors.surface.background} 60%, transparent)`,width:"auto",minWidth:"360px",maxWidth:"480px"},".cm-search":{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0",width:"100%",color:e.colors.surface.elevatedForeground,fontFamily:"inherit",fontSize:"13px",lineHeight:"1"},".cm-search br":{display:"none"},".cm-search .cm-textfield":{appearance:"none",height:"26px",margin:0,padding:"0 8px",borderRadius:"6px !important",border:`1px solid ${e.colors.interactive.border}`,backgroundColor:e.colors.surface.elevated,color:e.colors.surface.elevatedForeground,fontFamily:"inherit",fontSize:"12px",lineHeight:"1",outline:"none",transition:"border-color 150ms ease"},".cm-search .cm-textfield::placeholder":{color:e.colors.surface.mutedForeground,opacity:1},".cm-search .cm-textfield:focus":{borderColor:e.colors.interactive.borderFocus},'.cm-search .cm-textfield[name="search"]':{order:1,flex:"1 1 120px",maxWidth:"calc(100% - 142px)",minWidth:"100px"},".cm-search label":{order:2,display:"inline-flex",alignItems:"center",justifyContent:"center",width:"26px",height:"26px",minWidth:"26px",flexShrink:"0",margin:0,marginLeft:"1px",padding:0,borderRadius:"4px",border:"1px solid transparent",backgroundColor:"transparent",color:"transparent",cursor:"pointer",userSelect:"none",fontSize:"1px",lineHeight:"0",overflow:"hidden",position:"relative",transition:"background-color 120ms ease, border-color 120ms ease"},".cm-search label:hover":{backgroundColor:e.colors.interactive.hover},'.cm-search label:has(input[type="checkbox"]:checked)':{backgroundColor:e.colors.interactive.hover,borderColor:e.colors.interactive.border},'.cm-search [type="checkbox"]':{appearance:"none",WebkitAppearance:"none",width:"0",height:"0",margin:"0",padding:"0",border:"none",position:"absolute",opacity:"0",pointerEvents:"none"},".cm-search label::after":{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontSize:"13px",fontWeight:"600",lineHeight:"1",fontFamily:"inherit",color:e.colors.surface.mutedForeground,pointerEvents:"none"},".cm-search label:hover::after":{color:e.colors.surface.elevatedForeground},'.cm-search label:has(input[type="checkbox"]:checked)::after':{color:e.colors.surface.elevatedForeground},'.cm-search label:has(input[name="case"])::after':{content:'"Aa"',fontSize:"12px",letterSpacing:"-0.5px"},'.cm-search label:has(input[name="re"])::after':{content:'".*"',fontSize:"13px",fontFamily:"monospace"},'.cm-search label:has(input[name="word"])::after':{content:'"ab"',fontSize:"12px",textDecoration:"underline",textUnderlineOffset:"2px"},".cm-search .cm-search-message":{order:3,color:e.colors.surface.mutedForeground,backgroundColor:"transparent",border:"none",borderRadius:"0",padding:"0 6px",fontSize:"11px",whiteSpace:"nowrap",lineHeight:"26px"},".cm-search .cm-button":{appearance:"none",WebkitAppearance:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",width:"26px",height:"26px",minWidth:"26px",flexShrink:"0",margin:0,marginLeft:"1px",padding:0,borderRadius:"4px",border:"none",backgroundColor:"transparent",backgroundImage:"none",color:"transparent",cursor:"pointer",fontSize:"1px",fontWeight:"400",lineHeight:"0",overflow:"hidden",position:"relative",boxShadow:"none",transition:"background-color 120ms ease"},".cm-search .cm-button::after":{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontSize:"15px",lineHeight:"1",color:e.colors.surface.mutedForeground,pointerEvents:"none"},".cm-search .cm-button:hover":{backgroundColor:e.colors.interactive.hover},".cm-search .cm-button:hover::after":{color:e.colors.surface.elevatedForeground},".cm-search .cm-button:active":{backgroundColor:e.colors.interactive.active},".cm-search .cm-button:focus-visible":{outline:"none",boxShadow:`0 0 0 1px ${e.colors.interactive.focusRing}`},".cm-search .cm-button:disabled":{opacity:.4,cursor:"default",pointerEvents:"none"},'.cm-search .cm-button[name="prev"]':{order:21,marginTop:"2px"},'.cm-search .cm-button[name="prev"]::after':{content:'"↑"'},'.cm-search .cm-button[name="next"]':{order:22,marginTop:"2px"},'.cm-search .cm-button[name="next"]::after':{content:'"↓"'},'.cm-search .cm-button[name="select"]':{order:23,marginTop:"2px"},'.cm-search .cm-button[name="select"]::after':{content:'"≡"',fontSize:"17px"},'.cm-panel.cm-search button[name="close"]':{order:5,appearance:"none",WebkitAppearance:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",width:"26px",height:"26px",minWidth:"26px",flexShrink:"0",margin:"0 0 0 auto",padding:"0",borderRadius:"4px",border:"none",backgroundColor:"transparent",backgroundImage:"none",color:e.colors.surface.mutedForeground,cursor:"pointer",fontSize:"16px",lineHeight:"1",boxShadow:"none",position:"relative",overflow:"visible",transition:"background-color 120ms ease, color 120ms ease"},'.cm-panel.cm-search button[name="close"]:hover':{backgroundColor:e.colors.interactive.hover,color:e.colors.surface.elevatedForeground},'.cm-search .cm-button[name="replace"]':{order:24,marginTop:"2px"},'.cm-search .cm-button[name="replace"]::after':{content:'"⇄"'},'.cm-search .cm-button[name="replaceAll"], .cm-search .cm-button[name="replace-all"]':{order:25,marginTop:"2px"},'.cm-search .cm-button[name="replaceAll"]::after, .cm-search .cm-button[name="replace-all"]::after':{content:'"⇉"'},'.cm-search .cm-textfield[name="replace"]':{order:20,flex:"1 1 100%",maxWidth:"calc(100% - 142px)",minWidth:"80px",marginTop:"2px"},".cm-searchMatch":{backgroundColor:e.colors.interactive.selection,color:e.colors.interactive.selectionForeground,boxShadow:`inset 0 0 0 1px ${e.colors.interactive.border}`,borderRadius:"2px"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:e.colors.interactive.selection,color:e.colors.interactive.selectionForeground,boxShadow:`inset 0 0 0 1px ${e.colors.interactive.borderFocus}`},".cm-selectionMatch":{backgroundColor:e.colors.interactive.selection,boxShadow:`inset 0 0 0 1px ${e.colors.interactive.borderFocus}`,borderRadius:"2px"},".cm-selectionMatch-main":{backgroundColor:"transparent"},"&.cm-focused":{outline:"none"}},{dark:n}),m=X.define([{tag:[t.comment,t.docComment,t.meta,t.documentMeta],class:"cm-comment"},{tag:[t.keyword,t.controlKeyword,t.moduleKeyword,t.definitionKeyword,t.modifier],class:"cm-keyword"},{tag:[t.operatorKeyword,t.operator,t.derefOperator,t.updateOperator,t.definitionOperator,t.typeOperator,t.controlOperator,t.logicOperator,t.bitwiseOperator,t.arithmeticOperator,t.compareOperator],class:"cm-operator"},{tag:[t.punctuation,t.separator,t.bracket,t.paren,t.brace,t.squareBracket,t.angleBracket],class:"cm-punctuation"},{tag:[t.string,t.regexp,t.attributeValue,t.special(t.string),t.monospace],class:"cm-string"},{tag:t.escape,class:"cm-string-2"},{tag:[t.number,t.bool,t.atom,t.null,t.self],class:"cm-number"},{tag:[t.function(t.variableName),t.function(t.definition(t.variableName)),t.function(t.propertyName),t.standard(t.variableName),t.special(t.variableName)],class:"cm-builtin"},{tag:t.definition(t.variableName),class:"cm-def"},{tag:[t.variableName,t.local(t.variableName),t.constant(t.variableName),t.literal],class:"cm-variable"},{tag:t.propertyName,class:"cm-property"},{tag:t.attributeName,class:"cm-attribute"},{tag:[t.className,t.typeName,t.namespace],class:"cm-variable-3"},{tag:[t.tagName,t.labelName,t.annotation,t.macroName],class:"cm-tag"},{tag:t.link,class:"cm-link"},{tag:[t.heading,t.heading1,t.heading2,t.heading3,t.heading4,t.heading5,t.heading6],class:"cm-keyword"}]),g=X.define([{tag:[t.comment,t.docComment,t.meta,t.documentMeta],color:e.colors.syntax.base.comment},{tag:[t.keyword,t.controlKeyword,t.moduleKeyword,t.definitionKeyword,t.modifier],color:e.colors.syntax.base.keyword},{tag:[t.operatorKeyword,t.operator,t.derefOperator,t.updateOperator,t.definitionOperator,t.typeOperator,t.controlOperator,t.logicOperator,t.bitwiseOperator,t.arithmeticOperator,t.compareOperator],color:e.colors.syntax.base.operator},{tag:[t.string,t.regexp,t.attributeValue,t.special(t.string),t.monospace],color:e.colors.syntax.base.string},{tag:t.escape,color:r.stringEscape||e.colors.syntax.base.string},{tag:[t.number,t.bool,t.atom,t.null,t.self],color:e.colors.syntax.base.number},{tag:[t.function(t.variableName),t.function(t.definition(t.variableName)),t.function(t.propertyName),t.standard(t.variableName),t.special(t.variableName)],color:e.colors.syntax.base.function},{tag:t.definition(t.variableName),color:r.variableGlobal||e.colors.syntax.base.variable},{tag:[t.variableName,t.local(t.variableName),t.constant(t.variableName),t.literal],color:e.colors.syntax.base.variable},{tag:t.propertyName,color:r.variableProperty||e.colors.syntax.base.variable},{tag:t.attributeName,color:r.variableOther||e.colors.syntax.base.variable},{tag:[t.className,t.typeName,t.namespace],color:e.colors.syntax.base.type},{tag:[t.tagName,t.labelName,t.annotation,t.macroName],color:r.tag||e.colors.syntax.base.keyword},{tag:t.link,color:r.url||e.colors.syntax.base.function,textDecoration:"underline"},{tag:[t.punctuation,t.separator,t.bracket,t.paren,t.brace,t.squareBracket,t.angleBracket],color:r.punctuation||e.colors.syntax.base.comment}]);return o?.syntaxColors===!1?[f]:[f,T(qe,{fallback:!0}),T(Ke),T(m),T(g)]}const nt=180,xe=be.define(),at=1,ct=2,st=4,ge=new Map,it=(e,o)=>{const n=`${e}|${o}`,a=ge.get(n);if(a)return a;let c="";e&&(c+=`color:${e};`),o&at&&(c+="font-style:italic;"),o&ct&&(c+="font-weight:bold;"),o&st&&(c+="text-decoration:underline;");const r=z.mark({attributes:{style:c}});return ge.set(n,r),r},lt=(e,o)=>{const n=new j,a=e.state.doc,c=Math.min(o.length,a.lines);for(let r=0;r<c;r+=1){const u=o[r];if(!u||u.length===0)continue;const i=a.line(r+1);let f=i.from;for(const[m,g,P]of u){if(m<=0)continue;const E=f,x=Math.min(f+m,i.to);f+=m,!(x<=E)&&(!g&&!P||n.add(E,x,it(g,P)))}}return n.finish()},ut=A.define({create(){return z.none},update(e,o){let n=e.map(o.changes);for(const a of o.effects)a.is(xe)&&(n=a.value);return n},provide:e=>k.decorations.from(e)}),dt=e=>D.fromClass(class{timer;generation=0;constructor(o){this.tokenize(o)}update(o){o.docChanged&&this.schedule(o.view)}schedule(o){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.timer=void 0,this.tokenize(o)},nt)}async tokenize(o){const n=++this.generation,a=o.state.doc.toString(),c=await Ie(a,e.language,e.themeName,e.theme);c&&n===this.generation&&o.state.doc.length===a.length&&o.dispatch({effects:xe.of(lt(o,c))})}destroy(){this.timer&&clearTimeout(this.timer)}}),Ct=e=>[ut,dt(e)];export{kt as C,wt as P,St as c,Ct as s};
@@ -1 +0,0 @@
1
- import{f as h}from"./vendor-react-BUCujlKS.js";import{f9 as _,kt as k,hu as m,H as S,fn as w}from"./useAppFontEffects-DCqCVGlT.js";import{y as i,eu as p,fo as c,a_ as u,fp as v,fq as b,fr as y,fs as A,ft as C,fu as R}from"./index-vQ1Pg1cr.js";const G=(e,t,n)=>n?.kind==="running"?{kind:"busy",action:n.action}:!e||e.state==="preparing"||e.state==="failed"?null:n?.kind==="failed"&&O(e).includes(n.action)?{kind:"action_failed",action:n.action,failure:n.failure}:e.state==="missing"?{kind:"container_gone"}:e.damage==="gatekeeper_gone"?{kind:"gatekeeper_gone"}:e.state==="exited"?{kind:e.stoppedIdle?"stopped_idle":"stopped"}:e.damage==="repairable"?{kind:"damaged"}:t&&(t.state==="stale"||t.state==="unknown")?{kind:"not_answering"}:null,O=e=>{if(!e||e.state==="preparing"||e.state==="failed")return[];if(e.state==="missing")return["remove"];const t=e.damage==="gatekeeper_gone";return e.state==="exited"?t?["remove"]:["start","remove"]:t?["stop","remove"]:["restart_opencode","restart","setup","stop","remove"]},N=e=>e?.projectFolder.found!==!1&&(e?.state==="running"||e?.state==="exited"&&e.damage!=="gatekeeper_gone"),z=(e,t)=>t==="setup"&&e?.setup?.state==="running",d=(e,t)=>{if(!t||t.saved===0)return;const n=i.getState();n.noteChatsArchived(n.journey?.get(e)?.name??null)},D=(e,t,n)=>{switch(t){case"start":return C(e).then(()=>null);case"stop":return A(e).then(()=>null);case"restart":return y(e).then(()=>null);case"restart_opencode":return b(e).then(()=>null);case"setup":{const a=i.getState().journey?.get(e);return a?k(a).then(()=>null):Promise.resolve({code:"space_not_found",message:""})}case"remove":return v(e,n).then(a=>(d(e,a.chats),a.failures[0]??null))}},H=async(e,t,n={})=>{const a=i.getState();if(a.actions.get(e)?.kind==="running")return;const o=c();a.noteAction(e,{kind:"running",action:t});let r,f=null;try{r=await D(e,t,n)}catch(s){if(!(s instanceof Error))throw s;r=_(s),s instanceof p&&s.code==="chats_not_saved"&&(f={tooLarge:s.details.tooLarge??[],failed:s.details.failed??0})}if(o!==c())return;const l=i.getState();if(f){l.noteAction(e,null),l.openDeleteDialog(e,f);return}if(l.noteAction(e,r?{kind:"failed",action:t,failure:r}:null),!r&&t==="remove"){await g(e);return}!r&&t!=="stop"&&t!=="setup"&&l.noteReachable(e),await u().catch(()=>{})},g=async e=>{const t=i.getState();t.noteCreationAccess(e,null),t.accessDialog?.spaceId===e&&t.closeAccessDialog(),t.actionsSheet===e&&t.closeActionsSheet(),t.applyDialog===e&&t.closeApplyDialog(),await u().catch(()=>{}),await m().catch(()=>{}),await S().then(()=>{},()=>{})},T="space",K=e=>e.normalize("NFKD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9._/-]+/g,"-").replace(/\/{2,}/g,"/").replace(/\.{2,}/g,".").replace(/-{2,}/g,"-").split("/").map(n=>n.replace(/^[-.]+|[-.]+$/g,"").replace(/\.lock$/,"")).filter(Boolean).join("/")||T,W=new Set(["changes_do_not_apply","changes_route_closed","changes_blocked_by_link"]),x=e=>{if(e.stillThere&&e.stillThere.count>0)return{kind:"part_thrown_away",stillThere:e.stillThere};const t=e.ignoredInTheWay?.paths[0];return t?{kind:"ignored_in_the_way",path:t}:e.filteredInTheWay&&e.filteredInTheWay.count>0?{kind:"filtered_in_the_way"}:{kind:"changes_closed"}},L=(e,t)=>{if(!(e instanceof p))return{kind:"other",failure:{code:"space_request_failed",message:e.message}};const{code:n,details:a}=e;if(W.has(n))return x(a);switch(n){case"changes_undecided":return{kind:"undecided"};case"changes_partly_applied":return{kind:"partly_applied"};case"nothing_to_apply":return{kind:"nothing_to_apply"};case"changes_too_large":case"patch_not_possible":return{kind:"too_large"};case"space_not_running":return{kind:"not_running"};case"invalid_branch_name":return{kind:"invalid_branch"};case"branch_exists":return{kind:"branch_exists",branch:a.branch??t??""};case"name_not_allowed_here":if(a.path)return{kind:"name_not_allowed",path:a.path};break;case"case_only_rename":if(a.path&&a.other)return{kind:"case_only_rename",path:a.path,other:a.other};break}return{kind:"other",failure:{code:n,message:e.message}}},q=e=>{switch(e.kind){case"changes_closed":case"part_thrown_away":case"ignored_in_the_way":case"filtered_in_the_way":case"undecided":case"partly_applied":return!0;default:return!1}},E=(e,t)=>{const n=`/spaces/${t}`;return e===n||e.startsWith(`${n}/`)},$=(e,t)=>{for(const n of e.activeSessionIds){const a=e.statusById.get(n);if(a&&E(a.directory,t))return!0}return!1},J=e=>{const t=h.c(2);let n;return t[0]!==e?(n=a=>$(a,e),t[0]=e,t[1]=n):n=t[1],w(n)},M=async(e,t)=>{const n=c();let a;try{a=await R(e,t)}catch(r){if(!(r instanceof Error))throw r;return n!==c()?{kind:"overtaken"}:(await u().catch(()=>{}),{kind:"refused",refusal:L(r,t.as==="branch"?t.branch:null)})}if(n!==c())return{kind:"overtaken"};if(a.applied.status==="nothing_to_apply")return{kind:"refused",refusal:{kind:"nothing_to_apply"}};const o=a.removal?.failures[0]??null;return o&&i.getState().noteAction(e,{kind:"failed",action:"remove",failure:o}),a.removal&&!o?(d(e,a.removal.chats),await g(e)):await u().catch(()=>{}),{kind:"applied",outcome:a}};export{z as a,G as b,q as c,K as d,M as e,L as f,$ as g,N as i,H as r,O as s,J as u};
@@ -1 +0,0 @@
1
- import{t as s,f8 as u,fn as f}from"./useAppFontEffects-DCqCVGlT.js";import{u as S,T as d,a_ as g,y as c,o as l,a3 as j,a4 as y}from"./index-vQ1Pg1cr.js";import"./vendor-react-BUCujlKS.js";import{r as h,g as P}from"./space-apply-1trGVIl8.js";import"./vendor-zod-CxRSdNoV.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-DX96QhTP.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-dnd-kit-core-BZknOX2w.js";import"./vendor-dnd-kit-utilities-B_MdXhJC.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./vendor-dnd-kit-sortable-CsEagZ81.js";import"./vendor-tanstack-react-virtual-H_JmXOFV.js";import"./vendor-tanstack-virtual-core-Dxc8hSTB.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-ByBn5zIW.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-G3UuR-be.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-Bniqp7p5.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-CpGYXGuo.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DW1FQz9_.js";import"./vendor-codemirror-lang-json-58T70Hqs.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-B07blnnZ.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-DaH9adfE.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BLKnlLP4.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-q2bKO1EM.js";import"./vendor-codemirror-lang-python-B7ClrMIT.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-DpmhalwN.js";import"./vendor-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-DHzhmLwV.js";const m=(i,o)=>j(y.getState().dictionary,i,o),A=(i,o,a)=>{const p=l(o);return p===null?[]:Array.from(i.values()).filter(t=>t.state==="running"&&l(t.projectFolder.path??t.projectDirectory)===p&&!a(t.id))},Xt=async(i,o)=>{if(!S.getState().isolatedSpacesEnabled||d()||!await g().then(()=>!0,()=>!1))return;const p=c.getState().journey;if(!p)return;const t=A(p,i,r=>P(f.getState(),r));if(t.length===0)return;await Promise.all(t.map(r=>h(r.id,"stop")));let e=0;for(const r of t){const n=c.getState().actions.get(r.id);n?.kind==="failed"?s.error(m("spaces.close.stopFailed",{name:r.name,reason:u(m,n.failure)})):e+=1}e===1?s.success(m("spaces.close.stoppedSingle",{project:o})):e>1&&s.success(m("spaces.close.stoppedPlural",{count:e,project:o}))};export{A as spacesToStopOnClose,Xt as stopSpacesOfClosedProject};