@vantran-se/openchamber-web 2.0.4 → 2.0.6

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 (243) hide show
  1. package/dist/assets/{CodeMirrorCommentWidgets-DZF8ntaq.js → CodeMirrorCommentWidgets-BlzB2e0C.js} +1 -1
  2. package/dist/assets/DiffView-D7JQzQVZ.js +4 -0
  3. package/dist/assets/FilesView-DC2gadXM.js +17 -0
  4. package/dist/assets/{GitView-DwQwqDvu.js → GitView-Gzl0wbdd.js} +4 -4
  5. package/dist/assets/{GuestAttachDialog-CoXM0gh_.js → GuestAttachDialog-CQdDIeco.js} +1 -1
  6. package/dist/assets/GuestSurfacePane-CrOhlIdt.js +1 -0
  7. package/dist/assets/{JsonTreeView-Cq_27v0y.js → JsonTreeView-C3QZifYe.js} +1 -1
  8. package/dist/assets/{LinearIssuesView-CsSSRMhn.js → LinearIssuesView-X27TCI3v.js} +1 -1
  9. package/dist/assets/MarkdownImageGallery-BlTWU9oH.js +1 -0
  10. package/dist/assets/MarkdownRendererImpl-Cno7QsJO.js +12 -0
  11. package/dist/assets/{OnboardingScreen-ClatMQAX.js → OnboardingScreen-Wr_UzNtt.js} +1 -1
  12. package/dist/assets/{PatchDiff-DOwlrIK9.js → PatchDiff-D6pWS7cD.js} +1 -1
  13. package/dist/assets/{PierreDiffViewer-CrcGqqD_.js → PierreDiffViewer-DDljFbJJ.js} +3 -3
  14. package/dist/assets/{PlanView-BGLsMgQk.js → PlanView-LcfEbBPi.js} +4 -4
  15. package/dist/assets/PluginPane-DPWPLc2f.js +3 -0
  16. package/dist/assets/SettingsView-CFe9O3EM.js +30 -0
  17. package/dist/assets/{SettingsWindow-B0BAy-f9.js → SettingsWindow-DT1xhvgi.js} +1 -1
  18. package/dist/assets/{SubmoduleDiffSummary-fcdDzCSW.js → SubmoduleDiffSummary-CBHXaIkB.js} +1 -1
  19. package/dist/assets/{ToolOutputDialog-B7xaUz2H.js → ToolOutputDialog-B_ZX8ZbZ.js} +6 -6
  20. package/dist/assets/{ToolPartDiffPreview-CkWCaUmZ.js → ToolPartDiffPreview-D_HQzkXU.js} +2 -2
  21. package/dist/assets/{VirtualizedFileDiff-DONC4eI2.js → VirtualizedFileDiff-BUK1ujXg.js} +1 -1
  22. package/dist/assets/{WalkthroughView-CXDImOXW.js → WalkthroughView-H-tYOvhO.js} +2 -2
  23. package/dist/assets/{appThemeRegistry-Br2TLSlb.js → appThemeRegistry-BoJGAwCP.js} +1 -1
  24. package/dist/assets/changesTree-CePHbFcj.js +1 -0
  25. package/dist/assets/commitAndPush-BzZrF8bK.js +1 -0
  26. package/dist/assets/{computeVirtualFileMetrics-_-20umCs.js → computeVirtualFileMetrics-kYyVjXLu.js} +2 -2
  27. package/dist/assets/de-ByfQDcPj.js +10 -0
  28. package/dist/assets/es-DzNbjsQS.js +16 -0
  29. package/dist/assets/fr-B8AVLrnX.js +14 -0
  30. package/dist/assets/{index-OKDYjcMF.js → index-0-ON1L7L.js} +1 -1
  31. package/dist/assets/index-DUke1nme.css +1 -0
  32. package/dist/assets/index-Di6zUe5h.js +41 -0
  33. package/dist/assets/{isDiffPlainText-D77M6q1f.js → isDiffPlainText-Bgm_aLpu.js} +1 -1
  34. package/dist/assets/{isFilePlainText-C54B4Mns.js → isFilePlainText-D5GMgURH.js} +1 -1
  35. package/dist/assets/ja-1g6S0G19.js +16 -0
  36. package/dist/assets/ko-CxplvYkJ.js +16 -0
  37. package/dist/assets/{main-CGEvLMd2.js → main--Y98ZLsD.js} +2 -2
  38. package/dist/assets/main-GjXmVNpD.js +896 -0
  39. package/dist/assets/{markdown-shiki.worker-CahLvHIq.js → markdown-shiki.worker-Bg8SoAJJ.js} +8 -5
  40. package/dist/assets/markdownCore-CVdUcVCi.js +7 -0
  41. package/dist/assets/{miniChat-BSxkRQLj.js → miniChat-tTx5mpbd.js} +2 -2
  42. package/dist/assets/{mobile-C5KRTNOB.js → mobile-BmbiDWGb.js} +2 -2
  43. package/dist/assets/patchFileDiff-CV4iVQ8L.js +13 -0
  44. package/dist/assets/pl-f3QyqvIB.js +16 -0
  45. package/dist/assets/pt-BR-BsaoaiCK.js +16 -0
  46. package/dist/assets/{renderElectronMiniChatApp-CnkAQV6o.js → renderElectronMiniChatApp-BnCdnDhv.js} +2 -2
  47. package/dist/assets/renderMobileApp-CKn8nbSW.js +25 -0
  48. package/dist/assets/runtimeEndpointReset-sCi88eed.js +27 -0
  49. package/dist/assets/scheduledTasksApi-Dahv3ws0.js +1 -0
  50. package/dist/assets/{shikiHighlight-4O0ZM14D.js → shikiHighlight-O5_xLmWt.js} +1 -1
  51. package/dist/assets/{textMateThemeFromAppTheme-yNq7b0DZ.js → textMateThemeFromAppTheme-XM4VefqN.js} +1 -1
  52. package/dist/assets/tr-BNFsa6nz.js +7 -0
  53. package/dist/assets/uk-CJ9y5ULA.js +16 -0
  54. package/dist/assets/{useAppFontEffects-Bzyszv2N.js → useAppFontEffects-BN06mgHB.js} +160 -156
  55. package/dist/assets/{useInlineCommentController-zOf6ORAq.js → useInlineCommentController-Bb9Gjz1Q.js} +2 -2
  56. package/dist/assets/{useRootScrollLock-DCaZ4BWi.js → useRootScrollLock-Chk1cFUw.js} +2 -2
  57. package/dist/assets/{vendor-codemirror-language-data-6cEFPNUR.js → vendor-codemirror-language-data-C2qMZiA7.js} +2 -2
  58. package/dist/assets/vendor-opencode-client-DSZl7jSi.js +12 -0
  59. package/dist/assets/vendor-zod-BSoePkpP.js +39 -0
  60. package/dist/assets/{web-components-BEo4-ISu.js → web-components-BQWjCn_U.js} +1 -1
  61. package/dist/assets/zh-CN-U0QjVlAA.js +16 -0
  62. package/dist/assets/zh-TW-J9PTJQJi.js +16 -0
  63. package/dist/index.html +5 -5
  64. package/dist/mini-chat.html +5 -5
  65. package/dist/mobile.html +5 -5
  66. package/package.json +4 -4
  67. package/server/index.js +82 -0
  68. package/server/lib/agent-tool/DOCUMENTATION.md +132 -47
  69. package/server/lib/agent-tool/runtime.js +34 -15
  70. package/server/lib/agent-tool/runtime.test.js +15 -0
  71. package/server/lib/browser-control/DOCUMENTATION.md +14 -2
  72. package/server/lib/event-stream/global-hub.js +23 -1
  73. package/server/lib/event-stream/global-hub.test.js +35 -0
  74. package/server/lib/event-stream/global-ws-bridge.js +3 -1
  75. package/server/lib/event-stream/upstream-reader.js +3 -2
  76. package/server/lib/git/DOCUMENTATION.md +1 -1
  77. package/server/lib/git/service.js +22 -0
  78. package/server/lib/git/service.test.js +8 -0
  79. package/server/lib/guests/DOCUMENTATION.md +4 -3
  80. package/server/lib/guests/catalog.js +19 -1
  81. package/server/lib/guests/catalog.test.js +22 -0
  82. package/server/lib/guests/html-styles.js +5 -3
  83. package/server/lib/guests/html-styles.test.js +3 -1
  84. package/server/lib/guests/routes.js +11 -3
  85. package/server/lib/guests/service.js +5 -0
  86. package/server/lib/guests/surface.js +55 -9
  87. package/server/lib/guests/surface.test.js +56 -6
  88. package/server/lib/notifications/DOCUMENTATION.md +10 -0
  89. package/server/lib/notifications/emit-route.js +118 -0
  90. package/server/lib/notifications/emit-route.test.js +112 -0
  91. package/server/lib/openchamber-control/actions.js +16 -2
  92. package/server/lib/openchamber-control/service.js +23 -0
  93. package/server/lib/openchamber-control/service.test.js +31 -0
  94. package/server/lib/openchamber-sessions/fork-inheritance.js +103 -0
  95. package/server/lib/openchamber-sessions/fork-inheritance.test.js +69 -0
  96. package/server/lib/openchamber-sessions/routes.js +11 -0
  97. package/server/lib/openchamber-sessions/routes.test.js +18 -0
  98. package/server/lib/opencode/bootstrap-runtime.js +14 -1
  99. package/server/lib/opencode/compatibility.js +6 -3
  100. package/server/lib/opencode/compatibility.test.js +8 -0
  101. package/server/lib/opencode/config-entity-v2.test.js +27 -0
  102. package/server/lib/opencode/config-paths.test.js +12 -0
  103. package/server/lib/opencode/config-v2.d.ts +2 -0
  104. package/server/lib/opencode/config-v2.js +42 -0
  105. package/server/lib/opencode/config-v2.test.js +17 -0
  106. package/server/lib/opencode/core-routes.js +20 -4
  107. package/server/lib/opencode/core-routes.test.js +41 -0
  108. package/server/lib/opencode/env-runtime.js +1 -8
  109. package/server/lib/opencode/feature-routes-runtime.js +2 -1
  110. package/server/lib/opencode/lifecycle.js +30 -2
  111. package/server/lib/opencode/lifecycle.test.js +27 -0
  112. package/server/lib/opencode/managed-config-file.js +18 -6
  113. package/server/lib/opencode/managed-config-file.test.js +23 -7
  114. package/server/lib/opencode/mcp.js +7 -2
  115. package/server/lib/opencode/npm-registry-config.d.ts +1 -0
  116. package/server/lib/opencode/npm-registry-config.js +123 -0
  117. package/server/lib/opencode/npm-registry-config.test.js +167 -0
  118. package/server/lib/opencode/npm-registry.js +5 -6
  119. package/server/lib/opencode/npm-registry.test.js +30 -0
  120. package/server/lib/opencode/openchamber-routes.js +29 -11
  121. package/server/lib/opencode/openchamber-routes.test.js +18 -0
  122. package/server/lib/opencode/project-directory-runtime.js +8 -0
  123. package/server/lib/opencode/project-directory-runtime.test.js +13 -0
  124. package/server/lib/opencode/provider-source-route.test.js +59 -0
  125. package/server/lib/opencode/providers.js +3 -0
  126. package/server/lib/opencode/providers.test.js +62 -0
  127. package/server/lib/opencode/proxy.js +38 -2
  128. package/server/lib/opencode/routes-upgrade.test.js +1 -1
  129. package/server/lib/opencode/routes.js +36 -1
  130. package/server/lib/opencode/server-utils-runtime.js +5 -0
  131. package/server/lib/opencode/settings-helpers.js +10 -0
  132. package/server/lib/opencode/settings-helpers.test.js +2 -2
  133. package/server/lib/opencode/settings-registry.json +17 -0
  134. package/server/lib/opencode/settings-runtime.js +1 -0
  135. package/server/lib/opencode/shared.js +49 -4
  136. package/server/lib/opencode/shared.test.js +78 -1
  137. package/server/lib/opencode/shutdown-runtime.js +3 -0
  138. package/server/lib/opencode/skill-routes.js +28 -12
  139. package/server/lib/opencode/skill-routes.test.js +121 -1
  140. package/server/lib/opencode/upgrade-capability.js +0 -14
  141. package/server/lib/opencode/v1-migration-topup.js +21 -15
  142. package/server/lib/opencode/v1-migration-topup.test.js +14 -6
  143. package/server/lib/opencode/v2-install.d.ts +1 -0
  144. package/server/lib/opencode/v2-install.js +8 -7
  145. package/server/lib/opencode/v2-install.test.js +13 -4
  146. package/server/lib/opencode/watcher.js +3 -1
  147. package/server/lib/opencode/websearch-config.js +13 -1
  148. package/server/lib/quota/providers/kimi.js +1 -1
  149. package/server/lib/realtime-proxy.js +5 -1
  150. package/server/lib/realtime-proxy.test.js +29 -0
  151. package/server/lib/relay/tunnel-host.js +4 -1
  152. package/server/lib/relay/tunnel-host.test.js +11 -0
  153. package/server/lib/session-assist/DOCUMENTATION.md +17 -5
  154. package/server/lib/session-assist/runtime.js +19 -2
  155. package/server/lib/session-assist/runtime.test.js +8 -0
  156. package/server/lib/session-goal/DOCUMENTATION.md +11 -0
  157. package/server/lib/small-model/DOCUMENTATION.md +11 -10
  158. package/server/lib/small-model/index.js +27 -32
  159. package/server/lib/small-model/index.test.js +28 -16
  160. package/server/lib/spaces/DOCUMENTATION.md +404 -32
  161. package/server/lib/spaces/code-in-bait.js +145 -6
  162. package/server/lib/spaces/code-in.js +10 -150
  163. package/server/lib/spaces/code-in.test.js +7 -83
  164. package/server/lib/spaces/code-out.js +1819 -0
  165. package/server/lib/spaces/code-out.test.js +3945 -0
  166. package/server/lib/spaces/code-transfer.js +173 -0
  167. package/server/lib/spaces/command-stream.test.js +181 -0
  168. package/server/lib/spaces/dispatcher.js +670 -0
  169. package/server/lib/spaces/dispatcher.test.js +582 -0
  170. package/server/lib/spaces/gatekeeper-channel.js +61 -7
  171. package/server/lib/spaces/gatekeeper-channel.test.js +43 -7
  172. package/server/lib/spaces/gatekeeper-program.cjs +68 -14
  173. package/server/lib/spaces/gatekeeper-program.test.js +118 -3
  174. package/server/lib/spaces/hardening.js +20 -4
  175. package/server/lib/spaces/hardening.test.js +18 -3
  176. package/server/lib/spaces/host-git.js +7 -4
  177. package/server/lib/spaces/host-git.test.js +6 -2
  178. package/server/lib/spaces/host.js +310 -0
  179. package/server/lib/spaces/host.test.js +273 -0
  180. package/server/lib/spaces/journey.js +552 -0
  181. package/server/lib/spaces/journey.test.js +589 -0
  182. package/server/lib/spaces/layout.js +42 -8
  183. package/server/lib/spaces/manager.js +4 -3
  184. package/server/lib/spaces/manager.test.js +6 -0
  185. package/server/lib/spaces/places/code-out.docker.live.test.js +412 -0
  186. package/server/lib/spaces/places/contract-suite.js +36 -0
  187. package/server/lib/spaces/places/dispatcher.docker.live.test.js +296 -0
  188. package/server/lib/spaces/places/docker-live-support.js +27 -4
  189. package/server/lib/spaces/places/docker.js +33 -5
  190. package/server/lib/spaces/places/docker.test.js +42 -3
  191. package/server/lib/spaces/places/escape-suite.js +118 -14
  192. package/server/lib/spaces/places/fake-docker.js +3 -1
  193. package/server/lib/spaces/places/grants.docker.live.test.js +197 -0
  194. package/server/lib/spaces/places/memory-place.js +24 -1
  195. package/server/lib/spaces/places/registry.js +1 -1
  196. package/server/lib/spaces/places/server.docker.live.test.js +69 -33
  197. package/server/lib/spaces/places/sessions.docker.live.test.js +222 -0
  198. package/server/lib/spaces/routes.js +216 -0
  199. package/server/lib/spaces/routes.test.js +213 -0
  200. package/server/lib/spaces/run-command.js +261 -8
  201. package/server/lib/spaces/run-command.test.js +193 -3
  202. package/server/lib/spaces/space-events.js +153 -0
  203. package/server/lib/spaces/space-events.test.js +160 -0
  204. package/server/lib/spaces/space-opencode.js +52 -0
  205. package/server/lib/spaces/space-opencode.test.js +41 -0
  206. package/server/lib/spaces/space-records.js +150 -0
  207. package/server/lib/spaces/space-records.test.js +113 -0
  208. package/server/lib/spaces/space-sessions.js +210 -0
  209. package/server/lib/spaces/space-sessions.test.js +161 -0
  210. package/server/lib/spaces/websocket.js +329 -0
  211. package/server/lib/spaces/websocket.test.js +345 -0
  212. package/server/lib/ui-auth/ui-auth.js +8 -2
  213. package/server/lib/ui-auth/ui-auth.test.js +29 -0
  214. package/server/opencode-proxy.test.js +113 -0
  215. package/dist/assets/DiffView-D2p4Ar0H.js +0 -4
  216. package/dist/assets/FilesView-BeTtbsip.js +0 -17
  217. package/dist/assets/GuestSurfacePane-DIJvkkM-.js +0 -1
  218. package/dist/assets/MarkdownImageGallery-CY0dWTaE.js +0 -1
  219. package/dist/assets/MarkdownRendererImpl-ILdXzLrt.js +0 -12
  220. package/dist/assets/PluginPane-B39JEUL8.js +0 -3
  221. package/dist/assets/SettingsView-13B2_G-A.js +0 -29
  222. package/dist/assets/commitAndPush-CcI4ol7c.js +0 -1
  223. package/dist/assets/de-BtYnUgII.js +0 -10
  224. package/dist/assets/es-crP5qPye.js +0 -16
  225. package/dist/assets/fr-CLSRuALk.js +0 -14
  226. package/dist/assets/index-CLcM8HKx.css +0 -1
  227. package/dist/assets/index-CvLgnuNI.js +0 -41
  228. package/dist/assets/ja-SZ1-ucLV.js +0 -16
  229. package/dist/assets/ko-HthbT_Ve.js +0 -16
  230. package/dist/assets/main-BJklC7Cl.js +0 -896
  231. package/dist/assets/markdownCore-BzQuETm0.js +0 -5
  232. package/dist/assets/patchFileDiff-DGw2KryM.js +0 -13
  233. package/dist/assets/pl-C8eYfjL1.js +0 -16
  234. package/dist/assets/pt-BR-cYOrZdxS.js +0 -16
  235. package/dist/assets/renderMobileApp-CMxjwisj.js +0 -25
  236. package/dist/assets/runtimeEndpointReset-C45jrFq4.js +0 -27
  237. package/dist/assets/scheduledTasksApi-CkK1F9s2.js +0 -1
  238. package/dist/assets/tr-B4IQ5t-T.js +0 -7
  239. package/dist/assets/uk-DCoXG6ve.js +0 -16
  240. package/dist/assets/vendor-opencode-client-_BAHQo4R.js +0 -12
  241. package/dist/assets/vendor-zod-Gea9uBlY.js +0 -39
  242. package/dist/assets/zh-CN-BXBoxsFk.js +0 -16
  243. package/dist/assets/zh-TW-C6oelpnL.js +0 -16
@@ -1,5 +0,0 @@
1
- import{B as v,g as I}from"./vendor-marked-CX41MkDF.js";import{m as B}from"./vendor-marked-linkify-it-CXI_LHIE.js";import{p as D}from"./vendor-remend-BWYYytN3.js";import{k as z}from"./vendor-katex-CHD9BdDO.js";import{p as h}from"./vendor-dompurify-r8glNMJW.js";import{kp as M,kq as C,kr as w,ks as G,kt as F,gK as K,ku as U,kv as P}from"./useAppFontEffects-Bzyszv2N.js";import{O as W}from"./index-CvLgnuNI.js";import"./vendor-linkify-it-DZCzzDkK.js";import"./vendor-uc.micro-BAd0H0z4.js";import"./vendor-react-BUCujlKS.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-Gea9uBlY.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-vite-runtime-DD1OZmLC.js";import"./vendor-zustand-BAGL70zf.js";import"./vendor-base-ui-CsXYnR5c.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.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-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-tanstack-react-virtual-ClYN8CzB.js";import"./vendor-tanstack-virtual-core-BewVQryB.js";import"./contextPanelEmbeddedChat-CirXEPJq.js";import"./vendor-sonner-DFyL3AvE.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-BgPj_McA.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-C9awkmn-.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-CiLROUVV.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-Cc2ZYbgX.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DzPz9Wgq.js";import"./vendor-codemirror-lang-json-CMBS2tG9.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-O0cZX78y.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-CfgK872x.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BPGOH9ye.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-6cEFPNUR.js";import"./vendor-codemirror-lang-python-HahnQaAS.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-B7H_j0iU.js";import"./vendor-legendapp-list-BuBPBC3R.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./vendor-opencode-client-_BAHQo4R.js";const T=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),x=["script","style"],X=e=>{try{const t=new URL(e);return t.protocol==="file:"&&(!t.hostname||t.hostname==="localhost")}catch{return!1}},d=e=>e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),j=/\.(?:png|jpe?g|gif|webp)(?:[?#].*)?$/i,V=/^[A-Za-z]:[\\/]/,q=/^[A-Za-z][A-Za-z\d+.-]*:/,Y=12,Z=1024,J=2*1024*1024,Q=64*1024,m=new Map;let k=0;const ee=e=>/^\/\//.test(e)||!j.test(e)?!1:V.test(e)||/^file:\/\//i.test(e)||!q.test(e),te=e=>/^(?:https?:)?\/\//i.test(e)||/^data:image\/(?:png|jpeg|gif|webp);base64,/i.test(e)||ee(e),$=(e,t)=>{if(/^data:image\/(png|jpeg|gif|webp)/i.test(e)){const o=/^data:image\/([^;,]+)/i.exec(e)?.[1]?.replace("jpeg","jpg")??"png";return t.trim()||`image.${o}`}const r=(e.split(/[?#]/,1)[0]?.replace(/\\/g,"/")??"").split("/").filter(Boolean).at(-1)??"";if(!r)return t.trim();try{return decodeURIComponent(r)}catch{return r}},re=(e,t)=>(e.length+t.reduce((n,r)=>n+r.source.length+r.filename.length,0))*2,ne=e=>{const t=[],n=new Set,r=I.lexer(e);return I.walkTokens(r,o=>{if(o.type!=="image")return;const s=o.href??"";if(!s||!te(s)||n.has(s))return;const i=typeof o.text=="string"?o.text:"",a=$(s,i);a&&(n.add(s),t.push({source:s,filename:a}))}),t},oe=e=>{const t=m.get(e);if(t)return m.delete(e),m.set(e,t),t.candidates;let n;try{n=ne(e)}catch{return[]}const r=re(e,n);if(r>Q)return n;for(;m.size>=Z||k+r>J;){const o=m.entries().next().value;if(!o)break;m.delete(o[0]),k-=o[1].bytes}return m.set(e,{candidates:n,bytes:r}),k+=r,n},se=({href:e,title:t,text:n})=>{const r=$(e??"",n);return`<span${t?` title="${d(t)}"`:""} class="inline-flex items-center gap-1 align-text-bottom text-muted-foreground" data-openchamber-markdown-image-label="true">${d(r)}</span>`},ur=(e,t=Y)=>{if(t<=0)return[];const n=[],r=new Set;for(const o of e)if(!(!o||n.length>=t))for(const s of oe(o)){if(n.length>=t)break;r.has(s.source)||(r.add(s.source),n.push({...s}))}return n},ie=e=>/^\[[^\]]+\]:\s+\S+/m.test(e)||/^\[\^[^\]]+\]:\s+/m.test(e),ae=e=>{const t=e.match(/^[ \t]{0,3}(`{3,}|~{3,})/);if(!t)return!1;const n=t[1];if(!n)return!1;const r=n[0],o=n.length,s=e.trimEnd().split(`
2
- `).at(-1)?.trim()??"";return!new RegExp(`^[\\t ]{0,3}${r}{${o},}[\\t ]*$`).test(s)},ce=300,g=e=>{try{return D(e,{linkMode:"text-only"})}catch{return e}},L=(e,t)=>{if(!t)return[{raw:e,src:e,mode:"full",highlight:!0}];if(ie(e))return[{raw:e,src:g(e),mode:"live",highlight:!0}];let n;try{n=A.lexer(e)}catch{return[{raw:e,src:e,mode:"live",highlight:!0,plainText:!0}]}let r=-1;for(let s=n.length-1;s>=0;s-=1)if(n[s]?.type!=="space"){r=s;break}if(r<0)return[{raw:e,src:g(e),mode:"live",highlight:!0}];const o=[];for(let s=0;s<n.length;s+=1){const i=n[s];if(!i||i.type==="space")continue;const a=i.raw??"",l=s===r,c=i.type==="code"&&ae(a),p=c&&a.split(`
3
- `).length<=ce;o.push({raw:a,src:c?a:g(a),mode:l?"live":"full",highlight:!c||p})}return o.length===0?[{raw:e,src:g(e),mode:"live",highlight:!0}]:o},f=(e,t,n)=>{try{return z.renderToString(e,{displayMode:n,throwOnError:!1})}catch{return t}},le={name:"inlineMath",level:"inline",start(e){const t=e.indexOf("\\(");return t<0?void 0:t},tokenizer(e){const t=/^\\\(([\s\S]+?)\\\)/.exec(e);if(t)return{type:"inlineMath",raw:t[0],text:t[1]??""}},renderer(e){const t=e;return f(t.text,t.raw,!1)}},pe=/^[ \t]*\\\[([\s\S]+?)\\\][ \t]*(?:\n|$)/,me=/(?:^|\n)[ \t]*\\\[/,de={name:"blockMath",level:"block",start(e){const t=me.exec(e);return t?t.index+t[0].length-2:void 0},tokenizer(e){const t=pe.exec(e);if(t)return{type:"blockMath",raw:t[0],text:t[1]??""}},renderer(e){const t=e;return f(t.text,t.raw,!0)}},ue={name:"disclosure",level:"block",start(e){const t=/(?:^|\n) {0,3}<details(?:\s|>)/i.exec(e);return t?t.index+(t[0].startsWith(`
4
- `)?1:0):void 0},tokenizer(e){const t=/^ {0,3}<details(?:\s+(open(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+))?))?\s*>\s*<summary\s*>([\s\S]*?)<\/summary\s*>/i.exec(e);if(!t)return;const n=t[0].length,r=e.slice(n),o=/(^ {0,3}(`{3,}|~{3,})[^\n]*(?:\n|$))|(`+)|(<\/?details\b[^>]*>)/gim;let s=1,i=r.length,a=e.length,l;for(;l=o.exec(r);)if(l[2]){const c=l[2],p=new RegExp(`^ {0,3}${c[0]}{${c.length},}[\\t ]*(?:\\n|$)`,"gm");if(p.lastIndex=o.lastIndex,!p.exec(r))break;o.lastIndex=p.lastIndex}else if(l[3]){const c=l[3],p=/`+/g;p.lastIndex=o.lastIndex;let u;for(;u=p.exec(r);)if(u[0].length===c.length){o.lastIndex=p.lastIndex;break}}else if(l[4]){const c=r.lastIndexOf(`
5
- `,l.index-1)+1,p=r.slice(c,l.index);if(/^(?: {4}|\t| {0,3}>)/.test(p)||/(?:^|[^\\])(?:\\\\)*\\$/.test(p))continue;if(s+=/^<\//.test(l[4])?-1:1,s===0){i=l.index,a=n+o.lastIndex;break}}return{type:"disclosure",raw:e.slice(0,a),open:!!t[1],summary:this.lexer.inlineTokens(t[2]??""),tokens:this.lexer.blockTokens(r.slice(0,i))}},renderer(e){return`<details data-md-details${e.open?" open":""}><summary>${this.parser.parseInline(e.summary)}</summary>${this.parser.parse(e.tokens??[])}</details>`},childTokens:["summary","tokens"]},S=e=>new v().use(B({fuzzyLink:!1}),{gfm:!0,breaks:!1,extensions:[le,de,ue],renderer:{html({text:t}){return T(t)},link({href:t,title:n,text:r}){const o=t??"",s=G(o);if(s)return`<a href="${d(P(s))}" data-openchamber-agent-mention="true" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">${r}</a>`;const i=F(o);if(i)return`<a href="${d(o)}" data-skill-name="${d(i)}" class="text-primary hover:underline">${r}</a>`;const a=n?` title="${d(n)}"`:"";return`<a href="${d(o)}"${a} class="external-link" target="_blank" rel="noopener noreferrer">${r}</a>`},...e==="label"?{image:se}:{}}}),A=S("inline"),b=S("label"),_=e=>e.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&"),he=/\$\$([\s\S]*?)\$\$|\$(?![\s$])([^\s$<>"](?:[^$<>"]*?[^\s$<>"])?)\$(?!\d)/g,ge=/^[\d.,\s]+$/,fe=e=>e.replace(he,(t,n,r)=>n!==void 0?f(_(n),t,!0):r!==void 0&&!ge.test(r)?f(_(r),t,!1):t),ke=/(<[^>]*>)/,_e=e=>e.split(ke).map((t,n)=>n%2===1?t:fe(t)).join(""),R=e=>{if(e.indexOf("$")===-1)return e;const t=/(<(?:pre|code|kbd)[^>]*>[\s\S]*?<\/(?:pre|code|kbd)>)/gi;return e.split(t).map((n,r)=>r%2===1?n:_e(n)).join("")},Ee=/<pre><code(?:\s+class="language-([^"]*)")?>([\s\S]*?)<\/code><\/pre>/g,Ae=1200,Ie=200,we=(e,t)=>{let n=1;for(let r=0;r<e.length;r+=1)if(e.charCodeAt(r)===10&&++n>t)return!0;return!1},xe=async e=>{const t=[...e.matchAll(Ee)];if(t.length===0)return e;const n=W()?Ie:Ae,r=await Promise.all(t.map(async s=>{const[i,a,l]=s,c=(a||"text").toLowerCase();if(c==="mermaid")return null;const p=_(l??"");if(we(p,n))return{full:i,next:i.replace("<pre",`<pre data-md-lang="${c}"`)};const u=await U(p,c);return u?{full:i,next:u.replace(/^<pre/,`<pre data-md-lang="${c}"`)}:null}));let o=e;for(const s of r)s&&(o=o.replace(s.full,()=>s.next));return o},ye={USE_PROFILES:{html:!0,mathMl:!0,svg:!0},ADD_TAGS:["svg","path","g","rect","line","polygon","polyline","circle","ellipse","text","tspan","defs","marker"],ADD_ATTR:["d","viewBox","preserveAspectRatio","xmlns","target","fill","stroke","stroke-width","transform","points","x","y","x1","y1","x2","y2","cx","cy","r","rx","ry","style"],FORBID_TAGS:[...x],FORBID_CONTENTS:[...x]};let y=!1;const Me=()=>{y||typeof window>"u"||!h.isSupported||(y=!0,h.addHook("uponSanitizeAttribute",(e,t)=>{!(e instanceof HTMLAnchorElement)||t.attrName!=="href"||(X(t.attrValue)||K(t.attrValue))&&(t.forceKeepAttr=!0)}),h.addHook("afterSanitizeAttributes",e=>{e instanceof HTMLAnchorElement&&e.target==="_blank"&&e.setAttribute("rel","noopener noreferrer")}))},H=e=>h.isSupported?(Me(),h.sanitize(e,ye)):"",Ce=2e3,Te=24*1024*1024,$e=32,Le=2*1024*1024,O=new C({maxEntries:Ce,maxBytes:Te}),Se=new C({maxEntries:$e,maxBytes:Le}),be=e=>e==="live"?Se:O,N=(e,t,n,r)=>`${e}:${t}:${n?1:0}:${r}`,hr=(e,t="inline")=>{if(!e)return[];const n=L(e,!1),r=[];for(const o of n){const s=M(o.raw),i=N(s,o.mode,o.highlight,t),a=O.get(i);if(a===void 0)return null;r.push({id:i,html:a})}return r},E=e=>`<div class="whitespace-pre-wrap break-words">${T(e)}</div>`,Re=async(e,t)=>{if(e.plainText)return E(e.raw);const n=t==="label"?b:A;let r;try{r=await n.parse(e.src)}catch{return E(e.raw)}const o=R(r),s=e.highlight?await xe(o):o;return H(s)},gr=(e,t="inline")=>{if(!e)return"";const n=t==="label"?b:A;let r;try{r=n.parse(e,{async:!1})}catch{return E(e)}const o=R(r);return H(o)},fr=async(e,t,n="inline")=>{if(!e)return[];const r=L(e,t);return Promise.all(r.map(async o=>{const s=M(o.raw),i=N(s,o.mode,o.highlight,n),a=be(o.mode),l=a.get(i);if(l!==void 0)return{id:i,html:l};const c=await Re(o,n);return a.set(i,c,w(i)+w(c)),{id:i,html:c}}))};export{Y as MAX_MARKDOWN_IMAGE_COUNT,ur as extractMarkdownImageCandidates,hr as getCachedMarkdownBlocks,fr as renderMarkdownBlocks,gr as renderMarkdownSync};
@@ -1,13 +0,0 @@
1
- import{f as ce,r as F,j as r}from"./vendor-react-BUCujlKS.js";import{k0 as Ie,f as se,w as me,h as de,au as he,a7 as He,d0 as pe,I as Y,B as te,d5 as ge,d7 as xe,c$ as we,d6 as Ce,d4 as ve,R as ye,at as Ne,av as je,as as be,ce as Ae,K as le,k1 as De,_ as Me,cA as Ke,aH as ke,cc as Pe,k2 as Te,cd as _e,k3 as Ve,k4 as We}from"./useAppFontEffects-Bzyszv2N.js";import{f as Be}from"./runtimeEndpointReset-C45jrFq4.js";import{u as qe,a0 as ze,a as X}from"./index-CvLgnuNI.js";import{c as Se,p as Ge}from"./vendor-zustand-BAGL70zf.js";import{p as Je}from"./VirtualizedFileDiff-DONC4eI2.js";function Qe(s,e=10){const n=[];let t;for(const a of s.split(`
2
- `)){const h=a.match(Ie);if(h!=null){t!=null&&(t.hunkLines.length>0&&(oe(t,e,"trailing"),ue(t,n)),t=void 0);const o=parseInt(h[3]),c=parseInt(h[1]),m=parseInt(h[4]??"1"),l=parseInt(h[2]??"1");isNaN(o)||isNaN(c)||isNaN(m)||isNaN(l)?n.push(a):t={additionStart:o,deletionStart:c,additionCount:0,deletionCount:0,hunkLines:[],contextLines:[]};continue}if(t==null){n.push(a);continue}if(a.startsWith(" "))t.contextLines.push(a);else if(a!==""){if(t.hunkLines.length>0&&t.contextLines.length>e*2){const o=t.contextLines.length-e*2,c=t.contextLines.slice(-e);oe(t,e,"trailing");const{additionCount:m,deletionCount:l}=t;ue(t,n),t={additionStart:t.additionStart+m+o,deletionStart:t.deletionStart+l+o,deletionCount:0,additionCount:0,contextLines:c,hunkLines:[]}}oe(t,e,t.hunkLines.length===0?"leading":"before-change"),t.hunkLines.push(a),a.startsWith("+")?t.additionCount+=1:a.startsWith("-")&&(t.deletionCount+=1)}}t!=null&&t.hunkLines.length>0&&(oe(t,e,"trailing"),ue(t,n));const i=n.join(`
3
- `);return s.endsWith(`
4
- `)?`${i}
5
- `:i}function oe(s,e,n){if(n==="leading"&&s.contextLines.length>e){const t=s.contextLines.length-e;s.contextLines.splice(0,t),s.additionStart+=t,s.deletionStart+=t}return n==="trailing"&&s.contextLines.length>e&&(s.contextLines.length=e),s.contextLines.length>0&&(s.hunkLines.push(...s.contextLines),s.additionCount+=s.contextLines.length,s.deletionCount+=s.contextLines.length,s.contextLines.length=0),s}function ue(s,e){e.push(`@@ -${Re(s.deletionStart,s.deletionCount)} +${Re(s.additionStart,s.additionCount)} @@`),e.push(...s.hunkLines)}function Re(s,e){return e===1?`${s}`:`${s},${e}`}function vt(s){const e=ce.c(74),{branches:n,currentBranch:t,base:i,onSelect:a,mobile:h}=s,o=h===void 0?!1:h,{t:c}=se(),m=me(),l=o&&!m.enabled,[x,C]=F.useState(!1),[w,j]=F.useState("");let g;e[0]!==i||e[1]!==c?(g=i?Be(i):c("gitView.pr.field.baseBranch"),e[0]=i,e[1]=c,e[2]=g):g=e[2];const u=g;let b;e[3]===Symbol.for("react.memo_cache_sentinel")?(b=E=>{C(E),E||j("")},e[3]=b):b=e[3];const S=b;let d;e[4]!==o?(d=de(he({size:o?"default":"sm"}),"min-w-0 max-w-48"),e[4]=o,e[5]=d):d=e[5];const P=o||void 0;let y;e[6]!==c?(y=c("gitView.pr.field.baseBranch"),e[6]=c,e[7]=y):y=e[7];const H=l?"dialog":void 0,L=l?x:void 0,M=!t;let k;e[8]!==l?(k=l?()=>S(!0):void 0,e[8]=l,e[9]=k):k=e[9];let B;e[10]===Symbol.for("react.memo_cache_sentinel")?(B=r.jsx(Y,{name:"git-branch",className:"size-3.5"}),e[10]=B):B=e[10];let O;e[11]!==u?(O=r.jsx("span",{className:"truncate",children:u}),e[11]=u,e[12]=O):O=e[12];let v;e[13]===Symbol.for("react.memo_cache_sentinel")?(v=r.jsx(Y,{name:"arrow-down-s",className:"size-3.5"}),e[13]=v):v=e[13];let f;e[14]!==u||e[15]!==k||e[16]!==O||e[17]!==d||e[18]!==P||e[19]!==y||e[20]!==H||e[21]!==L||e[22]!==M?(f=r.jsxs(te,{variant:"outline",className:d,"data-mobile-comparison-trigger":P,"aria-label":y,"aria-haspopup":H,"aria-expanded":L,title:u,disabled:M,onClick:k,children:[B,O,v]}),e[14]=u,e[15]=k,e[16]=O,e[17]=d,e[18]=P,e[19]=y,e[20]=H,e[21]=L,e[22]=M,e[23]=f):f=e[23];const K=f,V=o?"[&_[data-slot=command-input-wrapper]]:h-11":void 0,I=!l,$=o?"h-11":void 0;let T;e[24]!==c?(T=c("gitView.branch.searchPlaceholder"),e[24]=c,e[25]=T):T=e[25];let z;e[26]!==c?(z=c("gitView.branch.searchPlaceholder"),e[26]=c,e[27]=z):z=e[27];let D;e[28]!==w||e[29]!==I||e[30]!==$||e[31]!==T||e[32]!==z?(D=r.jsx(ge,{autoFocus:I,className:$,value:w,onValueChange:j,placeholder:T,"aria-label":z}),e[28]=w,e[29]=I,e[30]=$,e[31]=T,e[32]=z,e[33]=D):D=e[33];const R=o?"max-h-[min(45dvh,24rem)]":void 0;let _;e[34]!==c?(_=c("gitView.branch.empty"),e[34]=c,e[35]=_):_=e[35];let W;e[36]!==_?(W=r.jsx(xe,{children:_}),e[36]=_,e[37]=W):W=e[37];let p;e[38]!==i||e[39]!==n||e[40]!==t||e[41]!==o||e[42]!==a||e[43]!==x||e[44]!==w?(p=x&&He([...new Set(n)].filter(E=>E!==t).sort().map(Xe),w,Ue).map(E=>r.jsxs(pe,{value:E.ref,className:o?"min-h-11":void 0,onSelect:()=>{a(E.ref),S(!1)},children:[r.jsx("span",{className:"min-w-0 flex-1 truncate",title:E.ref,children:E.label}),(E.ref===i||E.label===i)&&r.jsx(Y,{name:"check",className:"size-3.5"})]},E.ref)),e[38]=i,e[39]=n,e[40]=t,e[41]=o,e[42]=a,e[43]=x,e[44]=w,e[45]=p):p=e[45];let A;e[46]!==p?(A=r.jsx(we,{children:p}),e[46]=p,e[47]=A):A=e[47];let q;e[48]!==R||e[49]!==W||e[50]!==A?(q=r.jsxs(Ce,{className:R,children:[W,A]}),e[48]=R,e[49]=W,e[50]=A,e[51]=q):q=e[51];let J;e[52]!==V||e[53]!==D||e[54]!==q?(J=r.jsxs(ve,{shouldFilter:!1,className:V,onKeyDown:Ye,children:[D,q]}),e[52]=V,e[53]=D,e[54]=q,e[55]=J):J=e[55];const Q=J;if(l){let E;e[56]!==c?(E=c("gitView.pr.field.baseBranch"),e[56]=c,e[57]=E):E=e[57];let ne;e[58]===Symbol.for("react.memo_cache_sentinel")?(ne=()=>S(!1),e[58]=ne):ne=e[58];let ee;e[59]!==x||e[60]!==Q||e[61]!==E?(ee=r.jsx(ye,{open:x,title:E,onClose:ne,children:Q}),e[59]=x,e[60]=Q,e[61]=E,e[62]=ee):ee=e[62];let ie;return e[63]!==ee||e[64]!==K?(ie=r.jsxs(r.Fragment,{children:[K,ee]}),e[63]=ee,e[64]=K,e[65]=ie):ie=e[65],ie}let N;e[66]!==K?(N=r.jsx(Ne,{asChild:!0,children:K}),e[66]=K,e[67]=N):N=e[67];let G;e[68]!==Q?(G=r.jsx(je,{align:"start",className:"w-72 max-w-[calc(100vw-2rem)] p-0",children:Q}),e[68]=Q,e[69]=G):G=e[69];let U;return e[70]!==x||e[71]!==N||e[72]!==G?(U=r.jsxs(be,{open:x,onOpenChange:S,children:[N,G]}),e[70]=x,e[71]=N,e[72]=G,e[73]=U):U=e[73],U}function Ue(s){return[s.label]}function Xe(s){return{ref:s.startsWith("remotes/")?`refs/${s}`:`refs/heads/${s}`,label:Be(s)}}function Ye(s){s.key!=="Escape"&&s.stopPropagation()}function yt(s){const e=ce.c(77),{commits:n,selectedHash:t,loading:i,error:a,onSelect:h,onRefresh:o,mobile:c}=s,m=c===void 0?!1:c,{t:l}=se(),x=me(),C=m&&!x.enabled,w=qe(tt),[j,g]=F.useState(!1),[u,b]=F.useState("");let S;e[0]!==i||e[1]!==o?(S=N=>{g(N),N?i||o():b("")},e[0]=i,e[1]=o,e[2]=S):S=e[2];const d=S;let P;e[3]!==m?(P=de(he({size:m?"default":"sm"}),"min-w-0 max-w-48"),e[3]=m,e[4]=P):P=e[4];const y=m||void 0;let H;e[5]!==d||e[6]!==C?(H=C?()=>d(!0):void 0,e[5]=d,e[6]=C,e[7]=H):H=e[7];const L=C?"dialog":void 0,M=C?j:void 0;let k;e[8]!==l?(k=l("commitComparison.select"),e[8]=l,e[9]=k):k=e[9];let B;e[10]!==t||e[11]!==l?(B=t??l("commitComparison.select"),e[10]=t,e[11]=l,e[12]=B):B=e[12];let O;e[13]===Symbol.for("react.memo_cache_sentinel")?(O=r.jsx(Y,{name:"git-commit",className:"size-3.5"}),e[13]=O):O=e[13];let v;e[14]!==t||e[15]!==l?(v=t?.slice(0,8)??l("commitComparison.select"),e[14]=t,e[15]=l,e[16]=v):v=e[16];let f;e[17]!==v?(f=r.jsx("span",{className:"truncate",children:v}),e[17]=v,e[18]=f):f=e[18];let K;e[19]===Symbol.for("react.memo_cache_sentinel")?(K=r.jsx(Y,{name:"arrow-down-s",className:"size-3.5"}),e[19]=K):K=e[19];let V;e[20]!==f||e[21]!==P||e[22]!==y||e[23]!==H||e[24]!==L||e[25]!==M||e[26]!==k||e[27]!==B?(V=r.jsxs(te,{variant:"outline",className:P,"data-mobile-comparison-trigger":y,onClick:H,"aria-haspopup":L,"aria-expanded":M,"aria-label":k,title:B,children:[O,f,K]}),e[20]=f,e[21]=P,e[22]=y,e[23]=H,e[24]=L,e[25]=M,e[26]=k,e[27]=B,e[28]=V):V=e[28];const I=V,$=m?"[&_[data-slot=command-input-wrapper]]:h-11":void 0,T=!C,z=m?"h-11":void 0;let D;e[29]!==l?(D=l("commitComparison.search"),e[29]=l,e[30]=D):D=e[30];let R;e[31]!==l?(R=l("commitComparison.search"),e[31]=l,e[32]=R):R=e[32];let _;e[33]!==u||e[34]!==T||e[35]!==z||e[36]!==D||e[37]!==R?(_=r.jsx(ge,{autoFocus:T,className:z,value:u,onValueChange:b,placeholder:D,"aria-label":R}),e[33]=u,e[34]=T,e[35]=z,e[36]=D,e[37]=R,e[38]=_):_=e[38];let W;e[39]!==d||e[40]!==n||e[41]!==a||e[42]!==i||e[43]!==m||e[44]!==o||e[45]!==h||e[46]!==j||e[47]!==u||e[48]!==t||e[49]!==l||e[50]!==w?(W=i?r.jsxs("div",{className:"flex items-center justify-center gap-2 p-4 typography-meta text-muted-foreground",children:[r.jsx(Y,{name:"loader-4",className:"size-4 animate-spin"}),l("diffView.state.loadingChanges")]}):a?r.jsxs("div",{className:"flex flex-col items-center gap-2 p-4 typography-meta text-muted-foreground",children:[r.jsx("span",{children:l("commitComparison.loadError")}),r.jsx("span",{className:"max-w-full break-words",children:a}),r.jsx(te,{variant:"outline",size:m?"lg":"sm",onClick:o,children:l("diffView.actions.retry")})]}):r.jsxs(Ce,{className:m?"max-h-[min(45dvh,24rem)]":void 0,children:[r.jsx(xe,{children:l("commitComparison.noCommits")}),r.jsx(we,{children:j&&He(n,u,Ze).map(N=>r.jsxs(pe,{value:N.hash,className:m?"min-h-11":void 0,onSelect:()=>{h(N),d(!1)},children:[r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsx("div",{className:"truncate typography-ui-label font-semibold",title:N.message,children:N.message}),r.jsxs("div",{className:"flex min-w-0 gap-1 typography-meta text-muted-foreground",children:[r.jsxs("span",{className:"min-w-0 truncate",children:[N.author_name," · ",Number.isNaN(new Date(N.date).getTime())?N.date:Ae(new Date(N.date),w,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})]}),r.jsxs("span",{className:"shrink-0",children:["· ",N.hash.slice(0,8)]})]})]}),N.hash===t&&r.jsx(Y,{name:"check",className:"size-3.5"})]},N.hash))})]}),e[39]=d,e[40]=n,e[41]=a,e[42]=i,e[43]=m,e[44]=o,e[45]=h,e[46]=j,e[47]=u,e[48]=t,e[49]=l,e[50]=w,e[51]=W):W=e[51];let p;e[52]!==$||e[53]!==_||e[54]!==W?(p=r.jsxs(ve,{shouldFilter:!1,className:$,onKeyDown:et,children:[_,W]}),e[52]=$,e[53]=_,e[54]=W,e[55]=p):p=e[55];const A=p;if(C){let N;e[56]!==l?(N=l("commitComparison.select"),e[56]=l,e[57]=N):N=e[57];let G;e[58]!==d?(G=()=>d(!1),e[58]=d,e[59]=G):G=e[59];let U;e[60]!==j||e[61]!==A||e[62]!==N||e[63]!==G?(U=r.jsx(ye,{open:j,title:N,onClose:G,children:A}),e[60]=j,e[61]=A,e[62]=N,e[63]=G,e[64]=U):U=e[64];let E;return e[65]!==U||e[66]!==I?(E=r.jsxs(r.Fragment,{children:[I,U]}),e[65]=U,e[66]=I,e[67]=E):E=e[67],E}let q;e[68]!==I?(q=r.jsx(Ne,{asChild:!0,children:I}),e[68]=I,e[69]=q):q=e[69];let J;e[70]!==A?(J=r.jsx(je,{align:"start",className:"w-[32rem] max-w-[calc(100vw-2rem)] p-0",children:A}),e[70]=A,e[71]=J):J=e[71];let Q;return e[72]!==d||e[73]!==j||e[74]!==q||e[75]!==J?(Q=r.jsxs(be,{open:j,onOpenChange:d,children:[q,J]}),e[72]=d,e[73]=j,e[74]=q,e[75]=J,e[76]=Q):Q=e[76],Q}function Ze(s){return[s.message,s.author_name,s.hash]}function et(s){s.key!=="Escape"&&s.stopPropagation()}function tt(s){return s.timeFormatPreference}const st="openchamber.git-base-branch",nt=100,ae=(s,e)=>JSON.stringify([X(),s,e]),it=Se()(Ge((s,e)=>({overrides:{},getOverride:(n,t)=>!n||!t?null:e().overrides[ae(n,t)]??null,setOverride:(n,t,i)=>{!n||!t||!i||s(a=>{const h=ae(n,t),o=Object.entries({...a.overrides,[h]:i});for(;o.length>nt;)o.shift();return{overrides:Object.fromEntries(o)}})},clearOverride:(n,t)=>{!n||!t||s(i=>{const a=ae(n,t);if(!(a in i.overrides))return i;const h={...i.overrides};return delete h[a],{overrides:h}})}}),{name:st,storage:ze(),partialize:s=>({overrides:s.overrides})}));function Nt(s,e,n){const t=ce.c(32),i=le(ot);let a;t[0]!==s||t[1]!==n?(a=y=>n&&s?y.directories.get(s)?.lastStatusFetch??0:0,t[0]=s,t[1]=n,t[2]=a):a=t[2];const h=le(a);let o;t[3]!==e||t[4]!==s||t[5]!==i?(o=JSON.stringify([i,s,e]),t[3]=e,t[4]=s,t[5]=i,t[6]=o):o=t[6];const c=o;let m;t[7]!==e||t[8]!==s?(m=s&&e?ae(s,e):null,t[7]=e,t[8]=s,t[9]=m):m=t[9];const l=m;let x;t[10]!==l?(x=y=>l?y.overrides[l]??null:null,t[10]=l,t[11]=x):x=t[11];const C=it(x),[w,j]=F.useState(null);let g;t[12]!==e||t[13]!==s||t[14]!==n||t[15]!==c||t[16]!==C?(g=()=>{if(!n||!s||!e||C)return;let y=!1;const H=X();return De(s,e).then(L=>{const{base:M}=L;y||X()!==H||j(k=>k?.key===c&&k.base===M?k:{key:c,base:M})}).catch(()=>{y||X()!==H||j(L=>L?.key===c?L:{key:c,base:null})}),()=>{y=!0}},t[12]=e,t[13]=s,t[14]=n,t[15]=c,t[16]=C,t[17]=g):g=t[17];let u;t[18]!==e||t[19]!==s||t[20]!==n||t[21]!==c||t[22]!==C||t[23]!==h?(u=[e,s,n,c,C,h],t[18]=e,t[19]=s,t[20]=n,t[21]=c,t[22]=C,t[23]=h,t[24]=u):u=t[24],F.useEffect(g,u);const b=C??(w?.key===c?w.base:null),S=!!C||w?.key===c;let d;t[25]!==i||t[26]!==h?(d=JSON.stringify([i,h]),t[25]=i,t[26]=h,t[27]=d):d=t[27];let P;return t[28]!==b||t[29]!==S||t[30]!==d?(P={base:b,resolved:S,revision:d},t[28]=b,t[29]=S,t[30]=d,t[31]=P):P=t[31],P}function ot(s){return s.runtimeKey}const rt=(s,e,n=X())=>JSON.stringify([n,s,e]),fe=Se(s=>({selections:new Map,select:(e,n)=>s(t=>{const i=new Map(t.selections);if(i.delete(e),i.set(e,n),i.size>100){const a=i.keys().next().value;a!==void 0&&i.delete(a)}return{selections:i}})})),at=[];function jt(s,e,n,t){const{git:i}=Me(),{t:a}=se(),h=le(u=>u.runtimeKey),o=rt(s??"",e,h),c=fe(u=>u.selections.get(o)??null),m=fe(u=>u.select),[l,x]=F.useState(null),C=F.useRef(0),w=F.useRef(t);w.current=t;const j=F.useCallback(async()=>{if(!s||!n)return;const u=++C.current,b=X();x({key:o,status:"loading"});try{const S=await i.getGitLog(s,{maxCount:50,to:e?`refs/heads/${e}`:"HEAD"});if(C.current!==u||X()!==b)return;const d=S.all.slice(0,50);if(x({key:o,status:"ready",commits:d}),!fe.getState().selections.has(o)){const P=w.current?d.find(y=>y.hash===w.current):d[0];P&&m(o,P)}}catch(S){if(C.current!==u||X()!==b)return;x({key:o,status:"error",message:S instanceof Error?S.message:a("commitComparison.loadError")})}},[e,s,n,i,o,m,a]);F.useEffect(()=>(j(),()=>{C.current+=1}),[j]);const g=l?.key===o?l:null;return{selectedCommit:c,commits:g?.status==="ready"?g.commits:at,loading:n&&(!g||g.status==="loading"),error:g?.status==="error"?g.message:null,refresh:j,select:u=>m(o,u)}}const Le=(s,e,n)=>{const t=new Map(s.selections);if(t.delete(e),t.set(e,n),t.size>100){const i=t.keys().next().value;i!==void 0&&t.delete(i)}return{selections:t}},re=Se(s=>({selections:new Map,select:(e,n)=>s(t=>Le(t,e,{source:n,handoff:t.selections.get(e)?.handoff??null})),acceptHandoff:(e,n)=>s(t=>t.selections.get(e)?.handoff===n?t:Le(t,e,{source:n,handoff:n}))})),lt=[];function bt(s,e,n,t){const{github:i}=Me(),{t:a}=se(),h=le(f=>f.runtimeKey),o=JSON.stringify([h,s,e]),c=re(f=>f.selections.get(o)??null),m=c?.source??null,l=re(f=>f.select),x=re(f=>f.acceptHandoff),C=t&&c?.handoff!==t?t:null,[w,j]=F.useState(""),g=Ke(w,350).trim(),u=JSON.stringify([o,g]),[b,S]=F.useState(null),d=F.useRef(b);d.current=b;const[P,y]=F.useState(!1),H=F.useRef(0),L=F.useRef({key:u,enabled:n});L.current={key:u,enabled:n};const M=ke(f=>f.status?.connected??!1),k=ke(f=>f.hasChecked),B=Pe(f=>s&&e?Te(f.entries,s,e):null);F.useEffect(()=>{if(!n||!s||!e||m||!k||!M)return;const f=Pe.getState(),K=_e(s,e);f.ensureEntry(K),f.setParams(K,{directory:s,branch:e,remoteName:null,canShow:!0,github:i,githubAuthChecked:k,githubConnected:M}),f.refreshTargets([{directory:s,branch:e,remoteName:null}])},[e,s,n,i,k,M,m]),F.useEffect(()=>{!n||!M||!B?.pr||!B.repo||re.getState().selections.has(o)||l(o,{kind:"pr",number:B.pr.number,sourceRepo:{owner:B.repo.owner,repo:B.repo.repo}})},[B,n,M,l,o]),F.useEffect(()=>{t&&x(o,t)},[x,t,o]);const O=F.useCallback(async f=>{if(!s||!n||L.current.key!==u||!L.current.enabled)return;const K=++H.current,V=X();f?y(!0):(y(!1),S({key:u,status:"loading"}));try{if(!i)throw new Error(a("session.githubPrPicker.error.runtimeUnavailable"));const I=f?f.page+1:1,$=await i.prsList(s,{page:I,query:g||void 0});if(!$.connected)throw new Error(a("session.githubPrPicker.empty.notConnected"));if(!$.prs||!$.repo)throw new Error(a("session.githubPrPicker.error.repoNotResolvable"));if(H.current!==K||X()!==V||L.current.key!==u||!L.current.enabled)return;const T=$.repo,z=$.prs.map(R=>({...R,sourceRepo:R.sourceRepo??{owner:T.owner,repo:T.repo,source:"repository"}})),D=new Map([...f?.prs??[],...z].map(R=>[`${R.sourceRepo?.owner}/${R.sourceRepo?.repo}#${R.number}`,R]));S({key:u,status:"ready",prs:[...D.values()],page:I,hasMore:!!$.hasMore,error:null})}catch(I){if(H.current===K&&X()===V&&L.current.key===u&&L.current.enabled){const $=I instanceof Error?I.message:a("session.githubPrPicker.toast.loadMoreFailed");S(f?{...f,error:$}:{key:u,status:"error",message:$})}}finally{H.current===K&&y(!1)}},[s,n,i,u,g,a]);F.useEffect(()=>((d.current?.key!==u||d.current.status!=="ready")&&O(),()=>{H.current+=1}),[u,O]);const v=b?.key===u?b:null;return{enabled:n,selectedSource:C??m,prs:v?.status==="ready"?v.prs:lt,query:w,setQuery:j,loading:n&&(!v||v.status==="loading"||g!==w.trim()),loadingMore:P,hasMore:v?.status==="ready"&&v.hasMore,error:v?.status==="error"?v.message:v?.status==="ready"?v.error:null,refresh:()=>O(),loadMore:()=>v?.status==="ready"&&v.hasMore&&!P?O(v):Promise.resolve(),select:f=>{f.sourceRepo&&l(o,{kind:"pr",number:f.number,sourceRepo:{owner:f.sourceRepo.owner,repo:f.sourceRepo.repo}})}}}function St(s){const e=ce.c(63),{comparison:n,mobile:t}=s,i=t===void 0?!1:t,{t:a}=se(),h=me(),o=i&&!h.enabled,[c,m]=F.useState(!1);let l,x;e[0]!==n.enabled?(l=()=>{n.enabled||m(!1)},x=[n.enabled],e[0]=n.enabled,e[1]=l,e[2]=x):(l=e[1],x=e[2]),F.useEffect(l,x);let C;e[3]!==a?(C=a("pullRequestComparison.select"),e[3]=a,e[4]=C):C=e[4];const w=C;let j;e[5]!==n?(j=p=>{m(p),p&&!n.loading&&n.refresh(),p||n.setQuery("")},e[5]=n,e[6]=j):j=e[6];const g=j,u=n.selectedSource;let b;e[7]!==i?(b=de(he({size:i?"default":"sm"}),"min-w-0 max-w-48"),e[7]=i,e[8]=b):b=e[8];const S=i||void 0;let d;e[9]!==g||e[10]!==o?(d=o?()=>g(!0):void 0,e[9]=g,e[10]=o,e[11]=d):d=e[11];const P=o?"dialog":void 0,y=o?c:void 0,H=u?.sourceRepo?`${u.sourceRepo.owner}/${u.sourceRepo.repo} #${u.number}`:w,L=u?`#${u.number}`:w;let M;e[12]!==L?(M=r.jsx("span",{className:"truncate",children:L}),e[12]=L,e[13]=M):M=e[13];let k;e[14]===Symbol.for("react.memo_cache_sentinel")?(k=r.jsx(Y,{name:"arrow-down-s",className:"size-3.5"}),e[14]=k):k=e[14];let B;e[15]!==w||e[16]!==y||e[17]!==H||e[18]!==M||e[19]!==b||e[20]!==S||e[21]!==d||e[22]!==P?(B=r.jsxs(te,{variant:"outline",className:b,"data-mobile-comparison-trigger":S,onClick:d,"aria-haspopup":P,"aria-expanded":y,"aria-label":w,title:H,children:[M,k]}),e[15]=w,e[16]=y,e[17]=H,e[18]=M,e[19]=b,e[20]=S,e[21]=d,e[22]=P,e[23]=B):B=e[23];const O=B,v=!o,f=n.query,K=n.setQuery;let V;e[24]!==a?(V=a("session.githubPrPicker.searchPlaceholder"),e[24]=a,e[25]=V):V=e[25];let I;e[26]!==a?(I=a("session.githubPrPicker.searchPlaceholder"),e[26]=a,e[27]=I):I=e[27];let $;e[28]!==n.query||e[29]!==n.setQuery||e[30]!==v||e[31]!==V||e[32]!==I?($=r.jsx(ge,{autoFocus:v,value:f,onValueChange:K,placeholder:V,"aria-label":I}),e[28]=n.query,e[29]=n.setQuery,e[30]=v,e[31]=V,e[32]=I,e[33]=$):$=e[33];let T;e[34]!==g||e[35]!==n||e[36]!==i||e[37]!==c||e[38]!==u||e[39]!==a?(T=n.loading?r.jsxs("div",{className:"flex items-center gap-2 p-4 typography-meta text-muted-foreground",children:[r.jsx(Y,{name:"loader-4",className:"size-4 animate-spin"}),a("session.githubPrPicker.loading.pullRequests")]}):n.error&&n.prs.length===0?r.jsxs("div",{className:"flex flex-col items-center gap-2 p-4 typography-meta text-muted-foreground",children:[r.jsx("span",{children:n.error}),r.jsx(te,{variant:"outline",size:"sm",onClick:()=>{n.refresh()},children:a("diffView.actions.retry")})]}):r.jsxs(Ce,{className:i?"max-h-[min(45dvh,24rem)]":void 0,children:[r.jsx(xe,{children:a("session.githubPrPicker.empty.noPullRequestsFound")}),r.jsx(we,{children:c&&n.prs.map(p=>{const A=`${p.sourceRepo?.owner}/${p.sourceRepo?.repo}#${p.number}`;return r.jsxs(pe,{value:A,className:i?"min-h-11":void 0,onSelect:()=>{n.select(p),g(!1)},children:[r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsxs("div",{className:"truncate typography-ui-label",title:p.title,children:["#",p.number," ",p.title]}),r.jsxs("div",{className:"truncate typography-meta text-muted-foreground",children:[p.sourceRepo?.owner,"/",p.sourceRepo?.repo," · ",p.head," → ",p.base]})]}),u?.number===p.number&&u.sourceRepo?.owner===p.sourceRepo?.owner&&u.sourceRepo?.repo===p.sourceRepo?.repo&&r.jsx(Y,{name:"check",className:"size-3.5"})]},A)})}),n.error&&r.jsx("p",{className:"px-3 py-2 typography-meta text-muted-foreground",children:n.error}),n.hasMore&&r.jsx(te,{variant:"ghost",size:"sm",disabled:n.loadingMore,onClick:()=>{n.loadMore()},children:n.error?a("diffView.actions.retry"):a("session.githubPrPicker.actions.loadMore")})]}),e[34]=g,e[35]=n,e[36]=i,e[37]=c,e[38]=u,e[39]=a,e[40]=T):T=e[40];let z;e[41]!==$||e[42]!==T?(z=r.jsxs(ve,{shouldFilter:!1,onKeyDown:ct,children:[$,T]}),e[41]=$,e[42]=T,e[43]=z):z=e[43];const D=z;if(o){let p;e[44]!==g?(p=()=>g(!1),e[44]=g,e[45]=p):p=e[45];let A;e[46]!==w||e[47]!==c||e[48]!==D||e[49]!==p?(A=r.jsx(ye,{open:c,title:w,onClose:p,children:D}),e[46]=w,e[47]=c,e[48]=D,e[49]=p,e[50]=A):A=e[50];let q;return e[51]!==A||e[52]!==O?(q=r.jsxs(r.Fragment,{children:[O,A]}),e[51]=A,e[52]=O,e[53]=q):q=e[53],q}let R;e[54]!==O?(R=r.jsx(Ne,{asChild:!0,children:O}),e[54]=O,e[55]=R):R=e[55];let _;e[56]!==D?(_=r.jsx(je,{align:"start",className:"w-[32rem] max-w-[calc(100vw-2rem)] p-0",children:D}),e[56]=D,e[57]=_):_=e[57];let W;return e[58]!==g||e[59]!==c||e[60]!==R||e[61]!==_?(W=r.jsxs(be,{open:c,onOpenChange:g,children:[R,_]}),e[58]=g,e[59]=c,e[60]=R,e[61]=_,e[62]=W):W=e[62],W}function ct(s){s.key!=="Escape"&&s.stopPropagation()}const ut=64,ft=3,Z=new Map,kt=s=>/^Binary files .+ differ$/m.test(s)||/^GIT binary patch$/m.test(s),$e=s=>{const e=s.search(/^@@\s/m);if(e<0)return null;const n=s.slice(0,e);return/^index (?:[a-f0-9]{40}|[a-f0-9]{64})\.\.(?:[a-f0-9]{40}|[a-f0-9]{64})(?: [0-7]+)?$/m.test(n)?n:null},Pt=(s,e)=>{const n=$e(s);return n!==null&&n===$e(e)},Rt=(s,e,n=ft)=>{const t=`${s}\0${n}\0${e}`,i=Z.get(t);if(i)return Z.delete(t),Z.set(t,i),i;const a=dt(e),h=a?Ve(Qe(e,n),{oldFile:{name:s,contents:a.before},newFile:{name:s,contents:a.after}})??Fe(s):We(mt(s,e))[0]?.files[0]??Fe(s);for(Z.set(t,h);Z.size>ut;){const o=Z.keys().next().value;if(!o)break;Z.delete(o)}return h},mt=(s,e)=>!e.trim()||e.startsWith("diff --git ")||/^--- [^\n]*\r?\n\+\+\+ /m.test(e)?e:`Index: ${s}
6
- ===================================================================
7
- --- ${s}
8
- +++ ${s}
9
- ${e}`,dt=s=>{if(!s.startsWith("diff --git ")&&!/^--- [^\n]*\t?\r?\n\+\+\+ [^\n]*\t?(?:\r?\n|$)/m.test(s))return;const e=[...s.matchAll(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@[^\n]*(?:\r?\n|$)/gm)];if(e.length!==1)return;const n=e[0],t=Number.parseInt(n[1]??"",10),i=Number.parseInt(n[2]??"",10);if(t>1||i>1||!Number.isFinite(t)||!Number.isFinite(i))return;const a=(n.index??0)+n[0].length,h=s.slice(a),o=[],c=[];let m;for(const l of h.split(/\r?\n/)){if(l.startsWith("diff --git ")||l.startsWith("@@ "))break;if(l.startsWith("\\")){if(m==="-"||m===" "){const x=o.at(-1);x&&(x.newline=!1)}if(m==="+"||m===" "){const x=c.at(-1);x&&(x.newline=!1)}continue}if(l.startsWith("-")){o.push({text:l.slice(1),newline:!0}),m="-";continue}if(l.startsWith("+")){c.push({text:l.slice(1),newline:!0}),m="+";continue}l.startsWith(" ")&&(o.push({text:l.slice(1),newline:!0}),c.push({text:l.slice(1),newline:!0}),m=" ")}return{before:Ee(o),after:Ee(c)}},Ee=s=>s.map(e=>e.text+(e.newline?`
10
- `:"")).join(""),Fe=s=>Je({name:s,contents:""},{name:s,contents:""}),Oe=s=>{if(!s)return[];const e=[...s.matchAll(/^@@\s/gm)].map(t=>t.index);if(e.length===0)return[];const n=s.slice(0,e[0]);return e.map((t,i)=>{const a=n+s.slice(t,e[i+1]??s.length);return a.endsWith(`
11
- `)?a:`${a}
12
- `})},Lt=(s,e)=>!Number.isInteger(e)||e<0?null:Oe(s)[e]??null,$t=s=>{const e=[];for(const[n,t]of Oe(s).entries()){const i=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[^\n]*(?:\n|$)/m.exec(t);if(!i)continue;let a=Number(i[1]),h=Number(i[3]),o;for(const c of t.slice(i.index+i[0].length).split(`
13
- `))c.startsWith("-")?o={index:n,side:"deletions",lineNumber:a++}:c.startsWith("+")?o={index:n,side:"additions",lineNumber:h++}:c.startsWith(" ")&&(a+=1,h+=1);o&&Number.isSafeInteger(o.lineNumber)&&o.lineNumber>0&&e.push(o)}return e};export{vt as B,yt as C,St as P,Nt as a,jt as b,bt as c,Lt as e,Rt as f,$t as g,Pt as h,kt as i,it as u};