@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 +1 @@
1
- import{u as h,o as w}from"./parseDiffFromFile-Cy0PNxun.js";function S({scrollTop:u,scrollHeight:e,height:t,fitPerfectly:s=!1,fitPerfectlyOverscroll:i=0,overscrollSize:n}){const o=t+n*2,l=s?t+i*2:o;if(e=Math.max(e,l),o>=e||s){const a=Math.max(u-i,0),d=Math.min(u+l,e);return{top:a,bottom:Math.max(d,a)}}let r=u+t/2-o/2,c=r+o;return r<0&&(r=0),c>e&&(c=e),r=Math.floor(Math.max(r,0)),{top:r,bottom:Math.ceil(Math.max(Math.min(c,e),r))}}function E(u,e){return u==null||e==null?u===e:u.top===e.top&&u.bottom===e.bottom}const D=1e3,O=D*4,R=[0,1e-6,.99999,1],y={overscrollSize:D,intersectionObserverMargin:O,resizeDebugging:!1};let m=0,T=-1;var I=class f{static __STOP=!1;static __lastScrollPosition=0;__id=`virtualizer-${++T}`;config;type="simple";intersectionObserver;scrollTop=0;height=0;scrollHeight=0;windowSpecs={top:0,bottom:0};root;contentContainer;resizeObserver;observers=new Map;visibleInstances=new Map;visibleInstancesDirty=!1;instancesChanged=new Set;reconcileQueue=new Set;scrollDirty=!0;heightDirty=!0;scrollHeightDirty=!0;renderedObservers=0;connectQueue=new Map;constructor(e){this.config={...y,...e}}setup(e,t){if(this.root==null){this.root=e,this.resizeObserver=new ResizeObserver(this.handleContainerResize),this.intersectionObserver=new IntersectionObserver(this.handleIntersectionChange,{root:this.root,threshold:R,rootMargin:`${this.config.intersectionObserverMargin}px 0px ${this.config.intersectionObserverMargin}px 0px`}),e instanceof Document?this.setupWindow():this.setupElement(t),window.__INSTANCE=this,window.__TOGGLE=()=>{f.__STOP?(f.__STOP=!1,(this.getScrollContainerElement()??window).scrollTo({top:f.__lastScrollPosition}),h(this.computeRenderRangeAndEmit)):(f.__lastScrollPosition=this.getScrollTop(),f.__STOP=!0)};for(const[s,i]of this.connectQueue.entries())this.connect(s,i);this.connectQueue.clear(),this.markDOMDirty(),h(this.computeRenderRangeAndEmit)}}instanceChanged(e,t){this.instancesChanged.add(e),t&&this.markDOMDirty(),h(this.computeRenderRangeAndEmit)}requestHeightReconcile(e){this.reconcileQueue.add(e),h(this.computeRenderRangeAndEmit)}getWindowSpecs(){return this.windowSpecs.top===0&&this.windowSpecs.bottom===0&&(this.windowSpecs=S({scrollTop:this.getScrollTop(),height:this.getHeight(),scrollHeight:this.getScrollHeight(),overscrollSize:this.config.overscrollSize})),this.windowSpecs}getRoot(){return this.root}isInstanceVisible(e,t){const s=this.getScrollTop(),i=this.getHeight(),n=this.config.intersectionObserverMargin,o=s-n,l=s+i+n;return!(e<o-t||e>l)}handleContainerResize=e=>{if(this.root==null)return;let t=!1;for(const s of e){const i=s.borderBoxSize[0].blockSize;this.root instanceof Document?i!==this.scrollHeight&&(this.scrollHeightDirty=!0,t=!0,this.config.resizeDebugging&&(console.log("Virtualizer: content size change",this.__id,{sizeChange:i-m,newSize:i}),m=i)):s.target===this.root?i!==this.height&&(this.heightDirty=!0,t=!0):s.target===this.contentContainer&&(this.scrollHeightDirty=!0,t=!0,this.config.resizeDebugging&&(console.log("Virtualizer: scroller size change",this.__id,{sizeChange:i-m,newSize:i}),m=i))}t&&h(this.computeRenderRangeAndEmit)};setupWindow(){if(this.root==null||!(this.root instanceof Document))throw new Error("Virtualizer.setupWindow: Invalid setup method");window.addEventListener("scroll",this.handleWindowScroll,{passive:!0}),window.addEventListener("resize",this.handleWindowResize,{passive:!0}),this.resizeObserver?.observe(this.root.documentElement)}setupElement(e){if(this.root==null||this.root instanceof Document)throw new Error("Virtualizer.setupElement: Invalid setup method");this.root.addEventListener("scroll",this.handleElementScroll,{passive:!0}),this.resizeObserver?.observe(this.root),e??=this.root.firstElementChild??void 0,e instanceof HTMLElement&&(this.contentContainer=e,this.resizeObserver?.observe(e))}cleanUp(){w(this.computeRenderRangeAndEmit),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.root?.removeEventListener("scroll",this.handleElementScroll),window.removeEventListener("scroll",this.handleWindowScroll),window.removeEventListener("resize",this.handleWindowResize),this.root=void 0,this.contentContainer=void 0,this.observers.clear(),this.visibleInstances.clear(),this.instancesChanged.clear(),this.reconcileQueue.clear(),this.connectQueue.clear(),this.visibleInstancesDirty=!1,this.windowSpecs={top:0,bottom:0},this.scrollTop=0,this.height=0,this.scrollHeight=0,this.scrollDirty=!0,this.heightDirty=!0,this.scrollHeightDirty=!0}getOffsetInScrollContainer(e){return this.getScrollTop()+g(e,this.getScrollContainerElement())}connect(e,t){if(this.observers.has(e))throw new Error("Virtualizer.connect: instance is already connected...");return this.intersectionObserver==null?this.connectQueue.set(e,t):(this.intersectionObserver.observe(e),this.observers.set(e,t),this.instancesChanged.add(t),this.markDOMDirty(),h(this.computeRenderRangeAndEmit)),()=>this.disconnect(e)}disconnect(e){const t=this.observers.get(e);this.connectQueue.delete(e),t!=null&&(this.intersectionObserver?.unobserve(e),this.observers.delete(e),this.instancesChanged.delete(t),this.reconcileQueue.delete(t),this.visibleInstances.delete(e)&&(this.visibleInstancesDirty=!0),this.markDOMDirty(),h(this.computeRenderRangeAndEmit))}handleWindowResize=()=>{f.__STOP||window.innerHeight===this.height||(this.heightDirty=!0,h(this.computeRenderRangeAndEmit))};handleWindowScroll=()=>{f.__STOP||this.root==null||!(this.root instanceof Document)||(this.scrollDirty=!0,h(this.computeRenderRangeAndEmit))};handleElementScroll=()=>{f.__STOP||this.root==null||this.root instanceof Document||(this.scrollDirty=!0,h(this.computeRenderRangeAndEmit))};computeRenderRangeAndEmit=()=>{if(f.__STOP)return;const e=this.heightDirty||this.scrollHeightDirty;let t=this.instancesChanged.size>0;if(this.instancesChanged.size===0){const n=S({scrollTop:this.getScrollTop(),height:this.getHeight(),scrollHeight:this.getScrollHeight(),overscrollSize:this.config.overscrollSize});if(!e&&E(this.windowSpecs,n)&&this.renderedObservers===this.observers.size&&!this.visibleInstancesDirty&&this.reconcileQueue.size===0)return;this.windowSpecs=n}this.visibleInstancesDirty=!1,this.renderedObservers=this.observers.size;const s=this.getScrollAnchor(this.height),i=new Set;for(const n of e?this.observers.values():this.visibleInstances.values())n.onRender(e)&&i.add(n);for(const n of this.instancesChanged)i.has(n)||n.onRender(e)&&i.add(n);this.scrollFix(s);for(const n of i)this.reconcileQueue.delete(n),n.reconcileHeights();for(const n of this.reconcileQueue)n.reconcileHeights()&&(t=!0);this.reconcileQueue.clear(),t||=this.instancesChanged.size>0,t&&this.markDOMDirty(),(t||e)&&h(this.computeRenderRangeAndEmit),i.clear(),this.instancesChanged.clear()};scrollFix(e){if(e==null)return;const t=this.getScrollContainerElement(),{lineIndex:s,lineOffset:i,fileElement:n,fileOffset:o,fileTypeOffset:l}=e;if(s!=null&&i!=null){const c=n.shadowRoot?.querySelector(`[data-line][data-line-index="${s}"]`);if(c instanceof HTMLElement){const a=g(c,t);if(a!==i){const d=a-i;this.applyScrollFix(d)}return}}const r=g(n,t);if(l==="top")r!==o&&this.applyScrollFix(r-o);else{const c=r+n.getBoundingClientRect().height;c!==o&&this.applyScrollFix(c-o)}}applyScrollFix(e){this.root==null||this.root instanceof Document?window.scrollTo({top:window.scrollY+e,behavior:"instant"}):this.root.scrollTo({top:this.root.scrollTop+e,behavior:"instant"}),this.markDOMDirty()}getScrollAnchor(e){const t=this.getScrollContainerElement();let s;for(const[i]of this.visibleInstances.entries()){const n=g(i,t),o=n+i.offsetHeight;let l,r;o<=0?(l=o,r="bottom"):(l=n,r="top");let c,a;if(o>0&&n<e)for(const p of i.shadowRoot?.querySelectorAll("[data-line][data-line-index]")??[]){if(!(p instanceof HTMLElement))continue;const v=p.dataset.lineIndex;if(v==null)continue;const b=g(p,t);if(!(b<0)){c=v,a=b;break}}if(s?.lineOffset!=null&&a==null)continue;let d=!1;(s==null||a!=null&&(s.lineOffset==null||a<s.lineOffset)||a==null&&s.lineOffset==null&&(l>=0&&(s.fileOffset<0||l<s.fileOffset)||l<0&&s.fileOffset<0&&l>s.fileOffset))&&(d=!0),d&&(s={fileElement:i,fileTypeOffset:r,fileOffset:l,lineIndex:c,lineOffset:a})}return s}handleIntersectionChange=e=>{this.scrollDirty=!0;for(const{target:t,isIntersecting:s}of e){if(!(t instanceof HTMLElement))throw new Error("Virtualizer.handleIntersectionChange: target not an HTMLElement");const i=this.observers.get(t);i!=null&&(s&&!this.visibleInstances.has(t)?(i.setVisibility(!0),this.visibleInstances.set(t,i),this.visibleInstancesDirty=!0):!s&&this.visibleInstances.has(t)&&(i.setVisibility(!1),this.visibleInstances.delete(t),this.visibleInstancesDirty=!0))}this.visibleInstancesDirty&&h(this.computeRenderRangeAndEmit)};getScrollTop(){if(!this.scrollDirty)return this.scrollTop;this.scrollDirty=!1;let e=this.root==null?0:this.root instanceof Document?window.scrollY:this.root.scrollTop;return e=this.clampScrollTop(e),this.scrollTop=e,e}scrollTo({top:e,behavior:t="auto"}){const{root:s}=this;if(s==null)return;const i=this.clampScrollTop(e);s instanceof Document?window.scrollTo({top:i,behavior:t}):s.scrollTo({top:i,behavior:t}),this.scrollDirty=!0,h(this.computeRenderRangeAndEmit)}clampScrollTop(e){return Math.max(0,Math.min(e,this.getScrollHeight()-this.getHeight()))}getScrollHeight(){return this.scrollHeightDirty?(this.scrollHeightDirty=!1,this.scrollHeight=this.root==null?0:this.root instanceof Document?this.root.documentElement.scrollHeight:this.root.scrollHeight,this.scrollHeight):this.scrollHeight}getHeight(){return this.heightDirty?(this.heightDirty=!1,this.height=this.root==null?0:this.root instanceof Document?globalThis.innerHeight:this.root.getBoundingClientRect().height,this.height):this.height}markDOMDirty(){this.scrollDirty=!0,this.scrollHeightDirty=!0,this.heightDirty=!0}getScrollContainerElement(){return this.root==null||this.root instanceof Document?void 0:this.root}};function g(u,e){const t=u.getBoundingClientRect(),s=e?.getBoundingClientRect().top??0;return t.top-s}export{I as V};
1
+ import{u as h,o as w}from"./parseDiffFromFile-BUgn-T9p.js";function S({scrollTop:u,scrollHeight:e,height:t,fitPerfectly:s=!1,fitPerfectlyOverscroll:i=0,overscrollSize:n}){const o=t+n*2,l=s?t+i*2:o;if(e=Math.max(e,l),o>=e||s){const a=Math.max(u-i,0),d=Math.min(u+l,e);return{top:a,bottom:Math.max(d,a)}}let r=u+t/2-o/2,c=r+o;return r<0&&(r=0),c>e&&(c=e),r=Math.floor(Math.max(r,0)),{top:r,bottom:Math.ceil(Math.max(Math.min(c,e),r))}}function E(u,e){return u==null||e==null?u===e:u.top===e.top&&u.bottom===e.bottom}const D=1e3,O=D*4,R=[0,1e-6,.99999,1],y={overscrollSize:D,intersectionObserverMargin:O,resizeDebugging:!1};let m=0,T=-1;var I=class f{static __STOP=!1;static __lastScrollPosition=0;__id=`virtualizer-${++T}`;config;type="simple";intersectionObserver;scrollTop=0;height=0;scrollHeight=0;windowSpecs={top:0,bottom:0};root;contentContainer;resizeObserver;observers=new Map;visibleInstances=new Map;visibleInstancesDirty=!1;instancesChanged=new Set;reconcileQueue=new Set;scrollDirty=!0;heightDirty=!0;scrollHeightDirty=!0;renderedObservers=0;connectQueue=new Map;constructor(e){this.config={...y,...e}}setup(e,t){if(this.root==null){this.root=e,this.resizeObserver=new ResizeObserver(this.handleContainerResize),this.intersectionObserver=new IntersectionObserver(this.handleIntersectionChange,{root:this.root,threshold:R,rootMargin:`${this.config.intersectionObserverMargin}px 0px ${this.config.intersectionObserverMargin}px 0px`}),e instanceof Document?this.setupWindow():this.setupElement(t),window.__INSTANCE=this,window.__TOGGLE=()=>{f.__STOP?(f.__STOP=!1,(this.getScrollContainerElement()??window).scrollTo({top:f.__lastScrollPosition}),h(this.computeRenderRangeAndEmit)):(f.__lastScrollPosition=this.getScrollTop(),f.__STOP=!0)};for(const[s,i]of this.connectQueue.entries())this.connect(s,i);this.connectQueue.clear(),this.markDOMDirty(),h(this.computeRenderRangeAndEmit)}}instanceChanged(e,t){this.instancesChanged.add(e),t&&this.markDOMDirty(),h(this.computeRenderRangeAndEmit)}requestHeightReconcile(e){this.reconcileQueue.add(e),h(this.computeRenderRangeAndEmit)}getWindowSpecs(){return this.windowSpecs.top===0&&this.windowSpecs.bottom===0&&(this.windowSpecs=S({scrollTop:this.getScrollTop(),height:this.getHeight(),scrollHeight:this.getScrollHeight(),overscrollSize:this.config.overscrollSize})),this.windowSpecs}getRoot(){return this.root}isInstanceVisible(e,t){const s=this.getScrollTop(),i=this.getHeight(),n=this.config.intersectionObserverMargin,o=s-n,l=s+i+n;return!(e<o-t||e>l)}handleContainerResize=e=>{if(this.root==null)return;let t=!1;for(const s of e){const i=s.borderBoxSize[0].blockSize;this.root instanceof Document?i!==this.scrollHeight&&(this.scrollHeightDirty=!0,t=!0,this.config.resizeDebugging&&(console.log("Virtualizer: content size change",this.__id,{sizeChange:i-m,newSize:i}),m=i)):s.target===this.root?i!==this.height&&(this.heightDirty=!0,t=!0):s.target===this.contentContainer&&(this.scrollHeightDirty=!0,t=!0,this.config.resizeDebugging&&(console.log("Virtualizer: scroller size change",this.__id,{sizeChange:i-m,newSize:i}),m=i))}t&&h(this.computeRenderRangeAndEmit)};setupWindow(){if(this.root==null||!(this.root instanceof Document))throw new Error("Virtualizer.setupWindow: Invalid setup method");window.addEventListener("scroll",this.handleWindowScroll,{passive:!0}),window.addEventListener("resize",this.handleWindowResize,{passive:!0}),this.resizeObserver?.observe(this.root.documentElement)}setupElement(e){if(this.root==null||this.root instanceof Document)throw new Error("Virtualizer.setupElement: Invalid setup method");this.root.addEventListener("scroll",this.handleElementScroll,{passive:!0}),this.resizeObserver?.observe(this.root),e??=this.root.firstElementChild??void 0,e instanceof HTMLElement&&(this.contentContainer=e,this.resizeObserver?.observe(e))}cleanUp(){w(this.computeRenderRangeAndEmit),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,this.root?.removeEventListener("scroll",this.handleElementScroll),window.removeEventListener("scroll",this.handleWindowScroll),window.removeEventListener("resize",this.handleWindowResize),this.root=void 0,this.contentContainer=void 0,this.observers.clear(),this.visibleInstances.clear(),this.instancesChanged.clear(),this.reconcileQueue.clear(),this.connectQueue.clear(),this.visibleInstancesDirty=!1,this.windowSpecs={top:0,bottom:0},this.scrollTop=0,this.height=0,this.scrollHeight=0,this.scrollDirty=!0,this.heightDirty=!0,this.scrollHeightDirty=!0}getOffsetInScrollContainer(e){return this.getScrollTop()+g(e,this.getScrollContainerElement())}connect(e,t){if(this.observers.has(e))throw new Error("Virtualizer.connect: instance is already connected...");return this.intersectionObserver==null?this.connectQueue.set(e,t):(this.intersectionObserver.observe(e),this.observers.set(e,t),this.instancesChanged.add(t),this.markDOMDirty(),h(this.computeRenderRangeAndEmit)),()=>this.disconnect(e)}disconnect(e){const t=this.observers.get(e);this.connectQueue.delete(e),t!=null&&(this.intersectionObserver?.unobserve(e),this.observers.delete(e),this.instancesChanged.delete(t),this.reconcileQueue.delete(t),this.visibleInstances.delete(e)&&(this.visibleInstancesDirty=!0),this.markDOMDirty(),h(this.computeRenderRangeAndEmit))}handleWindowResize=()=>{f.__STOP||window.innerHeight===this.height||(this.heightDirty=!0,h(this.computeRenderRangeAndEmit))};handleWindowScroll=()=>{f.__STOP||this.root==null||!(this.root instanceof Document)||(this.scrollDirty=!0,h(this.computeRenderRangeAndEmit))};handleElementScroll=()=>{f.__STOP||this.root==null||this.root instanceof Document||(this.scrollDirty=!0,h(this.computeRenderRangeAndEmit))};computeRenderRangeAndEmit=()=>{if(f.__STOP)return;const e=this.heightDirty||this.scrollHeightDirty;let t=this.instancesChanged.size>0;if(this.instancesChanged.size===0){const n=S({scrollTop:this.getScrollTop(),height:this.getHeight(),scrollHeight:this.getScrollHeight(),overscrollSize:this.config.overscrollSize});if(!e&&E(this.windowSpecs,n)&&this.renderedObservers===this.observers.size&&!this.visibleInstancesDirty&&this.reconcileQueue.size===0)return;this.windowSpecs=n}this.visibleInstancesDirty=!1,this.renderedObservers=this.observers.size;const s=this.getScrollAnchor(this.height),i=new Set;for(const n of e?this.observers.values():this.visibleInstances.values())n.onRender(e)&&i.add(n);for(const n of this.instancesChanged)i.has(n)||n.onRender(e)&&i.add(n);this.scrollFix(s);for(const n of i)this.reconcileQueue.delete(n),n.reconcileHeights();for(const n of this.reconcileQueue)n.reconcileHeights()&&(t=!0);this.reconcileQueue.clear(),t||=this.instancesChanged.size>0,t&&this.markDOMDirty(),(t||e)&&h(this.computeRenderRangeAndEmit),i.clear(),this.instancesChanged.clear()};scrollFix(e){if(e==null)return;const t=this.getScrollContainerElement(),{lineIndex:s,lineOffset:i,fileElement:n,fileOffset:o,fileTypeOffset:l}=e;if(s!=null&&i!=null){const c=n.shadowRoot?.querySelector(`[data-line][data-line-index="${s}"]`);if(c instanceof HTMLElement){const a=g(c,t);if(a!==i){const d=a-i;this.applyScrollFix(d)}return}}const r=g(n,t);if(l==="top")r!==o&&this.applyScrollFix(r-o);else{const c=r+n.getBoundingClientRect().height;c!==o&&this.applyScrollFix(c-o)}}applyScrollFix(e){this.root==null||this.root instanceof Document?window.scrollTo({top:window.scrollY+e,behavior:"instant"}):this.root.scrollTo({top:this.root.scrollTop+e,behavior:"instant"}),this.markDOMDirty()}getScrollAnchor(e){const t=this.getScrollContainerElement();let s;for(const[i]of this.visibleInstances.entries()){const n=g(i,t),o=n+i.offsetHeight;let l,r;o<=0?(l=o,r="bottom"):(l=n,r="top");let c,a;if(o>0&&n<e)for(const p of i.shadowRoot?.querySelectorAll("[data-line][data-line-index]")??[]){if(!(p instanceof HTMLElement))continue;const v=p.dataset.lineIndex;if(v==null)continue;const b=g(p,t);if(!(b<0)){c=v,a=b;break}}if(s?.lineOffset!=null&&a==null)continue;let d=!1;(s==null||a!=null&&(s.lineOffset==null||a<s.lineOffset)||a==null&&s.lineOffset==null&&(l>=0&&(s.fileOffset<0||l<s.fileOffset)||l<0&&s.fileOffset<0&&l>s.fileOffset))&&(d=!0),d&&(s={fileElement:i,fileTypeOffset:r,fileOffset:l,lineIndex:c,lineOffset:a})}return s}handleIntersectionChange=e=>{this.scrollDirty=!0;for(const{target:t,isIntersecting:s}of e){if(!(t instanceof HTMLElement))throw new Error("Virtualizer.handleIntersectionChange: target not an HTMLElement");const i=this.observers.get(t);i!=null&&(s&&!this.visibleInstances.has(t)?(i.setVisibility(!0),this.visibleInstances.set(t,i),this.visibleInstancesDirty=!0):!s&&this.visibleInstances.has(t)&&(i.setVisibility(!1),this.visibleInstances.delete(t),this.visibleInstancesDirty=!0))}this.visibleInstancesDirty&&h(this.computeRenderRangeAndEmit)};getScrollTop(){if(!this.scrollDirty)return this.scrollTop;this.scrollDirty=!1;let e=this.root==null?0:this.root instanceof Document?window.scrollY:this.root.scrollTop;return e=this.clampScrollTop(e),this.scrollTop=e,e}scrollTo({top:e,behavior:t="auto"}){const{root:s}=this;if(s==null)return;const i=this.clampScrollTop(e);s instanceof Document?window.scrollTo({top:i,behavior:t}):s.scrollTo({top:i,behavior:t}),this.scrollDirty=!0,h(this.computeRenderRangeAndEmit)}clampScrollTop(e){return Math.max(0,Math.min(e,this.getScrollHeight()-this.getHeight()))}getScrollHeight(){return this.scrollHeightDirty?(this.scrollHeightDirty=!1,this.scrollHeight=this.root==null?0:this.root instanceof Document?this.root.documentElement.scrollHeight:this.root.scrollHeight,this.scrollHeight):this.scrollHeight}getHeight(){return this.heightDirty?(this.heightDirty=!1,this.height=this.root==null?0:this.root instanceof Document?globalThis.innerHeight:this.root.getBoundingClientRect().height,this.height):this.height}markDOMDirty(){this.scrollDirty=!0,this.scrollHeightDirty=!0,this.heightDirty=!0}getScrollContainerElement(){return this.root==null||this.root instanceof Document?void 0:this.root}};function g(u,e){const t=u.getBoundingClientRect(),s=e?.getBoundingClientRect().top??0;return t.top-s}export{I as V};
@@ -0,0 +1,4 @@
1
+ import{r as c,j as s,f as U}from"./vendor-react-BUCujlKS.js";import{f as re,l as Ae,I as S,fQ as Bt,B as $,h as Z,aY as Cs,at as Wt,au as $t,av as qt,b1 as Rs,az as Is,cN as B,aA as Ms,L as Te,aB as Ps,N as Ts,aI as As,aE as Es,cO as ue,cP as Mt,cQ as Pt,cR as zs,aQ as we,K as Os,aR as Tt,aS as At,aU as Et,aV as zt,cF as Ot,aW as ye,bI as Dt,o as Ds}from"./useAppFontEffects-DGlvOqP_.js";import{h as Gt,D as Hs,u as je,g2 as Ls,g1 as Bs}from"./index-DxNa7xYB.js";import{bz as Ws,F as $s,N as qs}from"./runtimeEndpointReset-CZ5aafpl.js";import{f as Gs,u as Fs,b as Ks,a as Us,c as _s,B as Vs,C as Js,P as Xs}from"./patchFileDiff-Dt8LhgBh.js";import{W as Qs}from"./main-CfBSQM1H.js";import{P as Ys}from"./PierreDiffViewer-CnnR-dnD.js";import"./vendor-scheduler-7OC5HNn7.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-Det7U81h.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-CvuLsk7D.js";import"./vendor-tanstack-virtual-core-DPaNcJcT.js";import"./vendor-framer-motion-DxDVhOLc.js";import"./vendor-motion-dom-HXPOMxb7.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-codemirror-commands-C4G_dPWe.js";import"./vendor-codemirror-state-Dek9sMtw.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-1e0FQ6Wn.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-language-DufXoQvE.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-DbpEcZM0.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-BSHQHbKu.js";import"./vendor-codemirror-lang-json-BzgckzmB.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-Cayfb29q.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-BQWerHsJ.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-D2TEBIvZ.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CtwSWKtX.js";import"./vendor-codemirror-lang-python-jAMtYiA9.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-capacitor-core-B4EWRrHz.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-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-BmFcUkbQ.js";import"./space-apply-DM_2pRW7.js";import"./vendor-cron-parser-CjvYVigk.js";import"./vendor-luxon-BZ0puJYg.js";import"./parseDiffFromFile-BUgn-T9p.js";import"./computeVirtualFileMetrics-C2WM6JC2.js";import"./vendor-shiki-Bbf2GEcE.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-engine-javascript-Cme4830A.js";import"./vendor-oniguruma-to-es-DLBnFDCE.js";import"./vendor-oniguruma-parser-C0D4_9rT.js";import"./vendor-regex-BBWcyTkg.js";import"./vendor-regex-utilities-2BQyy0xI.js";import"./vendor-regex-recursion-JU4mF-dD.js";import"./vendor-shikijs-transformers-CZWsLLKm.js";import"./vendor-diff-C3JhlQdm.js";import"./vendor-katex-CuQvj9-L.js";import"./useRootScrollLock-DMPpvpNP.js";import"./fileTreeStatus-D438yi8M.js";import"./sessionOwnership-BSuxCEhb.js";import"./isDiffPlainText-Dgbw8VKk.js";import"./VirtualizedFileDiff-CFpjL8Ns.js";import"./Virtualizer-C0IsclZn.js";import"./useInlineCommentController-kMN4Wg_D.js";import"./appThemeRegistry-B9gkFq9i.js";import"./textMateThemeFromAppTheme-DlsTphbY.js";const Zs=n=>{if(!n?.walkthrough)return null;const t=new Map(n.hunks.map(a=>[a.id,a])),e=new Set,r=[],l=[];for(const[a,h]of n.walkthrough.chapters.entries()){const u=[];for(const g of h.stops){const m=[],p=[];for(const i of g.hunkIds){const y=t.get(i);y?(m.push(y),e.add(i)):p.push(i)}const f={stop:g,chapter:h,chapterIndex:a,position:r.length+1,hunks:m,missingHunkIds:p,isStale:p.length>0};r.push(f),u.push(f)}l.push({chapter:h,stops:u})}return{walkthrough:n.walkthrough,stops:r,chapters:l,uncoveredHunks:n.hunks.filter(a=>!e.has(a.id)),staleStopCount:r.filter(a=>a.isStale).length,isStale:r.some(a=>a.isStale)}},eo=n=>{const t=new Map;for(const e of n){const r=t.get(e.path);if(r){r.added+=e.added,r.deleted+=e.deleted;continue}t.set(e.path,{path:e.path,added:e.added,deleted:e.deleted})}return[...t.values()]},Ft=n=>{const t=[];for(const e of n){const r=t.at(-1);if(r&&r.path===e.path){r.hunks.push(e);continue}t.push({path:e.path,hunks:[e]})}return t},to=n=>{if(n.length===0)return"";if(n.length===1)return n[0].patch;const t=n[0].patch,e=t.indexOf(`
2
+ @@`);if(e===-1)return t;const r=t.slice(0,e),l=n.map(a=>{const h=a.patch.indexOf(`
3
+ @@`);return h===-1?"":a.patch.slice(h+1)});return`${r}
4
+ ${l.join("")}`},so=n=>n?`${n.providerID}/${n.modelID}`:"",oo=({reason:n,model:t,requiredChars:e,availableChars:r,onRetry:l})=>{const{t:a}=re(),h=Ae(k=>k.modelsMetadata),[u,g]=c.useState(void 0),[m,p]=c.useState(!1),f=n==="context-too-small"||n==="structured-output-unsupported"||n==="output-exhausted";c.useEffect(()=>{if(!f||u!==void 0)return;let k=!1;return(async()=>{try{const x=await Gt("/api/small-model",{method:"GET",headers:{Accept:"application/json"}});if(!x.ok)return;const I=await x.json().catch(()=>null);!k&&Array.isArray(I?.authenticatedProviders)&&g(I.authenticatedProviders.filter(P=>typeof P=="string"))}catch{}})(),()=>{k=!0}},[f,u]);const i=c.useCallback(async(k,x)=>{if(!k||!x||m)return;const I=`${k}/${x}`;p(!0);try{await Hs({walkthroughModelOverride:I}),l()}catch(P){console.warn("Failed to save small model override:",P)}finally{p(!1)}},[l,m]),y=c.useCallback((k,x)=>h.get(`${k}/${x}`)?.structured_output!==!1,[h]),b=so(t),w=()=>{if(n==="no-model")return a("walkthrough.blocked.noModel.description");if(n==="empty-diff")return a("walkthrough.blocked.emptyDiff.description");if(n==="only-generated")return a("walkthrough.blocked.onlyGenerated.description");if(n==="server-unsupported")return a("walkthrough.blocked.serverUnsupported.description");if(n==="output-exhausted")return b?a("walkthrough.blocked.outputExhausted.description",{model:b}):a("walkthrough.blocked.outputExhausted.descriptionUnknownModel");if(n==="structured-output-unsupported")return b?a("walkthrough.blocked.structuredOutput.description",{model:b}):a("walkthrough.blocked.structuredOutput.descriptionUnknownModel");const k=Math.ceil((e??0)/1e3),x=Math.ceil((r??0)/1e3);return b?a("walkthrough.blocked.contextTooSmall.description",{model:b,required:k,available:x}):a("walkthrough.blocked.contextTooSmall.descriptionUnknownModel",{required:k,available:x})},j=()=>a(n==="no-model"?"walkthrough.blocked.noModel.title":n==="empty-diff"?"walkthrough.blocked.emptyDiff.title":n==="only-generated"?"walkthrough.blocked.onlyGenerated.title":n==="server-unsupported"?"walkthrough.blocked.serverUnsupported.title":n==="output-exhausted"?"walkthrough.blocked.outputExhausted.title":n==="structured-output-unsupported"?"walkthrough.blocked.structuredOutput.title":"walkthrough.blocked.contextTooSmall.title");return s.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:[s.jsx(S,{name:n==="empty-diff"||n==="only-generated"?"information":"error-warning",className:"size-6 text-muted-foreground"}),s.jsx("h3",{className:"typography-ui-label font-semibold text-foreground",children:j()}),s.jsx("p",{className:"typography-meta max-w-md text-muted-foreground",children:w()}),f&&s.jsxs("div",{className:"flex flex-col items-center gap-2 pt-2",children:[s.jsx("span",{className:"typography-micro text-muted-foreground",children:a("walkthrough.blocked.chooseModel")}),s.jsx(Bt,{providerId:t?.providerID??"",modelId:t?.modelID??"",onChange:(k,x)=>{i(k,x)},allowedProviderIds:u??[],isModelAllowed:y})]}),(n==="empty-diff"||n==="only-generated"||n==="server-unsupported")&&s.jsx($,{type:"button",variant:"outline",size:"sm",onClick:l,children:a("walkthrough.action.refresh")})]})},ro=[{labelKey:"walkthrough.stage.collecting"},{labelKey:"walkthrough.stage.asking"},{labelKey:"walkthrough.stage.assembling"}],no=n=>{const t=U.c(6),{progress:e}=n,{t:r}=re(),{completedCount:l,activeIndex:a}=e;let h;t[0]!==a||t[1]!==l||t[2]!==r?(h=ro.map((g,m)=>{const p=m<l,f=a===m;return s.jsxs("li",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"flex size-4 shrink-0 items-center justify-center",children:p?s.jsx(S,{name:"check",className:"size-3.5 text-status-success"}):f?s.jsx(S,{name:"loader-4",className:"size-3.5 animate-spin text-[var(--status-info)]"}):s.jsx("span",{className:"size-1.5 rounded-full bg-surface-muted"})}),s.jsx("span",{className:Z("typography-meta",f?"text-foreground":p?"text-muted-foreground":"text-muted-foreground/60"),children:r(g.labelKey)})]},g.labelKey)}),t[0]=a,t[1]=l,t[2]=r,t[3]=h):h=t[3];let u;return t[4]!==h?(u=s.jsx("ul",{className:"flex flex-col gap-2 text-left",children:h}),t[4]=h,t[5]=u):u=t[5],u},pe=["collecting","asking","assembling"],Xe=450,ao=n=>n==="retrying"?pe.indexOf("asking"):n?pe.indexOf(n):-1,io=(n,t)=>Math.min(n+1,t),lo=(n,t)=>{const e=U.c(17),[r,l]=c.useState(-1),a=c.useRef(0);let h;e[0]!==t||e[1]!==r||e[2]!==n?(h=t?Math.max(ao(n),0):r<0?-1:pe.length,e[0]=t,e[1]=r,e[2]=n,e[3]=h):h=e[3];const u=h;let g,m;e[4]!==t||e[5]!==r||e[6]!==u?(g=()=>{if(u<=r){u<r&&t&&(l(u),a.current=Date.now());return}const k=Date.now()-a.current,x=()=>{a.current=Date.now(),l(P=>io(P,u))};if(r<0||k>=Xe){x();return}const I=setTimeout(x,Xe-k);return()=>clearTimeout(I)},m=[t,r,u],e[4]=t,e[5]=r,e[6]=u,e[7]=g,e[8]=m):(g=e[7],m=e[8]),c.useEffect(g,m);let p,f;e[9]!==t||e[10]!==r?(p=()=>{if(t||r<pe.length)return;const k=setTimeout(()=>l(-1),Xe);return()=>clearTimeout(k)},f=[t,r],e[9]=t,e[10]=r,e[11]=p,e[12]=f):(p=e[11],f=e[12]),c.useEffect(p,f);const i=r>=pe.length,y=Math.max(0,Math.min(r,pe.length)),b=i||r<0?null:r,w=!t&&r>=0;let j;return e[13]!==y||e[14]!==b||e[15]!==w?(j={completedCount:y,activeIndex:b,holding:w},e[13]=y,e[14]=b,e[15]=w,e[16]=j):j=e[16],j},Kt=c.memo(function(t){const e=U.c(11),{path:r,hunks:l,renderSideBySide:a,wrapLines:h}=t;let u;if(e[0]!==l||e[1]!==r){const f=to(l);u=f?Gs(r,f):void 0,e[0]=l,e[1]=r,e[2]=u}else u=e[2];const g=u;if(!g)return null;let m;e[3]!==r?(m=Cs(r)||"",e[3]=r,e[4]=m):m=e[4];let p;return e[5]!==g||e[6]!==r||e[7]!==a||e[8]!==m||e[9]!==h?(p=s.jsx(Ys,{original:"",modified:"",fileDiff:g,language:m,fileName:r,renderSideBySide:a,wrapLines:h,layout:"inline"}),e[5]=g,e[6]=r,e[7]=a,e[8]=m,e[9]=h,e[10]=p):p=e[10],p}),Qe=n=>`walkthrough-stop-${n}`,co={critical:"border border-[var(--interactive-border)] font-medium text-foreground",normal:"bg-surface-muted text-muted-foreground",context:"bg-surface-muted text-muted-foreground"},uo=n=>{const t=U.c(22),{stopView:e}=n,{t:r}=re(),{stop:l}=e;let a;t[0]!==e.position?(a=s.jsx("span",{className:"typography-micro flex h-5 min-w-5 shrink-0 items-center justify-center rounded-full bg-surface-muted px-1.5 tabular-nums text-muted-foreground",children:e.position}),t[0]=e.position,t[1]=a):a=t[1];let h;t[2]!==l.title?(h=s.jsx("h3",{className:"typography-ui-label font-semibold text-foreground",children:l.title}),t[2]=l.title,t[3]=h):h=t[3];let u;t[4]!==l.importance||t[5]!==r?(u=l.importance!=="normal"&&s.jsxs(Wt,{children:[s.jsx($t,{className:Z("typography-micro flex h-5 items-center rounded px-1.5 leading-none",co[l.importance]),children:l.importance==="critical"?r("walkthrough.importance.critical"):r("walkthrough.importance.context")}),s.jsx(qt,{className:"max-w-64",children:s.jsx("p",{className:"typography-micro leading-tight",children:l.importance==="critical"?r("walkthrough.importance.criticalHint"):r("walkthrough.importance.contextHint")})})]}),t[4]=l.importance,t[5]=r,t[6]=u):u=t[6];let g;t[7]!==a||t[8]!==h||t[9]!==u?(g=s.jsxs("div",{className:"flex items-center gap-2",children:[a,h,u]}),t[7]=a,t[8]=h,t[9]=u,t[10]=g):g=t[10];let m;t[11]!==l.prose?(m=s.jsx("p",{className:"typography-body text-muted-foreground",children:l.prose}),t[11]=l.prose,t[12]=m):m=t[12];let p;t[13]!==e.hunks||t[14]!==e.isStale||t[15]!==e.missingHunkIds||t[16]!==r?(p=e.isStale&&s.jsxs("p",{className:"typography-meta flex items-center gap-1.5 text-status-warning",children:[s.jsx(S,{name:"error-warning",className:"size-3.5 shrink-0"}),e.hunks.length===0?r("walkthrough.stop.staleAll"):r("walkthrough.stop.stalePartial",{count:e.missingHunkIds.length})]}),t[13]=e.hunks,t[14]=e.isStale,t[15]=e.missingHunkIds,t[16]=r,t[17]=p):p=t[17];let f;return t[18]!==g||t[19]!==m||t[20]!==p?(f=s.jsxs("header",{className:"flex flex-col gap-2 px-4 pt-5 pb-3",children:[g,m,p]}),t[18]=g,t[19]=m,t[20]=p,t[21]=f):f=t[21],f},Ut=n=>{const t=U.c(2),{path:e}=n;let r;return t[0]!==e?(r=s.jsxs("div",{className:"sticky top-0 z-10 flex items-center gap-1.5 border-b border-[var(--interactive-border)]/35 bg-[var(--surface-elevated)]/90 px-4 py-1.5 backdrop-blur-md supports-[backdrop-filter]:bg-[var(--surface-elevated)]/80",children:[s.jsx(Rs,{filePath:e,className:"size-3.5 shrink-0"}),s.jsx("span",{className:"typography-meta truncate font-mono text-foreground",children:e})]}),t[0]=e,t[1]=r):r=t[1],r},po=n=>{const t=U.c(11),{hunks:e,renderSideBySide:r,wrapLines:l}=n;let a;t[0]!==e?(a=Ft(e),t[0]=e,t[1]=a):a=t[1];const h=a;let u;if(t[2]!==r||t[3]!==h||t[4]!==l){let m;t[6]!==r||t[7]!==l?(m=(p,f)=>s.jsxs("div",{children:[s.jsx(Ut,{path:p.path}),s.jsx(Kt,{path:p.path,hunks:p.hunks,renderSideBySide:r,wrapLines:l})]},`${p.path}-${f}`),t[6]=r,t[7]=l,t[8]=m):m=t[8],u=h.map(m),t[2]=r,t[3]=h,t[4]=l,t[5]=u}else u=t[5];let g;return t[9]!==u?(g=s.jsx(s.Fragment,{children:u}),t[9]=u,t[10]=g):g=t[10],g},ho=c.memo(function(t){const e=U.c(35),{view:r,activeStopId:l,scrollToStopId:a,onActiveStopChange:h,onScrollHandled:u,renderSideBySide:g,wrapLines:m}=t,{t:p}=re(),f=c.useRef(null),[i,y]=c.useState(!1),b=c.useRef(null),w=c.useRef(null);let j,k;e[0]===Symbol.for("react.memo_cache_sentinel")?(j=()=>()=>{w.current!==null&&window.clearTimeout(w.current)},k=[],e[0]=j,e[1]=k):(j=e[0],k=e[1]),c.useEffect(j,k);let x,I;e[2]!==u||e[3]!==a?(x=()=>{if(!a)return;const R=document.getElementById(Qe(a));R&&(b.current=a,R.scrollIntoView({behavior:"auto",block:"start"}),w.current!==null&&window.clearTimeout(w.current),w.current=window.setTimeout(()=>{b.current=null,w.current=null},250)),u()},I=[a,u],e[2]=u,e[3]=a,e[4]=x,e[5]=I):(x=e[4],I=e[5]),c.useEffect(x,I);let P;e[6]!==h?(P=R=>{const E=R.filter(mo).sort(go)[0];if(!E)return;const _=E.target.getAttribute("data-stop-id");if(!_)return;const ee=b.current;if(ee){_===ee&&(b.current=null);return}h(_)},e[6]=h,e[7]=P):P=e[7];const ne=P;let q,ae;e[8]!==ne||e[9]!==r.stops?(q=()=>{const R=f.current;if(!R)return;const E=new IntersectionObserver(ne,{root:R,rootMargin:"0px 0px -70% 0px",threshold:0});for(const _ of r.stops){const ee=document.getElementById(Qe(_.stop.id));ee&&E.observe(ee)}return()=>E.disconnect()},ae=[ne,r.stops],e[8]=ne,e[9]=r.stops,e[10]=q,e[11]=ae):(q=e[10],ae=e[11]),c.useEffect(q,ae);let H;e[12]!==r.uncoveredHunks?(H=Ft(r.uncoveredHunks),e[12]=r.uncoveredHunks,e[13]=H):H=e[13];const D=H;let L;if(e[14]!==l||e[15]!==g||e[16]!==p||e[17]!==r.stops||e[18]!==m){let R;e[20]!==l||e[21]!==g||e[22]!==p||e[23]!==m?(R=E=>s.jsxs("section",{id:Qe(E.stop.id),"data-stop-id":E.stop.id,className:Z("border-b border-border/60",l===E.stop.id&&"bg-interactive-selection/5"),children:[s.jsx(uo,{stopView:E}),E.hunks.length>0?s.jsx(po,{hunks:E.hunks,renderSideBySide:g,wrapLines:m}):s.jsx("p",{className:"typography-meta px-4 pb-4 text-muted-foreground",children:p("walkthrough.stop.noCode")})]},E.stop.id),e[20]=l,e[21]=g,e[22]=p,e[23]=m,e[24]=R):R=e[24],L=r.stops.map(R),e[14]=l,e[15]=g,e[16]=p,e[17]=r.stops,e[18]=m,e[19]=L}else L=e[19];let G;e[25]!==g||e[26]!==p||e[27]!==i||e[28]!==D||e[29]!==r.uncoveredHunks.length||e[30]!==m?(G=r.uncoveredHunks.length>0&&s.jsxs("section",{className:"border-b border-border/60",children:[s.jsxs($,{type:"button",variant:"ghost",className:"h-auto w-full justify-start gap-2 px-4 py-3",onClick:()=>y(fo),"aria-expanded":i,children:[s.jsx(S,{name:i?"arrow-down-s":"arrow-right-s",className:"size-4 shrink-0"}),s.jsx("span",{className:"typography-ui-label text-muted-foreground",children:p("walkthrough.uncovered.title",{count:r.uncoveredHunks.length})})]}),!i&&s.jsx("p",{className:"typography-meta px-4 pb-3 pl-10 text-muted-foreground",children:p("walkthrough.uncovered.description")}),i&&D.map((R,E)=>s.jsxs("div",{children:[s.jsx(Ut,{path:R.path}),s.jsx(Kt,{path:R.path,hunks:R.hunks,renderSideBySide:g,wrapLines:m})]},`${R.path}-${E}`))]}),e[25]=g,e[26]=p,e[27]=i,e[28]=D,e[29]=r.uncoveredHunks.length,e[30]=m,e[31]=G):G=e[31];let ie;return e[32]!==G||e[33]!==L?(ie=s.jsxs("div",{ref:f,className:"min-h-0 flex-1 overflow-y-auto","data-diff-virtual-root":!0,"data-diff-virtual-content":!0,children:[L,G]}),e[32]=G,e[33]=L,e[34]=ie):ie=e[34],ie});function mo(n){return n.isIntersecting}function go(n,t){return n.boundingClientRect.top-t.boundingClientRect.top}function fo(n){return!n}const xo={bug:"bug",wrench:"tools",path:"compass-3",flask:"flask",doc:"file-text",gear:"settings-3"},ko=n=>{const t=U.c(30),{stopView:e,isActive:r,isVisited:l,onSelect:a,activeRef:h}=n,{t:u}=re();let g;if(t[0]!==h||t[1]!==r||t[2]!==l||t[3]!==a||t[4]!==e.hunks||t[5]!==e.isStale||t[6]!==e.position||t[7]!==e.stop.title||t[8]!==u){const m=eo(e.hunks),p=r&&"bg-interactive-selection text-interactive-selection-foreground";let f;t[10]!==p?(f=Z("flex w-full flex-col gap-1 rounded px-2 py-1.5 text-left transition-colors","hover:bg-interactive-hover",p),t[10]=p,t[11]=f):f=t[11];const i=r?"bg-interactive-selection-foreground/20":l?"bg-status-success/15 text-status-success":"bg-surface-muted text-muted-foreground";let y;t[12]!==i?(y=Z("typography-micro flex h-4 min-w-4 shrink-0 items-center justify-center rounded-full px-1 tabular-nums",i),t[12]=i,t[13]=y):y=t[13];let b;t[14]!==r||t[15]!==l||t[16]!==e.position?(b=l&&!r?s.jsx(S,{name:"check",className:"size-2.5"}):e.position,t[14]=r,t[15]=l,t[16]=e.position,t[17]=b):b=t[17];let w;t[18]!==y||t[19]!==b?(w=s.jsx("span",{className:y,children:b}),t[18]=y,t[19]=b,t[20]=w):w=t[20];let j;t[21]!==e.stop.title?(j=s.jsx("span",{className:"typography-meta truncate font-medium",children:e.stop.title}),t[21]=e.stop.title,t[22]=j):j=t[22];let k;t[23]!==e.isStale||t[24]!==u?(k=e.isStale&&s.jsx(S,{name:"error-warning",className:"size-3 shrink-0 text-status-warning","aria-label":u("walkthrough.stop.staleShort")}),t[23]=e.isStale,t[24]=u,t[25]=k):k=t[25];let x;t[26]!==w||t[27]!==j||t[28]!==k?(x=s.jsxs("span",{className:"flex items-center gap-2",children:[w,j,k]}),t[26]=w,t[27]=j,t[28]=k,t[29]=x):x=t[29],g=s.jsx("li",{children:s.jsxs("button",{ref:r?h:void 0,type:"button",onClick:a,"aria-current":r?"step":void 0,className:f,children:[x,m.length>0&&s.jsxs("span",{className:"typography-micro flex flex-col gap-0.5 pl-6 text-muted-foreground",children:[m.slice(0,3).map(vo),m.length>3&&s.jsx("span",{children:u("walkthrough.toc.moreFiles",{count:m.length-3})})]})]})}),t[0]=h,t[1]=r,t[2]=l,t[3]=a,t[4]=e.hunks,t[5]=e.isStale,t[6]=e.position,t[7]=e.stop.title,t[8]=u,t[9]=g}else g=t[9];return g},bo=c.memo(function(t){const e=U.c(20),{view:r,activeStopId:l,visitedStopIds:a,onSelectStop:h,width:u}=t,{t:g}=re(),m=c.useRef(null);let p;e[0]===Symbol.for("react.memo_cache_sentinel")?(p=()=>{m.current?.scrollIntoView({block:"nearest"})},e[0]=p):p=e[0];let f;e[1]!==l?(f=[l],e[1]=l,e[2]=f):f=e[2],c.useEffect(p,f);let i;e[3]!==u?(i={width:u},e[3]=u,e[4]=i):i=e[4];let y;e[5]!==r.walkthrough.focus?(y=r.walkthrough.focus&&s.jsx("p",{className:"typography-meta px-2 pb-3 pt-1 text-muted-foreground",children:r.walkthrough.focus}),e[5]=r.walkthrough.focus,e[6]=y):y=e[6];let b;e[7]!==l||e[8]!==h||e[9]!==r.chapters||e[10]!==a?(b=r.chapters.map(k=>{const{chapter:x,stops:I}=k;return s.jsxs("section",{className:"pb-3",children:[s.jsxs("h4",{className:"typography-micro flex items-center gap-1.5 px-2 py-1 font-semibold uppercase tracking-wide text-muted-foreground",children:[s.jsx(S,{name:xo[x.icon]??"file-text",className:"size-3 shrink-0"}),s.jsx("span",{className:"truncate",children:x.title})]}),s.jsx("ul",{className:"flex flex-col gap-0.5",children:I.map(P=>s.jsx(ko,{stopView:P,isActive:l===P.stop.id,isVisited:a.has(P.stop.id),onSelect:()=>h(P.stop.id),activeRef:m},P.stop.id))})]},x.id)}),e[7]=l,e[8]=h,e[9]=r.chapters,e[10]=a,e[11]=b):b=e[11];let w;e[12]!==g||e[13]!==r.uncoveredHunks.length?(w=r.uncoveredHunks.length>0&&s.jsx("p",{className:"typography-micro mt-auto px-2 pt-3 text-muted-foreground",children:g("walkthrough.toc.uncovered",{count:r.uncoveredHunks.length})}),e[12]=g,e[13]=r.uncoveredHunks.length,e[14]=w):w=e[14];let j;return e[15]!==i||e[16]!==y||e[17]!==b||e[18]!==w?(j=s.jsxs("nav",{className:"flex shrink-0 flex-col overflow-y-auto border-r border-border/60 p-2",style:i,children:[y,b,w]}),e[15]=i,e[16]=y,e[17]=b,e[18]=w,e[19]=j):j=e[19],j});function vo(n){return s.jsx("span",{className:"truncate font-mono",children:n.path},n.path)}const wo=["all","staged","working"],yo="https://docs.openchamber.dev/walkthrough/",Ht="typography-meta font-normal text-muted-foreground",Lt=720,de=180,Ye=.5,jo=680,Fn=({directory:n,visible:t=!0})=>{const{t:e,locale:r,locales:l,label:a}=re(),h=c.useRef(null),[u,g]=c.useState(0),{rootIsGitRepo:m,gitDirectory:p,nestedRepos:f}=Is(n||null,{enabled:t}),i=p??n;c.useEffect(()=>{const o=h.current;if(!o||typeof ResizeObserver>"u")return;const v=new ResizeObserver(M=>{g(M[0]?.contentRect.width??0)});return v.observe(o),()=>v.disconnect()},[]);const y=je(o=>o.walkthroughTocWidth),b=je(o=>o.setWalkthroughTocWidth),[w,j]=c.useState(!1),k=u===0||u>=Lt,x=u>0&&u<jo,I=Math.min(Math.max(y,de),Math.max(de,(u||Lt)*Ye)),P=c.useCallback(o=>{o.preventDefault();const v=o.clientX,M=I,A=Math.max(de,(h.current?.clientWidth??0)*Ye);j(!0);const It=Ss=>{const Ns=Math.min(A,Math.max(de,M+Ss.clientX-v));b(Ns)},Pe=()=>{j(!1),window.removeEventListener("pointermove",It),window.removeEventListener("pointerup",Pe),window.removeEventListener("pointercancel",Pe)};window.addEventListener("pointermove",It),window.addEventListener("pointerup",Pe),window.addEventListener("pointercancel",Pe)},[b,I]),ne=c.useCallback(o=>{const v=o.shiftKey?40:10,M=o.key==="ArrowLeft"?-v:o.key==="ArrowRight"?v:0;if(M===0)return;o.preventDefault();const A=Math.max(de,(h.current?.clientWidth??0)*Ye);b(Math.min(A,Math.max(de,I+M)))},[b,I]),[q,ae]=c.useState("all"),[H,D]=c.useState(null),[L,G]=c.useState(null),[ie,R]=c.useState(null),[E,_]=c.useState(()=>new Set),ee=je(o=>o.diffLayoutPreference),_t=je(o=>o.diffWrapLines),Vt=ee==="side-by-side",O=B(o=>o.getRequestedTarget(i)),he=B(o=>o.clearRequestedTarget),Jt=je(o=>o.openContextPanelTab),Xt=Ms(i||null),Se=Te(o=>o.runtimeKey),[Qt,Yt]=c.useState(0);c.useEffect(()=>Ls(o=>{o===Bs(i,Se)&&Yt(v=>v+1)}),[i,Se]);const Ee=Ps(i||null),Zt=Fs(o=>o.setOverride),Ze=Te(o=>o.ensureAll),{sourceControl:ze,git:et}=Ts(),F=As(i,ze);c.useEffect(()=>{t&&i&&Ze(i,et)},[i,Ze,et,t]);const T=Xt?.current??null,Ne=H?.directory===i&&H.kind==="commit"&&!O,te=Ne||O?.source.kind==="commit",tt=O?.source.kind==="commit"?O.source.hash:void 0,V=Ks(i||null,T,t&&te,tt),J=V.selectedCommit?.hash??tt??null,{base:me,resolved:es,revision:ts}=Us(i||null,T,t),X=c.useMemo(()=>{const o=T;if(!o||!me||me===o)return null;const v=Ee?.all??[],M=Ws(me,{localBranches:v.filter(A=>!A.startsWith("remotes/")),remoteBranches:v.filter(A=>A.startsWith("remotes/")).map(A=>A.slice(8)),remoteNames:new Set(F.read?.repository.remotes.map(A=>A.name)??[]),primaryRemote:F.contexts[0]?.primaryRemote});return M?{kind:"branch",baseRef:M,headRef:o}:null},[F.contexts,F.read,Ee,me,T]),Oe=Es(o=>o.entries),st=ue(o=>o.ensureEntry),ot=ue(o=>o.setParams),rt=ue(o=>o.beginActiveContextsLoad),nt=ue(o=>o.commitActiveContexts),at=ue(o=>o.releaseActiveContexts),Ce=c.useId(),it=ue(o=>o.refreshTargets);c.useEffect(()=>{if(!i)return;const o=F.scope.runtimeKey,v=rt(o,i,Ce),M=F.contexts.filter(A=>Mt(Oe[Pt(A)],A).connected);return nt(o,i,Ce,v,M),()=>{at(o,i,Ce)}},[rt,F.contexts,F.scope.runtimeKey,nt,i,at,Oe,Ce]);const C=F.contexts[0]??null,ss=C?Oe[Pt(C)]:void 0,Re=C?Mt(ss,C):{authChecked:!1,connected:!1};c.useEffect(()=>{if(!C||!T)return;const o=zs(C,T);st(o),ot(o,{directory:C.directory,branch:T,remoteName:C.primaryRemote,canShow:!0,identity:C,readContext:C,sourceControl:ze,authChecked:Re.authChecked,connected:Re.connected}),it([{context:C,branch:T}])},[T,st,C,Re.authChecked,Re.connected,it,ot,ze]);const De=H?.directory===i&&H.kind==="pr"&&!O,Q=De||O?.source.kind==="pr",se=_s(i||null,T,C,t&&Q,O?.source.kind==="pr"?O.source:void 0),Y=se.selectedSource,ge=C?.provider==="github"||C?.provider==="gitlab",fe=se.provider,z=c.useMemo(()=>Q&&Y&&ge&&C?{source:Y,context:C}:te&&J?{source:{kind:"commit",hash:J}}:O?.source.kind==="branch"?{source:X??O.source}:O??{source:{kind:"working-tree",scope:q}},[X,te,Q,C,ge,O,q,J,Y]),K=z.source,Ie=H?.directory===i&&H.kind==="branch"&&!O,He=Ie||K.kind==="branch",lt=Ie||K.kind==="branch"&&!X,ct=Ne||te&&!J,ut=Q&&!Y,xe=lt||ct||ut,os=c.useCallback(o=>{D(null),he(i),ae(o)},[he,i]),d=B(o=>o.getEntry(i,z)),Le=B(o=>o.load),dt=B(o=>o.generate),rs=B(o=>o.cancel),oe=B(o=>o.requestTarget);c.useEffect(()=>{!De||!Y||!ge||!C||(oe(i,{source:Y,context:C}),D(null))},[De,i,C,ge,oe,Y]),c.useEffect(()=>{!Ie||!X||(oe(i,{source:X}),D(null))},[X,Ie,i,oe]),c.useEffect(()=>{!Ne||!J||(oe(i,{source:{kind:"commit",hash:J}}),D(null))},[Ne,i,oe,J]);const ns=B(o=>o.selectModel),ke=B(o=>o.getSelectedModel(i,z)),as=B(o=>o.selectLanguage),Be=B(o=>o.getSelectedLanguage(i,z)),le=Ae(o=>o.currentProviderId)||void 0,ce=Ae(o=>o.currentModelId)||void 0,We=d.result?.language,W=Be&&l.includes(Be)?Be:We&&l.includes(We)?We:r,is=K.kind==="branch"?ts:"",pt=K.kind==="pr"?Qt:0,ht=c.useRef(null);c.useEffect(()=>{if(!(!t||xe)){if(z.source.kind==="pr"){const o=JSON.stringify([Se,i,z,W,ke,le,ce,pt]);if(ht.current===o)return;ht.current=o}Le(i,z,{language:W,providerID:le,modelID:ce})}},[W,le,ce,xe,i,Le,z,ke,is,t,Se,pt]);const N=c.useMemo(()=>xe?null:Zs(d.result),[xe,d.result]),$e=d.result?.generatedAt,mt=c.useRef(void 0);c.useEffect(()=>{mt.current!==$e&&(mt.current=$e,_(new Set),G(N?.stops[0]?.stop.id??null))},[$e,N]);const qe=c.useCallback(o=>{G(o),_(v=>{if(v.has(o))return v;const M=new Set(v);return M.add(o),M})},[]),Ge=c.useCallback(o=>{qe(o),R(o)},[qe]),gt=c.useCallback(o=>{if(!N||N.stops.length===0)return;const v=N.stops.findIndex(A=>A.stop.id===L),M=Math.min(N.stops.length-1,Math.max(0,(v<0?0:v)+o));Ge(N.stops[M].stop.id)},[L,Ge,N]),[ls,ft]=c.useState(!1),[cs,xt]=c.useState(!1),us=Q?"pr":te?"commit":He?"branch":K.kind==="working-tree"?K.scope:K.kind,ds=Q?e(we("session.githubIntegration.tabs.pullRequests",fe)):te?e("commitComparison.mode"):He?e("walkthrough.scope.branch"):K.kind==="pr"?e(we("walkthrough.scope.pullRequest",fe),{number:K.number}):e(q==="all"?"walkthrough.scope.all":q==="staged"?"walkthrough.scope.staged":"walkthrough.scope.working"),kt=Ae(o=>o.modelsMetadata),[be,ps]=c.useState(void 0),Fe=o=>!o||be===void 0?!1:be.includes(o),hs=d.readiness?.model&&d.readiness.model.hasLogin!==!1&&Fe(d.readiness.model.providerID)?`${d.readiness.model.providerID}/${d.readiness.model.modelID}`:void 0,ms=d.result?.model&&Fe(d.result.model.providerID)?`${d.result.model.providerID}/${d.result.model.modelID}`:void 0,Me=(ke&&Fe(ke.split("/")[0])?ke:void 0)??ms??hs,[gs,...fs]=(Me??"").split("/"),bt=fs.join("/");c.useEffect(()=>{if(be!==void 0)return;let o=!1;return(async()=>{try{const v=await Gt("/api/small-model",{method:"GET",headers:{Accept:"application/json"}});if(!v.ok)return;const M=await v.json().catch(()=>null);!o&&Array.isArray(M?.authenticatedProviders)&&ps(M.authenticatedProviders.filter(A=>typeof A=="string"))}catch{}})(),()=>{o=!0}},[be]);const xs=c.useCallback((o,v)=>kt.get(`${o}/${v}`)?.structured_output!==!1,[kt]),vt=d.status==="generating",wt=d.result?.model?`${d.result.model.providerID}/${d.result.model.modelID}`:void 0,Ke=d.result?.language,Ue=Ke&&l.includes(Ke)?Ke:void 0,yt=d.status==="ready"&&!!N,_e=yt&&!!Ue&&Ue!==W,jt=yt&&!!wt&&!!Me&&wt!==Me,St=lo(d.stage,d.status==="generating"),Nt=c.useRef(!1),Ct=c.useRef(d.status);c.useEffect(()=>{Ct.current!=="generating"&&d.status==="generating"&&(Nt.current=!N),Ct.current=d.status},[d.status,N]);const ks=Nt.current&&(d.status==="generating"||St.holding),Ve=d.error?.code==="context-too-small"||d.error?.code==="structured-output-unsupported"||d.error?.code==="no-model"||d.error?.code==="empty-diff"||d.error?.code==="only-generated"||d.error?.code==="output-exhausted"||d.error?.code==="server-unsupported"?d.error.code:d.readiness&&!d.readiness.ready&&!N&&d.readiness.reason!=="no-provider-login"?d.readiness.reason:void 0,bs=d.error?.model??d.readiness?.model,vs=d.error?.requiredChars??d.readiness?.requiredChars,ws=d.error?.availableChars??d.readiness?.availableChars,ve=xe||!Me||!!(d.readiness&&!d.readiness.ready),Je=c.useCallback(o=>{ve||dt(i,z,{force:o,language:W,providerID:le,modelID:ce})},[W,le,ce,i,dt,ve,z]),Rt=Os(p||null),ys=Te(o=>o.ensureNestedRepos),js=Te(o=>o.selectNestedRepo);return m===!1&&Rt!==!0?s.jsx($s,{root:n,rootIsGitRepo:m,resolvedIsGitRepo:Rt,nestedRepos:f,onRetryDiscovery:()=>{n&&ys(n,{force:!0})}}):s.jsxs("div",{ref:h,className:"flex h-full min-h-0 flex-col",children:[s.jsxs("header",{className:"flex shrink-0 flex-wrap items-center gap-2 border-b border-border/60 px-3 py-2",children:[m===!1&&Array.isArray(f)&&f.length>0?s.jsx(qs,{repositories:f,selectedRepository:p??null,onSelectRepository:o=>{n&&js(n,o)},repositoryRoot:n??void 0}):null,s.jsxs(Tt,{open:ls,onOpenChange:ft,children:[s.jsx(At,{asChild:!0,children:s.jsxs("button",{type:"button",className:"flex h-8 flex-shrink-0 items-center gap-1.5 rounded-md px-2 typography-ui-label font-semibold text-foreground outline-none hover:bg-interactive-hover focus-visible:ring-2 focus-visible:ring-ring","aria-label":e("walkthrough.scope.selectorAria"),children:[s.jsx("span",{className:"whitespace-nowrap",children:ds}),s.jsx(S,{name:"arrow-down-s",className:"size-4 flex-shrink-0 opacity-60"})]})}),s.jsx(Et,{align:"start",className:"w-48",children:s.jsxs(zt,{value:us,onValueChange:o=>{if(ft(!1),o==="commit"){he(i),D({directory:i,kind:"commit"});return}if(o==="branch"){X?(D(null),oe(i,{source:X})):(he(i),D({directory:i,kind:"branch"}));return}if(o==="pr"){he(i),D({directory:i,kind:"pr"});return}os(o)},children:[s.jsx(Ot,{className:Ht,children:e("walkthrough.scope.group.workingTree")}),wo.map(o=>s.jsx(ye,{value:o,children:e(o==="all"?"walkthrough.scope.all":o==="staged"?"walkthrough.scope.staged":"walkthrough.scope.working")},o)),T&&s.jsxs(s.Fragment,{children:[s.jsx(Dt,{}),s.jsx(ye,{value:"branch",children:e("walkthrough.scope.branch")})]}),s.jsx(Dt,{}),s.jsx(ye,{value:"commit",children:e("commitComparison.mode")}),ge&&s.jsx(ye,{value:"pr",children:e(we("session.githubIntegration.tabs.pullRequests",fe))})]})})]}),He&&s.jsx(Vs,{branches:Ee?.all??[],currentBranch:T,base:me,onSelect:o=>{i&&T&&Zt(i,T,o)}},JSON.stringify([i,T])),te&&s.jsx(Js,{commits:V.commits,selectedHash:J,loading:V.loading,error:V.error,onSelect:V.select,onRefresh:()=>{V.refresh()}},JSON.stringify([i,T])),Q&&s.jsx(Xs,{comparison:se},JSON.stringify([i,T])),s.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-1",children:[Q&&Y&&s.jsxs($,{variant:"ghost",size:"sm","aria-label":e("contextPanel.mode.diff"),title:e("contextPanel.mode.diff"),onClick:()=>Jt(n,{mode:"diff",diffScope:"pr"}),children:[s.jsx(S,{name:"arrow-left-right",className:"size-4"}),!x&&e("contextPanel.mode.diff")]}),s.jsxs(Wt,{children:[s.jsx($t,{asChild:!0,children:s.jsx($,{type:"button",variant:"ghost",size:"sm","aria-label":e("walkthrough.help.guide"),onClick:()=>{Ds(yo)},children:s.jsx(S,{name:"question",className:"size-4"})})}),s.jsx(qt,{children:s.jsx("p",{className:"typography-micro leading-tight",children:e("walkthrough.help.guide")})})]}),s.jsxs(Tt,{open:cs,onOpenChange:xt,children:[s.jsx(At,{asChild:!0,children:s.jsxs("button",{type:"button",className:"flex h-8 min-w-0 flex-shrink items-center gap-1.5 rounded-md px-2 typography-ui-label text-muted-foreground outline-none hover:bg-interactive-hover hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring","aria-label":e("walkthrough.language.selectorAria"),title:x?a(W):void 0,children:[s.jsx(S,{name:"global",className:"size-4 flex-shrink-0 opacity-70"}),!x&&s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"truncate",children:a(W)}),s.jsx(S,{name:"arrow-down-s",className:"size-4 flex-shrink-0 opacity-60"})]})]})}),s.jsxs(Et,{align:"end",className:"w-48",children:[s.jsx(Ot,{className:Ht,children:e("walkthrough.language.menuLabel")}),s.jsx(zt,{value:W,onValueChange:o=>{xt(!1),as(i,z,o)},children:l.map(o=>s.jsx(ye,{value:o,children:a(o)},o))})]})]}),s.jsx(Bt,{providerId:gs??"",modelId:bt,onChange:(o,v)=>{ns(i,z,o&&v?`${o}/${v}`:null)},allowedProviderIds:be??[],isModelAllowed:xs,tooltipsEnabled:!1,dropdownPortalToBody:!0,compact:x,className:Z("h-8 min-w-0",!x&&"max-w-48")}),N&&s.jsxs(s.Fragment,{children:[s.jsx($,{type:"button",variant:"ghost",size:"sm","aria-label":e("walkthrough.action.previous"),onClick:()=>gt(-1),children:s.jsx(S,{name:"arrow-right-s",className:"size-4 rotate-180"})}),s.jsx($,{type:"button",variant:"ghost",size:"sm","aria-label":e("walkthrough.action.next"),onClick:()=>gt(1),children:s.jsx(S,{name:"arrow-right-s",className:"size-4"})})]}),vt?s.jsx($,{type:"button",variant:"outline",size:"sm","aria-label":x?e("walkthrough.action.cancel"):void 0,title:x?e("walkthrough.action.cancel"):void 0,onClick:()=>rs(i,z),children:x?s.jsx(S,{name:"stop",className:"size-3.5"}):e("walkthrough.action.cancel")}):s.jsxs($,{type:"button",variant:"outline",size:"sm",className:ve?"border-border text-muted-foreground":Qs,disabled:ve,"aria-label":x?e(N?"walkthrough.action.regenerate":"walkthrough.action.generate"):void 0,title:x?e(N?"walkthrough.action.regenerate":"walkthrough.action.generate"):void 0,onClick:()=>Je(!!N),children:[s.jsx(S,{name:N?"refresh":"route",className:"size-3.5"}),!x&&e(N?"walkthrough.action.regenerate":"walkthrough.action.generate")]})]})]}),d.status==="generating"&&N&&s.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border/60 bg-[var(--status-info-background)] px-3 py-2",children:[s.jsx(S,{name:"loader-4",className:"size-4 shrink-0 animate-spin text-[var(--status-info)]"}),s.jsx("span",{className:"typography-meta text-foreground",children:d.stage==="collecting"?e("walkthrough.stage.collecting"):d.stage==="assembling"?e("walkthrough.stage.assembling"):e("walkthrough.stage.asking")})]}),(_e||jt)&&s.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border/60 bg-[var(--status-info-background)] px-3 py-2",children:[s.jsx(S,{name:"information",className:"size-4 shrink-0 text-[var(--status-info)]"}),s.jsx("span",{className:"typography-meta text-foreground",children:_e&&jt?e("walkthrough.missing.languageAndModel"):_e?e("walkthrough.missing.language",{requested:a(W),shown:a(Ue)}):e("walkthrough.missing.model",{model:bt})}),s.jsx($,{type:"button",variant:"ghost",size:"xs",className:"ml-auto",disabled:ve,onClick:()=>Je(!1),children:e("walkthrough.action.generate")})]}),N?.isStale&&d.status!=="generating"&&s.jsxs("div",{className:"flex shrink-0 items-center gap-2 border-b border-border/60 bg-status-warning/10 px-3 py-2",children:[s.jsx(S,{name:"error-warning",className:"size-4 shrink-0 text-status-warning"}),s.jsx("span",{className:"typography-meta text-foreground",children:e("walkthrough.stale.banner",{count:N.staleStopCount})}),s.jsx($,{type:"button",variant:"ghost",size:"xs",className:"ml-auto",disabled:vt,onClick:()=>Je(!0),children:e("walkthrough.action.regenerate")})]}),d.error&&!Ve&&d.error.code!=="no-provider-login"&&s.jsxs("div",{className:"flex shrink-0 items-start gap-2 border-b border-border/60 bg-status-error/10 px-3 py-2",children:[s.jsx(S,{name:"error-warning",className:"mt-0.5 size-4 shrink-0 text-status-error"}),s.jsx("span",{className:"typography-meta line-clamp-2 text-foreground",title:d.error.message,children:d.error.message})]}),s.jsx("div",{className:Z("flex min-h-0 flex-1",k?"flex-row":"flex-col"),children:ut?s.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:[!se.error&&!se.loading&&s.jsx(S,{name:"git-pull-request",className:"size-6 text-muted-foreground"}),s.jsx("p",{className:"typography-meta text-muted-foreground",children:se.error??(se.loading?e(we("session.githubPrPicker.loading.pullRequests",fe)):e(we("pullRequestComparison.pickAbove",fe)))})]}):ct?s.jsx("div",{className:"flex flex-1 items-center justify-center gap-2 p-8 typography-meta text-muted-foreground",children:V.loading?s.jsx(S,{name:"loader-4",className:"size-6 animate-spin"}):V.error??e("commitComparison.noCommits")}):lt?s.jsx("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:!es&&T?s.jsx(S,{name:"loader-4",className:"size-6 animate-spin text-muted-foreground"}):s.jsx("p",{className:"typography-meta text-muted-foreground",children:e("gitView.pr.toast.baseBranchRequired")})}):Ve?s.jsx(oo,{reason:Ve,model:bs,requiredChars:vs,availableChars:ws,onRetry:()=>{Le(i,z,{providerID:le,modelID:ce})}}):ks?s.jsx("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8",children:s.jsx(no,{progress:St})}):N?s.jsxs(s.Fragment,{children:[k&&s.jsxs(s.Fragment,{children:[s.jsx(bo,{view:N,activeStopId:L,visitedStopIds:E,onSelectStop:Ge,width:I}),s.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":e("walkthrough.toc.resize"),tabIndex:0,onPointerDown:P,onKeyDown:ne,className:Z("group relative w-1 shrink-0 cursor-col-resize","before:absolute before:inset-y-0 before:-left-1 before:-right-1 before:content-['']","hover:bg-interactive-selection focus-visible:bg-interactive-selection focus-visible:outline-none",w&&"bg-interactive-selection")})]}),s.jsx(ho,{view:N,activeStopId:L,scrollToStopId:ie,onActiveStopChange:qe,onScrollHandled:()=>R(null),renderSideBySide:Vt,wrapLines:_t})]}):s.jsx("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center",children:d.status==="loading"?s.jsx(S,{name:"loader-4",className:"size-6 animate-spin text-muted-foreground"}):s.jsxs(s.Fragment,{children:[s.jsx(S,{name:"route",className:"size-6 text-muted-foreground"}),s.jsx("h3",{className:"typography-ui-label font-semibold text-foreground",children:e("walkthrough.empty.title")}),s.jsx("p",{className:"typography-meta max-w-md text-muted-foreground",children:e("walkthrough.empty.description")})]})})})]})};export{Fn as WalkthroughView};
@@ -0,0 +1 @@
1
+ import{r as d,a as g}from"./textMateThemeFromAppTheme-DlsTphbY.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./useAppFontEffects-DGlvOqP_.js";import"./vendor-react-BUCujlKS.js";import"./vendor-scheduler-7OC5HNn7.js";import"./index-DxNa7xYB.js";import"./vendor-zod-CxRSdNoV.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-opencode-client-BmFcUkbQ.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-Det7U81h.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-CvuLsk7D.js";import"./vendor-tanstack-virtual-core-DPaNcJcT.js";import"./vendor-framer-motion-DxDVhOLc.js";import"./vendor-motion-dom-HXPOMxb7.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-codemirror-commands-C4G_dPWe.js";import"./vendor-codemirror-state-Dek9sMtw.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-1e0FQ6Wn.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-codemirror-language-DufXoQvE.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-DbpEcZM0.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-BSHQHbKu.js";import"./vendor-codemirror-lang-json-BzgckzmB.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-Cayfb29q.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-BQWerHsJ.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-D2TEBIvZ.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-CtwSWKtX.js";import"./vendor-codemirror-lang-python-jAMtYiA9.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-capacitor-core-B4EWRrHz.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-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";const u=t=>/^#[0-9a-fA-F]{8}$/.test(t),n=t=>u(t)?t.slice(0,7):t;function l(t,r){return Object.defineProperty(t,"toString",{value:()=>r,enumerable:!1,configurable:!0}),Object.defineProperty(t,Symbol.toPrimitive,{value:()=>r,enumerable:!1,configurable:!0}),t}const f=40,i=new Map,s=new Map,c=t=>JSON.stringify(t),b=(t,r)=>{const o=t.colors?.["editor.background"],m=t.colors?.["editor.foreground"],e=o?n(o):void 0,p=m?n(m):void 0;if(!e||!p)throw new Error(`Theme "${r}" is missing editor.background/editor.foreground`);const a=t.tokenColors??[];return l({...t,name:r,fg:p,bg:e,settings:a},r)},T=t=>g(t),h=t=>{const r=c(t),o=i.get(r);if(o)return i.delete(r),i.set(r,o),o;const m=T(t),e=b(m,t.metadata.id);for(i.set(r,e);i.size>f;){const p=i.keys().next().value;if(p===void 0)break;i.delete(p)}return e},cr=t=>{const r=t.metadata.id,o=c(t);if(s.get(r)===o)return;const m=h(t);d(r,async()=>m),s.set(r,o)};export{cr as ensurePierreThemeRegistered,h as getResolvedShikiTheme,c as getThemeContentSignature};
@@ -1,3 +1,3 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-shiki-Bbf2GEcE.js","assets/vendor-vite-runtime-DD1OZmLC.js","assets/vendor-shikijs-core-CGM_jqPK.js","assets/vendor-shikijs-types-CPSbSeK6.js","assets/vendor-shikijs-vscode-textmate-BgLrS_2D.js","assets/vendor-hast-util-to-html-BKBhbTDb.js","assets/vendor-html-void-elements-CkdplsNl.js","assets/vendor-property-information-rJCbAzvX.js","assets/vendor-zwitch-C2o2j-tx.js","assets/vendor-stringify-entities-CsH1VEn9.js","assets/vendor-character-entities-legacy-BpoLgcEt.js","assets/vendor-character-entities-html4-D7taRCQ7.js","assets/vendor-ccount-c2V3InAJ.js","assets/vendor-comma-separated-tokens-D8TqSuIK.js","assets/vendor-space-separated-tokens-DD3iYX1K.js","assets/vendor-hast-util-whitespace-D4Wp6AEg.js","assets/vendor-shikijs-engine-oniguruma-DPWuIF1G.js"])))=>i.map(i=>d[i]);
2
- import{_ as I}from"./vendor-vite-runtime-DD1OZmLC.js";import{b as $,c as O}from"./vendor-shiki-Bbf2GEcE.js";import{ih as C,l5 as M}from"./useAppFontEffects-DCqCVGlT.js";import{t as f}from"./themeResolver-BmJyTmjJ.js";import{s as A,p as F,n as v}from"./vendor-pierre-theming-C6Z4M5_u.js";import{c as N}from"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import{c as z}from"./vendor-shikijs-engine-javascript-Cme4830A.js";import{t as G}from"./vendor-shikijs-transformers-CZWsLLKm.js";const g=new Map,k=new Map,H=new Map,T=new Set;function V(e){for(const t of Array.isArray(e)?e:[e])if(!(t==="text"||t==="ansi")&&!T.has(t))return!1;return!0}function E(e,t){e=Array.isArray(e)?e:[e];for(const r of e){if(T.has(r.name))continue;let n=g.get(r.name);n==null&&(n=r,g.set(r.name,n));const o=n.data.find(s=>s.name===n.name||s.aliases?.includes(n.name)===!0);if(o==null)throw new Error(`attachResolvedLanguages: No returned grammar declares "${n.name}" as its name or an alias.`);t.loadLanguageSync(n.data);try{t.getLanguage(n.name)}catch{throw new Error(`attachResolvedLanguages: "${o.name}" is already loaded without alias "${n.name}". Load the alias first or give the grammar a unique name.`)}T.add(n.name)}}function q(){return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope}async function D(e){if(q())throw new Error(`resolveLanguage("${e}") cannot be called from a worker context. Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);const t=k.get(e);if(t!=null)return t;try{let r=H.get(e);if(r==null&&Object.prototype.hasOwnProperty.call($,e)&&(r=$[e]),r==null)throw new Error(`resolveLanguage: "${e}" not found in bundled or custom languages`);const n=r().then(({default:o})=>{const s={name:e,data:o};return g.has(e)||g.set(e,s),s});return k.set(e,n),await n}finally{k.delete(e)}}function W(e){return g.get(e)??D(e)}function P(e=C){const t=[];return typeof e=="string"?t.push(e):(t.push(e.dark),t.push(e.light)),t}const j=new Set;function U(e){for(const t of P(e))if(!j.has(t))return!1;return!0}function R(e,t){e=Array.isArray(e)?e:[e];for(let r of e){let n;if(typeof r=="string"){if(n=f.getResolvedTheme(r),n==null)throw new Error(`loadResolvedThemes: ${r} is not resolved, you must resolve it before calling loadResolvedThemes`)}else n=r,r=r.name,f.getResolvedTheme(r)==null&&f.seedResolvedTheme(r,n);j.has(r)||(j.add(r),t.loadThemeSync(n))}}function B(e){if(q())throw new Error(`Theme "${e}" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);if(f.hasRegisteredTheme(e))return;const t=A.getTheme(e);if(t!=null){f.registerThemeIfAbsent(t.name,t.load);return}throw new Error(`No valid theme loader registered for "${e}"`)}function K(e,t){if(t.name!==e)throw new Error(`resolvedTheme: themeName: ${e} does not match theme.name: ${t.name}`)}async function X(e){B(e);const t=await f.resolveTheme(e);return K(e,t),t}function J(e){return f.getResolvedTheme(e)??X(e)}let c;async function de({themes:e,langs:t,preferredHighlighter:r="shiki-js"}){c??=O({themes:[],langs:["text"],engine:r==="shiki-wasm"?N(I(()=>import("./vendor-shiki-Bbf2GEcE.js").then(l=>l.w),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))):z()});const n=Q(c)?await c:c;c=n;const o=[];for(const l of Array.from(new Set(t))){if(l==="text"||l==="ansi")continue;const i=W(l);"then"in i?o.push(i):E(i,n)}const s=[];for(const l of e){const i=J(l);"then"in i?s.push(i):R(i,c)}return(o.length>0||s.length>0)&&await Promise.all([Promise.all(o).then(l=>{E(l,n)}),Promise.all(s).then(l=>{R(l,n)})]),n}function me(e){if(!(c==null||"then"in c)&&!(e!=null&&(!U(e.theme)||!V(e.lang))))return c}function Q(e=c){return e!=null&&"then"in e}for(const e of F.getThemes())f.registerThemeIfAbsent(e.name,e.load);function he(e,t){return e==null||t==null||typeof e=="string"||typeof t=="string"?e===t:e.dark===t.dark&&e.light===t.light}function S(e){return{type:"text",value:e}}function m({tagName:e,children:t=[],properties:r={}}){return{type:"element",tagName:e,properties:r,children:t}}function ge({name:e,width:t=16,height:r=16,properties:n}){return m({tagName:"svg",properties:{width:t,height:r,viewBox:"0 0 16 16",...n},children:[m({tagName:"use",properties:{href:`#${e.replace(/^#/,"")}`}})]})}function Y(e){let t=e.children[0];for(;t!=null;){if(t.type==="element"&&t.tagName==="code")return t;"children"in t?t=t.children[0]:t=null}}function ye(e){return m({tagName:"div",properties:{"data-gutter":""},children:e})}function be(e,t,r,n={}){return m({tagName:"div",properties:{"data-line-type":e,"data-column-number":t,"data-line-index":r,...n},children:t!=null?[m({tagName:"span",properties:{"data-line-number-content":""},children:[S(`${t}`)]})]:void 0})}function ve(e,t,r){return m({tagName:"div",properties:{"data-gutter-buffer":t,"data-buffer-size":r,"data-line-type":t==="annotation"?void 0:e,style:t==="annotation"?`grid-row: span ${r};`:`grid-row: span ${r};min-height:calc(${r} * 1lh);`}})}const d=new Map;let Z=0;const h={"1c":"1c",abap:"abap",as:"actionscript-3",ada:"ada",adb:"ada",ads:"ada",adoc:"asciidoc",asciidoc:"asciidoc","component.html":"angular-html","component.ts":"angular-ts",conf:"nginx",htaccess:"apache",cls:"tex",trigger:"apex",apl:"apl",applescript:"applescript",scpt:"applescript",ara:"ara",asm:"asm",s:"riscv",astro:"astro",awk:"awk",bal:"ballerina",sh:"zsh",bash:"zsh",bat:"cmd",cmd:"cmd",be:"berry",beancount:"beancount",bib:"bibtex",bicep:"bicep","blade.php":"blade",bsl:"bsl",c:"c",h:"objective-cpp",cs:"csharp",cpp:"cpp",hpp:"cpp",cc:"cpp",cxx:"cpp",hh:"cpp",cdc:"cdc",cairo:"cairo",clar:"clarity",clj:"clojure",cljs:"clojure",cljc:"clojure",soy:"soy",cmake:"cmake","CMakeLists.txt":"cmake",cob:"cobol",cbl:"cobol",cobol:"cobol",CODEOWNERS:"codeowners",ql:"ql",coffee:"coffeescript",lisp:"lisp",cl:"lisp",lsp:"lisp",log:"log",v:"verilog",cql:"cql",cr:"crystal",css:"css",csv:"csv",cue:"cue",cypher:"cypher",cyp:"cypher",d:"d",dart:"dart",dax:"dax",desktop:"desktop",diff:"diff",patch:"diff",Dockerfile:"dockerfile",dockerfile:"dockerfile",env:"dotenv",dm:"dream-maker",edge:"edge",el:"emacs-lisp",ex:"elixir",exs:"elixir",elm:"elm",erb:"erb",erl:"erlang",hrl:"erlang",f:"fortran-fixed-form",for:"fortran-fixed-form",fs:"fsharp",fsi:"fsharp",fsx:"fsharp",f03:"f03",f08:"f08",f18:"f18",f77:"f77",f90:"fortran-free-form",f95:"fortran-free-form",fnl:"fennel",fish:"fish",ftl:"ftl",tres:"gdresource",res:"gdresource",gd:"gdscript",gdshader:"gdshader",gs:"genie",feature:"gherkin",COMMIT_EDITMSG:"git-commit","git-rebase-todo":"git-rebase",gjs:"glimmer-js",gleam:"gleam",gts:"glimmer-ts",glsl:"glsl",vert:"glsl",frag:"glsl",shader:"shaderlab",gp:"gnuplot",plt:"gnuplot",gnuplot:"gnuplot",go:"go",graphql:"graphql",gql:"graphql",groovy:"groovy",gvy:"groovy",hack:"hack",haml:"haml",hbs:"handlebars",handlebars:"handlebars",hs:"haskell",lhs:"haskell",hx:"haxe",hcl:"hcl",hjson:"hjson",hlsl:"hlsl",fx:"hlsl",html:"html",htm:"html",http:"http",rest:"http",hxml:"hxml",hy:"hy",imba:"imba",ini:"ini",cfg:"ini",jade:"pug",pug:"pug",java:"java",js:"javascript",mjs:"javascript",cjs:"javascript",jinja:"jinja",jinja2:"jinja",j2:"jinja",jison:"jison",jl:"julia",json:"json",json5:"json5",jsonc:"jsonc",jsonl:"jsonl",jsonnet:"jsonnet",libsonnet:"jsonnet",jssm:"jssm",jsx:"jsx",kt:"kotlin",kts:"kts",kql:"kusto",tex:"tex",ltx:"tex",lean:"lean4",less:"less",liquid:"liquid",lit:"lit",ll:"llvm",logo:"logo",lua:"lua",luau:"luau",Makefile:"makefile",mk:"makefile",makefile:"makefile",md:"markdown",markdown:"markdown",marko:"marko",m:"wolfram",mat:"matlab",mdc:"mdc",mdx:"mdx",wiki:"wikitext",mediawiki:"wikitext",mmd:"mermaid",mermaid:"mermaid",mips:"mipsasm",mojo:"mojo","🔥":"mojo",move:"move",nar:"narrat",nf:"nextflow",nim:"nim",nims:"nim",nimble:"nim",nix:"nix",nu:"nushell",mm:"objective-cpp",ml:"ocaml",mli:"ocaml",mll:"ocaml",mly:"ocaml",pas:"pascal",p:"pascal",pl:"prolog",pm:"perl",t:"perl",raku:"raku",p6:"raku",pl6:"raku",php:"php",phtml:"php",pls:"plsql",sql:"sql",po:"po",polar:"polar",pcss:"postcss",pot:"pot",potx:"potx",pq:"powerquery",pqm:"powerquery",ps1:"powershell",psm1:"powershell",psd1:"powershell",prisma:"prisma",pro:"prolog",P:"prolog",properties:"properties",proto:"protobuf",pp:"puppet",purs:"purescript",py:"python",pyw:"python",pyi:"python",qml:"qml",qmldir:"qmldir",qss:"qss",r:"r",R:"r",rkt:"racket",rktl:"racket",razor:"razor",cshtml:"razor",rb:"ruby",rbw:"ruby",reg:"reg",regex:"regexp",rel:"rel",rs:"rust",rst:"rst",rake:"ruby",gemspec:"ruby",jbuilder:"ruby",builder:"ruby",rabl:"ruby",arb:"ruby",ru:"ruby",podspec:"ruby",Gemfile:"ruby",Rakefile:"ruby",Guardfile:"ruby",Capfile:"ruby",Berksfile:"ruby",Brewfile:"ruby",Vagrantfile:"ruby",Thorfile:"ruby",Appraisals:"ruby",Dangerfile:"ruby",sas:"sas",sass:"sass",scala:"scala",sc:"scala",scm:"scheme",ss:"scheme",sld:"scheme",scss:"scss",sdbl:"sdbl",shadergraph:"shader",st:"smalltalk",sol:"solidity",sparql:"sparql",rq:"sparql",spl:"splunk",config:"ssh-config",do:"stata",ado:"stata",dta:"stata",styl:"stylus",stylus:"stylus",svelte:"svelte",swift:"swift",sv:"system-verilog",svh:"system-verilog",service:"systemd",socket:"systemd",device:"systemd",timer:"systemd",talon:"talonscript",tasl:"tasl",tcl:"tcl",templ:"templ",tf:"tf",tfvars:"tfvars",toml:"toml",ts:"typescript",mts:"typescript",cts:"typescript",tsp:"typespec",tsv:"tsv",tsx:"tsx",ttl:"turtle",twig:"twig",typ:"typst",vv:"v",vala:"vala",vapi:"vala",vb:"vb",vbs:"vb",bas:"vb",vh:"verilog",vhd:"vhdl",vhdl:"vhdl",vim:"vimscript",vue:"vue","vine.ts":"vue-vine",vy:"vyper",wasm:"wasm",wat:"wasm",wy:"文言",wgsl:"wgsl",wit:"wit",wl:"wolfram",nb:"wolfram",xml:"xml",xsl:"xsl",xslt:"xsl",yaml:"yaml",yml:"yml",zs:"zenscript",zig:"zig",zsh:"zsh",sty:"tex"};function ke(e){if(d.has(e))return d.get(e)??"text";if(h[e]!=null)return h[e];const t=e.match(/\.([^/\\]+\.[^/\\]+)$/);if(t!=null){if(d.has(t[1]))return d.get(t[1])??"text";if(h[t[1]]!=null)return h[t[1]]??"text"}const r=e.match(/\.([^.]+)$/)?.[1]??"";return d.has(r)?d.get(r)??"text":h[r]??"text"}function we(){return Z}function xe(){return Object.fromEntries(d)}function ee(e,t,r){const n=typeof r.lineInfo=="function"?r.lineInfo(t):r.lineInfo[t-1];if(n==null){const o=`processLine: line ${t}, contains no state.lineInfo`;throw console.error(o,{node:e,line:t,state:r}),new Error(o)}return e.tagName="div",e.properties["data-line"]=n.lineNumber,e.properties["data-alt-line"]=n.altLineNumber,e.properties["data-line-type"]=n.type,e.properties["data-line-index"]=n.lineIndex,e.children.length===0&&e.children.push(S(`
3
- `)),e}const y=Symbol("no-token"),w=Symbol("multiple-tokens");function _(e){const t=te(e);if(t!=null)return t;let r=y;const n=[];let o=[],s;const l=()=>{if(o.length===0||s==null){o=[],s=void 0;return}if(o.length===1){const a=o[0];if(a?.type==="element"){re(a,s);for(const u of a.children)b(u)}else b(a);n.push(a),o=[],s=void 0;return}for(const a of o)b(a);n.push(m({tagName:"span",properties:{"data-char":s},children:o})),o=[],s=void 0},i=a=>{if(a!==y){if(a===w){r=w;return}if(r===y){r=a;return}r!==a&&(r=w)}};for(const a of e.children){const u=a.type==="element"?_(a):y;if(i(u),typeof u!="number"){l(),n.push(a);continue}s!=null&&s!==u&&l(),s??=u,o.push(a)}return l(),e.children=n,r}function te(e){const t=e.properties["data-char"];if(typeof t=="number")return t}function b(e){if(e.type==="element"){e.properties["data-char"]=void 0;for(const t of e.children)b(t)}}function re(e,t){e.properties["data-char"]=t}function Te(e=!1,t=!1){const r={lineInfo:[]},n=[{line(o){return delete o.properties.class,o},pre(o){const s=Y(o),l=[];if(s!=null){let i=1;for(const a of s.children)a.type==="element"&&(e&&_(a),l.push(ee(a,i,r)),i++);s.children=l}return o},...e?{tokens(o){for(const s of o){let l=0;for(const i of s){const a=i;a.__lineChar??=l,l+=i.content.length}}},preprocess(o,s){s.mergeWhitespaces="never"},span(o,s,l,i,a){if(a?.offset!=null&&a.content!=null){const u=a.__lineChar;return u!=null&&(o.properties["data-char"]=u),o}return o}}:null}];return t&&n.push(ne,L),e&&n.push({line:o=>(o.type==="element"&&o.children.length===0&&o.children.push({type:"element",tagName:"br",properties:{},children:[]}),o)}),{state:r,transformers:n,toClass:L}}const L=G({classPrefix:"hl-"}),ne={name:"token-style-normalizer",tokens(e){for(const t of e)for(const r of t){if(r.htmlStyle!=null)continue;const n={};r.color!=null&&(n.color=r.color),r.bgColor!=null&&(n["background-color"]=r.bgColor),r.fontStyle!=null&&r.fontStyle!==0&&((r.fontStyle&1)!==0&&(n["font-style"]="italic"),(r.fontStyle&2)!==0&&(n["font-weight"]="bold"),(r.fontStyle&4)!==0&&(n["text-decoration"]="underline")),Object.keys(n).length>0&&(r.htmlStyle=n)}}};function p(e){return`--${e==="token"?"diffs-token":"diffs"}-`}function je({theme:e=C,highlighter:t,prefix:r}){let n="";if(typeof e=="string"){const o=t.getTheme(e),s=v(o);n+=`color:${s.fg};`,n+=`background-color:${s.bg};`,n+=`${p("global")}fg:${s.fg};`,n+=`${p("global")}bg:${s.bg};`,n+=x(o,r)}else{let o=t.getTheme(e.dark),s=v(o);n+=`${p("global")}dark:${s.fg};`,n+=`${p("global")}dark-bg:${s.bg};`,n+=x(o,"dark"),o=t.getTheme(e.light),s=v(o),n+=`${p("global")}light:${s.fg};`,n+=`${p("global")}light-bg:${s.bg};`,n+=x(o,"light")}return n}function x(e,t){t=t!=null?`${t}-`:"";let r="";const n=e.colors?.["gitDecoration.addedResourceForeground"]??e.colors?.["terminal.ansiGreen"];n!=null&&(r+=`${p("global")}${t}addition-color:${n};`);const o=e.colors?.["gitDecoration.deletedResourceForeground"]??e.colors?.["terminal.ansiRed"];o!=null&&(r+=`${p("global")}${t}deletion-color:${o};`);const s=e.colors?.["gitDecoration.modifiedResourceForeground"]??e.colors?.["terminal.ansiBlue"];return s!=null&&(r+=`${p("global")}${t}modified-color:${s};`),r}function $e(e){let t=e.children[0];for(;t!=null;){if(t.type==="element"&&t.tagName==="code")return t.children;"children"in t?t=t.children[0]:t=null}throw console.error(e),new Error("getLineNodes: Unable to find children")}function Ee(e,t){for(const r of t)e.push(r)}function Re(e){return{...M,...e}}function Le(e,t){const r=oe(e,t);return t?r:e.diffHeaderHeight+r}function oe(e,t){return e.paddingTop??(t?e.spacing:0)}function Ce(e){return e.paddingBottom??e.spacing}function qe(e){switch(e){case"simple":return 4;case"metadata":case"line-info":case"line-info-basic":case"custom":return 32}}export{Le as A,Ce as B,Re as C,g as R,P as a,he as b,R as c,de as d,V as e,xe as f,W as g,we as h,ke as i,Ee as j,m as k,ge as l,S as m,qe as n,je as o,B as p,Te as q,D as r,p as s,$e as t,U as u,K as v,me as w,ve as x,ye as y,be as z};
2
+ import{_ as I}from"./vendor-vite-runtime-DD1OZmLC.js";import{b as $,c as O}from"./vendor-shiki-Bbf2GEcE.js";import{j2 as C,lP as M}from"./useAppFontEffects-DGlvOqP_.js";import{t as f}from"./themeResolver-BmJyTmjJ.js";import{s as A,p as F,n as v}from"./vendor-pierre-theming-C6Z4M5_u.js";import{c as N}from"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import{c as z}from"./vendor-shikijs-engine-javascript-Cme4830A.js";import{t as G}from"./vendor-shikijs-transformers-CZWsLLKm.js";const g=new Map,k=new Map,H=new Map,j=new Set;function V(e){for(const t of Array.isArray(e)?e:[e])if(!(t==="text"||t==="ansi")&&!j.has(t))return!1;return!0}function E(e,t){e=Array.isArray(e)?e:[e];for(const r of e){if(j.has(r.name))continue;let n=g.get(r.name);n==null&&(n=r,g.set(r.name,n));const o=n.data.find(s=>s.name===n.name||s.aliases?.includes(n.name)===!0);if(o==null)throw new Error(`attachResolvedLanguages: No returned grammar declares "${n.name}" as its name or an alias.`);t.loadLanguageSync(n.data);try{t.getLanguage(n.name)}catch{throw new Error(`attachResolvedLanguages: "${o.name}" is already loaded without alias "${n.name}". Load the alias first or give the grammar a unique name.`)}j.add(n.name)}}function q(){return typeof WorkerGlobalScope<"u"&&typeof self<"u"&&self instanceof WorkerGlobalScope}async function D(e){if(q())throw new Error(`resolveLanguage("${e}") cannot be called from a worker context. Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);const t=k.get(e);if(t!=null)return t;try{let r=H.get(e);if(r==null&&Object.prototype.hasOwnProperty.call($,e)&&(r=$[e]),r==null)throw new Error(`resolveLanguage: "${e}" not found in bundled or custom languages`);const n=r().then(({default:o})=>{const s={name:e,data:o};return g.has(e)||g.set(e,s),s});return k.set(e,n),await n}finally{k.delete(e)}}function P(e){return g.get(e)??D(e)}function W(e=C){const t=[];return typeof e=="string"?t.push(e):(t.push(e.dark),t.push(e.light)),t}const T=new Set;function U(e){for(const t of W(e))if(!T.has(t))return!1;return!0}function R(e,t){e=Array.isArray(e)?e:[e];for(let r of e){let n;if(typeof r=="string"){if(n=f.getResolvedTheme(r),n==null)throw new Error(`loadResolvedThemes: ${r} is not resolved, you must resolve it before calling loadResolvedThemes`)}else n=r,r=r.name,f.getResolvedTheme(r)==null&&f.seedResolvedTheme(r,n);T.has(r)||(T.add(r),t.loadThemeSync(n))}}function B(e){if(q())throw new Error(`Theme "${e}" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);if(f.hasRegisteredTheme(e))return;const t=A.getTheme(e);if(t!=null){f.registerThemeIfAbsent(t.name,t.load);return}throw new Error(`No valid theme loader registered for "${e}"`)}function K(e,t){if(t.name!==e)throw new Error(`resolvedTheme: themeName: ${e} does not match theme.name: ${t.name}`)}async function X(e){B(e);const t=await f.resolveTheme(e);return K(e,t),t}function J(e){return f.getResolvedTheme(e)??X(e)}let c;async function de({themes:e,langs:t,preferredHighlighter:r="shiki-js"}){c??=O({themes:[],langs:["text"],engine:r==="shiki-wasm"?N(I(()=>import("./vendor-shiki-Bbf2GEcE.js").then(l=>l.w),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))):z()});const n=Q(c)?await c:c;c=n;const o=[];for(const l of Array.from(new Set(t))){if(l==="text"||l==="ansi")continue;const i=P(l);"then"in i?o.push(i):E(i,n)}const s=[];for(const l of e){const i=J(l);"then"in i?s.push(i):R(i,c)}return(o.length>0||s.length>0)&&await Promise.all([Promise.all(o).then(l=>{E(l,n)}),Promise.all(s).then(l=>{R(l,n)})]),n}function me(e){if(!(c==null||"then"in c)&&!(e!=null&&(!U(e.theme)||!V(e.lang))))return c}function Q(e=c){return e!=null&&"then"in e}for(const e of F.getThemes())f.registerThemeIfAbsent(e.name,e.load);function he(e,t){return e==null||t==null||typeof e=="string"||typeof t=="string"?e===t:e.dark===t.dark&&e.light===t.light}function S(e){return{type:"text",value:e}}function m({tagName:e,children:t=[],properties:r={}}){return{type:"element",tagName:e,properties:r,children:t}}function ge({name:e,width:t=16,height:r=16,properties:n}){return m({tagName:"svg",properties:{width:t,height:r,viewBox:"0 0 16 16",...n},children:[m({tagName:"use",properties:{href:`#${e.replace(/^#/,"")}`}})]})}function Y(e){let t=e.children[0];for(;t!=null;){if(t.type==="element"&&t.tagName==="code")return t;"children"in t?t=t.children[0]:t=null}}function ye(e){return m({tagName:"div",properties:{"data-gutter":""},children:e})}function be(e,t,r,n={}){return m({tagName:"div",properties:{"data-line-type":e,"data-column-number":t,"data-line-index":r,...n},children:t!=null?[m({tagName:"span",properties:{"data-line-number-content":""},children:[S(`${t}`)]})]:void 0})}function ve(e,t,r){return m({tagName:"div",properties:{"data-gutter-buffer":t,"data-buffer-size":r,"data-line-type":t==="annotation"?void 0:e,style:t==="annotation"?`grid-row: span ${r};`:`grid-row: span ${r};min-height:calc(${r} * 1lh);`}})}const d=new Map;let Z=0;const h={"1c":"1c",abap:"abap",as:"actionscript-3",ada:"ada",adb:"ada",ads:"ada",adoc:"asciidoc",asciidoc:"asciidoc","component.html":"angular-html","component.ts":"angular-ts",conf:"nginx",htaccess:"apache",cls:"tex",trigger:"apex",apl:"apl",applescript:"applescript",scpt:"applescript",ara:"ara",asm:"asm",s:"riscv",astro:"astro",awk:"awk",bal:"ballerina",sh:"zsh",bash:"zsh",bat:"cmd",cmd:"cmd",be:"berry",beancount:"beancount",bib:"bibtex",bicep:"bicep","blade.php":"blade",bsl:"bsl",c:"c",h:"objective-cpp",cs:"csharp",cpp:"cpp",hpp:"cpp",cc:"cpp",cxx:"cpp",hh:"cpp",cdc:"cdc",cairo:"cairo",clar:"clarity",clj:"clojure",cljs:"clojure",cljc:"clojure",soy:"soy",cmake:"cmake","CMakeLists.txt":"cmake",cob:"cobol",cbl:"cobol",cobol:"cobol",CODEOWNERS:"codeowners",ql:"ql",coffee:"coffeescript",lisp:"lisp",cl:"lisp",lsp:"lisp",log:"log",v:"verilog",cql:"cql",cr:"crystal",css:"css",csv:"csv",cue:"cue",cypher:"cypher",cyp:"cypher",d:"d",dart:"dart",dax:"dax",desktop:"desktop",diff:"diff",patch:"diff",Dockerfile:"dockerfile",dockerfile:"dockerfile",env:"dotenv",dm:"dream-maker",edge:"edge",el:"emacs-lisp",ex:"elixir",exs:"elixir",elm:"elm",erb:"erb",erl:"erlang",hrl:"erlang",f:"fortran-fixed-form",for:"fortran-fixed-form",fs:"fsharp",fsi:"fsharp",fsx:"fsharp",f03:"f03",f08:"f08",f18:"f18",f77:"f77",f90:"fortran-free-form",f95:"fortran-free-form",fnl:"fennel",fish:"fish",ftl:"ftl",tres:"gdresource",res:"gdresource",gd:"gdscript",gdshader:"gdshader",gs:"genie",feature:"gherkin",COMMIT_EDITMSG:"git-commit","git-rebase-todo":"git-rebase",gjs:"glimmer-js",gleam:"gleam",gts:"glimmer-ts",glsl:"glsl",vert:"glsl",frag:"glsl",shader:"shaderlab",gp:"gnuplot",plt:"gnuplot",gnuplot:"gnuplot",go:"go",graphql:"graphql",gql:"graphql",groovy:"groovy",gvy:"groovy",hack:"hack",haml:"haml",hbs:"handlebars",handlebars:"handlebars",hs:"haskell",lhs:"haskell",hx:"haxe",hcl:"hcl",hjson:"hjson",hlsl:"hlsl",fx:"hlsl",html:"html",htm:"html",http:"http",rest:"http",hxml:"hxml",hy:"hy",imba:"imba",ini:"ini",cfg:"ini",jade:"pug",pug:"pug",java:"java",js:"javascript",mjs:"javascript",cjs:"javascript",jinja:"jinja",jinja2:"jinja",j2:"jinja",jison:"jison",jl:"julia",json:"json",json5:"json5",jsonc:"jsonc",jsonl:"jsonl",jsonnet:"jsonnet",libsonnet:"jsonnet",jssm:"jssm",jsx:"jsx",kt:"kotlin",kts:"kts",kql:"kusto",tex:"tex",ltx:"tex",lean:"lean4",less:"less",liquid:"liquid",lit:"lit",ll:"llvm",logo:"logo",lua:"lua",luau:"luau",Makefile:"makefile",mk:"makefile",makefile:"makefile",md:"markdown",markdown:"markdown",marko:"marko",m:"wolfram",mat:"matlab",mdc:"mdc",mdx:"mdx",wiki:"wikitext",mediawiki:"wikitext",mmd:"mermaid",mermaid:"mermaid",mips:"mipsasm",mojo:"mojo","🔥":"mojo",move:"move",nar:"narrat",nf:"nextflow",nim:"nim",nims:"nim",nimble:"nim",nix:"nix",nu:"nushell",mm:"objective-cpp",ml:"ocaml",mli:"ocaml",mll:"ocaml",mly:"ocaml",pas:"pascal",p:"pascal",pl:"prolog",pm:"perl",t:"perl",raku:"raku",p6:"raku",pl6:"raku",php:"php",phtml:"php",pls:"plsql",sql:"sql",po:"po",polar:"polar",pcss:"postcss",pot:"pot",potx:"potx",pq:"powerquery",pqm:"powerquery",ps1:"powershell",psm1:"powershell",psd1:"powershell",prisma:"prisma",pro:"prolog",P:"prolog",properties:"properties",proto:"protobuf",pp:"puppet",purs:"purescript",py:"python",pyw:"python",pyi:"python",qml:"qml",qmldir:"qmldir",qss:"qss",r:"r",R:"r",rkt:"racket",rktl:"racket",razor:"razor",cshtml:"razor",rb:"ruby",rbw:"ruby",reg:"reg",regex:"regexp",rel:"rel",rs:"rust",rst:"rst",rake:"ruby",gemspec:"ruby",jbuilder:"ruby",builder:"ruby",rabl:"ruby",arb:"ruby",ru:"ruby",podspec:"ruby",Gemfile:"ruby",Rakefile:"ruby",Guardfile:"ruby",Capfile:"ruby",Berksfile:"ruby",Brewfile:"ruby",Vagrantfile:"ruby",Thorfile:"ruby",Appraisals:"ruby",Dangerfile:"ruby",sas:"sas",sass:"sass",scala:"scala",sc:"scala",scm:"scheme",ss:"scheme",sld:"scheme",scss:"scss",sdbl:"sdbl",shadergraph:"shader",st:"smalltalk",sol:"solidity",sparql:"sparql",rq:"sparql",spl:"splunk",config:"ssh-config",do:"stata",ado:"stata",dta:"stata",styl:"stylus",stylus:"stylus",svelte:"svelte",swift:"swift",sv:"system-verilog",svh:"system-verilog",service:"systemd",socket:"systemd",device:"systemd",timer:"systemd",talon:"talonscript",tasl:"tasl",tcl:"tcl",templ:"templ",tf:"tf",tfvars:"tfvars",toml:"toml",ts:"typescript",mts:"typescript",cts:"typescript",tsp:"typespec",tsv:"tsv",tsx:"tsx",ttl:"turtle",twig:"twig",typ:"typst",vv:"v",vala:"vala",vapi:"vala",vb:"vb",vbs:"vb",bas:"vb",vh:"verilog",vhd:"vhdl",vhdl:"vhdl",vim:"vimscript",vue:"vue","vine.ts":"vue-vine",vy:"vyper",wasm:"wasm",wat:"wasm",wy:"文言",wgsl:"wgsl",wit:"wit",wl:"wolfram",nb:"wolfram",xml:"xml",xsl:"xsl",xslt:"xsl",yaml:"yaml",yml:"yml",zs:"zenscript",zig:"zig",zsh:"zsh",sty:"tex"};function ke(e){if(d.has(e))return d.get(e)??"text";if(h[e]!=null)return h[e];const t=e.match(/\.([^/\\]+\.[^/\\]+)$/);if(t!=null){if(d.has(t[1]))return d.get(t[1])??"text";if(h[t[1]]!=null)return h[t[1]]??"text"}const r=e.match(/\.([^.]+)$/)?.[1]??"";return d.has(r)?d.get(r)??"text":h[r]??"text"}function we(){return Z}function xe(){return Object.fromEntries(d)}function ee(e,t,r){const n=typeof r.lineInfo=="function"?r.lineInfo(t):r.lineInfo[t-1];if(n==null){const o=`processLine: line ${t}, contains no state.lineInfo`;throw console.error(o,{node:e,line:t,state:r}),new Error(o)}return e.tagName="div",e.properties["data-line"]=n.lineNumber,e.properties["data-alt-line"]=n.altLineNumber,e.properties["data-line-type"]=n.type,e.properties["data-line-index"]=n.lineIndex,e.children.length===0&&e.children.push(S(`
3
+ `)),e}const y=Symbol("no-token"),w=Symbol("multiple-tokens");function _(e){const t=te(e);if(t!=null)return t;let r=y;const n=[];let o=[],s;const l=()=>{if(o.length===0||s==null){o=[],s=void 0;return}if(o.length===1){const a=o[0];if(a?.type==="element"){re(a,s);for(const u of a.children)b(u)}else b(a);n.push(a),o=[],s=void 0;return}for(const a of o)b(a);n.push(m({tagName:"span",properties:{"data-char":s},children:o})),o=[],s=void 0},i=a=>{if(a!==y){if(a===w){r=w;return}if(r===y){r=a;return}r!==a&&(r=w)}};for(const a of e.children){const u=a.type==="element"?_(a):y;if(i(u),typeof u!="number"){l(),n.push(a);continue}s!=null&&s!==u&&l(),s??=u,o.push(a)}return l(),e.children=n,r}function te(e){const t=e.properties["data-char"];if(typeof t=="number")return t}function b(e){if(e.type==="element"){e.properties["data-char"]=void 0;for(const t of e.children)b(t)}}function re(e,t){e.properties["data-char"]=t}function je(e=!1,t=!1){const r={lineInfo:[]},n=[{line(o){return delete o.properties.class,o},pre(o){const s=Y(o),l=[];if(s!=null){let i=1;for(const a of s.children)a.type==="element"&&(e&&_(a),l.push(ee(a,i,r)),i++);s.children=l}return o},...e?{tokens(o){for(const s of o){let l=0;for(const i of s){const a=i;a.__lineChar??=l,l+=i.content.length}}},preprocess(o,s){s.mergeWhitespaces="never"},span(o,s,l,i,a){if(a?.offset!=null&&a.content!=null){const u=a.__lineChar;return u!=null&&(o.properties["data-char"]=u),o}return o}}:null}];return t&&n.push(ne,L),e&&n.push({line:o=>(o.type==="element"&&o.children.length===0&&o.children.push({type:"element",tagName:"br",properties:{},children:[]}),o)}),{state:r,transformers:n,toClass:L}}const L=G({classPrefix:"hl-"}),ne={name:"token-style-normalizer",tokens(e){for(const t of e)for(const r of t){if(r.htmlStyle!=null)continue;const n={};r.color!=null&&(n.color=r.color),r.bgColor!=null&&(n["background-color"]=r.bgColor),r.fontStyle!=null&&r.fontStyle!==0&&((r.fontStyle&1)!==0&&(n["font-style"]="italic"),(r.fontStyle&2)!==0&&(n["font-weight"]="bold"),(r.fontStyle&4)!==0&&(n["text-decoration"]="underline")),Object.keys(n).length>0&&(r.htmlStyle=n)}}};function p(e){return`--${e==="token"?"diffs-token":"diffs"}-`}function Te({theme:e=C,highlighter:t,prefix:r}){let n="";if(typeof e=="string"){const o=t.getTheme(e),s=v(o);n+=`color:${s.fg};`,n+=`background-color:${s.bg};`,n+=`${p("global")}fg:${s.fg};`,n+=`${p("global")}bg:${s.bg};`,n+=x(o,r)}else{let o=t.getTheme(e.dark),s=v(o);n+=`${p("global")}dark:${s.fg};`,n+=`${p("global")}dark-bg:${s.bg};`,n+=x(o,"dark"),o=t.getTheme(e.light),s=v(o),n+=`${p("global")}light:${s.fg};`,n+=`${p("global")}light-bg:${s.bg};`,n+=x(o,"light")}return n}function x(e,t){t=t!=null?`${t}-`:"";let r="";const n=e.colors?.["gitDecoration.addedResourceForeground"]??e.colors?.["terminal.ansiGreen"];n!=null&&(r+=`${p("global")}${t}addition-color:${n};`);const o=e.colors?.["gitDecoration.deletedResourceForeground"]??e.colors?.["terminal.ansiRed"];o!=null&&(r+=`${p("global")}${t}deletion-color:${o};`);const s=e.colors?.["gitDecoration.modifiedResourceForeground"]??e.colors?.["terminal.ansiBlue"];return s!=null&&(r+=`${p("global")}${t}modified-color:${s};`),r}function $e(e){let t=e.children[0];for(;t!=null;){if(t.type==="element"&&t.tagName==="code")return t.children;"children"in t?t=t.children[0]:t=null}throw console.error(e),new Error("getLineNodes: Unable to find children")}function Ee(e,t){for(const r of t)e.push(r)}function Re(e){return{...M,...e}}function Le(e,t){const r=oe(e,t);return t?r:e.diffHeaderHeight+r}function oe(e,t){return e.paddingTop??(t?e.spacing:0)}function Ce(e){return e.paddingBottom??e.spacing}function qe(e){switch(e){case"simple":return 4;case"metadata":case"line-info":case"line-info-basic":case"custom":return 32}}export{Le as A,Ce as B,Re as C,g as R,W as a,he as b,R as c,de as d,V as e,xe as f,P as g,we as h,ke as i,Ee as j,m as k,ge as l,S as m,qe as n,Te as o,B as p,je as q,D as r,p as s,$e as t,U as u,K as v,me as w,ve as x,ye as y,be as z};