@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
@@ -0,0 +1 @@
1
+ import{fy as i,fz as t,fA as s,fB as o}from"./useAppFontEffects-DGlvOqP_.js";import"./vendor-react-BUCujlKS.js";import{a$ as n,b0 as c,b1 as p}from"./index-DxNa7xYB.js";const y=({logLabel:a,onAppearanceSettled:r})=>{n(),c().then(()=>{Promise.all([p(),i()]).catch(e=>{console.error(`${a} settings init failed:`,e)}),t(),s(),o()}).catch(e=>{console.error(`${a} appearance init failed:`,e)}).finally(()=>{r?.()})};export{y as i};
@@ -1 +1 @@
1
- import{b as Q,n as y,o as nn,j as _,i as D,q as en,s as j,t as G}from"./computeVirtualFileMetrics-CmPe29DM.js";import{kY as W,kZ as U,k_ as B}from"./useAppFontEffects-DCqCVGlT.js";import{d as tn,a as on}from"./vendor-diff-C3JhlQdm.js";function xn(n,e){return n?.cacheKey!=null||e?.cacheKey!=null?n?.cacheKey===e?.cacheKey:n===e}function vn(n,e){return n?.cacheKey===e?.cacheKey&&n?.contents===e?.contents&&n?.name===e?.name&&n?.lang===e?.lang}function En(n,e){return Q(n.theme,e.theme)&&n.useTokenTransformer===e.useTokenTransformer&&n.tokenizeMaxLineLength===e.tokenizeMaxLineLength&&n.lineDiffType===e.lineDiffType&&n.maxLineDiffLength===e.maxLineDiffLength}function V({line:n,spanStart:e,spanLength:r}){return{start:{line:n,character:e},end:{line:n,character:e+r},properties:{"data-diff-span":""},alwaysWrap:!0}}function T({item:n,arr:e,enableJoin:r,isNeutral:a=!1,isLastItem:h=!1}){const i=e[e.length-1];if(i==null||h||!r){e.push([a?0:1,n.value]);return}const d=i[0]===0;if(a===d||a&&n.value.length===1&&!d){i[1]+=n.value;return}e.push([a?0:1,n.value])}function q(n){return[U(n.additionStart,n.additionCount)+1,W(n.additionStart,n.additionCount)+1]}function $({isPartial:n,rangeSize:e,expandedHunks:r,hunkIndex:a,collapsedContextThreshold:h}){const i=Math.max(e,0);if(i===0||n)return{fromStart:0,fromEnd:0,rangeSize:i,collapsedLines:i,renderAll:!1};if(r===!0||i<=h)return{fromStart:i,fromEnd:0,rangeSize:i,collapsedLines:0,renderAll:!0};const d=r?.get(a),u=Math.min(Math.max(d?.fromStart??0,0),i),t=Math.min(Math.max(d?.fromEnd??0,0),i),s=u+t,o=s>=i;return{fromStart:o?i:u,fromEnd:o?0:t,rangeSize:i,collapsedLines:Math.max(i-s,0),renderAll:o}}function wn(n){const e=n.hunks[n.hunks.length-1];if(e==null||n.isPartial||n.additionLines.length===0||n.deletionLines.length===0)return!1;const r=n.additionLines.length-W(e.additionStart,e.additionCount),a=n.deletionLines.length-W(e.deletionStart,e.deletionCount);return r<=0&&a<=0?!1:r!==a}function rn({fileDiff:n,errorPrefix:e}){const r=n.hunks[n.hunks.length-1];if(r==null||n.isPartial||n.additionLines.length===0||n.deletionLines.length===0)return 0;const a=n.additionLines.length-W(r.additionStart,r.additionCount),h=n.deletionLines.length-W(r.deletionStart,r.deletionCount);if(a<=0&&h<=0)return 0;if(a!==h)throw new Error(`${e}: trailing context mismatch (additions=${a}, deletions=${h}) for ${n.name}`);return Math.min(a,h)}function K({fileDiff:n,hunkIndex:e,expandedHunks:r,collapsedContextThreshold:a,errorPrefix:h}){if(e!==n.hunks.length-1)return;const i=rn({fileDiff:n,errorPrefix:h});if(i<=0)return;if(r===!0||i<=a)return{fromStart:i,fromEnd:0,rangeSize:i,collapsedLines:0,renderAll:!0};const d=r?.get(n.hunks.length),u=Math.min(Math.max(d?.fromStart??0,0),i);return{fromStart:u,fromEnd:0,rangeSize:i,collapsedLines:i-u,renderAll:u>=i}}function Rn({fileDiff:n,lineNumber:e,expandedHunks:r,collapsedContextThreshold:a}){if(r===!0||n.isPartial)return!0;for(const[u,t]of n.hunks.entries()){const[s,o]=q(t);if(e<s){const c=$({isPartial:n.isPartial,rangeSize:t.collapsedBefore,expandedHunks:r,hunkIndex:u,collapsedContextThreshold:a}),l=s-c.rangeSize;return c.renderAll||e<l+c.fromStart||e>=s-c.fromEnd}if(e<o)return!0}const h=K({fileDiff:n,hunkIndex:n.hunks.length-1,expandedHunks:r,collapsedContextThreshold:a,errorPrefix:"isAdditionLineRenderable"});if(h==null||h.renderAll)return!0;const i=n.hunks[n.hunks.length-1],[,d]=q(i);return e<d+h.fromStart||e>=d+h.rangeSize}function bn({fileDiff:n,lineNumber:e,direction:r,expandedHunks:a,collapsedContextThreshold:h}){if(a===!0||n.isPartial)return e;const i=[];let d=1;for(const[t,s]of n.hunks.entries()){const[o,c]=q(s),l=$({isPartial:n.isPartial,rangeSize:s.collapsedBefore,expandedHunks:a,hunkIndex:t,collapsedContextThreshold:h}),m=o-l.rangeSize;l.renderAll?i.push([m,o]):(l.fromStart>0&&i.push([m,m+l.fromStart]),l.fromEnd>0&&i.push([o-l.fromEnd,o])),i.push([o,c]),d=c}const u=K({fileDiff:n,hunkIndex:n.hunks.length-1,expandedHunks:a,collapsedContextThreshold:h,errorPrefix:"getNearestRenderableAdditionLine"});if(u!=null){const t=d;d=t+u.rangeSize,u.renderAll?i.push([t,d]):u.fromStart>0&&i.push([t,t+u.fromStart])}if(e>=d)return e;if(r==="down"){for(const[t,s]of i)if(s>e)return Math.max(t,e);return}for(let t=i.length-1;t>=0;t--){const[s,o]=i[t];if(s<=e)return Math.min(o-1,e)}}function J({type:n,metrics:e}){return e.hunkSeparatorHeight??y(n)}function X({type:n,metrics:e}){return n==="simple"||n==="metadata"||n==="line-info-basic"?0:e.spacing}function sn({type:n,hunkIndex:e,hunkSpecs:r}){switch(n){case"simple":return e>0;case"metadata":return r!=null;case"line-info":case"line-info-basic":case"custom":return!0}}function an(n){return n!=="simple"&&n!=="metadata"}function On({type:n,metrics:e,hunkIndex:r,hunkSpecs:a}){if(!sn({type:n,hunkIndex:r,hunkSpecs:a}))return;const h=J({type:n,metrics:e}),i=X({type:n,metrics:e}),d=r>0?i:0,u=i;return{height:h,gapBefore:d,gapAfter:u,totalHeight:d+h+u}}function Hn({type:n,metrics:e}){if(!an(n))return;const r=J({type:n,metrics:e}),a=X({type:n,metrics:e});return{height:r,gapBefore:a,gapAfter:0,totalHeight:a+r}}function ln({diff:n,diffStyle:e,startingLine:r=0,totalLines:a=1/0,expandedHunks:h,collapsedContextThreshold:i=1,callback:d}){const u=un({diff:n,diffStyle:e,startingLine:r,expandedHunks:h,collapsedContextThreshold:i}),t={viewportStart:r,viewportEnd:r+a,isWindowedHighlight:r>0||a<1/0,splitCount:u.splitCount,unifiedCount:u.unifiedCount,finalHunkIndex:n.hunks.length-1,shouldBreak(){if(!t.isWindowedHighlight)return!1;const s=t.unifiedCount>=r+a,o=t.splitCount>=r+a;return e==="unified"?s:(e==="split"||s)&&o},shouldSkip(s,o){if(!t.isWindowedHighlight)return!1;const c=s>0&&t.unifiedCount+s<=r,l=o>0&&t.splitCount+o<=r;return e==="unified"?c:(e==="split"||c)&&l},incrementCounts(s,o){(e==="unified"||e==="both")&&(t.unifiedCount+=s),(e==="split"||e==="both")&&(t.splitCount+=o)},isInWindow(s,o){if(!t.isWindowedHighlight)return!0;const c=t.isInUnifiedWindow(s),l=t.isInSplitWindow(o);return e==="unified"?c:e==="split"?l:c||l},isInUnifiedWindow(s){return!t.isWindowedHighlight||t.unifiedCount>=r-s&&t.unifiedCount<r+a},isInSplitWindow(s){return!t.isWindowedHighlight||t.splitCount>=r-s&&t.splitCount<r+a},emit(s,o=!1){return o||(e==="unified"?t.incrementCounts(1,0):e==="split"?t.incrementCounts(0,1):t.incrementCounts(1,1)),d(s)??!1}};n:for(let s=u.hunkIndex;s<n.hunks.length;s++){let M=function(g,H){return b==null||b.collapsedLines<=0||b.fromStart+b.fromEnd>0?0:e==="unified"?g===o.unifiedLineStart+o.unifiedLineCount-1?b.collapsedLines:0:H===o.splitLineStart+o.splitLineCount-1?b.collapsedLines:0},p=function(){return S?0:(S=!0,C.collapsedLines)};const o=n.hunks[s];if(o==null)throw new Error("iterateOverDiff: invalid hunk index");if(t.shouldBreak())break;const c=U(o.deletionStart,o.deletionCount),l=U(o.additionStart,o.additionCount),m=!n.isPartial&&o.deletionCount===0?c:o.deletionLineIndex,f=!n.isPartial&&o.additionCount===0?l:o.additionLineIndex,C=$({isPartial:n.isPartial,rangeSize:o.collapsedBefore,expandedHunks:h,hunkIndex:s,collapsedContextThreshold:i}),b=s===t.finalHunkIndex?K({fileDiff:n,hunkIndex:s,expandedHunks:h,collapsedContextThreshold:i,errorPrefix:"iterateOverDiff"}):void 0,F=C.fromStart+C.fromEnd;let S=C.collapsedLines===0;if(t.shouldSkip(F,F))t.incrementCounts(F,F),p();else{let g=o.unifiedLineStart-C.rangeSize,H=o.splitLineStart-C.rangeSize,R=m-C.rangeSize,O=f-C.rangeSize,v=c+1-C.rangeSize,P=l+1-C.rangeSize;if(A(t,C.fromStart,e,E=>t.emit({hunkIndex:s,hunk:o,collapsedBefore:0,collapsedAfter:0,type:"context-expanded",deletionLine:{lineNumber:v+E,lineIndex:R+E,noEOFCR:!1,unifiedLineIndex:g+E,splitLineIndex:H+E},additionLine:{unifiedLineIndex:g+E,splitLineIndex:H+E,lineIndex:O+E,lineNumber:P+E,noEOFCR:!1}}))||(g=o.unifiedLineStart-C.fromEnd,H=o.splitLineStart-C.fromEnd,R=m-C.fromEnd,O=f-C.fromEnd,v=c+1-C.fromEnd,P=l+1-C.fromEnd,A(t,C.fromEnd,e,E=>t.emit({hunkIndex:s,hunk:o,collapsedBefore:p(),collapsedAfter:0,type:"context-expanded",deletionLine:{lineNumber:v+E,lineIndex:R+E,noEOFCR:!1,unifiedLineIndex:g+E,splitLineIndex:H+E},additionLine:{unifiedLineIndex:g+E,splitLineIndex:H+E,lineIndex:O+E,lineNumber:P+E,noEOFCR:!1}}),()=>{p()})))break n}let L=o.unifiedLineStart,k=o.splitLineStart,I=m,w=f,x=c+1,z=l+1;const Y=o.hunkContent.at(-1);for(const g of o.hunkContent){if(t.shouldBreak())break n;const H=g===Y;if(g.type==="context"){if(t.shouldSkip(g.lines,g.lines))t.incrementCounts(g.lines,g.lines),p();else if(A(t,g.lines,e,R=>{const O=H&&R===g.lines-1,v=L+R,P=k+R;return t.emit({hunkIndex:s,hunk:o,collapsedBefore:p(),collapsedAfter:M(v,P),type:"context",deletionLine:{lineNumber:x+R,lineIndex:I+R,noEOFCR:O&&o.noEOFCRDeletions,unifiedLineIndex:v,splitLineIndex:P},additionLine:{unifiedLineIndex:v,splitLineIndex:P,lineIndex:w+R,lineNumber:z+R,noEOFCR:O&&o.noEOFCRAdditions}})},()=>{p()}))break n;L+=g.lines,k+=g.lines,I+=g.lines,w+=g.lines,x+=g.lines,z+=g.lines}else{const R=Math.max(g.deletions,g.additions),O=g.deletions+g.additions;if(!t.shouldSkip(O,R)){const v=hn(t,g,e);(v[0]?.[0]??0)>0&&p();for(const[P,E]of v)for(let N=P;N<E;N++){const Z=M(L+N,e==="unified"?k+(N<g.deletions?N:N-g.deletions):k+N);if(t.emit(fn({hunkIndex:s,hunk:o,collapsedBefore:p(),collapsedAfter:Z,diffStyle:e,index:N,unifiedLineIndex:L,splitLineIndex:k,additionLineIndex:w,deletionLineIndex:I,additionLineNumber:z,deletionLineNumber:x,content:g,isLastContent:H,unifiedCount:O,splitCount:R}),!0))break n}}p(),t.incrementCounts(O,R),L+=O,k+=R,I+=g.deletions,w+=g.additions,x+=g.deletions,z+=g.additions}}if(b!=null){const{collapsedLines:g,fromStart:H,fromEnd:R}=b,O=H+R;if(A(t,O,e,v=>{const P=v===O-1;return t.emit({hunkIndex:n.hunks.length,hunk:void 0,collapsedBefore:0,collapsedAfter:P?g:0,type:"context-expanded",deletionLine:{lineNumber:x+v,lineIndex:I+v,noEOFCR:!1,unifiedLineIndex:L+v,splitLineIndex:k+v},additionLine:{unifiedLineIndex:L+v,splitLineIndex:k+v,lineIndex:w+v,lineNumber:z+v,noEOFCR:!1}})},void 0,()=>t.shouldBreak()))break n}}}function un({diff:n,diffStyle:e,startingLine:r,expandedHunks:a,collapsedContextThreshold:h}){if(r<=0||e==="both")return{hunkIndex:0,splitCount:0,unifiedCount:0};const i=dn({diff:n,expandedHunks:a,collapsedContextThreshold:h});let d=0,u=n.hunks.length-1,t=n.hunks.length;for(;d<=u;){const o=d+u>>1,c=i[o+1];if(c==null)throw new Error("iterateOverDiff: invalid hunk prefix index");(e==="unified"?c.unifiedCount:c.splitCount)>r?(t=o,u=o-1):d=o+1}if(t>=n.hunks.length){const o=i[n.hunks.length];if(o==null)throw new Error("iterateOverDiff: invalid terminal hunk prefix index");return{hunkIndex:n.hunks.length,splitCount:o.splitCount,unifiedCount:o.unifiedCount}}const s=i[t];if(s==null)throw new Error("iterateOverDiff: invalid selected hunk prefix index");return{hunkIndex:t,splitCount:s.splitCount,unifiedCount:s.unifiedCount}}function dn({diff:n,expandedHunks:e,collapsedContextThreshold:r}){let a=0,h=0;const i=n.hunks.length-1,d=[{splitCount:0,unifiedCount:0}];for(let u=0;u<n.hunks.length;u++){const t=n.hunks[u];if(t==null)throw new Error("iterateOverDiff: invalid hunk summary index");const s=$({isPartial:n.isPartial,rangeSize:t.collapsedBefore,expandedHunks:e,hunkIndex:u,collapsedContextThreshold:r}),o=s.fromStart+s.fromEnd;a+=o+t.splitLineCount,h+=o+t.unifiedLineCount;const c=u===i?K({fileDiff:n,hunkIndex:u,expandedHunks:e,collapsedContextThreshold:r,errorPrefix:"iterateOverDiff"}):void 0;if(c!=null){const l=c.fromStart+c.fromEnd;a+=l,h+=l}d.push({splitCount:a,unifiedCount:h})}return d}function cn(n,e,r){if(!n.isWindowedHighlight||e<=0)return[0,e];const a=[];function h(u){const t=Math.max(0,n.viewportStart-u),s=Math.min(e,n.viewportEnd-u);s>t&&a.push([t,s])}if(r!=="split"&&h(n.unifiedCount),r!=="unified"&&h(n.splitCount),a.length===0)return[0,0];let i=a[0][0],d=a[0][1];for(let u=1;u<a.length;u++){const t=a[u];i=Math.min(i,t[0]),d=Math.max(d,t[1])}return[i,d]}function A(n,e,r,a,h,i){const[d,u]=cn(n,e,r);d>0&&(n.incrementCounts(d,d),h?.());let t=d;for(;t<e;){if(i?.()===!0)return!0;if(t>=u){n.incrementCounts(e-t,e-t);break}if(n.isInWindow(0,0)){if(a(t)===!0)return!0}else n.incrementCounts(1,1);t++}return!1}function hn(n,e,r){if(!n.isWindowedHighlight)return[[0,r==="unified"?e.deletions+e.additions:Math.max(e.deletions,e.additions)]];const a=r!=="split",h=r!=="unified",i=r==="unified"?"unified":"split",d=[];function u(c,l){if(c+l<=n.viewportStart||c>=n.viewportEnd)return;const m=Math.max(0,n.viewportStart-c),f=Math.min(l,n.viewportEnd-c);return f>m?[m,f]:void 0}function t(c,l){return i==="split"?c:l==="additions"?[c[0]+e.deletions,c[1]+e.deletions]:c}function s(c,l){if(c==null)return;const[m,f]=t(c,l);f>m&&d.push([m,f])}if(a&&(s(u(n.unifiedCount,e.deletions),"deletions"),s(u(n.unifiedCount+e.deletions,e.additions),"additions")),h&&(s(u(n.splitCount,e.deletions),"deletions"),s(u(n.splitCount,e.additions),"additions")),d.length===0)return d;d.sort((c,l)=>c[0]-l[0]);const o=[d[0]];for(const[c,l]of d.slice(1)){const m=o[o.length-1];c<=m[1]?m[1]=Math.max(m[1],l):o.push([c,l])}return o}function fn({hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,diffStyle:h,index:i,unifiedLineIndex:d,splitLineIndex:u,additionLineIndex:t,deletionLineIndex:s,additionLineNumber:o,deletionLineNumber:c,content:l,isLastContent:m,unifiedCount:f,splitCount:C}){const b=i<l.deletions?d+i:void 0,F=h==="unified"?i>=l.deletions?d+i:void 0:i<l.additions?d+l.deletions+i:void 0,M=h==="unified"?u+(i<l.deletions?i:i-l.deletions):u+i,S=i<l.deletions?s+i:void 0,p=i<l.deletions?c+i:void 0,L=h==="unified"?i>=l.deletions?t+(i-l.deletions):void 0:i<l.additions?t+i:void 0,k=h==="unified"?i>=l.deletions?o+(i-l.deletions):void 0:i<l.additions?o+i:void 0,I=h==="unified"?m&&i===l.deletions-1&&e.noEOFCRDeletions:m&&i===C-1&&e.noEOFCRDeletions,w=h==="unified"?m&&i===f-1&&e.noEOFCRAdditions:m&&i===C-1&&e.noEOFCRAdditions,x=S!=null&&p!=null&&b!=null?{lineNumber:p,lineIndex:S,noEOFCR:I,unifiedLineIndex:b,splitLineIndex:M}:void 0,z=L!=null&&k!=null&&F!=null?{unifiedLineIndex:F,splitLineIndex:M,lineIndex:L,lineNumber:k,noEOFCR:w}:void 0;if(x==null&&z!=null)return{type:"change",hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,deletionLine:void 0,additionLine:z};if(x!=null&&z==null)return{type:"change",hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,deletionLine:x,additionLine:void 0};if(x==null||z==null)throw new Error("iterateOverDiff: missing change line data");return{type:"change",hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,deletionLine:x,additionLine:z}}const gn={forcePlainText:!1};function zn(n,e,r,{forcePlainText:a,startingLine:h,totalLines:i,expandedHunks:d,collapsedContextThreshold:u=1}=gn){a?(h??=0,i??=1/0):(h=0,i=1/0);const t=h>0||i<1/0,s=typeof r.theme=="string"?e.getTheme(r.theme).type:void 0,o=nn({theme:r.theme,highlighter:e}),c=a&&!t&&(n.unifiedLineCount>1e3||n.splitLineCount>1e3)?"none":r.lineDiffType,l={deletionLines:[],additionLines:[]},{maxLineDiffLength:m}=r,f=!a&&!n.isPartial,C=a?d:void 0,b=new Map;function F(S){const p=f?0:S,L=b.get(p)??In();return b.set(p,L),L}function M(S,p,L,k){if(t){let I=L.at(-1);(I==null||I.targetIndex+I.count!==p)&&(I={targetIndex:p,originalOffset:k.length,count:0},L.push(I)),I.count++}k.push(S)}ln({diff:n,diffStyle:"both",startingLine:h,totalLines:i,expandedHunks:t?C:!0,collapsedContextThreshold:u,callback:({hunkIndex:S,additionLine:p,deletionLine:L,type:k})=>{const I=F(S),w=p!=null?p.splitLineIndex:L.splitLineIndex;k==="change"&&p!=null&&L!=null&&pn({additionLine:n.additionLines[p.lineIndex],deletionLine:n.deletionLines[L.lineIndex],deletionLineIndex:I.deletionContent.length,additionLineIndex:I.additionContent.length,deletionDecorations:I.deletionDecorations,additionDecorations:I.additionDecorations,lineDiffType:c,maxLineDiffLength:m}),L!=null&&(M(n.deletionLines[L.lineIndex],L.lineIndex,I.deletionSegments,I.deletionContent),I.deletionInfo.push({type:k==="change"?"change-deletion":k,lineNumber:L.lineNumber,altLineNumber:k==="change"?void 0:p.lineNumber??void 0,lineIndex:`${L.unifiedLineIndex},${w}`})),p!=null&&(M(n.additionLines[p.lineIndex],p.lineIndex,I.additionSegments,I.additionContent),I.additionInfo.push({type:k==="change"?"change-addition":k,lineNumber:p.lineNumber,altLineNumber:k==="change"?void 0:L.lineNumber??void 0,lineIndex:`${p.unifiedLineIndex},${w}`}))}});for(const S of b.values()){if(S.deletionContent.length===0&&S.additionContent.length===0)continue;const p={name:n.prevName??n.name,contents:S.deletionContent.value},L={name:n.name,contents:S.additionContent.value},{deletionLines:k,additionLines:I}=Cn({deletionFile:p,deletionInfo:S.deletionInfo,deletionDecorations:S.deletionDecorations,additionFile:L,additionInfo:S.additionInfo,additionDecorations:S.additionDecorations,highlighter:e,options:r,languageOverride:a?"text":n.lang});if(f){l.deletionLines=k,l.additionLines=I;continue}if(S.deletionSegments.length>0)for(const w of S.deletionSegments)for(let x=0;x<w.count;x++)l.deletionLines[w.targetIndex+x]=k[w.originalOffset+x];else _(l.deletionLines,k);if(S.additionSegments.length>0)for(const w of S.additionSegments)for(let x=0;x<w.count;x++)l.additionLines[w.targetIndex+x]=I[w.originalOffset+x];else _(l.additionLines,I)}return{code:l,themeStyles:o,baseThemeType:s}}function mn(n,{deletionLineIndex:e,additionLineIndex:r,deletionDecorations:a,additionDecorations:h}){let i=0,d=0,u=-1,t=0,s=-1,o=0;for(const{value:c,added:l,removed:m}of n)m?(u===-1&&(u=i),i+=c.length,t=i):l?(s===-1&&(s=d),d+=c.length,o=d):(i+=c.length,d+=c.length);u!==-1&&a.push(V({line:e,spanStart:u,spanLength:t-u})),s!==-1&&h.push(V({line:r,spanStart:s,spanLength:o-s}))}function pn({deletionLine:n,additionLine:e,deletionLineIndex:r,additionLineIndex:a,deletionDecorations:h,additionDecorations:i,lineDiffType:d,maxLineDiffLength:u}){if(n==null||e==null||d==="none"||(n=B(n),e=B(e),n.length>u||e.length>u))return;const t=d==="char"?tn(n,e):on(n,e);if(d==="word-line"){mn(t,{deletionLineIndex:r,additionLineIndex:a,deletionDecorations:h,additionDecorations:i});return}const s=[],o=[],c=d==="word-alt",l=t.at(-1);for(const f of t){const C=f===l;!f.added&&!f.removed?(T({item:f,arr:s,enableJoin:c,isNeutral:!0,isLastItem:C}),T({item:f,arr:o,enableJoin:c,isNeutral:!0,isLastItem:C})):f.removed?T({item:f,arr:s,enableJoin:c,isLastItem:C}):T({item:f,arr:o,enableJoin:c,isLastItem:C})}let m=0;for(const f of s)f[0]===1&&h.push(V({line:r,spanStart:m,spanLength:f[1].length})),m+=f[1].length;m=0;for(const f of o)f[0]===1&&i.push(V({line:a,spanStart:m,spanLength:f[1].length})),m+=f[1].length}function In(){return{deletionContent:{push(n){this.value+=n,this.length++},value:"",length:0},additionContent:{push(n){this.value+=n,this.length++},value:"",length:0},deletionInfo:[],additionInfo:[],deletionDecorations:[],additionDecorations:[],deletionSegments:[],additionSegments:[]}}function Cn({deletionFile:n,additionFile:e,deletionInfo:r,additionInfo:a,highlighter:h,deletionDecorations:i,additionDecorations:d,languageOverride:u,options:{theme:t,...s}}){const o=u??D(n.name),c=u??D(e.name),{state:l,transformers:m}=en(s.useTokenTransformer),f=typeof t=="string"?{...s,lang:"text",theme:t,transformers:m,decorations:void 0,defaultColor:!1,cssVariablePrefix:j("token"),tokenizeTimeLimit:0}:{...s,lang:"text",themes:t,transformers:m,decorations:void 0,defaultColor:!1,cssVariablePrefix:j("token"),tokenizeTimeLimit:0};return{deletionLines:n.contents===""?[]:(f.lang=o,l.lineInfo=r,f.decorations=i,G(h.codeToHast(B(n.contents),f))),additionLines:e.contents===""?[]:(f.lang=c,f.decorations=d,l.lineInfo=a,G(h.codeToHast(B(e.contents),f)))}}function Pn(n){const e=n.lang??D(n.name),r=n.lang??(n.prevName!=null?D(n.prevName):"text");return e==="text"&&r==="text"}export{En as a,vn as b,xn as c,K as d,ln as e,rn as f,$ as g,wn as h,Pn as i,Rn as j,bn as k,q as l,On as m,Hn as n,zn as r};
1
+ import{b as Z,n as y,o as nn,j as G,i as D,q as en,s as _,t as j}from"./computeVirtualFileMetrics-C2WM6JC2.js";import{lG as W,lH as U,lI as B}from"./useAppFontEffects-DGlvOqP_.js";import{d as tn,a as on}from"./vendor-diff-C3JhlQdm.js";function xn(n,e){return n?.cacheKey!=null||e?.cacheKey!=null?n?.cacheKey===e?.cacheKey:n===e}function vn(n,e){return n?.cacheKey===e?.cacheKey&&n?.contents===e?.contents&&n?.name===e?.name&&n?.lang===e?.lang}function En(n,e){return Z(n.theme,e.theme)&&n.useTokenTransformer===e.useTokenTransformer&&n.tokenizeMaxLineLength===e.tokenizeMaxLineLength&&n.lineDiffType===e.lineDiffType&&n.maxLineDiffLength===e.maxLineDiffLength}function V({line:n,spanStart:e,spanLength:r}){return{start:{line:n,character:e},end:{line:n,character:e+r},properties:{"data-diff-span":""},alwaysWrap:!0}}function T({item:n,arr:e,enableJoin:r,isNeutral:a=!1,isLastItem:h=!1}){const i=e[e.length-1];if(i==null||h||!r){e.push([a?0:1,n.value]);return}const d=i[0]===0;if(a===d||a&&n.value.length===1&&!d){i[1]+=n.value;return}e.push([a?0:1,n.value])}function q(n){return[U(n.additionStart,n.additionCount)+1,W(n.additionStart,n.additionCount)+1]}function $({isPartial:n,rangeSize:e,expandedHunks:r,hunkIndex:a,collapsedContextThreshold:h}){const i=Math.max(e,0);if(i===0||n)return{fromStart:0,fromEnd:0,rangeSize:i,collapsedLines:i,renderAll:!1};if(r===!0||i<=h)return{fromStart:i,fromEnd:0,rangeSize:i,collapsedLines:0,renderAll:!0};const d=r?.get(a),u=Math.min(Math.max(d?.fromStart??0,0),i),t=Math.min(Math.max(d?.fromEnd??0,0),i),s=u+t,o=s>=i;return{fromStart:o?i:u,fromEnd:o?0:t,rangeSize:i,collapsedLines:Math.max(i-s,0),renderAll:o}}function wn(n){const e=n.hunks[n.hunks.length-1];if(e==null||n.isPartial||n.additionLines.length===0||n.deletionLines.length===0)return!1;const r=n.additionLines.length-W(e.additionStart,e.additionCount),a=n.deletionLines.length-W(e.deletionStart,e.deletionCount);return r<=0&&a<=0?!1:r!==a}function rn({fileDiff:n,errorPrefix:e}){const r=n.hunks[n.hunks.length-1];if(r==null||n.isPartial||n.additionLines.length===0||n.deletionLines.length===0)return 0;const a=n.additionLines.length-W(r.additionStart,r.additionCount),h=n.deletionLines.length-W(r.deletionStart,r.deletionCount);if(a<=0&&h<=0)return 0;if(a!==h)throw new Error(`${e}: trailing context mismatch (additions=${a}, deletions=${h}) for ${n.name}`);return Math.min(a,h)}function K({fileDiff:n,hunkIndex:e,expandedHunks:r,collapsedContextThreshold:a,errorPrefix:h}){if(e!==n.hunks.length-1)return;const i=rn({fileDiff:n,errorPrefix:h});if(i<=0)return;if(r===!0||i<=a)return{fromStart:i,fromEnd:0,rangeSize:i,collapsedLines:0,renderAll:!0};const d=r?.get(n.hunks.length),u=Math.min(Math.max(d?.fromStart??0,0),i);return{fromStart:u,fromEnd:0,rangeSize:i,collapsedLines:i-u,renderAll:u>=i}}function Rn({fileDiff:n,lineNumber:e,expandedHunks:r,collapsedContextThreshold:a}){if(r===!0||n.isPartial)return!0;for(const[u,t]of n.hunks.entries()){const[s,o]=q(t);if(e<s){const c=$({isPartial:n.isPartial,rangeSize:t.collapsedBefore,expandedHunks:r,hunkIndex:u,collapsedContextThreshold:a}),l=s-c.rangeSize;return c.renderAll||e<l+c.fromStart||e>=s-c.fromEnd}if(e<o)return!0}const h=K({fileDiff:n,hunkIndex:n.hunks.length-1,expandedHunks:r,collapsedContextThreshold:a,errorPrefix:"isAdditionLineRenderable"});if(h==null||h.renderAll)return!0;const i=n.hunks[n.hunks.length-1],[,d]=q(i);return e<d+h.fromStart||e>=d+h.rangeSize}function bn({fileDiff:n,lineNumber:e,direction:r,expandedHunks:a,collapsedContextThreshold:h}){if(a===!0||n.isPartial)return e;const i=[];let d=1;for(const[t,s]of n.hunks.entries()){const[o,c]=q(s),l=$({isPartial:n.isPartial,rangeSize:s.collapsedBefore,expandedHunks:a,hunkIndex:t,collapsedContextThreshold:h}),m=o-l.rangeSize;l.renderAll?i.push([m,o]):(l.fromStart>0&&i.push([m,m+l.fromStart]),l.fromEnd>0&&i.push([o-l.fromEnd,o])),i.push([o,c]),d=c}const u=K({fileDiff:n,hunkIndex:n.hunks.length-1,expandedHunks:a,collapsedContextThreshold:h,errorPrefix:"getNearestRenderableAdditionLine"});if(u!=null){const t=d;d=t+u.rangeSize,u.renderAll?i.push([t,d]):u.fromStart>0&&i.push([t,t+u.fromStart])}if(e>=d)return e;if(r==="down"){for(const[t,s]of i)if(s>e)return Math.max(t,e);return}for(let t=i.length-1;t>=0;t--){const[s,o]=i[t];if(s<=e)return Math.min(o-1,e)}}function J({type:n,metrics:e}){return e.hunkSeparatorHeight??y(n)}function X({type:n,metrics:e}){return n==="simple"||n==="metadata"||n==="line-info-basic"?0:e.spacing}function sn({type:n,hunkIndex:e,hunkSpecs:r}){switch(n){case"simple":return e>0;case"metadata":return r!=null;case"line-info":case"line-info-basic":case"custom":return!0}}function an(n){return n!=="simple"&&n!=="metadata"}function On({type:n,metrics:e,hunkIndex:r,hunkSpecs:a}){if(!sn({type:n,hunkIndex:r,hunkSpecs:a}))return;const h=J({type:n,metrics:e}),i=X({type:n,metrics:e}),d=r>0?i:0,u=i;return{height:h,gapBefore:d,gapAfter:u,totalHeight:d+h+u}}function Hn({type:n,metrics:e}){if(!an(n))return;const r=J({type:n,metrics:e}),a=X({type:n,metrics:e});return{height:r,gapBefore:a,gapAfter:0,totalHeight:a+r}}function ln({diff:n,diffStyle:e,startingLine:r=0,totalLines:a=1/0,expandedHunks:h,collapsedContextThreshold:i=1,callback:d}){const u=un({diff:n,diffStyle:e,startingLine:r,expandedHunks:h,collapsedContextThreshold:i}),t={viewportStart:r,viewportEnd:r+a,isWindowedHighlight:r>0||a<1/0,splitCount:u.splitCount,unifiedCount:u.unifiedCount,finalHunkIndex:n.hunks.length-1,shouldBreak(){if(!t.isWindowedHighlight)return!1;const s=t.unifiedCount>=r+a,o=t.splitCount>=r+a;return e==="unified"?s:(e==="split"||s)&&o},shouldSkip(s,o){if(!t.isWindowedHighlight)return!1;const c=s>0&&t.unifiedCount+s<=r,l=o>0&&t.splitCount+o<=r;return e==="unified"?c:(e==="split"||c)&&l},incrementCounts(s,o){(e==="unified"||e==="both")&&(t.unifiedCount+=s),(e==="split"||e==="both")&&(t.splitCount+=o)},isInWindow(s,o){if(!t.isWindowedHighlight)return!0;const c=t.isInUnifiedWindow(s),l=t.isInSplitWindow(o);return e==="unified"?c:e==="split"?l:c||l},isInUnifiedWindow(s){return!t.isWindowedHighlight||t.unifiedCount>=r-s&&t.unifiedCount<r+a},isInSplitWindow(s){return!t.isWindowedHighlight||t.splitCount>=r-s&&t.splitCount<r+a},emit(s,o=!1){return o||(e==="unified"?t.incrementCounts(1,0):e==="split"?t.incrementCounts(0,1):t.incrementCounts(1,1)),d(s)??!1}};n:for(let s=u.hunkIndex;s<n.hunks.length;s++){let M=function(g,H){return b==null||b.collapsedLines<=0||b.fromStart+b.fromEnd>0?0:e==="unified"?g===o.unifiedLineStart+o.unifiedLineCount-1?b.collapsedLines:0:H===o.splitLineStart+o.splitLineCount-1?b.collapsedLines:0},p=function(){return k?0:(k=!0,C.collapsedLines)};const o=n.hunks[s];if(o==null)throw new Error("iterateOverDiff: invalid hunk index");if(t.shouldBreak())break;const c=U(o.deletionStart,o.deletionCount),l=U(o.additionStart,o.additionCount),m=!n.isPartial&&o.deletionCount===0?c:o.deletionLineIndex,f=!n.isPartial&&o.additionCount===0?l:o.additionLineIndex,C=$({isPartial:n.isPartial,rangeSize:o.collapsedBefore,expandedHunks:h,hunkIndex:s,collapsedContextThreshold:i}),b=s===t.finalHunkIndex?K({fileDiff:n,hunkIndex:s,expandedHunks:h,collapsedContextThreshold:i,errorPrefix:"iterateOverDiff"}):void 0,F=C.fromStart+C.fromEnd;let k=C.collapsedLines===0;if(t.shouldSkip(F,F))t.incrementCounts(F,F),p();else{let g=o.unifiedLineStart-C.rangeSize,H=o.splitLineStart-C.rangeSize,R=m-C.rangeSize,O=f-C.rangeSize,v=c+1-C.rangeSize,P=l+1-C.rangeSize;if(A(t,C.fromStart,e,E=>t.emit({hunkIndex:s,hunk:o,collapsedBefore:0,collapsedAfter:0,type:"context-expanded",deletionLine:{lineNumber:v+E,lineIndex:R+E,noEOFCR:!1,unifiedLineIndex:g+E,splitLineIndex:H+E},additionLine:{unifiedLineIndex:g+E,splitLineIndex:H+E,lineIndex:O+E,lineNumber:P+E,noEOFCR:!1}}))||(g=o.unifiedLineStart-C.fromEnd,H=o.splitLineStart-C.fromEnd,R=m-C.fromEnd,O=f-C.fromEnd,v=c+1-C.fromEnd,P=l+1-C.fromEnd,A(t,C.fromEnd,e,E=>t.emit({hunkIndex:s,hunk:o,collapsedBefore:p(),collapsedAfter:0,type:"context-expanded",deletionLine:{lineNumber:v+E,lineIndex:R+E,noEOFCR:!1,unifiedLineIndex:g+E,splitLineIndex:H+E},additionLine:{unifiedLineIndex:g+E,splitLineIndex:H+E,lineIndex:O+E,lineNumber:P+E,noEOFCR:!1}}),()=>{p()})))break n}let L=o.unifiedLineStart,S=o.splitLineStart,I=m,w=f,x=c+1,z=l+1;const Q=o.hunkContent.at(-1);for(const g of o.hunkContent){if(t.shouldBreak())break n;const H=g===Q;if(g.type==="context"){if(t.shouldSkip(g.lines,g.lines))t.incrementCounts(g.lines,g.lines),p();else if(A(t,g.lines,e,R=>{const O=H&&R===g.lines-1,v=L+R,P=S+R;return t.emit({hunkIndex:s,hunk:o,collapsedBefore:p(),collapsedAfter:M(v,P),type:"context",deletionLine:{lineNumber:x+R,lineIndex:I+R,noEOFCR:O&&o.noEOFCRDeletions,unifiedLineIndex:v,splitLineIndex:P},additionLine:{unifiedLineIndex:v,splitLineIndex:P,lineIndex:w+R,lineNumber:z+R,noEOFCR:O&&o.noEOFCRAdditions}})},()=>{p()}))break n;L+=g.lines,S+=g.lines,I+=g.lines,w+=g.lines,x+=g.lines,z+=g.lines}else{const R=Math.max(g.deletions,g.additions),O=g.deletions+g.additions;if(!t.shouldSkip(O,R)){const v=hn(t,g,e);(v[0]?.[0]??0)>0&&p();for(const[P,E]of v)for(let N=P;N<E;N++){const Y=M(L+N,e==="unified"?S+(N<g.deletions?N:N-g.deletions):S+N);if(t.emit(fn({hunkIndex:s,hunk:o,collapsedBefore:p(),collapsedAfter:Y,diffStyle:e,index:N,unifiedLineIndex:L,splitLineIndex:S,additionLineIndex:w,deletionLineIndex:I,additionLineNumber:z,deletionLineNumber:x,content:g,isLastContent:H,unifiedCount:O,splitCount:R}),!0))break n}}p(),t.incrementCounts(O,R),L+=O,S+=R,I+=g.deletions,w+=g.additions,x+=g.deletions,z+=g.additions}}if(b!=null){const{collapsedLines:g,fromStart:H,fromEnd:R}=b,O=H+R;if(A(t,O,e,v=>{const P=v===O-1;return t.emit({hunkIndex:n.hunks.length,hunk:void 0,collapsedBefore:0,collapsedAfter:P?g:0,type:"context-expanded",deletionLine:{lineNumber:x+v,lineIndex:I+v,noEOFCR:!1,unifiedLineIndex:L+v,splitLineIndex:S+v},additionLine:{unifiedLineIndex:L+v,splitLineIndex:S+v,lineIndex:w+v,lineNumber:z+v,noEOFCR:!1}})},void 0,()=>t.shouldBreak()))break n}}}function un({diff:n,diffStyle:e,startingLine:r,expandedHunks:a,collapsedContextThreshold:h}){if(r<=0||e==="both")return{hunkIndex:0,splitCount:0,unifiedCount:0};const i=dn({diff:n,expandedHunks:a,collapsedContextThreshold:h});let d=0,u=n.hunks.length-1,t=n.hunks.length;for(;d<=u;){const o=d+u>>1,c=i[o+1];if(c==null)throw new Error("iterateOverDiff: invalid hunk prefix index");(e==="unified"?c.unifiedCount:c.splitCount)>r?(t=o,u=o-1):d=o+1}if(t>=n.hunks.length){const o=i[n.hunks.length];if(o==null)throw new Error("iterateOverDiff: invalid terminal hunk prefix index");return{hunkIndex:n.hunks.length,splitCount:o.splitCount,unifiedCount:o.unifiedCount}}const s=i[t];if(s==null)throw new Error("iterateOverDiff: invalid selected hunk prefix index");return{hunkIndex:t,splitCount:s.splitCount,unifiedCount:s.unifiedCount}}function dn({diff:n,expandedHunks:e,collapsedContextThreshold:r}){let a=0,h=0;const i=n.hunks.length-1,d=[{splitCount:0,unifiedCount:0}];for(let u=0;u<n.hunks.length;u++){const t=n.hunks[u];if(t==null)throw new Error("iterateOverDiff: invalid hunk summary index");const s=$({isPartial:n.isPartial,rangeSize:t.collapsedBefore,expandedHunks:e,hunkIndex:u,collapsedContextThreshold:r}),o=s.fromStart+s.fromEnd;a+=o+t.splitLineCount,h+=o+t.unifiedLineCount;const c=u===i?K({fileDiff:n,hunkIndex:u,expandedHunks:e,collapsedContextThreshold:r,errorPrefix:"iterateOverDiff"}):void 0;if(c!=null){const l=c.fromStart+c.fromEnd;a+=l,h+=l}d.push({splitCount:a,unifiedCount:h})}return d}function cn(n,e,r){if(!n.isWindowedHighlight||e<=0)return[0,e];const a=[];function h(u){const t=Math.max(0,n.viewportStart-u),s=Math.min(e,n.viewportEnd-u);s>t&&a.push([t,s])}if(r!=="split"&&h(n.unifiedCount),r!=="unified"&&h(n.splitCount),a.length===0)return[0,0];let i=a[0][0],d=a[0][1];for(let u=1;u<a.length;u++){const t=a[u];i=Math.min(i,t[0]),d=Math.max(d,t[1])}return[i,d]}function A(n,e,r,a,h,i){const[d,u]=cn(n,e,r);d>0&&(n.incrementCounts(d,d),h?.());let t=d;for(;t<e;){if(i?.()===!0)return!0;if(t>=u){n.incrementCounts(e-t,e-t);break}if(n.isInWindow(0,0)){if(a(t)===!0)return!0}else n.incrementCounts(1,1);t++}return!1}function hn(n,e,r){if(!n.isWindowedHighlight)return[[0,r==="unified"?e.deletions+e.additions:Math.max(e.deletions,e.additions)]];const a=r!=="split",h=r!=="unified",i=r==="unified"?"unified":"split",d=[];function u(c,l){if(c+l<=n.viewportStart||c>=n.viewportEnd)return;const m=Math.max(0,n.viewportStart-c),f=Math.min(l,n.viewportEnd-c);return f>m?[m,f]:void 0}function t(c,l){return i==="split"?c:l==="additions"?[c[0]+e.deletions,c[1]+e.deletions]:c}function s(c,l){if(c==null)return;const[m,f]=t(c,l);f>m&&d.push([m,f])}if(a&&(s(u(n.unifiedCount,e.deletions),"deletions"),s(u(n.unifiedCount+e.deletions,e.additions),"additions")),h&&(s(u(n.splitCount,e.deletions),"deletions"),s(u(n.splitCount,e.additions),"additions")),d.length===0)return d;d.sort((c,l)=>c[0]-l[0]);const o=[d[0]];for(const[c,l]of d.slice(1)){const m=o[o.length-1];c<=m[1]?m[1]=Math.max(m[1],l):o.push([c,l])}return o}function fn({hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,diffStyle:h,index:i,unifiedLineIndex:d,splitLineIndex:u,additionLineIndex:t,deletionLineIndex:s,additionLineNumber:o,deletionLineNumber:c,content:l,isLastContent:m,unifiedCount:f,splitCount:C}){const b=i<l.deletions?d+i:void 0,F=h==="unified"?i>=l.deletions?d+i:void 0:i<l.additions?d+l.deletions+i:void 0,M=h==="unified"?u+(i<l.deletions?i:i-l.deletions):u+i,k=i<l.deletions?s+i:void 0,p=i<l.deletions?c+i:void 0,L=h==="unified"?i>=l.deletions?t+(i-l.deletions):void 0:i<l.additions?t+i:void 0,S=h==="unified"?i>=l.deletions?o+(i-l.deletions):void 0:i<l.additions?o+i:void 0,I=h==="unified"?m&&i===l.deletions-1&&e.noEOFCRDeletions:m&&i===C-1&&e.noEOFCRDeletions,w=h==="unified"?m&&i===f-1&&e.noEOFCRAdditions:m&&i===C-1&&e.noEOFCRAdditions,x=k!=null&&p!=null&&b!=null?{lineNumber:p,lineIndex:k,noEOFCR:I,unifiedLineIndex:b,splitLineIndex:M}:void 0,z=L!=null&&S!=null&&F!=null?{unifiedLineIndex:F,splitLineIndex:M,lineIndex:L,lineNumber:S,noEOFCR:w}:void 0;if(x==null&&z!=null)return{type:"change",hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,deletionLine:void 0,additionLine:z};if(x!=null&&z==null)return{type:"change",hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,deletionLine:x,additionLine:void 0};if(x==null||z==null)throw new Error("iterateOverDiff: missing change line data");return{type:"change",hunkIndex:n,hunk:e,collapsedAfter:r,collapsedBefore:a,deletionLine:x,additionLine:z}}const gn={forcePlainText:!1};function zn(n,e,r,{forcePlainText:a,startingLine:h,totalLines:i,expandedHunks:d,collapsedContextThreshold:u=1}=gn){a?(h??=0,i??=1/0):(h=0,i=1/0);const t=h>0||i<1/0,s=typeof r.theme=="string"?e.getTheme(r.theme).type:void 0,o=nn({theme:r.theme,highlighter:e}),c=a&&!t&&(n.unifiedLineCount>1e3||n.splitLineCount>1e3)?"none":r.lineDiffType,l={deletionLines:[],additionLines:[]},{maxLineDiffLength:m}=r,f=!a&&!n.isPartial,C=a?d:void 0,b=new Map;function F(k){const p=f?0:k,L=b.get(p)??In();return b.set(p,L),L}function M(k,p,L,S){if(t){let I=L.at(-1);(I==null||I.targetIndex+I.count!==p)&&(I={targetIndex:p,originalOffset:S.length,count:0},L.push(I)),I.count++}S.push(k)}ln({diff:n,diffStyle:"both",startingLine:h,totalLines:i,expandedHunks:t?C:!0,collapsedContextThreshold:u,callback:({hunkIndex:k,additionLine:p,deletionLine:L,type:S})=>{const I=F(k),w=p!=null?p.splitLineIndex:L.splitLineIndex;S==="change"&&p!=null&&L!=null&&pn({additionLine:n.additionLines[p.lineIndex],deletionLine:n.deletionLines[L.lineIndex],deletionLineIndex:I.deletionContent.length,additionLineIndex:I.additionContent.length,deletionDecorations:I.deletionDecorations,additionDecorations:I.additionDecorations,lineDiffType:c,maxLineDiffLength:m}),L!=null&&(M(n.deletionLines[L.lineIndex],L.lineIndex,I.deletionSegments,I.deletionContent),I.deletionInfo.push({type:S==="change"?"change-deletion":S,lineNumber:L.lineNumber,altLineNumber:S==="change"?void 0:p.lineNumber??void 0,lineIndex:`${L.unifiedLineIndex},${w}`})),p!=null&&(M(n.additionLines[p.lineIndex],p.lineIndex,I.additionSegments,I.additionContent),I.additionInfo.push({type:S==="change"?"change-addition":S,lineNumber:p.lineNumber,altLineNumber:S==="change"?void 0:L.lineNumber??void 0,lineIndex:`${p.unifiedLineIndex},${w}`}))}});for(const k of b.values()){if(k.deletionContent.length===0&&k.additionContent.length===0)continue;const p={name:n.prevName??n.name,contents:k.deletionContent.value},L={name:n.name,contents:k.additionContent.value},{deletionLines:S,additionLines:I}=Cn({deletionFile:p,deletionInfo:k.deletionInfo,deletionDecorations:k.deletionDecorations,additionFile:L,additionInfo:k.additionInfo,additionDecorations:k.additionDecorations,highlighter:e,options:r,languageOverride:a?"text":n.lang});if(f){l.deletionLines=S,l.additionLines=I;continue}if(k.deletionSegments.length>0)for(const w of k.deletionSegments)for(let x=0;x<w.count;x++)l.deletionLines[w.targetIndex+x]=S[w.originalOffset+x];else G(l.deletionLines,S);if(k.additionSegments.length>0)for(const w of k.additionSegments)for(let x=0;x<w.count;x++)l.additionLines[w.targetIndex+x]=I[w.originalOffset+x];else G(l.additionLines,I)}return{code:l,themeStyles:o,baseThemeType:s}}function mn(n,{deletionLineIndex:e,additionLineIndex:r,deletionDecorations:a,additionDecorations:h}){let i=0,d=0,u=-1,t=0,s=-1,o=0;for(const{value:c,added:l,removed:m}of n)m?(u===-1&&(u=i),i+=c.length,t=i):l?(s===-1&&(s=d),d+=c.length,o=d):(i+=c.length,d+=c.length);u!==-1&&a.push(V({line:e,spanStart:u,spanLength:t-u})),s!==-1&&h.push(V({line:r,spanStart:s,spanLength:o-s}))}function pn({deletionLine:n,additionLine:e,deletionLineIndex:r,additionLineIndex:a,deletionDecorations:h,additionDecorations:i,lineDiffType:d,maxLineDiffLength:u}){if(n==null||e==null||d==="none"||(n=B(n),e=B(e),n.length>u||e.length>u))return;const t=d==="char"?tn(n,e):on(n,e);if(d==="word-line"){mn(t,{deletionLineIndex:r,additionLineIndex:a,deletionDecorations:h,additionDecorations:i});return}const s=[],o=[],c=d==="word-alt",l=t.at(-1);for(const f of t){const C=f===l;!f.added&&!f.removed?(T({item:f,arr:s,enableJoin:c,isNeutral:!0,isLastItem:C}),T({item:f,arr:o,enableJoin:c,isNeutral:!0,isLastItem:C})):f.removed?T({item:f,arr:s,enableJoin:c,isLastItem:C}):T({item:f,arr:o,enableJoin:c,isLastItem:C})}let m=0;for(const f of s)f[0]===1&&h.push(V({line:r,spanStart:m,spanLength:f[1].length})),m+=f[1].length;m=0;for(const f of o)f[0]===1&&i.push(V({line:a,spanStart:m,spanLength:f[1].length})),m+=f[1].length}function In(){return{deletionContent:{push(n){this.value+=n,this.length++},value:"",length:0},additionContent:{push(n){this.value+=n,this.length++},value:"",length:0},deletionInfo:[],additionInfo:[],deletionDecorations:[],additionDecorations:[],deletionSegments:[],additionSegments:[]}}function Cn({deletionFile:n,additionFile:e,deletionInfo:r,additionInfo:a,highlighter:h,deletionDecorations:i,additionDecorations:d,languageOverride:u,options:{theme:t,...s}}){const o=u??D(n.name),c=u??D(e.name),{state:l,transformers:m}=en(s.useTokenTransformer),f=typeof t=="string"?{...s,lang:"text",theme:t,transformers:m,decorations:void 0,defaultColor:!1,cssVariablePrefix:_("token"),tokenizeTimeLimit:0}:{...s,lang:"text",themes:t,transformers:m,decorations:void 0,defaultColor:!1,cssVariablePrefix:_("token"),tokenizeTimeLimit:0};return{deletionLines:n.contents===""?[]:(f.lang=o,l.lineInfo=r,f.decorations=i,j(h.codeToHast(B(n.contents),f))),additionLines:e.contents===""?[]:(f.lang=c,f.decorations=d,l.lineInfo=a,j(h.codeToHast(B(e.contents),f)))}}function Pn(n){const e=n.lang??D(n.name),r=n.lang??(n.prevName!=null?D(n.prevName):"text");return e==="text"&&r==="text"}export{En as a,vn as b,xn as c,K as d,ln as e,rn as f,$ as g,wn as h,Pn as i,Rn as j,bn as k,q as l,On as m,Hn as n,zn as r};
@@ -1,4 +1,4 @@
1
- import{t as p}from"./themeResolver-BmJyTmjJ.js";import{b as F,q as C,i as x,o as N,t as R,j as S,s as T}from"./computeVirtualFileMetrics-CmPe29DM.js";function D(e){return p.hasResolvedThemes(e)}function K(e,n){return F(e.theme,n.theme)&&e.useTokenTransformer===n.useTokenTransformer&&e.tokenizeMaxLineLength===n.tokenizeMaxLineLength}const g=10,E=13,k=4,A=40;function b(e){const n=[0];let r=e.indexOf("\r"),i=e.indexOf(`
1
+ import{t as p}from"./themeResolver-BmJyTmjJ.js";import{b as F,q as C,i as x,o as N,t as R,j as S,s as T}from"./computeVirtualFileMetrics-C2WM6JC2.js";function D(e){return p.hasResolvedThemes(e)}function K(e,n){return F(e.theme,n.theme)&&e.useTokenTransformer===n.useTokenTransformer&&e.tokenizeMaxLineLength===n.tokenizeMaxLineLength}const g=10,E=13,k=4,A=40;function b(e){const n=[0];let r=e.indexOf("\r"),i=e.indexOf(`
2
2
  `),a=0,o=0;for(;r!==-1||i!==-1;){let t;if(r!==-1&&(i===-1||r<i)?i===r+1?(t=i+1,r=e.indexOf("\r",t),i=e.indexOf(`
3
3
  `,t)):(t=r+1,r=e.indexOf("\r",t)):(t=i+1,i=e.indexOf(`
4
4
  `,t)),n.push(t),++o===k){if(t-a<=A){for(let s=t;s<e.length;s++){const f=e.charCodeAt(s);(f===g||f===E)&&(f===E&&s+1<e.length&&e.charCodeAt(s+1)===g&&s++,n.push(s+1))}return n}a=t,o=0}}return n}function P(e){const n=b(e);return Array.from({length:n.length},(r,i)=>{const a=n[i],o=n[i+1]??e.length;return e.slice(a,o)})}const H={forcePlainText:!1};function W(e,n,{theme:r,tokenizeMaxLineLength:i,useTokenTransformer:a},{forcePlainText:o,startingLine:t,totalLines:s,lines:f}=H){o?(t??=0,s??=1/0):(t=0,s=1/0);const l=t>0||s<1/0,{state:_,transformers:c}=C(a),h=o?"text":e.lang??x(e.name),y=typeof r=="string"?n.getTheme(r).type:void 0,I=N({theme:r,highlighter:n});_.lineInfo=m=>({type:"context",lineIndex:m-1+t,lineNumber:m+t});const O=typeof r=="string"?{lang:h,theme:r,transformers:c,defaultColor:!1,cssVariablePrefix:T("token"),tokenizeMaxLineLength:i,tokenizeTimeLimit:0}:{lang:h,themes:r,transformers:c,defaultColor:!1,cssVariablePrefix:T("token"),tokenizeMaxLineLength:i,tokenizeTimeLimit:0},u=R(n.codeToHast(L(l?v(f??P(e.contents),t,s):e.contents),O)),d=l?new Array(t):u;return l&&S(d,u),{code:d,themeStyles:I,baseThemeType:y}}function L(e){return e.replace(/\r(?!\n)/g,`