@openchambery/web 2.1.6-beta.1 → 2.1.6-beta.10

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 (118) hide show
  1. package/dist/assets/AgentAvatar-Ah1nMt7y.js +1 -0
  2. package/dist/assets/{AssistantView-aSdlY38u.js → AssistantView-BEYwb8fd.js} +3 -3
  3. package/dist/assets/{DiagramView-BudqVoj4.js → DiagramView-DkCnDUbb.js} +1 -1
  4. package/dist/assets/{FadeInOnReveal-C8mIXT_x.js → FadeInOnReveal-BssISEuf.js} +1 -1
  5. package/dist/assets/{Icon-De3bTfBD.js → Icon-DewMAW7N.js} +1 -1
  6. package/dist/assets/{ImageLoadingPlaceholder-DVxKuVwD.js → ImageLoadingPlaceholder-izjx-F-t.js} +1 -1
  7. package/dist/assets/{LoadingImage-DZsBpRYx.js → LoadingImage-CCj65iXL.js} +1 -1
  8. package/dist/assets/MarkdownRenderer-CPjh0Ezk.js +2 -0
  9. package/dist/assets/MarkdownRendererImpl-BwvKoD_n.js +10 -0
  10. package/dist/assets/{MarkstreamRendererImpl-CIylCsD3.js → MarkstreamRendererImpl-CA1KscL6.js} +1 -1
  11. package/dist/assets/{MobileDetailNavigation-CzOQIbvs.js → MobileDetailNavigation-B8x_sLVm.js} +1 -1
  12. package/dist/assets/{MobileShareBridge-B0leJCQr.js → MobileShareBridge-pzcSbGdZ.js} +2 -2
  13. package/dist/assets/MobileTabPageHeader-B_PEgiTP.js +2 -0
  14. package/dist/assets/{MultiRunWindow-CHfg6SYj.js → MultiRunWindow-Cagso72Y.js} +1 -1
  15. package/dist/assets/{OnboardingScreen-WDXH6GyO.js → OnboardingScreen-BjikXNcy.js} +1 -1
  16. package/dist/assets/{OverlayScrollbar-_xcqpVSN.js → OverlayScrollbar-C24-p2ns.js} +1 -1
  17. package/dist/assets/{SettingsView-BQ_jhvcz.js → SettingsView-DKpfECN-.js} +4 -4
  18. package/dist/assets/{SettingsWindow-DCMtWvxd.js → SettingsWindow-Dyi54eqb.js} +1 -1
  19. package/dist/assets/{TerminalView--7RrFsTH.js → TerminalView-7ZjKx12L.js} +1 -1
  20. package/dist/assets/{ToolOutputDialog-C9bqkmLi.js → ToolOutputDialog-DUPvRa0y.js} +1 -1
  21. package/dist/assets/{appThemeRegistry-DxQ0uJse.js → appThemeRegistry-By4k7TGQ.js} +1 -1
  22. package/dist/assets/{assistant-attachment-cache-CPBGM8H7.js → assistant-attachment-cache-Bzewqov4.js} +1 -1
  23. package/dist/assets/{button-BnPjweDW.js → button-kJNzMb1G.js} +1 -1
  24. package/dist/assets/{collapsible-C9mIVYPa.js → collapsible-MInYZ7dA.js} +1 -1
  25. package/dist/assets/{context-menu-C_ImdU3v.js → context-menu-BYq0LM7H.js} +1 -1
  26. package/dist/assets/{desktopHosts-BfMzjRVt.js → desktopHosts-BKeEWmL5.js} +1 -1
  27. package/dist/assets/{desktopRelayRestore-ML6japys.js → desktopRelayRestore-FWm2fXr6.js} +1 -1
  28. package/dist/assets/{diagram-DVV7MmUA.js → diagram-BDSPghN-.js} +1 -1
  29. package/dist/assets/dropdown-menu.styles-BXvVFEkh.js +1 -0
  30. package/dist/assets/es-CLTWsqOO.js +15 -0
  31. package/dist/assets/{fileMentionTouchSelection-CC7g7YFk.js → fileMentionTouchSelection-Jp9LpJbi.js} +1 -1
  32. package/dist/assets/{fileQueries-DfHYU8Iq.js → fileQueries-Dhgypzyl.js} +1 -1
  33. package/dist/assets/fr-BNyfwida.js +13 -0
  34. package/dist/assets/{gitApi-C4lwqR8Q.js → gitApi-Ct0ywRZD.js} +1 -1
  35. package/dist/assets/{image-loading-4Touxv4x.js → image-loading-BilWo6nu.js} +1 -1
  36. package/dist/assets/{input-CporeP3S.js → input-02eTmC8w.js} +1 -1
  37. package/dist/assets/insertionBoundaries-6Mj1koxH.js +1 -0
  38. package/dist/assets/ja-D7MYkMo9.js +15 -0
  39. package/dist/assets/ko-CFNLrmLm.js +15 -0
  40. package/dist/assets/{main-BtR6Gsq0.js → main-COef42Ds.js} +2 -2
  41. package/dist/assets/{main-6iMM4Nlz.js → main-D1RBiaLp.js} +5 -5
  42. package/dist/assets/{markdownHeightCache-BMfTZ02N.js → markdownHeightCache-CAVQhVdd.js} +1 -1
  43. package/dist/assets/{mcpQueries-VE6ohhCb.js → mcpQueries-CgAws0Yk.js} +1 -1
  44. package/dist/assets/miniChat-Bvo4YeVJ.js +2 -0
  45. package/dist/assets/mobile-BlbXBojO.js +2 -0
  46. package/dist/assets/{multirun-Ba_1t89r.js → multirun-DnSKcdvZ.js} +1 -1
  47. package/dist/assets/{persistence-CoWdsn8M.js → persistence-DUPZl7Oy.js} +1 -1
  48. package/dist/assets/pl-aKpW58gt.js +15 -0
  49. package/dist/assets/{platform-Cl17ZOYo.js → platform-z2erC6Bs.js} +2 -2
  50. package/dist/assets/{projectMeta-DF-wxcjW.js → projectMeta-DIGescgP.js} +1 -1
  51. package/dist/assets/pt-BR-MliQk6-s.js +15 -0
  52. package/dist/assets/{rasterizePng-DZNznN7Z.js → rasterizePng-DCmIQQsI.js} +1 -1
  53. package/dist/assets/{relay-image-stream-BsB_ApBk.js → relay-image-stream-qI2NTXbG.js} +1 -1
  54. package/dist/assets/renderElectronMiniChatApp-BjeQUlNI.js +2 -0
  55. package/dist/assets/{renderMobileApp-C2YixTLg.js → renderMobileApp-DN33R_qE.js} +4 -4
  56. package/dist/assets/{runtime-fetch-DJVW43Cw.js → runtime-fetch-QCWYlAx0.js} +1 -1
  57. package/dist/assets/{runtime-switch-Ck0YPsR7.js → runtime-switch-3ad3yzM7.js} +1 -1
  58. package/dist/assets/runtimeConfig-CqmED-En.js +2 -0
  59. package/dist/assets/{runtimeEndpointReset-Bb0BK0JR.js → runtimeEndpointReset-B42st9Ug.js} +1 -1
  60. package/dist/assets/sessionChangeSummary-njUKiuMK.js +2 -0
  61. package/dist/assets/sessionChangeSummary-vC84qM3v.css +1 -0
  62. package/dist/assets/{sessionLookup-BP3heiWj.js → sessionLookup-C2RvC5L-.js} +1 -1
  63. package/dist/assets/{sortable-tabs-strip-CgLj1fIA.js → sortable-tabs-strip-DSGwZHAT.js} +1 -1
  64. package/dist/assets/{speechSettingsQueries-DgCdTbV5.js → speechSettingsQueries-BhyN5DJh.js} +2 -2
  65. package/dist/assets/src-CBUXJkw-.css +2 -0
  66. package/dist/assets/store-D5OeM4wB.js +15 -0
  67. package/dist/assets/{terminalApi-B8MBtYf4.js → terminalApi-BnjU_lmF.js} +1 -1
  68. package/dist/assets/{textarea-DgVlBlA9.js → textarea-yLPH5NYp.js} +1 -1
  69. package/dist/assets/{tooltip-Cgzp7Xco.js → tooltip-B3eYZnNS.js} +1 -1
  70. package/dist/assets/uk-8Ovv1FvC.js +15 -0
  71. package/dist/assets/{url-BmJM1D3o.js → url-DAyfGWPH.js} +1 -1
  72. package/dist/assets/{useAppFontEffects-C4FL5nAN.js → useAppFontEffects-BJZUkCpp.js} +53 -53
  73. package/dist/assets/{useAssistantUIStore-Dej-0i1V.js → useAssistantUIStore-Dt0l5AKe.js} +1 -1
  74. package/dist/assets/{useDesktopWindowControlsLayout-CncoTsE8.js → useDesktopWindowControlsLayout-B9pNEqpG.js} +1 -1
  75. package/dist/assets/{useEffectiveDirectory-BwQn0I5k.js → useEffectiveDirectory-1QBp41MN.js} +1 -1
  76. package/dist/assets/{useFontPreferences-CGnJ_sK3.js → useFontPreferences-B4Cgu3bS.js} +1 -1
  77. package/dist/assets/{useMobileNavigationStore-2dQHPP2A.js → useMobileNavigationStore-BIUkcTRP.js} +8 -8
  78. package/dist/assets/{useUIStore-CdCyJRb0.js → useUIStore-pl39iO82.js} +1 -1
  79. package/dist/assets/{useWorkerHighlightedLines-CO8kP8tW.js → useWorkerHighlightedLines-BfYguMMp.js} +1 -1
  80. package/dist/assets/zh-CN-DYC-d6-i.js +15 -0
  81. package/dist/assets/zh-TW-OPu9_qbz.js +15 -0
  82. package/dist/index.html +11 -11
  83. package/dist/mini-chat.html +11 -11
  84. package/dist/mobile.html +11 -11
  85. package/dist/sw.js +1 -1
  86. package/package.json +1 -1
  87. package/server/lib/dictation/DOCUMENTATION.md +3 -1
  88. package/server/lib/dictation/service.js +1 -0
  89. package/server/lib/dictation/volcengine-session.js +5 -2
  90. package/server/lib/dictation/volcengine-session.test.js +8 -2
  91. package/server/lib/tts/DOCUMENTATION.md +11 -0
  92. package/server/lib/tts/direct-session.js +1 -1
  93. package/server/lib/tts/direct-session.test.js +21 -0
  94. package/server/lib/tts/direct-speech.test.js +20 -0
  95. package/server/lib/tts/settings.js +2 -1
  96. package/dist/assets/AgentAvatar-BRPyrjhY.js +0 -1
  97. package/dist/assets/MarkdownRenderer-BSrQCSxr.js +0 -2
  98. package/dist/assets/MarkdownRendererImpl-BmgsCLj8.js +0 -10
  99. package/dist/assets/MobileTabPageHeader-DcKOtnwN.js +0 -2
  100. package/dist/assets/dropdown-menu.styles-Dw94PXY7.js +0 -1
  101. package/dist/assets/es-B7Pk7Sm2.js +0 -15
  102. package/dist/assets/fr-BcJSt2Bt.js +0 -13
  103. package/dist/assets/insertionBoundaries-BL9G3wjG.js +0 -1
  104. package/dist/assets/ja-ex36lpwC.js +0 -15
  105. package/dist/assets/ko-CgIIQFMh.js +0 -15
  106. package/dist/assets/miniChat-CamREdRa.js +0 -2
  107. package/dist/assets/mobile-D9TkJI3N.js +0 -2
  108. package/dist/assets/pl-CbT2Ag4y.js +0 -15
  109. package/dist/assets/pt-BR-BqXoXmx6.js +0 -15
  110. package/dist/assets/renderElectronMiniChatApp-TjqgdRXK.js +0 -2
  111. package/dist/assets/runtimeConfig-DfKDrWh3.js +0 -2
  112. package/dist/assets/sessionChangeSummary-B15lUBlz.js +0 -2
  113. package/dist/assets/sessionChangeSummary-DpXRx1hd.css +0 -1
  114. package/dist/assets/src-bvi8KvVB.css +0 -2
  115. package/dist/assets/store-CYW4nz6C.js +0 -15
  116. package/dist/assets/uk-18wal33L.js +0 -15
  117. package/dist/assets/zh-CN-LO8acNQg.js +0 -15
  118. package/dist/assets/zh-TW-yk05f02-.js +0 -15
package/dist/index.html CHANGED
@@ -552,28 +552,28 @@
552
552
  opacity: 0.72;
553
553
  }
554
554
  </style>
555
- <script type="module" crossorigin src="/assets/main-BtR6Gsq0.js"></script>
555
+ <script type="module" crossorigin src="/assets/main-COef42Ds.js"></script>
556
556
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
557
557
  <link rel="modulepreload" crossorigin href="/assets/runtime-auth-C8w0nlKy.js">
558
- <link rel="modulepreload" crossorigin href="/assets/runtime-switch-Ck0YPsR7.js">
559
- <link rel="modulepreload" crossorigin href="/assets/runtime-fetch-DJVW43Cw.js">
558
+ <link rel="modulepreload" crossorigin href="/assets/runtime-switch-3ad3yzM7.js">
559
+ <link rel="modulepreload" crossorigin href="/assets/runtime-fetch-QCWYlAx0.js">
560
560
  <link rel="modulepreload" crossorigin href="/assets/vendor-base-ui-CdzJ6My_.js">
561
561
  <link rel="modulepreload" crossorigin href="/assets/vendor-zustand-o69pgTEK.js">
562
- <link rel="modulepreload" crossorigin href="/assets/useUIStore-CdCyJRb0.js">
562
+ <link rel="modulepreload" crossorigin href="/assets/useUIStore-pl39iO82.js">
563
563
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BP2cRVqX.js">
564
564
  <link rel="modulepreload" crossorigin href="/assets/vendor-pathe-vBmvQE8f.js">
565
565
  <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-query-core-BWz0ose6.js">
566
- <link rel="modulepreload" crossorigin href="/assets/persistence-CoWdsn8M.js">
567
- <link rel="modulepreload" crossorigin href="/assets/desktopHosts-BfMzjRVt.js">
568
- <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-ML6japys.js">
566
+ <link rel="modulepreload" crossorigin href="/assets/persistence-DUPZl7Oy.js">
567
+ <link rel="modulepreload" crossorigin href="/assets/desktopHosts-BKeEWmL5.js">
568
+ <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-FWm2fXr6.js">
569
569
  <link rel="modulepreload" crossorigin href="/assets/vendor-opencode-client-MF2GBrFx.js">
570
570
  <link rel="modulepreload" crossorigin href="/assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js">
571
- <link rel="modulepreload" crossorigin href="/assets/platform-Cl17ZOYo.js">
572
- <link rel="modulepreload" crossorigin href="/assets/terminalApi-B8MBtYf4.js">
571
+ <link rel="modulepreload" crossorigin href="/assets/platform-z2erC6Bs.js">
572
+ <link rel="modulepreload" crossorigin href="/assets/terminalApi-BnjU_lmF.js">
573
573
  <link rel="modulepreload" crossorigin href="/assets/types-BuiqMmh_.js">
574
574
  <link rel="modulepreload" crossorigin href="/assets/capgoAdapter-KNLHDj7G.js">
575
- <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-DfKDrWh3.js">
576
- <link rel="stylesheet" crossorigin href="/assets/src-bvi8KvVB.css">
575
+ <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-CqmED-En.js">
576
+ <link rel="stylesheet" crossorigin href="/assets/src-CBUXJkw-.css">
577
577
  </head>
578
578
  <body class="h-full bg-background text-foreground">
579
579
  <!-- Keep the startup layer outside #root. React replaces every child of
@@ -74,28 +74,28 @@
74
74
  }
75
75
  </style>
76
76
 
77
- <script type="module" crossorigin src="/assets/miniChat-CamREdRa.js"></script>
77
+ <script type="module" crossorigin src="/assets/miniChat-Bvo4YeVJ.js"></script>
78
78
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
79
79
  <link rel="modulepreload" crossorigin href="/assets/runtime-auth-C8w0nlKy.js">
80
- <link rel="modulepreload" crossorigin href="/assets/runtime-switch-Ck0YPsR7.js">
81
- <link rel="modulepreload" crossorigin href="/assets/runtime-fetch-DJVW43Cw.js">
80
+ <link rel="modulepreload" crossorigin href="/assets/runtime-switch-3ad3yzM7.js">
81
+ <link rel="modulepreload" crossorigin href="/assets/runtime-fetch-QCWYlAx0.js">
82
82
  <link rel="modulepreload" crossorigin href="/assets/vendor-base-ui-CdzJ6My_.js">
83
83
  <link rel="modulepreload" crossorigin href="/assets/vendor-zustand-o69pgTEK.js">
84
- <link rel="modulepreload" crossorigin href="/assets/useUIStore-CdCyJRb0.js">
84
+ <link rel="modulepreload" crossorigin href="/assets/useUIStore-pl39iO82.js">
85
85
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BP2cRVqX.js">
86
86
  <link rel="modulepreload" crossorigin href="/assets/vendor-pathe-vBmvQE8f.js">
87
87
  <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-query-core-BWz0ose6.js">
88
- <link rel="modulepreload" crossorigin href="/assets/persistence-CoWdsn8M.js">
89
- <link rel="modulepreload" crossorigin href="/assets/desktopHosts-BfMzjRVt.js">
90
- <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-ML6japys.js">
88
+ <link rel="modulepreload" crossorigin href="/assets/persistence-DUPZl7Oy.js">
89
+ <link rel="modulepreload" crossorigin href="/assets/desktopHosts-BKeEWmL5.js">
90
+ <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-FWm2fXr6.js">
91
91
  <link rel="modulepreload" crossorigin href="/assets/vendor-opencode-client-MF2GBrFx.js">
92
92
  <link rel="modulepreload" crossorigin href="/assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js">
93
- <link rel="modulepreload" crossorigin href="/assets/platform-Cl17ZOYo.js">
94
- <link rel="modulepreload" crossorigin href="/assets/terminalApi-B8MBtYf4.js">
93
+ <link rel="modulepreload" crossorigin href="/assets/platform-z2erC6Bs.js">
94
+ <link rel="modulepreload" crossorigin href="/assets/terminalApi-BnjU_lmF.js">
95
95
  <link rel="modulepreload" crossorigin href="/assets/types-BuiqMmh_.js">
96
96
  <link rel="modulepreload" crossorigin href="/assets/capgoAdapter-KNLHDj7G.js">
97
- <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-DfKDrWh3.js">
98
- <link rel="stylesheet" crossorigin href="/assets/src-bvi8KvVB.css">
97
+ <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-CqmED-En.js">
98
+ <link rel="stylesheet" crossorigin href="/assets/src-CBUXJkw-.css">
99
99
  </head>
100
100
  <body class="h-full bg-background text-foreground">
101
101
  <div id="root" class="h-full">
package/dist/mobile.html CHANGED
@@ -63,28 +63,28 @@
63
63
  })();
64
64
  </script>
65
65
 
66
- <script type="module" crossorigin src="/assets/mobile-D9TkJI3N.js"></script>
66
+ <script type="module" crossorigin src="/assets/mobile-BlbXBojO.js"></script>
67
67
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
68
68
  <link rel="modulepreload" crossorigin href="/assets/runtime-auth-C8w0nlKy.js">
69
- <link rel="modulepreload" crossorigin href="/assets/runtime-switch-Ck0YPsR7.js">
70
- <link rel="modulepreload" crossorigin href="/assets/runtime-fetch-DJVW43Cw.js">
69
+ <link rel="modulepreload" crossorigin href="/assets/runtime-switch-3ad3yzM7.js">
70
+ <link rel="modulepreload" crossorigin href="/assets/runtime-fetch-QCWYlAx0.js">
71
71
  <link rel="modulepreload" crossorigin href="/assets/vendor-base-ui-CdzJ6My_.js">
72
72
  <link rel="modulepreload" crossorigin href="/assets/vendor-zustand-o69pgTEK.js">
73
- <link rel="modulepreload" crossorigin href="/assets/useUIStore-CdCyJRb0.js">
73
+ <link rel="modulepreload" crossorigin href="/assets/useUIStore-pl39iO82.js">
74
74
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-BP2cRVqX.js">
75
75
  <link rel="modulepreload" crossorigin href="/assets/vendor-pathe-vBmvQE8f.js">
76
76
  <link rel="modulepreload" crossorigin href="/assets/vendor-tanstack-query-core-BWz0ose6.js">
77
- <link rel="modulepreload" crossorigin href="/assets/persistence-CoWdsn8M.js">
78
- <link rel="modulepreload" crossorigin href="/assets/desktopHosts-BfMzjRVt.js">
79
- <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-ML6japys.js">
77
+ <link rel="modulepreload" crossorigin href="/assets/persistence-DUPZl7Oy.js">
78
+ <link rel="modulepreload" crossorigin href="/assets/desktopHosts-BKeEWmL5.js">
79
+ <link rel="modulepreload" crossorigin href="/assets/desktopRelayRestore-FWm2fXr6.js">
80
80
  <link rel="modulepreload" crossorigin href="/assets/vendor-opencode-client-MF2GBrFx.js">
81
81
  <link rel="modulepreload" crossorigin href="/assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js">
82
- <link rel="modulepreload" crossorigin href="/assets/platform-Cl17ZOYo.js">
83
- <link rel="modulepreload" crossorigin href="/assets/terminalApi-B8MBtYf4.js">
82
+ <link rel="modulepreload" crossorigin href="/assets/platform-z2erC6Bs.js">
83
+ <link rel="modulepreload" crossorigin href="/assets/terminalApi-BnjU_lmF.js">
84
84
  <link rel="modulepreload" crossorigin href="/assets/types-BuiqMmh_.js">
85
85
  <link rel="modulepreload" crossorigin href="/assets/capgoAdapter-KNLHDj7G.js">
86
- <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-DfKDrWh3.js">
87
- <link rel="stylesheet" crossorigin href="/assets/src-bvi8KvVB.css">
86
+ <link rel="modulepreload" crossorigin href="/assets/runtimeConfig-CqmED-En.js">
87
+ <link rel="stylesheet" crossorigin href="/assets/src-CBUXJkw-.css">
88
88
  </head>
89
89
  <body class="h-full bg-background text-foreground">
90
90
  <div id="root" class="h-full"></div>
package/dist/sw.js CHANGED
@@ -1 +1 @@
1
- (function(){self.__WB_MANIFEST,self.addEventListener(`install`,e=>{e.waitUntil(self.skipWaiting())}),self.addEventListener(`activate`,e=>{e.waitUntil(self.clients.claim())}),self.addEventListener(`push`,e=>{e.waitUntil((async()=>{let t=e.data?.json()??null;if(!t||(await self.clients.matchAll({type:`window`,includeUncontrolled:!0})).some(e=>e.visibilityState===`visible`||e.focused))return;let n=t.title||`OpenChamber`,r=t.body??``,i=t.icon??`/apple-touch-icon-180x180.png`,a=t.badge??`/favicon-32.png`;await self.registration.showNotification(n,{body:r,icon:i,badge:a,tag:t.tag,data:t.data})})())}),self.addEventListener(`notificationclick`,e=>{e.notification.close();let t=(e.notification.data??null)?.url??`/`;e.waitUntil(self.clients.openWindow(t))})})();
1
+ (function(){self.__WB_MANIFEST,self.addEventListener(`install`,e=>{e.waitUntil(self.skipWaiting())}),self.addEventListener(`activate`,e=>{e.waitUntil(self.clients.claim())}),self.addEventListener(`push`,e=>{e.waitUntil((async()=>{let t=e.data?.json()??null;if(!t||(await self.clients.matchAll({type:`window`,includeUncontrolled:!0})).some(e=>e.visibilityState===`visible`||e.focused))return;let n=t.title||`OpenChamberY`,r=t.body??``,i=t.icon??`/apple-touch-icon-180x180.png`,a=t.badge??`/favicon-32.png`;await self.registration.showNotification(n,{body:r,icon:i,badge:a,tag:t.tag,data:t.data})})())}),self.addEventListener(`notificationclick`,e=>{e.notification.close();let t=(e.notification.data??null)?.url??`/`;e.waitUntil(self.clients.openWindow(t))})})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openchambery/web",
3
- "version": "2.1.6-beta.1",
3
+ "version": "2.1.6-beta.10",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./server/index.js",
@@ -74,7 +74,9 @@ provider, credentials, resource, language and local model from Host speech setti
74
74
  at session start (`../tts/settings.js`). Legacy `options` are ignored, including
75
75
  provider overrides. Saving during a session affects the next session; it cannot
76
76
  change an active upstream connection. Volcengine uses automatic language recognition
77
- and does not receive the Whisper language hint. Session copies are released on
77
+ and snapshots the optional Host `asrContext` description into `request.corpus.context`
78
+ as a serialized `dialog_ctx` object; empty text omits the corpus entirely. It
79
+ does not receive the Whisper language hint. Session copies are released on
78
80
  close, and credentials are never logged.
79
81
 
80
82
  ## Invariants
@@ -89,6 +89,7 @@ export function createDictationService({ modelsDir }) {
89
89
  const session = new VolcengineTranscriptionSession({
90
90
  apiKey: saved.apiKey,
91
91
  resourceId: saved.asrResourceId,
92
+ asrContext: saved.asrContext,
92
93
  });
93
94
  try {
94
95
  await session.connect();
@@ -44,10 +44,11 @@ function decodeFrame(input) {
44
44
  }
45
45
 
46
46
  export class VolcengineTranscriptionSession extends EventEmitter {
47
- constructor({ apiKey, resourceId = 'volc.seedasr.sauc.duration' }, { createSocket = (url, options) => new WebSocket(url, options) } = {}) {
47
+ constructor({ apiKey, resourceId = 'volc.seedasr.sauc.duration', asrContext = '' }, { createSocket = (url, options) => new WebSocket(url, options) } = {}) {
48
48
  super();
49
49
  this.apiKey = apiKey;
50
50
  this.resourceId = resourceId;
51
+ this.asrContext = asrContext;
51
52
  this.createSocket = createSocket;
52
53
  this.requiredSampleRate = 16000;
53
54
  this.autoCommitSeconds = 0;
@@ -91,7 +92,9 @@ export class VolcengineTranscriptionSession extends EventEmitter {
91
92
  socket.send(encodeFrame(1, Buffer.from(JSON.stringify({
92
93
  user: { uid: 'openchamber' },
93
94
  audio: { format: 'pcm', codec: 'raw', rate: 16000, bits: 16, channel: 1 },
94
- request: { model_name: 'bigmodel', result_type: 'full', enable_itn: true, enable_punc: true, enable_nonstream: true, show_utterances: true },
95
+ request: { model_name: 'bigmodel', result_type: 'full', enable_itn: true, enable_punc: true, enable_nonstream: true, show_utterances: true,
96
+ ...(this.asrContext.trim() ? { corpus: { context: JSON.stringify({ context_type: 'dialog_ctx', context_data: [{ text: this.asrContext.trim() }] }) } } : {}),
97
+ },
95
98
  }))), (error) => { if (error) fail(new Error('Volcengine ASR request could not be sent')); });
96
99
  });
97
100
  socket.on('message', (data) => {
@@ -17,7 +17,7 @@ const response = (text, last = false) => {
17
17
  return Buffer.concat([header, fields, payload]);
18
18
  };
19
19
 
20
- async function fixture({ fail = false, terminalWithoutText = false, disconnectOnFinish = false } = {}) {
20
+ async function fixture({ fail = false, terminalWithoutText = false, disconnectOnFinish = false, asrContext = '' } = {}) {
21
21
  const server = createServer();
22
22
  const wss = new WebSocketServer({ server });
23
23
  const frames = [];
@@ -39,7 +39,7 @@ async function fixture({ fail = false, terminalWithoutText = false, disconnectOn
39
39
  await new Promise((resolve) => wss.close(resolve));
40
40
  await new Promise((resolve) => server.close(resolve));
41
41
  });
42
- const session = new VolcengineTranscriptionSession({ apiKey: 'test-key' }, {
42
+ const session = new VolcengineTranscriptionSession({ apiKey: 'test-key', asrContext }, {
43
43
  createSocket: (url, options) => {
44
44
  expect(url).toBe('wss://openspeech.bytedance.com/api/v3/sauc/bigmodel_async');
45
45
  return new WebSocket(`ws://127.0.0.1:${server.address().port}`, options);
@@ -51,6 +51,12 @@ async function fixture({ fail = false, terminalWithoutText = false, disconnectOn
51
51
  }
52
52
 
53
53
  describe('Volcengine streaming dictation', () => {
54
+ it.each(['', 'Mixed Mandarin and English.\nReact and "OpenCode".'])('sends configured context and omits empty context: %s', async (asrContext) => {
55
+ const { frames } = await fixture({ asrContext });
56
+ const { request } = JSON.parse(frames[0].payload);
57
+ if (asrContext) expect(JSON.parse(request.corpus.context)).toEqual({ context_type: 'dialog_ctx', context_data: [{ text: asrContext }] });
58
+ else expect(request).not.toHaveProperty('corpus');
59
+ });
54
60
  it('retains the last full transcript when the successful terminal frame omits text', async () => {
55
61
  const { session } = await fixture({ terminalWithoutText: true });
56
62
  const partial = new Promise((resolve) => session.once('transcript', resolve));
@@ -129,6 +129,17 @@ unified file is first saved. Each section saves its own memory-only draft. A
129
129
  successful write emits `openchamber:speech-settings-changed`; startup and reconnect
130
130
  also fetch the authoritative snapshot without requiring Settings to be opened.
131
131
  Select Volcengine separately for read-aloud and dictation.
132
+ The Volcengine recognition context (`asrContext`) is a Host-owned editable English
133
+ scene description, defaulting to Mandarin/English software-development dictation.
134
+ It accepts multiline text up to 2,000 UTF-16 code units; empty text disables it.
135
+ Missing fields in existing Host files receive the default. New UI clients reading
136
+ older Hosts that omit the field treat it as disabled. Saves affect the next recording.
137
+ Direct ASR tickets snapshot this text; direct and legacy Host streaming requests
138
+ send it as `request.corpus.context`, a JSON string containing `context_type: dialog_ctx`
139
+ and one `context_data` text entry. No conversation history is collected automatically.
140
+ The provider additionally applies its 800-token context limit (not equivalent to
141
+ the local character bound). This setting does not affect TTS or the file ASR API.
142
+ Search terms lead to the stable recognition section without switching providers.
132
143
  Missing keys return HTTP 400, not a server failure.
133
144
  Enable `seed-tts-2.0`, `volc.seedasr.sauc.duration` (live dictation),
134
145
  and optionally `volc.bigasr.auc_turbo` (file API) in the
@@ -31,7 +31,7 @@ export async function createSpeechTicket(settings, kind, signal) {
31
31
  transport: 'volcengine-direct', token, appId: aud[0], expiresAt: exp * 1000, resourceId,
32
32
  ...(kind === 'tts' ? {
33
33
  voice: settings.voice, speed: settings.speechRate, pitch: settings.speechPitch, volume: settings.speechVolume,
34
- } : {}),
34
+ } : { asrContext: settings.asrContext ?? '' }),
35
35
  };
36
36
  }
37
37
 
@@ -5,6 +5,7 @@ import fs from 'node:fs';
5
5
  import os from 'node:os';
6
6
  import path from 'node:path';
7
7
  import { registerTtsRoutes } from './routes.js';
8
+ import { parseSpeechSettings, speechDefaults } from '../../../../ui/src/lib/voice/speechSettings.ts';
8
9
 
9
10
  let directory;
10
11
  let app;
@@ -43,6 +44,26 @@ it('does not mint tickets for other providers, missing keys or malformed session
43
44
  expect(fetch).not.toHaveBeenCalled();
44
45
  });
45
46
 
47
+ it('round-trips context, preserves it across unrelated saves and failed validation, and snapshots only saved ASR context', async () => {
48
+ vi.stubGlobal('fetch', vi.fn(async () => Response.json({ jwt_token: jwt() })));
49
+ const initial = (await request(app).get('/api/voice/settings').expect(200)).body;
50
+ expect(initial.asrContext).toBe(speechDefaults.asrContext);
51
+ const { asrContext: _context, ...legacy } = initial;
52
+ expect(parseSpeechSettings(legacy).asrContext).toBe('');
53
+ const context = 'Mixed Mandarin and English.\nReact, "OpenCode", and APIs.';
54
+ await request(app).put('/api/voice/settings').send({ asrContext: context }).expect(200);
55
+ await request(app).put('/api/voice/settings').send({ speechRate: 1.2 }).expect(200);
56
+ for (const asrContext of [42, null, 'x'.repeat(2001), 'bad\0text']) {
57
+ await request(app).put('/api/voice/settings').send({ asrContext }).expect(400);
58
+ }
59
+ expect((await request(app).get('/api/voice/settings')).body.asrContext).toBe(context);
60
+ expect(JSON.parse(fs.readFileSync(path.join(directory, 'speech/settings.json'), 'utf8')).asrContext).toBe(context);
61
+ expect((await request(app).post('/api/voice/session').send({ kind: 'asr', asrContext: 'ignored' })).body.asrContext).toBe(context);
62
+ expect((await request(app).post('/api/voice/session').send({ kind: 'tts' })).body).not.toHaveProperty('asrContext');
63
+ await request(app).put('/api/voice/settings').send({ asrContext: ' ' }).expect(200);
64
+ expect((await request(app).post('/api/voice/session').send({ kind: 'asr' })).body.asrContext).toBe('');
65
+ });
66
+
46
67
  it('rejects failed, oversized, malformed, expired and overlong tickets without leaking upstream details', async () => {
47
68
  for (const response of [
48
69
  new Response('fixture-key upstream-private', { status: 401 }),
@@ -18,6 +18,7 @@ let sockets;
18
18
  let mode;
19
19
  let audioChunks;
20
20
  let clients;
21
+ let asrRequests;
21
22
  const ticket = () => ({ transport: 'volcengine-direct', token: 'header.payload.signature', appId: 'fixture-app', expiresAt: Date.now() + 300000,
22
23
  resourceId: 'seed-tts-2.0', voice: 'zh_female_vv_uranus_bigtts', speed: 1, pitch: 1.1, volume: 0.8 });
23
24
  const waitFor = async (fn) => { for (let n = 0; n < 200; n++) { if (fn()) return; await new Promise((r) => setTimeout(r, 5)); } throw new Error('Fixture timed out'); };
@@ -40,6 +41,7 @@ function asrResponse(text, final = false) {
40
41
 
41
42
  beforeEach(async () => {
42
43
  urls = []; sockets = []; audioChunks = []; clients = []; mode = 'success'; mocks.identity = 'host-a';
44
+ asrRequests = [];
43
45
  mocks.openRuntimeWebSocket.mockReset();
44
46
  mocks.runtimeFetch.mockReset().mockImplementation(async () => Response.json(ticket()));
45
47
  server = new WebSocketServer({ port: 0, host: '127.0.0.1' }); await once(server, 'listening');
@@ -63,6 +65,8 @@ beforeEach(async () => {
63
65
  if (event === 102 && mode === 'success-close') socket.close();
64
66
  if (event === 102 && mode === 'failure') socket.send(ttsResponse(153, id, { message: 'private details' }));
65
67
  if (event === 102 && mode === 'truncated') socket.close();
68
+ } else if ((bytes[1] >> 4) === 1) {
69
+ asrRequests.push(JSON.parse(bytes.subarray(8).toString()));
66
70
  } else if ((bytes[1] >> 4) === 2) {
67
71
  if (bytes[1] & 2) { if (mode === 'success') socket.send(asrResponse(undefined, true)); else socket.close(); }
68
72
  else { audioChunks.push(bytes.subarray(8)); socket.send(asrResponse(`partial-${audioChunks.length}`)); }
@@ -102,6 +106,15 @@ it('streams 100 ASR chunks in order, publishes live partials, and accepts a term
102
106
  expect(mocks.openRuntimeWebSocket).not.toHaveBeenCalled();
103
107
  });
104
108
 
109
+ it.each([undefined, '', 'Mixed Mandarin and English.\nReact and "OpenCode".'])('sends the ticket context as serialized corpus or omits it: %s', async (asrContext) => {
110
+ mocks.runtimeFetch.mockResolvedValueOnce(Response.json({ ...ticket(), asrContext }));
111
+ const client = new DictationClient(); clients.push(client);
112
+ await client.startDictationStream('context', 'audio/pcm;rate=16000;bits=16');
113
+ await waitFor(() => asrRequests.length === 1);
114
+ if (asrContext) expect(JSON.parse(asrRequests[0].request.corpus.context)).toEqual({ context_type: 'dialog_ctx', context_data: [{ text: asrContext }] });
115
+ else expect(asrRequests[0].request).not.toHaveProperty('corpus');
116
+ });
117
+
105
118
  it.each(['cancel', 'runtime'])('fences a late ticket after %s without opening any socket', async (reason) => {
106
119
  let resolve;
107
120
  mocks.runtimeFetch.mockImplementationOnce(() => new Promise((r) => { resolve = r; }));
@@ -173,3 +186,10 @@ it('rejects stale or expired tickets rather than exposing them to an external so
173
186
  await expect(requestSpeechAudio('测试', new AbortController().signal)).rejects.toThrow('runtime changed');
174
187
  expect(urls).toHaveLength(0);
175
188
  });
189
+
190
+ it.each([123, 'x'.repeat(2001), 'bad\0context'])('rejects malformed ASR context before opening a provider socket', async (asrContext) => {
191
+ mocks.runtimeFetch.mockResolvedValueOnce(Response.json({ ...ticket(), asrContext }));
192
+ const client = new DictationClient(); clients.push(client);
193
+ await expect(client.startDictationStream('invalid', 'audio/pcm;rate=16000;bits=16')).rejects.toThrow('Invalid speech session');
194
+ expect(urls).toHaveLength(0);
195
+ });
@@ -8,6 +8,7 @@ const defaults = {
8
8
  voice: 'zh_female_vv_uranus_bigtts',
9
9
  resourceId: 'seed-tts-2.0',
10
10
  asrResourceId: 'volc.seedasr.sauc.duration',
11
+ asrContext: 'The speaker is discussing software development and technical tasks with an AI assistant. Speech may mix Mandarin Chinese and English within the same sentence. The conversation may cover requirements, system design, implementation, debugging, testing, deployment, and maintenance. Common software engineering terms include alpha, beta, release, stable, version, build, branch, commit, merge, pull request, code review, bug, fix, hotfix, patch, refactor, rollback, deploy, CI/CD, API, SDK, and CLI. Technical terms, product names, acronyms, and code identifiers may be spoken in English within otherwise Chinese sentences.',
11
12
  showMessageTTSButtons: false,
12
13
  voiceProvider: 'browser',
13
14
  speechRate: 1,
@@ -55,7 +56,7 @@ function normalizePatch(value) {
55
56
  if (!Object.hasOwn(value, field)) continue;
56
57
  const input = value[field];
57
58
  if (typeof input !== typeof defaults[field]
58
- || (typeof input === 'string' && (input.length > 4096 || /[\r\n\0]/.test(input) || (requiredStrings.has(field) && !input.trim())))
59
+ || (typeof input === 'string' && (input.length > (field === 'asrContext' ? 2000 : 4096) || (field === 'asrContext' ? /\0/ : /[\r\n\0]/).test(input) || (requiredStrings.has(field) && !input.trim())))
59
60
  || (enums[field] && !enums[field].includes(input))
60
61
  || (typeof input === 'number' && (!Number.isFinite(input) || input < ranges[field][0] || input > ranges[field][1]))) {
61
62
  throw new TypeError('Invalid speech settings');
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{it as t,rt as n}from"./vendor-base-ui-CdzJ6My_.js";import{n as r}from"./vendor-react-BP2cRVqX.js";import{r as i}from"./button-BnPjweDW.js";import{l as a}from"./rasterizePng-DZNznN7Z.js";import{n as o,t as s}from"./vendor-dicebear-core-CV95S5Pg.js";import{n as c,t as l}from"./vendor-dicebear-styles-7lEG-JsF.js";import{t as u}from"./useThemeSystem-8jhE4Zyk.js";var d=e(t(),1),f=r(),p={background:`#c1f2c4`},m={assistant:new o(c),agent:new o(l)};function h(e,t,n=!1,r){let i=e===`agent`?t?.trim().toLowerCase()||`default`:t||`default`;if(e===`agent`){let e=r??p;return new s(m.agent,{seed:i,size:128,idRandomization:!1,borderRadius:0,backgroundColor:[e.background.replace(`#`,``)]}).toDataUri()}return new s(m.assistant,{seed:i,size:128,scale:1.2,backgroundColor:[`00000000`],idRandomization:!1,animationVariant:n?`fastest`:`none`}).toDataUri()}var g=(e,t)=>({background:t(e)||p.background}),_=e=>{let t=(0,f.c)(5),n;t[0]===e?n=t[1]:(n=a(e),t[0]=e,t[1]=n);let r=n.var,i=u()?.currentTheme.colors,o;if(t[2]!==r||t[3]!==i){let e=i?{"--status-success":i.status.success,"--status-info":i.status.info,"--status-warning":i.status.warning,"--syntax-keyword":i.syntax.base.keyword,"--syntax-type":i.syntax.base.type,"--syntax-function":i.syntax.base.function,"--syntax-number":i.syntax.base.number,"--syntax-variable":i.syntax.base.variable}:{};o=g(r,t=>e[t]??``),t[2]=r,t[3]=i,t[4]=o}else o=t[4];return o},v=n(),y=d.memo(e=>{let t=(0,f.c)(33),{name:n,kind:r,animated:o,emoji:s,size:c,shape:l,className:u,label:d}=e,p=r===void 0?`agent`:r,m=o!==void 0&&o,g=c===void 0?16:c,y=l===void 0?`rounded`:l,b=a(n),x=_(n),S;bb0:{if(s){S=void 0;break bb0}if(p!==`agent`){let e;t[0]!==m||t[1]!==p||t[2]!==n?(e=h(p,n,m),t[0]=m,t[1]=p,t[2]=n,t[3]=e):e=t[3],S=e;break bb0}let e;t[4]!==m||t[5]!==p||t[6]!==n||t[7]!==x?(e=h(p,n,m,x),t[4]=m,t[5]=p,t[6]=n,t[7]=x,t[8]=e):e=t[8],S=e}let C=S,w=i(`inline-flex aspect-square shrink-0 overflow-clip`,y===`square`?`rounded-none`:y===`circle`?`rounded-full`:`rounded-sm`,s&&`items-center justify-center select-none`,b.class,u),T=`calc(${g}px * var(--dpt-n, 1))`,E=`calc(${g}px * var(--dpt-n, 1))`,D=`calc(${g}px * var(--dpt-n, 1))`,O=`calc(${g}px * var(--dpt-n, 1))`,k=`calc(${g}px * var(--dpt-n, 1))`,A=`calc(${g}px * var(--dpt-n, 1))`,j=`var(${b.var})`,M;t[9]===s?M=t[10]:(M=s?{display:`inline-flex`,alignItems:`center`,justifyContent:`center`}:null,t[9]=s,t[10]=M);let N;t[11]!==O||t[12]!==k||t[13]!==A||t[14]!==j||t[15]!==M||t[16]!==T||t[17]!==E||t[18]!==D?(N={width:T,minWidth:E,maxWidth:D,height:O,minHeight:k,maxHeight:A,color:j,...M},t[11]=O,t[12]=k,t[13]=A,t[14]=j,t[15]=M,t[16]=T,t[17]=E,t[18]=D,t[19]=N):N=t[19];let P=d?`img`:void 0,F=!d||void 0,I;t[20]!==C||t[21]!==s||t[22]!==g?(I=s?(0,v.jsx)(`span`,{"aria-hidden":`true`,className:`flex h-full w-full items-center justify-center leading-none`,style:{fontSize:`calc(${g*.75}px * var(--dpt-n, 1))`,lineHeight:1,transform:`translateY(0.06em)`},children:s}):(0,v.jsx)(`img`,{src:C,alt:``,draggable:!1,className:`block h-full w-full max-h-full max-w-full object-contain`,"aria-hidden":`true`}),t[20]=C,t[21]=s,t[22]=g,t[23]=I):I=t[23];let L;return t[24]!==p||t[25]!==d||t[26]!==y||t[27]!==N||t[28]!==P||t[29]!==F||t[30]!==I||t[31]!==w?(L=(0,v.jsx)(`span`,{className:w,style:N,"data-agent-avatar":``,"data-avatar-kind":p,"data-agent-avatar-shape":y,role:P,"aria-label":d,"aria-hidden":F,children:I}),t[24]=p,t[25]=d,t[26]=y,t[27]=N,t[28]=P,t[29]=F,t[30]=I,t[31]=w,t[32]=L):L=t[32],L});export{_ as n,h as r,y as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MarkstreamRendererImpl-CIylCsD3.js","assets/rolldown-runtime-hePW80VL.js","assets/vendor-base-ui-CdzJ6My_.js","assets/useUIStore-CdCyJRb0.js","assets/runtime-switch-Ck0YPsR7.js","assets/runtime-auth-C8w0nlKy.js","assets/vendor-zustand-o69pgTEK.js","assets/vendor-react-BP2cRVqX.js","assets/vendor-markstream-react-Bm0cO70Z.js","assets/vendor-aparajita-capacitor-secure-storage-xol_6BsB.js","assets/vendor-markstream-core-Cm34iPLL.js","assets/vendor-floating-ui-dom-BHhLtF5l.js","assets/vendor-floating-ui-core-Co1I1lFV.js","assets/vendor-reactuses-core-BpfIZ1tg.js","assets/vendor-lodash-es-DfLbG5Af.js","assets/vendor-js-cookie-hSOiFTtX.js","assets/button-BnPjweDW.js","assets/persistence-CoWdsn8M.js","assets/runtime-fetch-DJVW43Cw.js","assets/vendor-pathe-vBmvQE8f.js","assets/vendor-tanstack-query-core-BWz0ose6.js","assets/store-CYW4nz6C.js","assets/vendor-class-variance-authority-BLUaYARZ.js","assets/vendor-tailwind-merge-BicNWLTg.js","assets/useMobileNavigationStore-2dQHPP2A.js","assets/platform-Cl17ZOYo.js","assets/vendor-opencode-client-MF2GBrFx.js","assets/vendor-tanstack-react-query-CdqCAt40.js","assets/vendor-sonner-ZS8XIOVl.js","assets/useAssistantUIStore-Dej-0i1V.js","assets/vendor-zod-Dzk5kdUU.js","assets/vendor-fuse.js-DB5wDJbI.js","assets/useThemeSystem-8jhE4Zyk.js","assets/tooltip-Cgzp7Xco.js","assets/image-loading-4Touxv4x.js","assets/fileQueries-DfHYU8Iq.js","assets/useRuntimeAPIs-Cx8S1HLz.js","assets/relay-image-stream-BsB_ApBk.js","assets/image-loading-BzqNA0Jz.css","assets/url-BmJM1D3o.js","assets/useEffectiveDirectory-BwQn0I5k.js","assets/LoadingImage-DZsBpRYx.js","assets/ImageLoadingPlaceholder-DVxKuVwD.js","assets/markdownHeightCache-BMfTZ02N.js","assets/dualLimitLru-D8Sphgua.js","assets/MarkdownRendererImpl-BmgsCLj8.js","assets/vendor-katex-DNVSTX6g.js","assets/markdown-worker-DFNZ3KJ_.js","assets/FadeInOnReveal-C8mIXT_x.js","assets/markdownTheme-CV7_0QAL.js","assets/vendor-pierre-diffs-DPBtNDJ5.js","assets/vendor-hast-util-to-html-Bw_SgZ1t.js","assets/vendor-character-entities-legacy-Wut6vMuj.js","assets/vendor-character-entities-html4-DlN_yAFd.js","assets/vendor-ccount-CyGsA0u7.js","assets/vendor-comma-separated-tokens-B9ouxNNS.js","assets/vendor-oniguruma-to-es-CrHzjjSU.js","assets/vendor-oniguruma-parser-D2DIvhSP.js","assets/vendor-diff-Dq7CZNim.js","assets/vendor-lru_map-BMOrLc9L.js","assets/vendor-morphdom-BbKiNDAu.js","assets/vendor-dompurify-CeJNOzik.js","assets/vendor-pele-C1WTNWUm.js","assets/vendor-marked-WVekxjAN.js","assets/vendor-remend-C3cXc-tf.js","assets/MarkstreamRendererImpl-DKhVy3nF.css"])))=>i.map(i=>d[i]);
2
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{a as t}from"./vendor-zustand-o69pgTEK.js";import{it as n,rt as r}from"./vendor-base-ui-CdzJ6My_.js";import{n as i}from"./vendor-react-BP2cRVqX.js";import{o as a}from"./vendor-aparajita-capacitor-secure-storage-xol_6BsB.js";import{r as o}from"./button-BnPjweDW.js";import{i as s,n as c,t as l}from"./markdownHeightCache-BMfTZ02N.js";var u=i(),d=e(n(),1),f=`openchamber:chunk-import-reload`,p=250,m=3e4,h=[/Importing a module script failed/i,/Failed to fetch dynamically imported module/i,/error loading dynamically imported module/i,/Loading chunk \S+ failed/i,/ChunkLoadError/i];function g(e){if(e instanceof Error)return`${e.name}\n${e.message}\n${e.stack??``}`;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return String(e)}}function _(e){let t=g(e);return h.some(e=>e.test(t))}function v(e){return`2.1.6-beta.1:${g(e).slice(0,500)}`}function y(e){if(typeof window>`u`)return;let t=Date.now(),n=v(e),r=null;try{let e=window.sessionStorage.getItem(f);if(e)try{r=JSON.parse(e)}catch{r=null}}catch{return}let i=typeof r?.timestamp==`number`?r.timestamp:0;if(!(r?.signature===n&&t-i<m)){try{window.sessionStorage.setItem(f,JSON.stringify({signature:n,timestamp:t}))}catch{return}console.error(`[refresh-debug] chunk-import-reload`,{error:g(e).slice(0,1e3)}),window.setTimeout(()=>{window.location.reload()},0)}}async function b(e,t={}){let n=t.retries??1,r;for(let t=0;t<=n;t+=1)try{return await e()}catch(e){if(r=e,!_(e)||t>=n)break;await new Promise(e=>setTimeout(e,p*(t+1)))}throw _(r)&&y(r),r}var x=e=>(0,d.lazy)(()=>b(e)),S=(e,t)=>{try{let n=t??(typeof localStorage>`u`?null:localStorage);return n?n.getItem(e)===`1`:!1}catch{return!1}},C=(e,t)=>{try{let n=t??(typeof localStorage>`u`?null:localStorage);return!n||n.getItem(e)!==`0`}catch{return!0}},w=(e,t)=>{try{typeof localStorage<`u`&&localStorage.setItem(e,t?`1`:`0`)}catch{}},T=`oc:legend-timeline`,E=e=>S(T,e),D=`oc:markstream-react`,O=e=>C(D,e),k=t(e=>({legendTimelineEnabled:E(),setLegendTimelineEnabled:t=>{w(T,t),e({legendTimelineEnabled:t})},markstreamReactEnabled:O(),setMarkstreamReactEnabled:t=>{w(D,t),e({markstreamReactEnabled:t})}})),A=null,j=()=>(A??=a(()=>import(`./MarkstreamRendererImpl-CIylCsD3.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65])).catch(e=>{throw A=null,e}),A),M=()=>{j().catch(()=>void 0)},N=null,P=()=>(N??=a(()=>import(`./MarkdownRendererImpl-BmgsCLj8.js`).then(e=>e.n),__vite__mapDeps([45,1,4,5,18,17,6,2,3,7,19,20,25,26,9,46,13,14,15,16,21,22,23,24,27,28,29,30,31,32,34,35,36,37,38,39,47,44,40,48,49,50,51,52,53,54,55,56,57,58,59,43,60,61,62,63,64])).catch(e=>{throw N=null,e}),N),F=()=>{P().catch(()=>void 0),O()&&M()},I=class extends d.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){console.warn(`[markstream-react] falling back to the current Markdown renderer`,e)}render(){return this.state.hasError?this.props.fallback:this.props.children}},L=d.createContext(!0),R=()=>d.useContext(L),z=r(),B=x(()=>P().then(e=>({default:e.MarkdownRenderer}))),V=x(()=>j().then(e=>({default:e.MarkstreamRenderer}))),H=x(()=>P().then(e=>({default:e.SimpleMarkdownRenderer}))),U=e=>e===`tool`?`markdown-content markdown-tool`:e===`reasoning`?`markdown-content markdown-reasoning`:`markdown-content leading-relaxed`,W=e=>{let t=(0,u.c)(15),n=k(q),r=typeof e.content==`string`?e.content:``,i=typeof e.variant==`string`?e.variant:`assistant`,a;t[0]!==r||t[1]!==n||t[2]!==e.reserveMeasuredHeight||t[3]!==i?(a=e.reserveMeasuredHeight?c(l(r,n?`markstream:${i}`:i)):void 0,t[0]=r,t[1]=n,t[2]=e.reserveMeasuredHeight,t[3]=i,t[4]=a):a=t[4];let d=a,f;t[5]!==e.className||t[6]!==e.variant?(f=o(`relative break-words w-full min-w-0`,U(e.variant),typeof e.className==`string`?e.className:void 0),t[5]=e.className,t[6]=e.variant,t[7]=f):f=t[7];let p;t[8]!==r||t[9]!==e.animated||t[10]!==d?(p=(0,z.jsx)(s,{animated:e.animated,content:r,reservedHeight:d}),t[8]=r,t[9]=e.animated,t[10]=d,t[11]=p):p=t[11];let m;return t[12]!==f||t[13]!==p?(m=(0,z.jsx)(`div`,{className:f,"aria-busy":`true`,"data-markdown-hydration":`deferred`,"data-markdown-ready":`false`,children:p}),t[12]=f,t[13]=p,t[14]=m):m=t[14],m},G=e=>{let t=(0,u.c)(9),n=R(),r=k(J);if(!n&&e.isStreaming!==!0){let n;return t[0]===e?n=t[1]:(n=(0,z.jsx)(W,{...e,animated:!1,reserveMeasuredHeight:!0}),t[0]=e,t[1]=n),n}let i;t[2]===e?i=t[3]:(i=(0,z.jsx)(d.Suspense,{fallback:(0,z.jsx)(W,{...e,reserveMeasuredHeight:!0}),children:(0,z.jsx)(B,{...e})}),t[2]=e,t[3]=i);let a=i;if(!r)return a;let o;t[4]===e?o=t[5]:(o=(0,z.jsx)(d.Suspense,{fallback:(0,z.jsx)(W,{...e,reserveMeasuredHeight:!0}),children:(0,z.jsx)(V,{...e})}),t[4]=e,t[5]=o);let s;return t[6]!==a||t[7]!==o?(s=(0,z.jsx)(I,{fallback:a,children:o}),t[6]=a,t[7]=o,t[8]=s):s=t[8],s},K=e=>{let t=(0,u.c)(4);if(!R()){let n;return t[0]===e?n=t[1]:(n=(0,z.jsx)(W,{...e,animated:!1}),t[0]=e,t[1]=n),n}let n;return t[2]===e?n=t[3]:(n=(0,z.jsx)(d.Suspense,{fallback:(0,z.jsx)(W,{...e}),children:(0,z.jsx)(H,{...e})}),t[2]=e,t[3]=n),n};function q(e){return e.markstreamReactEnabled}function J(e){return e.markstreamReactEnabled}export{k as a,F as i,K as n,x as o,L as r,G as t};
@@ -1,10 +0,0 @@
1
- import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{i as n}from"./runtime-switch-Ck0YPsR7.js";import{n as r}from"./runtime-fetch-DJVW43Cw.js";import{an as i,hn as a,in as o,ln as s,on as c}from"./persistence-CoWdsn8M.js";import{it as l,rt as u}from"./vendor-base-ui-CdzJ6My_.js";import{t as d}from"./platform-Cl17ZOYo.js";import{n as f}from"./useUIStore-CdCyJRb0.js";import{n as p}from"./vendor-react-BP2cRVqX.js";import{n as m}from"./vendor-katex-DNVSTX6g.js";import{f as h,n as g,r as _}from"./vendor-reactuses-core-BpfIZ1tg.js";import{d as v,f as y,r as b}from"./button-BnPjweDW.js";import{i as x,t as S}from"./store-CYW4nz6C.js";import{Pr as C,Ui as w}from"./useMobileNavigationStore-2dQHPP2A.js";import{t as T}from"./useThemeSystem-8jhE4Zyk.js";import{a as E,f as D,h as O,i as ee,m as k,o as A,p as j,t as M,u as te,v as ne}from"./image-loading-4Touxv4x.js";import{n as re}from"./useRuntimeAPIs-Cx8S1HLz.js";import{a as N,i as P,n as F,r as I}from"./url-BmJM1D3o.js";import{c as L,d as ie,f as R,i as ae,n as oe,t as z}from"./markdown-worker-DFNZ3KJ_.js";import{n as se}from"./useEffectiveDirectory-BwQn0I5k.js";import{c as B,i as V,l as H,n as ce,o as le,r as ue,u as de}from"./FadeInOnReveal-C8mIXT_x.js";import{i as fe,n as pe,t as me}from"./markdownTheme-CV7_0QAL.js";import{i as he,r as ge,t as _e}from"./markdownHeightCache-BMfTZ02N.js";import{t as U}from"./dualLimitLru-D8Sphgua.js";import{t as ve}from"./vendor-morphdom-BbKiNDAu.js";import{t as W}from"./vendor-dompurify-CeJNOzik.js";import{t as ye}from"./vendor-pele-C1WTNWUm.js";import{t as be}from"./vendor-marked-WVekxjAN.js";import{t as xe}from"./vendor-remend-C3cXc-tf.js";var G=t(l(),1),Se=p(),Ce=new U({maxEntries:100,maxBytes:8388608}),we=(e,t)=>{let{surface:n,interactive:r,primary:i,status:a}=t.colors,o={bg:n.elevated,fg:n.foreground,muted:n.mutedForeground,line:r.border,surface:n.muted,"surface-alt":n.background,border:r.border,accent:i.base,critical:a.error,error:a.error,"series-1":i.base,"series-2":a.info,"series-3":a.success,"series-4":a.warning,"series-5":a.error,"series-6":i.hover??i.base,"series-7":a.infoForeground,"series-8":a.successForeground},s=JSON.stringify([o,new Date().toDateString(),e]),c=Ce.get(s);if(c)return c;let l;try{let{svg:t}=ye(e,{fontFamily:`system-ui, sans-serif`,autoDirection:!1,links:!1,images:!1}),n=W.sanitize(t,{USE_PROFILES:{svg:!0,svgFilters:!0},RETURN_DOM_FRAGMENT:!0}).querySelector(`svg`);if(!n)throw Error(`Missing diagram SVG`);for(let[e,t]of Object.entries(o))n.style.setProperty(`--pele-${e}`,t);l={svg:n.outerHTML}}catch{l={}}return Ce.set(s,l,(s.length+(l.svg?.length??0))*2),l},Te=`data-md-stream-fence`,Ee=`data-md-stream-line`,De=`data-md-stream-src`,Oe=`data-md-stream-applied`,ke=(e,t)=>{let n=Math.min(e.length,t.length);for(let r=0;r<n;r+=1)if(e[r]!==t[r])return r;return n},Ae=e=>Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.hasAttribute(`data-md-stream-line`)),je=(e,t)=>{let n=document.createElement(`span`);return n.setAttribute(Ee,String(t)),n.className=`line`,n.innerHTML=e,n},Me=(e,t)=>{let n=Ae(e),r=ke(n.map(e=>e.innerHTML),t);if(n.length===0&&e.childNodes.length>0&&t.length>0){e.replaceChildren();for(let n=0;n<t.length;n+=1)n>0&&e.appendChild(document.createTextNode(`
2
- `)),e.appendChild(je(t[n]??``,n));return{reused:0,replaced:0,added:t.length,removed:0}}let i=0;if(r<n.length&&r<t.length){let e=n[r];e&&(e.innerHTML=t[r]??``,e.setAttribute(Ee,String(r)),i=1)}let a=0;for(let e=n.length-1;e>=r+i;--e){let t=n[e]?.previousSibling;t?.nodeType===Node.TEXT_NODE&&t.remove(),n[e]?.remove(),a+=1}let o=0;for(let n=r+i;n<t.length;n+=1)n>0&&e.appendChild(document.createTextNode(`
3
- `)),e.appendChild(je(t[n]??``,n)),o+=1;return{reused:r,replaced:i,added:o,removed:a}},Ne=e=>{if(e.includes(`data-md-stream-fence=`))return e;let t=e.toLowerCase().lastIndexOf(`<pre`);return t<0?e:`${e.slice(0,t)}${e.slice(t).replace(/<pre\b/i,`<pre ${Te}="true"`)}`},Pe=(e,t)=>{if(!(e instanceof HTMLElement)||!(t instanceof HTMLElement)||e.getAttribute(`data-md-stream-fence`)!==`true`||t.getAttribute(`data-md-stream-fence`)!==`true`)return!1;let n=e.tagName===`CODE`?e:e.querySelector(`code`),r=t.tagName===`CODE`?t:t.querySelector(`code`);return n instanceof HTMLElement&&r instanceof HTMLElement&&n.setAttribute(De,r.textContent??``),!0},Fe=e=>e.getAttribute(`data-md-stream-src`)??e.textContent??``,Ie=e=>{let t=e.querySelectorAll(`pre[${Te}="true"]`),n=[];return t.forEach(e=>{let t=e.querySelector(`code`);t instanceof HTMLElement&&n.push(t)}),n},Le=e=>e.closest(`pre`)?.getAttribute(`data-md-lang`)||e.className.match(/language-([^\s"]+)/)?.[1]||`text`,Re=async(e,t,n)=>{if(n?.signal?.aborted)return;let r=Ie(e);await Promise.all(r.map(async r=>{let i=Fe(r);if(!i||n?.signal?.aborted||r.getAttribute(`data-md-stream-applied`)===i)return;let a=Le(r);if(a===`mermaid`)return;let o=await t(i,a,n);if(!(n?.signal?.aborted||!e.contains(r)||Fe(r)!==i)){if(!o){let e=Ae(r),t=document.createElement(`span`);Me(r,i.split(`
4
- `).map((n,r)=>{let i=e[r];return i?.textContent===n?i.innerHTML:(t.textContent=n,t.innerHTML)}));return}Me(r,o),r.setAttribute(Oe,i),r.removeAttribute(De)}}))},ze=`text`,Be=/^(\d+):(\d+):(.+)$/,Ve={ts:`typescript`,mts:`typescript`,cts:`typescript`,tsx:`tsx`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`jsx`,vue:`vue`,svelte:`svelte`,astro:`astro`,json:`json`,jsonc:`jsonc`,json5:`json5`,jsonl:`json`,ndjson:`json`,geojson:`json`,yaml:`yaml`,yml:`yaml`,toml:`toml`,ini:`ini`,cfg:`ini`,conf:`ini`,properties:`properties`,env:`dotenv`,css:`css`,scss:`scss`,sass:`sass`,less:`less`,styl:`stylus`,html:`html`,htm:`html`,xml:`xml`,svg:`xml`,md:`markdown`,markdown:`markdown`,mdown:`markdown`,mkd:`markdown`,mdx:`mdx`,py:`python`,pyw:`python`,pyi:`python`,rb:`ruby`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`,swift:`swift`,scala:`scala`,c:`c`,h:`c`,cc:`cpp`,cpp:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,m:`objective-c`,mm:`objective-cpp`,cs:`csharp`,fs:`fsharp`,fsx:`fsharp`,vb:`vb`,php:`php`,pl:`perl`,pm:`perl`,lua:`lua`,r:`r`,dart:`dart`,ex:`elixir`,exs:`elixir`,erl:`erlang`,hrl:`erlang`,hs:`haskell`,clj:`clojure`,cljs:`clojure`,cljc:`clojure`,groovy:`groovy`,jl:`julia`,ml:`ocaml`,mli:`ocaml`,zig:`zig`,nix:`nix`,sol:`solidity`,prisma:`prisma`,proto:`proto`,graphql:`graphql`,gql:`graphql`,sql:`sql`,sh:`shellscript`,bash:`shellscript`,zsh:`shellscript`,fish:`shellscript`,ps1:`powershell`,psm1:`powershell`,bat:`bat`,cmd:`bat`,tf:`terraform`,tfvars:`terraform`,hcl:`hcl`,diff:`diff`,patch:`diff`,csv:`csv`,tex:`latex`,vim:`viml`,wgsl:`wgsl`,glsl:`glsl`,wat:`wasm`,mermaid:`mermaid`,mmd:`mermaid`},He={dockerfile:`docker`,containerfile:`docker`,makefile:`make`,gnumakefile:`make`,"cmakelists.txt":`cmake`,gemfile:`ruby`,rakefile:`ruby`,podfile:`ruby`,".env":`dotenv`,".bashrc":`shellscript`,".zshrc":`shellscript`,".profile":`shellscript`},Ue=e=>{let t=e.split(/[\\/]/).pop()?.toLowerCase()??``;if(!t)return ze;let n=He[t];if(n)return n;let r=t.lastIndexOf(`.`);return r<=0?ze:Ve[t.slice(r+1)]??ze},We=e=>{let t=e?.trim()??``;if(!t)return{lang:ze,label:ze,reference:!1};let n=Be.exec(t);if(!n){let e=t.toLowerCase();return{lang:e,label:e,reference:!1}}let[,r=``,i=``,a=``]=n,o=r===i?r:`${r}-${i}`;return{lang:Ue(a),label:`${a}:${o}`,reference:!0}},Ge=e=>e===` `||e===` `||e===`
5
- `||e===`\r`,Ke=e=>e!==void 0&&e>=`0`&&e<=`9`,qe=e=>{for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n>=11904&&n<=40959||n>=12288&&n<=12351||n>=63744&&n<=64255||n>=65280&&n<=65519)return!0}return!1},Je=e=>{for(let t=0;t<e.length;t+=1){let n=e[t];if(n===`"`||n===`'`||Ge(n))return!0}return!1},Ye=e=>{let t=0;for(;t<e.length;){let n=e.indexOf(`$`,t);if(n<0)return;let r=e[n+1];if(r===`$`||r!==void 0&&!Ge(r))return n;t=n+1}},Xe=e=>{if(e[0]===`$`){if(e[1]===`$`){let t=e.indexOf(`$$`,2);return t<0?void 0:{raw:e.slice(0,t+2),text:e.slice(2,t),display:!0}}if(!(e.length<3||Ge(e[1])))for(let t=1;t<e.length;t+=1){let n=e[t];if(n===`\\`){t+=1;continue}if(n==="`")return;if(n!==`$`)continue;if(e[t+1]===`$`||Ge(e[t-1]))return;if(Ke(e[t+1]))continue;if(t===1)return;let r=e.slice(1,t);return qe(r)||Ke(e[1])&&Je(r)?void 0:{raw:e.slice(0,t+1),text:r,display:!1}}}},K=e=>e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),Ze=e=>{let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)},Qe=e=>`${Ze(e.raw)}:${e.mode}:${+!!e.highlight}`,$e=e=>/^\[[^\]]+\]:\s+\S+/m.test(e)||/^\[\^[^\]]+\]:\s+/m.test(e),et=e=>{let t=e.match(/^[ \t]{0,3}(`{3,}|~{3,})/);if(!t)return!1;let n=t[1];if(!n)return!1;let r=n[0],i=n.length,a=e.trimEnd().split(`
6
- `).at(-1)?.trim()??``;return!RegExp(`^[\\t ]{0,3}${r}{${i},}[\\t ]*$`).test(a)},tt=e=>{try{return xe(e,{linkMode:`text-only`})}catch{return e}},nt=(e,t)=>{let n=t?`live`:`full`;if($e(e))return[{raw:e,src:tt(e),mode:n,highlight:!0}];let r;try{r=be.lexer(e)}catch{return[{raw:e,src:tt(e),mode:n,highlight:!0}]}let i=-1;for(let e=r.length-1;e>=0;--e)if(r[e]?.type!==`space`){i=e;break}if(i<0)return[{raw:e,src:tt(e),mode:n,highlight:!0}];let a=[];for(let e=0;e<r.length;e+=1){let t=r[e];if(!t||t.type===`space`)continue;let o=t.raw??``,s=e===i,c=t.type===`code`&&et(o);a.push({raw:o,src:c?o:tt(o),mode:s?n:`full`,highlight:!c})}return a.length===0?[{raw:e,src:tt(e),mode:n,highlight:!0}]:a},rt=16,it=new Map,at=(e,t)=>{let n=`${+!!t}:${e}`,r=it.get(n);if(r)return it.delete(n),it.set(n,r),r;let i=nt(e,t);for(;it.size>=rt;){let e=it.keys().next().value;if(typeof e!=`string`)break;it.delete(e)}return it.set(n,i),i},ot=(e,t,n)=>{try{return m.renderToString(e,{displayMode:n,throwOnError:!1})}catch{return t}},st=be.use({gfm:!0,breaks:!1,extensions:[{name:`inlineMath`,level:`inline`,start(e){let t=e.indexOf(`\\(`);return t<0?void 0:t},tokenizer(e){let t=/^\\\(([\s\S]+?)\\\)/.exec(e);if(t)return{type:`inlineMath`,raw:t[0],text:t[1]??``}},renderer(e){let t=e;return ot(t.text,t.raw,!1)}},{name:`blockMath`,level:`block`,start(e){let t=e.indexOf(`\\[`);return t<0?void 0:t},tokenizer(e){let t=/^\\\[([\s\S]+?)\\\]/.exec(e);if(t)return{type:`blockMath`,raw:t[0],text:t[1]??``}},renderer(e){let t=e;return ot(t.text,t.raw,!0)}},{name:`dollarMath`,level:`inline`,start(e){return Ye(e)},tokenizer(e){let t=Xe(e);if(t)return{type:`dollarMath`,raw:t.raw,text:t.text,display:t.display}},renderer(e){let t=e;return ot(t.text,t.raw,t.display)}}],renderer:{link({href:e,title:t,text:n}){let r=e??``,i=B(r);if(i)return`<a href="${K(le(i))}" data-openchamber-agent-mention="true" class="text-primary hover:underline" target="_blank" rel="noopener noreferrer">${n}</a>`;let a=H(r);if(a)return`<a href="${K(r)}" data-skill-name="${K(a)}" class="text-primary hover:underline">${n}</a>`;let o=t?` title="${K(t)}"`:``;return`<a href="${K(r)}"${o} class="external-link" target="_blank" rel="noopener noreferrer">${n}</a>`}}}),ct=e=>e.replace(/\$\$([\s\S]*?)\$\$/g,(e,t)=>{try{return m.renderToString(t,{displayMode:!0,throwOnError:!1})}catch{return`$$${t}$$`}}),lt=e=>e.indexOf(`$`)===-1?e:e.split(/(<(?:pre|code|kbd)[^>]*>[\s\S]*?<\/(?:pre|code|kbd)>)/gi).map((e,t)=>t%2==1?e:ct(e)).join(``),ut=e=>lt(st.parse(e)),dt=e=>{let t=ut(e.src);return e.highlight?t:Ne(t)},ft=/<pre><code(?:\s+class="language-([^"]*)")?>([\s\S]*?)<\/code><\/pre>/g,pt=1200,mt=(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},ht=e=>e.replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&amp;/g,`&`),gt=e=>e.reference?`data-md-lang="${K(e.lang)}" data-md-label="${K(e.label)}"`:`data-md-lang="${K(e.lang)}"`,_t=async(e,t,n)=>{if(n.isCancelled?.())return null;let r=[...e.matchAll(ft)];if(r.length===0)return e;let i=e;for(let e of r){if(n.isCancelled?.())return null;let[r,a,o]=e,s=We(a);if(s.lang===`mermaid`&&!s.reference)continue;let c=ht(o??``);if(mt(c,n.lineLimit)){i=i.replace(r,()=>r.replace(`<pre`,`<pre ${gt(s)}`));continue}let l=await t(c,s.lang);if(n.isCancelled?.())return null;if(l){let e=l.replace(/^<pre/,`<pre ${gt(s)}`);i=i.replace(r,()=>e)}}return i},vt=(e,t)=>!t&&e.length<=480&&!e.includes("```"),yt={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:[`script`],FORBID_CONTENTS:[`script`]},bt=!1,xt=()=>{bt||typeof window>`u`||!W.isSupported||(bt=!0,W.addHook(`uponSanitizeAttribute`,(e,t)=>{if(!(e instanceof HTMLImageElement)||t.attrName!==`src`)return;let n=typeof t.attrValue==`string`?t.attrValue:``;/^file:/i.test(n)&&(e.setAttribute(`data-md-image-source`,n),t.keepAttr=!1)}),W.addHook(`afterSanitizeAttributes`,e=>{e instanceof HTMLAnchorElement&&e.target===`_blank`&&e.setAttribute(`rel`,`noopener noreferrer`)}))},St=e=>W.isSupported?(xt(),W.sanitize(e,yt)):``,Ct=`data-md-sanitize-block`,wt=e=>{if(e.length===0)return[];if(e.length===1)return[St(e[0])];if(!W.isSupported||typeof document>`u`)return e.map(e=>St(e));let t=e.map((e,t)=>`<div ${Ct}="${t}">${e}</div>`).join(``),n=document.createElement(`div`);n.innerHTML=St(t);let r=e.map(()=>``);return n.querySelectorAll(`[${Ct}]`).forEach(e=>{let t=Number(e.getAttribute(Ct));Number.isInteger(t)&&t>=0&&t<r.length&&(r[t]=e.innerHTML)}),r},Tt=()=>s()?200:pt,Et=240,Dt=16777216,Ot=160,kt=8388608,At=new U({maxEntries:Et,maxBytes:Dt}),jt=new U({maxEntries:Ot,maxBytes:kt}),Mt=e=>e.length*2,Nt=(e,t)=>{At.set(e,t,Mt(e)+Mt(t.hash)+Mt(t.html))},Pt=async(e,t,n)=>_t(e,(e,r)=>z(e,r,{signal:t,priority:n}),{lineLimit:Tt(),isCancelled:()=>!!t?.aborted}),Ft=async(e,t,n)=>{if(t?.aborted)return null;let r=dt(e);if(t?.aborted)return null;let i=e.highlight?await Pt(r,t,n):r;if(i===null||t?.aborted)return null;let a=St(i);return t?.aborted?null:a},It=e=>`${Ze(e)}:${e.length}`,Lt=e=>{let t=jt.get(It(e));return t?.source===e?t.html:void 0},Rt=(e,t)=>{let n=It(e);jt.set(n,{source:e,html:t},Mt(n)+Mt(e)+Mt(t))},zt=e=>{if(!e)return[];let t=at(e,!1),n=Array(t.length).fill(``),r=[],i=[];t.forEach((e,t)=>{let a=Lt(e.src);if(a!==void 0){n[t]=a;return}r.push(t),i.push(dt(e))});let a=wt(i);return r.forEach((e,r)=>{let i=a[r]??``;n[e]=i;let o=t[e]?.src;o!==void 0&&Rt(o,i)}),n},Bt=8,Vt=()=>typeof performance<`u`?performance.now():Date.now(),Ht=e=>e?.aborted?Promise.resolve(!1):new Promise(t=>{let n=!1,r=r=>{n||(n=!0,e?.removeEventListener(`abort`,a),t(r))},i=V(()=>{r(!e?.aborted)},{priority:`visible`}),a=()=>{i(),r(!1)};e?.addEventListener(`abort`,a,{once:!0})}),Ut=(e,t)=>{let n=[];for(let r=0;r<e.length;r+=1){let i=e[r];if(!i)return null;let a=Ze(i.raw),o=`${t}:${r}:${i.mode}`,s=At.get(o);if(!s||s.hash!==a)return null;n.push({id:Qe(i),html:s.html})}return n},Wt=(e,t,n)=>{let r=wt(t.map(e=>e.html));return t.map((t,i)=>{let a=e[i],o=r[i]??``;return a&&Nt(`${n}:${i}:${a.mode}`,{hash:Ze(a.raw),html:o}),{id:t.id,html:o}})},Gt=async(e,t,n,r)=>{let i=n?`visible`:`background`,a=async(e,n)=>{if(r?.aborted)return null;let a=Ze(e.raw),o=Qe(e),s=`${t}:${n}:${e.mode}`,c=At.get(s);if(c&&c.hash===a)return{id:o,html:c.html};let l=await Ft(e,r,i);return l===null||r?.aborted?null:(Nt(s,{hash:a,html:l}),{id:o,html:l})};if(n)return(await Promise.all(e.map(a))).filter(e=>e!==null);let o=[],s=0;for(let t=0;t<e.length&&!r?.aborted;t+=1){let n=e[t];if(!n)continue;if(Vt()>=s){if(!await Ht(r))break;s=Vt()+Bt}let i=await a(n,t);i&&o.push(i)}return o},Kt=async(e,t,n,r)=>{if(!e)return[];let i=at(e,t),a=Ut(i,n);if(a)return a;let o=t?`visible`:`background`,s=[],c=[];for(let e=0;e<i.length;e+=1){let t=i[e];if(!t)continue;let r=At.get(`${n}:${e}:${t.mode}`);r&&r.hash===Ze(t.raw)||(s.push(t),c.push(e))}if(!vt(e,t)&&s.length>0)try{let e=await ae({streaming:t,highlight:!0,highlightLineLimit:Tt(),signal:r,priority:o,blocks:s});if(r?.aborted)return[];if(e&&e.length===s.length)return Wt(i,i.map((t,r)=>{let i=c.indexOf(r);if(i>=0)return e[i]??{id:Qe(t),html:``,highlight:t.highlight};let a=At.get(`${n}:${r}:${t.mode}`);return{id:Qe(t),html:a?.html??``,highlight:t.highlight}}),n)}catch{}return Gt(i,n,t,r)},q=e=>Number.isFinite(e)&&e>0,qt=e=>{if(typeof e==`number`)return q(e)?e:null;if(typeof e!=`string`)return null;let t=e.trim().match(/^([+-]?(?:(?:\d+\.?\d*)|(?:\.\d+))(?:[eE][+-]?\d+)?)(?:px)?$/);if(!t)return null;let n=Number(t[1]);return q(n)?n:null},Jt=(e,t,n)=>Math.min(n,Math.max(t,e)),Yt=6,Xt=1.25,Zt=1.0015,Qt=16,$t=1e3,en=.5,tn=12,nn=400,rn=`[data-markdown="mermaid-block"]`,an=e=>e.querySelector(rn)!==null,on=e=>[e.x,e.y,e.width,e.height].map(e=>{let t=Number(e.toFixed(Yt));return Object.is(t,-0)?`0`:String(t)}).join(` `),sn=e=>{let t=e.viewBox?.trim().split(/[\s,]+/).map(e=>Number.parseFloat(e));if(t?.length===4){let[e,n,r,i]=t;if(Number.isFinite(e)&&Number.isFinite(n)&&q(r)&&q(i))return{x:e,y:n,width:r,height:i}}let n=qt(e.width),r=qt(e.height);return n===null||r===null?null:{x:0,y:0,width:n,height:r}},cn=e=>{let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)},ln=e=>{let t=e.renderMode||`unknown`,n=e.svgMarkup??``;if(!n){let n=[e.viewBox??``,e.width??``,e.height??``];return n.some(e=>e!==``)?`${t}:bounds:${n.join(`:`)}`:`${t}:no-svg`}return[t,cn(n)].join(`:`)},un=(e,t)=>{if(!q(t.width)||!q(t.height))return e;let n=e.width/e.height,r=t.width/t.height;if(n>r){let t=e.width/r;return{x:e.x,y:e.y-(t-e.height)/2,width:e.width,height:t}}let i=e.height*r;return{x:e.x-(i-e.width)/2,y:e.y,width:i,height:e.height}},dn=({currentBox:e,viewport:t,delta:n})=>!q(t.width)||!q(t.height)||!q(e.width)||!q(e.height)?e:{x:e.x-n.x/t.width*e.width,y:e.y-n.y/t.height*e.height,width:e.width,height:e.height},fn=(e,t,n)=>{let r=e*(t===1?Qt:t===2?q(n)?n:0:1);return Number.isFinite(r)?Jt(r,-1e3,$t):0},pn=e=>{let t=null;for(let n of e){if(!t){t=n;continue}return{center:{x:(t.x+n.x)/2,y:(t.y+n.y)/2},distance:Math.hypot(n.x-t.x,n.y-t.y)}}return null},mn=(e,t)=>{let n=t.x-e.x,r=t.y-e.y;return n*n+r*r>9},hn=({currentBox:e,contentBox:t,viewport:n,pointer:r,zoomFactor:i,minScale:a,maxScale:o})=>{if(!q(n.width)||!q(n.height)||!q(i)||!q(e.width)||!q(e.height)||!q(t.width)||!q(t.height)||!q(a)||!q(o))return e;let s=Math.min(a,o),c=Math.max(a,o),l=un(t,n),u=Jt(l.width/e.width*i,s,c),d=l.width/u,f=d/(e.width/e.height),p=Jt(r.x/n.width,0,1),m=Jt(r.y/n.height,0,1),h=e.x+p*e.width,g=e.y+m*e.height;return{x:h-p*d,y:g-m*f,width:d,height:f}},gn=({currentBox:e,contentBox:t,viewport:n,previousGesture:r,gesture:i,minScale:a,maxScale:o})=>!q(r.distance)||!q(i.distance)?e:hn({currentBox:dn({currentBox:e,viewport:n,delta:{x:i.center.x-r.center.x,y:i.center.y-r.center.y}}),contentBox:t,viewport:n,pointer:i.center,zoomFactor:i.distance/r.distance,minScale:a,maxScale:o}),_n=new WeakMap,vn=e=>e instanceof HTMLElement?_n.get(e)??null:null,yn=e=>e.querySelector(`[data-markdown="mermaid-viewport"]`)??e.querySelector(`[data-markdown="mermaid"]`),bn=e=>{let t=e.querySelector(`[data-markdown="mermaid"] svg`),n=e.querySelector(`[data-markdown="mermaid"]`);return ln({renderMode:e.getAttribute(`data-mermaid-render`),svgMarkup:n?.getAttribute(`data-md-original-svg`)??t?.outerHTML??null,viewBox:t?.getAttribute(`viewBox`),width:t?.getAttribute(`width`),height:t?.getAttribute(`height`)})},J=e=>{let t=e.getBoundingClientRect();return{width:t.width,height:t.height}},xn=(e,t)=>({x:e.clientX-t.left,y:e.clientY-t.top}),Sn=(e,t)=>xn(e,t.getBoundingClientRect()),Cn=e=>e instanceof Element&&!!e.closest(`button, a, [role="button"]`),wn=e=>{let t=yn(e),n=e.querySelector(`[data-markdown="mermaid"] svg`);if(!t||!n)return null;let r=sn({viewBox:n.getAttribute(`viewBox`),width:n.getAttribute(`width`),height:n.getAttribute(`height`)});if(!r)return null;let i=r,a=null,o=null,s=null,c=new Map,l=new Set,u=null,d=null,f=e=>{i=e,n.setAttribute(`viewBox`,on(e)),n.removeAttribute(`width`),n.removeAttribute(`height`)},p=()=>{f(un(r,J(t)))},m=(e,n)=>{f(hn({currentBox:i,contentBox:r,viewport:J(t),pointer:e,zoomFactor:n,minScale:en,maxScale:tn}))},h=()=>{let e=J(t);m({x:e.width/2,y:e.height/2},Xt)},g=()=>{let e=J(t);m({x:e.width/2,y:e.height/2},1/Xt)},_=e=>{e.preventDefault(),e.stopPropagation();let n=fn(e.deltaY,e.deltaMode,J(t).height);m(Sn(e,t),Zt**+-n)},v=e=>{try{t.setPointerCapture(e),l.add(e)}catch{}},y=e=>{if(l.delete(e))try{t.hasPointerCapture(e)&&t.releasePointerCapture(e)}catch{}},b=()=>{a=null,o=null,s=null,c.clear(),u=null},x=()=>{b(),e.removeAttribute(`data-mermaid-panning`),e.hasAttribute(`data-mermaid-suppress-click`)&&(d=window.setTimeout(()=>{e.removeAttribute(`data-mermaid-suppress-click`),d=null},nn))},S=n=>{if(n.pointerType!==`touch`&&n.button!==0||Cn(n.target))return;d!==null&&(window.clearTimeout(d),d=null),e.removeAttribute(`data-mermaid-suppress-click`);let r=Sn(n,t);v(n.pointerId),e.setAttribute(`data-mermaid-panning`,`true`),n.pointerType===`touch`?(c.set(n.pointerId,r),c.size>=2?(a=null,o=null,s=null,u=pn(c.values()),e.setAttribute(`data-mermaid-suppress-click`,`true`)):(a=n.pointerId,o=r,s=r)):(a=n.pointerId,o=r,s=r),n.preventDefault()},C=n=>{if(n.pointerType===`touch`){if(!c.has(n.pointerId))return;let a=Sn(n,t);if(c.set(n.pointerId,a),c.size>=2){let a=pn(c.values());u&&a&&f(gn({currentBox:i,contentBox:r,viewport:J(t),previousGesture:u,gesture:a,minScale:en,maxScale:tn})),u=a,e.setAttribute(`data-mermaid-suppress-click`,`true`),n.preventDefault();return}}if(a!==n.pointerId||!s)return;let l=Sn(n,t);f(dn({currentBox:i,viewport:J(t),delta:{x:l.x-s.x,y:l.y-s.y}})),s=l,o&&mn(o,l)&&e.setAttribute(`data-mermaid-suppress-click`,`true`),n.preventDefault()},w=e=>{if(e.pointerType===`touch`||c.has(e.pointerId)){if(!c.has(e.pointerId))return;if(c.delete(e.pointerId),u=pn(c.values()),c.size>0){for(let[e,t]of c){a=e,o=t,s=t;break}c.size>=2&&(a=null,o=null,s=null),y(e.pointerId);return}x(),y(e.pointerId);return}a===e.pointerId&&(x(),y(e.pointerId))},T=()=>{p()};t.addEventListener(`wheel`,_,{passive:!1}),t.addEventListener(`pointerdown`,S),t.addEventListener(`pointermove`,C),t.addEventListener(`pointerup`,w),t.addEventListener(`pointercancel`,w),t.addEventListener(`lostpointercapture`,w),window.addEventListener(`resize`,T);let E=typeof ResizeObserver>`u`?null:new ResizeObserver(T);return E?.observe(t),p(),{zoomIn:h,zoomOut:g,fit:p,cleanup:()=>{t.removeEventListener(`wheel`,_),t.removeEventListener(`pointerdown`,S),t.removeEventListener(`pointermove`,C),t.removeEventListener(`pointerup`,w),t.removeEventListener(`pointercancel`,w),t.removeEventListener(`lostpointercapture`,w),window.removeEventListener(`resize`,T),E?.disconnect(),d!==null&&window.clearTimeout(d);for(let e of Array.from(l))y(e);b(),e.removeAttribute(`data-mermaid-panning`),e.removeAttribute(`data-mermaid-suppress-click`),_n.delete(e)}}},Tn=e=>{let t=new Map,n=new Map,r=()=>{for(let[r,i]of Array.from(t.entries())){let a=bn(r);(!e.contains(r)||a!==n.get(r))&&(i.cleanup(),t.delete(r),n.delete(r))}for(let r of Array.from(e.querySelectorAll(rn))){if(t.has(r)||r.querySelector(`[data-markdown="mermaid"] svg`)===null)continue;let e=wn(r);e&&(t.set(r,e),n.set(r,bn(r)),_n.set(r,e))}};return r(),{refresh:r,cleanup:()=>{for(let e of t.values())e.cleanup();t.clear(),n.clear()}}},En=new Set([`dockerfile`,`makefile`,`readme`,`license`,`.env`,`.gitignore`,`.npmrc`]),Dn=Array.from(En).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)).join(`|`),On=e=>k(e),kn=e=>D(e),An=e=>{if(!e||e.startsWith(`--`)||e.includes(`://`)||/[<>]/.test(e)||/\s{2,}/.test(e))return!1;let t=On(e),n=t.split(`/`).filter(Boolean).pop()??t;if(!n||n===`.`||n===`..`)return!1;let r=n.toLowerCase();return En.has(r)||r.startsWith(`.`)&&r.length>1?!0:!t.includes(`/`)&&/^\d+\.\d+$/.test(n)?!1:/\.[A-Za-z0-9_-]{1,16}$/.test(n)},jn=e=>{let t=(e||``).trim();return t?((t.startsWith("`")&&t.endsWith("`")||t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))&&(t=t.slice(1,-1).trim()),t=t.replace(/[.,;!?]+$/g,``),t.endsWith(`)`)&&!t.includes(`(`)&&(t=t.slice(0,-1)),t.endsWith(`]`)&&!t.includes(`[`)&&(t=t.slice(0,-1)),t):``},Mn=e=>{let t=jn(e);if(!t)return``;let n=t.indexOf(`;`);n>=0&&(t=t.slice(0,n)),t=t.replace(/#.*$/,``);let r=t.match(/^(.*\.[A-Za-z0-9_-]{1,16}):.*$/);r&&(t=r[1]??t);let i=Dn.length>0?t.match(RegExp(`^(.*(?:/|^)(${Dn})):.*$`,`i`)):null;return i&&(t=i[1]??t),jn(t)},Nn=e=>{let t=jn(e);if(!t)return null;let n=t.indexOf(`;`),r=n>=0?jn(t.slice(0,n)):t;if(!r)return null;let i=r.match(/^(.*?):(\d+)-(\d+)$/);if(i){let e=Mn(i[1]??``),t=Number.parseInt(i[2]??``,10),n=Number.parseInt(i[3]??``,10);return!e||!Number.isFinite(t)||!Number.isFinite(n)||n<t?null:{path:e,line:t,endLine:n}}let a=r.match(/^(.*)#L(\d+)(?:C(\d+))?$/i);if(a){let e=Mn(a[1]??``),t=Number.parseInt(a[2]??``,10),n=a[3]?Number.parseInt(a[3],10):void 0;return!e||!Number.isFinite(t)?null:{path:e,line:t,column:Number.isFinite(n??NaN)?n:void 0}}let o=r.match(/^(.*?):(\d+)(?::(\d+))?$/);if(o){let e=Mn(o[1]??``),t=Number.parseInt(o[2]??``,10),n=o[3]?Number.parseInt(o[3],10):void 0;return!e||!Number.isFinite(t)?null:{path:e,line:t,column:Number.isFinite(n??NaN)?n:void 0}}let s=Mn(r);return s?{path:s}:null},Pn=/(?:[A-Za-z]:[\\/])?[\w.\-/@+]*[\w\-/@+]\.[A-Za-z0-9]{1,8}(?::\d+(?:-\d+)?(?::\d+)?)?/g,Fn=`(?:(?:[0-9][\\w.@+\\- 一-鿿]*|[一-鿿][\\w.@+\\- 一-鿿]*)|[\\w.@+\\-一-鿿]+)`,In=RegExp(`(?:[A-Za-z]:[\\\\/]|\\.{1,2}\\/|\\/)?(?:${Fn}\\/)+${Fn}\\.[A-Za-z0-9]{1,8}(?::\\d+(?:-\\d+)?(?::\\d+)?)?`,`g`),Ln=`data-openchamber-block-path-token`,Rn=`[${Ln}]`,zn=`data-openchamber-file-link`,Bn=`[${zn}="true"]`,Vn=[zn,`data-openchamber-file-ref`,`data-openchamber-file-path`,`data-openchamber-file-binary`,`title`,`role`,`tabindex`],Hn=`data-openchamber-block-paths-scanned`,Un=`data-openchamber-paragraph-paths-scanned`,Wn=`pre, code, a, script, style, button, [${zn}], ${Rn}`,Gn=2e5,Kn=e=>{let t=Nn(e);return t?An(t.path):!1},qn=e=>{let t=e.trim();return!t||t.startsWith(`#`)||t.startsWith(`?`)||t.startsWith(`//`)?!1:/^[A-Za-z]:[\\/]/.test(t)||/^file:/i.test(t)||Kn(t)&&/:\d+(?:-\d+|:\d+)?$/.test(t)?!0:!/^[A-Za-z][A-Za-z0-9+.-]*:/.test(t)},Jn=(e,t)=>{let n=0;for(let r of e){let e=n+r.data.length;if(t<=e)return{node:r,offset:Math.max(0,t-n)};n=e}let r=e.at(-1);return r?{node:r,offset:r.data.length}:null},Yn=e=>{let t=e.querySelectorAll(`pre code`);if(t.length===0)return;let n=e.ownerDocument;if(n)for(let e of Array.from(t)){if(e.getAttribute(Hn)===`true`)continue;if((e.textContent??``).length>Gn){e.setAttribute(Hn,`true`);continue}let t=n.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[],i=t.nextNode();for(;i;)r.push(i),i=t.nextNode();let a=e.textContent??``;if(!a.includes(`.`)){e.setAttribute(Hn,`true`);continue}Pn.lastIndex=0;let o=[],s=Pn.exec(a);for(;s;){let e=s[0];e&&Kn(e)&&o.push({start:s.index,end:s.index+e.length,raw:e}),s=Pn.exec(a)}for(let{start:e,end:t,raw:i}of o.reverse()){let a=Jn(r,e),o=Jn(r,t);if(!a||!o)continue;let s=n.createRange();s.setStart(a.node,a.offset),s.setEnd(o.node,o.offset);let c=n.createElement(`span`);c.setAttribute(Ln,`true`),c.textContent=i,s.deleteContents(),s.insertNode(c)}e.setAttribute(Hn,`true`)}},Xn=e=>{let t=e.ownerDocument;if(!t)return;let n=e.querySelectorAll(`p, li, blockquote, h1, h2, h3, h4, h5, h6, td, th`);if(n.length!==0)for(let e of Array.from(n)){if(e.getAttribute(Un)===`true`)continue;if(e.closest(Wn)){e.setAttribute(Un,`true`);continue}let n=t.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>{let t=e.parentElement;return!t||t.closest(Wn)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=[],i=n.nextNode();for(;i;)r.push(i),i=n.nextNode();if(r.length===0){e.setAttribute(Un,`true`);continue}let a=r.map(e=>e.data).join(``);if(!a.includes(`/`)||!a.includes(`.`)){e.setAttribute(Un,`true`);continue}In.lastIndex=0;let o=[],s=In.exec(a);for(;s;){let e=s[0];if(!e){s=In.exec(a);continue}let t=s.index>=2?a.slice(s.index-2,s.index):``;if((s.index>=1?a.charAt(s.index-1):``)===`:`||t===`:/`){s=In.exec(a);continue}Kn(e)&&o.push({start:s.index,end:s.index+e.length,raw:e}),s=In.exec(a)}for(let{start:e,end:n,raw:i}of o.reverse()){let a=Jn(r,e),o=Jn(r,n);if(!a||!o)continue;let s=t.createRange();s.setStart(a.node,a.offset),s.setEnd(o.node,o.offset);let c=t.createElement(`span`);c.setAttribute(Ln,`true`),c.textContent=i,s.deleteContents(),s.insertNode(c)}e.setAttribute(Un,`true`)}},Zn=e=>{Yn(e),Xn(e)},Qn=(e,t)=>{if(e.getAttribute(`data-openchamber-file-link`)!==`true`)return;let n=(e.getAttribute(`data-openchamber-file-ref`)||e.textContent||``).trim(),r=(t.textContent||``).trim();if(!(!n||n!==r))for(let n of Vn){let r=e.getAttribute(n);r===null?t.removeAttribute(n):t.setAttribute(n,r)}},Y=(e,t=`size-3.5`)=>`<svg class="oc-icon ${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#oc-${e}"></use></svg>`,$n={copy:Y(`file-copy`),check:Y(`check`),download:Y(`download`),zoomIn:Y(`add`),zoomOut:Y(`subtract`),fit:Y(`refresh`),textWrap:Y(`text-wrap`),image:Y(`file-image`,`size-10`),imageDownload:Y(`download`,`size-3`),imageLoading:Y(`loader-4`,`size-3.5 animate-spin motion-reduce:animate-none`)},er=`p-1 rounded hover:bg-interactive-hover/60 text-muted-foreground hover:text-foreground transition-colors focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--interactive-focus-ring)]`,tr=(e,t)=>{e.innerHTML=t},X=(e,t,n)=>{let r=document.createElement(`button`);return r.type=`button`,r.className=er,r.setAttribute(`data-md-action`,n),r.setAttribute(`title`,t),r.setAttribute(`aria-label`,t),tr(r,$n[e]),r},nr=(e,t,n)=>{let r=e.querySelector(`[data-md-code-body]`),i=e.querySelector(`pre`),a=e.querySelector(`pre code`),o=e.querySelector(`[data-md-action="toggle-code-wrap"]`);if(e.setAttribute(`data-code-wrap`,t?`true`:`false`),r?.classList.toggle(`overflow-x-auto`,!t),r?.classList.toggle(`overflow-x-hidden`,t),i?.classList.toggle(`whitespace-pre-wrap`,t),i?.classList.toggle(`break-words`,t),a?.classList.toggle(`whitespace-pre-wrap`,t),a?.classList.toggle(`break-words`,t),i&&(i.style.whiteSpace=t?`pre-wrap`:`pre`,i.style.overflowWrap=t?`anywhere`:`normal`),a&&(a.style.whiteSpace=t?`pre-wrap`:`pre`,a.style.overflowWrap=t?`anywhere`:`normal`),o){let e=t?n.disableCodeWrap:n.enableCodeWrap;o.setAttribute(`title`,e),o.setAttribute(`aria-label`,e),o.classList.toggle(`text-foreground`,t),o.classList.toggle(`opacity-100`,t),o.classList.toggle(`text-muted-foreground`,!t),o.classList.toggle(`opacity-65`,!t),o.setAttribute(`aria-pressed`,t?`true`:`false`)}},rr=e=>{let t=document.createElement(`div`);t.setAttribute(`data-md-code-line-numbers`,``),t.setAttribute(`aria-hidden`,`true`),t.className=`min-w-8 shrink-0 select-none border-r border-border/50 pr-3 text-right font-mono text-[13px] text-muted-foreground/45`;let n=e.textContent??``,r=Math.max(1,n.endsWith(`
7
- `)?n.split(`
8
- `).length-1:n.split(`
9
- `).length);for(let e=1;e<=r;e+=1){let n=document.createElement(`div`);n.className=`tabular-nums`,n.textContent=String(e),t.appendChild(n)}return t},ir=e=>{let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=n.nextNode();for(;r;)t.push(r),r=n.nextNode();return t},ar=(e,t)=>{let n=0;for(let r of e){let e=n+r.data.length;if(t<=e)return{node:r,offset:Math.max(0,t-n)};n=e}let r=e.at(-1);return r?{node:r,offset:r.data.length}:null},or=(e,t)=>{let n=1/0,r=-1/0;for(let t=0;t<e.length;t+=1){let i=e[t];!i||i.width===0&&i.height===0||(i.top<n&&(n=i.top),i.bottom>r&&(r=i.bottom))}return!Number.isFinite(n)||r<=n?t:Math.max(t,r-n)},sr=e=>Array.from(e.children).filter(e=>e instanceof HTMLElement&&e.classList.contains(`line`)),cr=(e,t,n)=>{e.style.height=`${t}px`,e.style.lineHeight=`${n}px`},lr=(e,t,n)=>{let r=document.createRange();r.setStart(e.node,e.offset),r.setEnd(t.node,t.offset);let i=Math.max(or(r.getClientRects(),n),or([r.getBoundingClientRect()],n));return r.detach(),i},ur=e=>{let t=e.querySelectorAll(`[data-component="markdown-code"]`);for(let e of Array.from(t)){let t=e.querySelector(`pre code`),n=e.querySelector(`[data-md-code-line-numbers]`);if(!t||!n)continue;let r=Array.from(n.children),i=window.getComputedStyle(t),a=Number.parseFloat(i.lineHeight)||20;n.style.fontFamily=i.fontFamily,n.style.fontSize=i.fontSize,n.style.lineHeight=`${a}px`;let o=sr(t);if(o.length===r.length){let e=o.map(e=>e.getBoundingClientRect()),t=e=>(e?.textContent??``).length===0;for(let n=0;n<r.length;n+=1){let i=r[n],s=o[n],c=e[n];if(!i||!s||!c)continue;if(t(s)){cr(i,a,a);continue}let l=o[n+1],u=e[n+1],d=u&&!t(l)?u.top:c.bottom;cr(i,or([{top:c.top,bottom:d,width:1,height:d-c.top}],a),a)}continue}let s=t.textContent??``,c=ir(t),l=0;for(let e=0;e<r.length;e+=1){let t=s.indexOf(`
10
- `,l),n=t===-1?s.length:t,i=r[e];if(!i)continue;let o=ar(c,l),u=ar(c,n);!o||!u||l===n?cr(i,a,a):cr(i,lr(o,u,a),a),l=n+1}}},dr=e=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>ur(e))})},fr=(e,t,n)=>{let r=e.querySelectorAll(`[data-component="markdown-code"]`);for(let e of Array.from(r)){let r=e.querySelector(`[data-md-code-body]`),i=e.querySelector(`pre`);r&&i&&!r.querySelector(`[data-md-code-line-numbers]`)&&(r.classList.add(`flex`,`gap-3`),r.insertBefore(rr(i),i)),nr(e,t,n)}dr(e)},pr=(e,t,n,r)=>{tr(e,$n.check),e.setAttribute(`title`,t),e.setAttribute(`aria-label`,t),window.setTimeout(()=>{tr(e,$n[n]),e.setAttribute(`title`,r),e.setAttribute(`aria-label`,r)},2e3)},mr=e=>{let t=e.querySelectorAll(`:not(pre) > code`);for(let e of Array.from(t))e.getAttribute(`data-markdown`)!==`inline-code`&&e.setAttribute(`data-markdown`,`inline-code`)},hr=(e,t)=>{let n=e.querySelectorAll(`pre`);for(let e of Array.from(n)){if(e.querySelector(`code.language-mermaid`))continue;let n=e.parentElement;if(!n||n.closest(`[data-component="markdown-code"]`))continue;let r=e.querySelector(`code`)?.className.match(/language-([^\s"]+)/)?.[1],i=e.getAttribute(`data-md-label`)??e.getAttribute(`data-md-lang`)??We(r).label,a=document.createElement(`div`);a.setAttribute(`data-component`,`markdown-code`),a.className=`my-4 group overflow-clip rounded-2xl border border-border/80 bg-[var(--surface-elevated)]`;let o=document.createElement(`div`);o.className=`flex items-center justify-between border-b border-border/70 px-3 py-1.5`;let s=document.createElement(`span`);s.className=`font-mono text-[13px] text-muted-foreground`,s.textContent=i;let c=X(`copy`,t.labels.copy,`copy-code`),l=X(`textWrap`,t.codeBlockLineWrap?t.labels.disableCodeWrap:t.labels.enableCodeWrap,`toggle-code-wrap`);o.appendChild(s);let u=document.createElement(`div`);u.className=`flex items-center gap-1`,u.appendChild(l),u.appendChild(c),o.appendChild(u);let d=document.createElement(`div`);d.setAttribute(`data-md-code-body`,``),d.className=`px-3 py-2.5 overflow-x-auto`,n.replaceChild(a,e),e.style.margin=`0`,e.style.background=`transparent`,e.classList.add(`min-w-0`,`w-full`,`flex-1`),d.appendChild(e),a.appendChild(o),a.appendChild(d),nr(a,t.codeBlockLineWrap,t.labels)}},gr=e=>{let t=e.querySelectorAll(`table`);for(let e of Array.from(t)){if(e.closest(`[data-markdown="table-wrapper"]`))continue;let t=document.createElement(`div`);t.className=`my-4`,t.setAttribute(`data-markdown`,`table-wrapper`);let n=document.createElement(`div`);n.setAttribute(`data-markdown`,`table-scroll`);let r=e.parentElement;if(r){r.replaceChild(t,e),e.setAttribute(`data-markdown`,`table`);for(let t of Array.from(e.querySelectorAll(`tr`)))t.setAttribute(`data-markdown`,`table-row`);for(let t of Array.from(e.querySelectorAll(`th`)))t.setAttribute(`data-markdown`,`table-header-cell`);for(let t of Array.from(e.querySelectorAll(`td`)))t.setAttribute(`data-markdown`,`table-cell`);n.appendChild(e),t.appendChild(n)}}},_r=0,vr=(e,t)=>{let n=e.querySelectorAll(`pre > code.language-mermaid`);for(let e of Array.from(n)){let n=e.parentElement;if(!n)continue;let r=(e.textContent??``).replace(/\s+$/,``),i=t.renderMermaid(r),a=document.createElement(`div`);a.setAttribute(`data-markdown`,`mermaid-block`),a.setAttribute(`data-md-source`,r),a.className=`group relative`;let o=document.createElement(`div`);o.setAttribute(`data-markdown`,`mermaid-scroll`);let s=document.createElement(`div`);if(s.setAttribute(`data-markdown`,`mermaid-toolbar`),s.className=`absolute top-1 right-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity`,i.svg){a.setAttribute(`data-mermaid-render`,`svg`);let e=document.createElement(`div`);e.setAttribute(`data-markdown`,`mermaid-viewport`);let n=document.createElement(`div`);n.setAttribute(`data-markdown`,`mermaid`),n.setAttribute(`data-md-original-svg`,i.svg),n.innerHTML=i.svg;let c=n.querySelector(`svg`),l=++_r;for(let[e,t]of[[`title[id]`,`aria-labelledby`],[`desc[id]`,`aria-describedby`]]){let n=c?.querySelector(e);n&&(n.id=`oc-mermaid-${l}-${n.localName}`,c?.setAttribute(t,n.id))}if(e.appendChild(n),o.appendChild(e),t.mermaidControls.showPanZoomControls&&(s.appendChild(X(`zoomIn`,t.labels.zoomInDiagram,`mermaid-zoom-in`)),s.appendChild(X(`zoomOut`,t.labels.zoomOutDiagram,`mermaid-zoom-out`)),s.appendChild(X(`fit`,t.labels.resetDiagramView,`mermaid-fit`))),t.mermaidControls.copy){let e=X(`copy`,t.labels.copyDiagram,`mermaid-copy`);e.setAttribute(`data-md-source`,r),s.appendChild(e)}if(t.mermaidControls.download){let e=X(`download`,t.labels.downloadDiagram,`mermaid-download`);e.setAttribute(`data-md-svg`,`1`),s.appendChild(e)}}else{a.setAttribute(`data-mermaid-render`,`source`);let e=document.createElement(`pre`);if(e.setAttribute(`data-markdown`,`mermaid-source`),e.textContent=r,o.appendChild(e),t.mermaidControls.copy){let e=X(`copy`,t.labels.copyDiagram,`mermaid-copy`);e.setAttribute(`data-md-source`,r),s.appendChild(e)}}a.appendChild(o),a.appendChild(s);let c=n.parentElement;c&&c.replaceChild(a,n)}},yr=(e,t)=>{let n=e.querySelectorAll(`a[href]`);for(let e of Array.from(n)){if(e.getAttribute(`data-md-link-decorated`)===`true`||e.getAttribute(`data-openchamber-file-link`)===`true`)continue;let n=e.getAttribute(`href`)??``;if(!I(n))continue;e.setAttribute(`data-md-link-decorated`,`true`);let r=F(n);if(r){let t=document.createElement(`span`);t.className=`mr-1 inline-flex size-[18px] items-center justify-center rounded border border-[var(--border)] bg-[var(--interactive-hover)] align-middle`;let n=document.createElement(`img`);n.setAttribute(`data-md-link-favicon`,`true`),n.src=r,n.alt=``,n.setAttribute(`aria-hidden`,`true`),n.loading=`lazy`,n.decoding=`async`,n.className=`size-3.5 rounded-sm`,n.addEventListener(`error`,()=>t.remove(),{once:!0}),t.appendChild(n),e.parentNode?.insertBefore(t,e)}if(t.onPreviewLoopback&&P(n)){let r=document.createElement(`button`);r.type=`button`,r.className=`ml-1 align-middle ${er}`,r.setAttribute(`data-md-action`,`preview-loopback`),r.setAttribute(`data-md-url`,n),r.setAttribute(`title`,t.labels.previewTitle),r.setAttribute(`aria-label`,t.labels.previewLabel),tr(r,$n.download),e.parentNode?.insertBefore(r,e.nextSibling)}}},br=`img:not([data-md-link-favicon="true"])`,xr=`[data-md-image-presentation="true"]`,Sr=`data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="576" height="324" viewBox="0 0 576 324"%3E%3C/svg%3E`,Cr=[`block`,`max-w-full`,`rounded-xl`,`border`,`border-border/80`,`bg-[var(--surface-muted)]`,`transition-colors`,`focus-visible:outline`,`focus-visible:outline-2`,`focus-visible:outline-offset-2`,`focus-visible:outline-[var(--interactive-focus-ring)]`],wr=[`cursor-pointer`,`hover:bg-interactive-hover/60`],Tr=[`aspect-video`,`h-auto`,`w-full`,`max-w-xl`,`object-contain`],Er=e=>{let t=e.parentElement;if(t?.matches(xr))return t;let n=document.createElement(`span`);n.setAttribute(`data-md-image-presentation`,`true`),n.className=`relative my-4 block w-fit max-w-full`;let r=document.createElement(`span`);r.setAttribute(`data-md-image-placeholder-visual`,`true`),r.setAttribute(`aria-hidden`,`true`),r.className=`pointer-events-none absolute inset-0 flex items-center justify-center text-muted-foreground`,r.classList.add(`oc-image-loading`),w()&&n.setAttribute(`data-mobile-image`,`true`);let i=document.createElement(`span`);i.className=`relative flex size-14 items-center justify-center rounded-2xl border border-border/80 bg-[var(--surface-elevated)] shadow-sm`,tr(i,$n.image);let a=document.createElement(`span`);a.setAttribute(`data-md-image-download-badge`,`true`),a.className=`absolute -right-1.5 -bottom-1.5 flex size-6 items-center justify-center rounded-full border border-border bg-[var(--surface-elevated)] text-foreground shadow-sm`,tr(a,$n.imageDownload);let o=document.createElement(`span`);return o.setAttribute(`data-md-image-loading-badge`,`true`),o.className=`absolute -right-1.5 -bottom-1.5 hidden size-6 items-center justify-center rounded-full border border-border bg-[var(--surface-elevated)] text-foreground shadow-sm`,tr(o,$n.imageLoading),i.appendChild(a),i.appendChild(o),r.appendChild(i),t?.replaceChild(n,e),n.appendChild(e),n.appendChild(r),n},Dr=e=>{e.src=Sr,e.setAttribute(`data-md-placeholder-source`,Sr),e.setAttribute(`data-md-image-state`,`placeholder`),e.classList.add(...Tr)},Or=e=>{e.removeAttribute(`data-md-image-state`),e.removeAttribute(`data-md-placeholder-source`),e.removeAttribute(`aria-busy`),e.classList.remove(...Tr)},kr=(e,t)=>{if(!t.imagePreviewEnabled)return;let n=e.querySelectorAll(br);for(let e of Array.from(n)){let n=e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,r=A(n,t.imageEffectiveDirectory);if(!ee(r)){e.setAttribute(`data-md-image-source`,n),Er(e),e.setAttribute(`data-md-image-state`,e.complete&&e.naturalWidth>0?`loaded`:`loading`);continue}e.classList.add(...Cr,...wr),e.setAttribute(`role`,`button`),e.setAttribute(`tabindex`,`0`),e.setAttribute(`data-md-image-source`,n),Er(e),Dr(e)}},Ar=(e,t)=>{mr(e),vr(e,t),hr(e,t),gr(e),yr(e,t),kr(e,t),Zn(e)},jr=(e,t,n)=>{let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)},Mr=(e,t)=>{let n=e=>{let n=e.target;if(!(n instanceof Element))return;let r=n.closest(`[data-md-action]`);if(!r)return;let i=r.getAttribute(`data-md-action`)??``;if(i===`copy-code`){let e=r.closest(`[data-component="markdown-code"]`)?.querySelector(`code`)?.textContent??``;e&&v(e).then(()=>pr(r,t.labels.copied,`copy`,t.labels.copy));return}if(i===`toggle-code-wrap`){e.preventDefault(),t.onToggleCodeBlockLineWrap?.();return}if(i===`mermaid-copy`){let e=r.getAttribute(`data-md-source`)??``;e&&v(e).then(()=>pr(r,t.labels.copied,`copy`,t.labels.copyDiagram));return}if(i===`mermaid-zoom-in`||i===`mermaid-zoom-out`||i===`mermaid-fit`){e.preventDefault();let t=vn(r.closest(`[data-markdown="mermaid-block"]`));i===`mermaid-zoom-in`?t?.zoomIn():i===`mermaid-zoom-out`?t?.zoomOut():t?.fit();return}if(i===`mermaid-download`){let e=r.closest(`[data-markdown="mermaid-block"]`)?.querySelector(`[data-markdown="mermaid"]`),t=e?.getAttribute(`data-md-original-svg`)??e?.innerHTML??``;t&&jr(`diagram.svg`,t,`image/svg+xml;charset=utf-8`);return}if(i===`preview-loopback`){e.preventDefault();let n=r.getAttribute(`data-md-url`)??``;n&&t.onPreviewLoopback?.(n);return}};return e.addEventListener(`click`,n),()=>e.removeEventListener(`click`,n)},Nr=`Open file`,Pr=e=>{let{dictionary:t}=x.getState();C.warning(S(t,e))},Fr=4,Ir=1e3,Lr=200,Rr=80,zr=40,Z=new Map,Br=new Map,Vr=(e,t)=>JSON.stringify([n(),t,e]),Hr=0,Ur=[],Wr=()=>s()?Lr:Ir,Gr=()=>s()?zr:Rr,Kr=(e,t)=>{Br.set(e,t)},qr=()=>{let e=Z.keys().next().value;typeof e==`string`&&(Z.delete(e),Br.delete(e))},Jr=(e,t)=>{let n=Wr();for(;Z.size>=n;)qr();Z.set(e,t)},Yr=(e,t=``)=>{let n=On(e);if(n)return Br.get(Vr(n,t))},Xr=e=>{if(e.tagName.toLowerCase()===`a`){let t=e.getAttribute(`href`)?.trim();if(t&&Kn(t))return t}return(e.textContent||``).trim()},Zr=(e,t)=>{let n=Nn(e);if(!n||!An(n.path))return null;let r=kn(n.path)?On(n.path):O(t,n.path);return r?{...n,resolvedPath:r}:null},Qr=(e,t=``)=>{let n=On(e);if(!n)return Promise.resolve({exists:!1,isBinary:!1});let i=Vr(n,t),a=Z.get(i);if(a)return Z.delete(i),Z.set(i,a),a;let o=new Promise((e,a)=>{let s=()=>{Hr+=1,r(`/api/fs/stat?path=${encodeURIComponent(n)}&optional=true`,{method:`GET`,cache:`no-store`,...t?{query:{directory:t}}:{}}).then(async t=>{if(!t.ok)throw Error(`File reference probe failed (${t.status})`);let n=await t.json();if(!n||typeof n.exists!=`boolean`&&n.isFile!==!0)throw Error(`Invalid file reference probe response`);let r={exists:n.exists!==!1,isBinary:n.isBinary===!0};Kr(i,r),e(r)}).catch(e=>{Z.get(i)===o&&(Z.delete(i),Br.delete(i)),a(e)}).finally(()=>{Hr=Math.max(0,Hr-1),Ur.shift()?.()})};if(Hr<Fr){s();return}Ur.push(s)});return Jr(i,o),o},$r=(e,t)=>{if(!(c()&&i()&&!j(e,t)))return Qr(e,t);let n=On(e);if(!n)return Promise.resolve({exists:!1,isBinary:!1});let r=Vr(n,t),a=Z.get(r);if(a)return Z.delete(r),Z.set(r,a),a;let s=o(e).then(e=>{let t={exists:!0,isBinary:e===!0};return Kr(r,t),t});return Jr(r,s),s},ei=(e,t,n)=>!(!t.exists||n&&t.isBinary&&!R(e)&&!ie(e)),ti=(e,t)=>e||te(e,t),ni=async(e,t,n)=>{let r=Zr(e,n.effectiveDirectory);if(!r)return;let i=r.resolvedPath.toLowerCase().endsWith(`.app`);if((t||i)&&!R(r.resolvedPath)&&!ie(r.resolvedPath)){if(await a(r.resolvedPath))return;Pr(`chat.fileReference.notice.binaryExternal`)}if(R(r.resolvedPath)&&n.onShowPopup){let e=r.resolvedPath.split(`/`).filter(Boolean).pop()??r.resolvedPath;n.onShowPopup({open:!0,title:e,content:``,metadata:{tool:`image-preview`,filename:e,mime:L(r.resolvedPath)},image:{url:r.resolvedPath,filename:e,mimeType:L(r.resolvedPath)}});return}let o=ti(n.effectiveDirectory,r.resolvedPath),s=ie(r.resolvedPath);if(n.preferRuntimeEditor&&n.editor&&!s){n.editor.openFile(r.resolvedPath,Number.isFinite(r.line??NaN)?Math.max(1,Math.trunc(r.line)):void 0,Number.isFinite(r.column??NaN)?Math.max(1,Math.trunc(r.column)):void 0);return}let c=f.getState();if(s){c.openContextFile(o,r.resolvedPath,{viewerMode:`preview`});return}if(Number.isFinite(r.line??NaN)){c.openContextFileAtLine(o,r.resolvedPath,Math.max(1,Math.trunc(r.line)),Number.isFinite(r.column??NaN)?Math.max(1,Math.trunc(r.column)):1);return}c.openContextFile(o,r.resolvedPath)},ri=async(e,t)=>{await ni(e.getAttribute(`data-openchamber-file-ref`)||Xr(e),e.getAttribute(`data-openchamber-file-binary`)===`true`,t)},ii=e({MarkdownRenderer:()=>Oi,SimpleMarkdownRenderer:()=>ki}),Q=u(),ai=()=>{let e=(0,Se.c)(4),t=T(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=ne(!1),e[0]=n):n=e[0];let r=n,i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=ne(!0),e[1]=i):i=e[1];let a=i,o;return e[2]===t?.currentTheme?o=e[3]:(o=t?.currentTheme??(typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?a:r),e[2]=t?.currentTheme,e[3]=o),o},oi=e=>{let t=(0,Se.c)(4),{containerRef:n,enabled:r,effectiveDirectory:i,openInAppBrowser:a}=e,o;t[0]!==i||t[1]!==r||t[2]!==a?(o=e=>{if(r===!1||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;let t=e.target;if(!(t instanceof Element)||t.closest($))return;let n=t.closest(`a[href]`);if(!(n instanceof HTMLAnchorElement)||n.getAttribute(`data-openchamber-file-link`)===`true`)return;let o=n.getAttribute(`href`)??``;if(qn(o)){e.preventDefault(),e.stopPropagation();return}if(!I(o))return;e.preventDefault(),e.stopPropagation();let s=(i||``).trim();if(!w()&&s&&a){a(s,o);return}N(o)},t[0]=i,t[1]=r,t[2]=a,t[3]=o):o=t[3];let s=g(o);_(`click`,s,n)},$=`img:not([data-md-link-favicon="true"])`,si=e=>e.getAttribute(`data-md-image-source`)??e.getAttribute(`src`)??``,ci=({containerRef:e,effectiveDirectory:t,onShowPopup:r})=>{let i=G.useRef(null);i.current??=n();let a=i.current,o=!!r,s=g(e=>r?.(e)),c=G.useRef(()=>{}),l=G.useRef(new Map),u=G.useRef(null),d=G.useMemo(()=>e=>c.current(e),[]);return G.useLayoutEffect(()=>{let n=l.current;if(u.current!==null&&(clearTimeout(u.current),u.current=null),c.current=()=>{},!o){for(let[e,t]of n)t.controller?.abort(),t.objectUrl&&E(t.objectUrl),n.delete(e);return}let r=e.current;if(!r)return;let i=e=>{let t=Array.from(r.querySelectorAll($));if(t.indexOf(e)<0)return;let n=t.map(e=>({url:si(e),filename:e.alt||si(e)||void 0})).filter(e=>e.url),i=si(e),a=n.findIndex(e=>e.url===i),o=e.alt||i;s({open:!0,title:o,content:``,metadata:{tool:`image-preview`,filename:o},previewSource:e,image:{url:i,filename:o,gallery:n,index:Math.max(0,a)}})},d=e=>{let t=n.get(e);t&&(t.controller?.abort(),t.objectUrl&&E(t.objectUrl),n.delete(e))},f=e=>{let n=si(e),r=A(n,t);if(ee(r))return`${a}\n${t}\n${n}`},p=e=>{let t=f(e);if(!t){d(e);return}let r=n.get(e);if(r?.key===t)return r;d(e);let i={key:t};return n.set(e,i),i},m=(e,i)=>{if(i.controller||i.objectUrl||!r.contains(e))return;let a=si(e),o=A(a,t);if(!ee(o)){d(e);return}let s=new AbortController;i.controller=s,e.setAttribute(`data-md-image-state`,`loading`),e.setAttribute(`aria-busy`,`true`),M(o.path,s.signal).then(t=>{let r=n.get(e);if(!r||r!==i||r.controller!==s||s.signal.aborted){E(t);return}r.controller=void 0,r.objectUrl=t,e.src=t}).catch(()=>{let t=n.get(e);t===i&&(t.controller=void 0,e.removeAttribute(`aria-busy`),e.setAttribute(`data-md-image-state`,`error`))})};c.current=e=>{for(let[t,r]of n)(!e.contains(t)||f(t)!==r.key)&&d(t);for(let t of Array.from(e.querySelectorAll($))){let e=p(t);e&&!e.objectUrl&&m(t,e)}},c.current(r);let h=e=>{let t=p(e);if(t&&!t.objectUrl){m(e,t);return}i(e)},g=e=>{let n=si(e);n&&fe({sourceUrl:n,displayUrl:e.currentSrc||e.src||void 0,filename:e.alt||n,effectiveDirectory:t})},_=de(),v=e=>si(e)||e.src||`markdown-image`,y=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest($);if(n){if(_.consumeClick(v(n))){e.preventDefault(),e.stopPropagation();return}e.preventDefault(),e.stopPropagation(),h(n)}},b=e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLImageElement)||!t.matches($)||(e.preventDefault(),e.stopPropagation(),h(t))},x=e=>{if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest($);n&&_.start({pointerId:e.pointerId,key:v(n),clientX:e.clientX,clientY:e.clientY,onTrigger:()=>g(n)})},S=e=>{_.move(e.pointerId,e.clientX,e.clientY)},C=e=>{_.end(e.pointerId)},w=e=>{_.cancel(e.pointerId)},T=e=>{let t=e.target;if(!(t instanceof Element))return;let n=t.closest($);n&&(e.preventDefault(),e.stopPropagation(),_.openFromContextMenu(v(n),()=>g(n)))},D=e=>{let t=e.target;!(t instanceof HTMLImageElement)||!t.matches($)||t.getAttribute(`src`)!==t.getAttribute(`data-md-placeholder-source`)&&(Or(t),t.setAttribute(`data-md-image-state`,`loaded`))},O=e=>{let t=e.target;!(t instanceof HTMLImageElement)||!t.matches($)||(t.removeAttribute(`aria-busy`),t.setAttribute(`data-md-image-state`,`error`))};return r.addEventListener(`load`,D,!0),r.addEventListener(`error`,O,!0),r.addEventListener(`click`,y),r.addEventListener(`keydown`,b),r.addEventListener(`pointerdown`,x),r.addEventListener(`pointermove`,S),r.addEventListener(`pointerup`,C),r.addEventListener(`pointercancel`,w),r.addEventListener(`contextmenu`,T),()=>{c.current=()=>{},_.reset(),r.removeEventListener(`load`,D,!0),r.removeEventListener(`error`,O,!0),r.removeEventListener(`click`,y),r.removeEventListener(`keydown`,b),r.removeEventListener(`pointerdown`,x),r.removeEventListener(`pointermove`,S),r.removeEventListener(`pointerup`,C),r.removeEventListener(`pointercancel`,w),r.removeEventListener(`contextmenu`,T),u.current=setTimeout(()=>{u.current=null;for(let e of Array.from(n.keys()))r.contains(e)&&Dr(e),d(e)},0)}},[e,t,o,a]),{reconcileMarkdownImageResources:d,transportIdentity:a}},li={download:!0,copy:!0,showPanZoomControls:!0},ui=!0,di=e=>{let t=e.match(/^(?:\uFEFF)?(---|\+\+\+)[^\S\r\n]*\r?\n[\s\S]*?\r?\n\1[^\S\r\n]*(?:\r?\n|$)/);return t?e.slice(t[0].length):e},fi=160,pi=e=>{let t=(0,Se.c)(8),{containerRef:n,effectiveDirectory:r,editor:i,preferRuntimeEditor:a,onShowPopup:o,enabled:s}=e,c=G.useRef(null),l,u;t[0]!==n||t[1]!==i||t[2]!==r||t[3]!==s||t[4]!==o||t[5]!==a?(l=()=>{let e=n.current;if(!e)return;let t=!1,l=w(),u=Gr(),d=s,f=Ai,p=()=>{let t=e.querySelectorAll(Bn);for(let e of Array.from(t))f(e)};if(!d){p();return}let m=e=>{let n=e===void 0?0:e;if(c.current!==null&&typeof window<`u`&&window.clearTimeout(c.current),typeof window>`u`){h();return}c.current=window.setTimeout(()=>{c.current=null,window.requestAnimationFrame(()=>{t||h()})},n)},h=()=>{let n=e.querySelectorAll(`[data-markdown="inline-code"], a, ${Rn}`),i=0;for(let a of Array.from(n)){let n=Zr(Xr(a),r);if(!n){f(a);continue}if(i>=u){f(a);continue}i+=1,(a.getAttribute(`data-openchamber-file-link`)!==`true`||a.getAttribute(`data-openchamber-file-path`)!==n.resolvedPath)&&$r(n.resolvedPath,r).then(i=>{if(t||!e.contains(a))return;let o=Xr(a),s=Zr(o,r);if(!(!s||s.resolvedPath!==n.resolvedPath)){if(!ei(s.resolvedPath,i,l)){f(a);return}a.setAttribute(`data-openchamber-file-link`,`true`),a.setAttribute(`data-openchamber-file-ref`,o),a.setAttribute(`data-openchamber-file-path`,s.resolvedPath),a.setAttribute(`data-openchamber-file-binary`,String(i.isBinary)),a.setAttribute(`title`,Nr),a.tagName.toLowerCase()!==`a`&&(a.setAttribute(`role`,`button`),a.setAttribute(`tabindex`,`0`))}}).catch(ji)}},g=e=>ri(e,{effectiveDirectory:r,editor:i,preferRuntimeEditor:a,onShowPopup:o}),_=e=>{let t=e.target;if(!(t instanceof Element)||t.closest($))return;let n=t.closest(Bn);n instanceof HTMLElement&&(e.preventDefault(),e.stopPropagation(),g(n))},v=e=>{if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||t.getAttribute(`data-openchamber-file-link`)!==`true`||(e.preventDefault(),e.stopPropagation(),g(t))};m(fi);let y=new MutationObserver(()=>{m(fi)});return y.observe(e,{childList:!0,subtree:!0}),e.addEventListener(`click`,_),e.addEventListener(`keydown`,v),()=>{t=!0,c.current!==null&&typeof window<`u`&&window.clearTimeout(c.current),c.current=null,y.disconnect(),e.removeEventListener(`click`,_),e.removeEventListener(`keydown`,v)}},u=[n,i,r,o,a,s],t[0]=n,t[1]=i,t[2]=r,t[3]=s,t[4]=o,t[5]=a,t[6]=l,t[7]=u):(l=t[6],u=t[7]),G.useEffect(l,u)},mi=({containerRef:e,onShowPopup:t,enableFullscreen:n,enablePanZoom:r,allowMermaidWheelEvents:i})=>{let a=g(e=>t?.(e)),o=!!t,s=g(t=>{if(!n||!o)return;let r=e.current;if(!r)return;let i=t.target;if(!(i instanceof Element)||i.closest(`button, a, [role="button"]`))return;let s=i.closest(rn);if(!s)return;if(s instanceof HTMLElement&&s.hasAttribute(`data-mermaid-suppress-click`)){s.removeAttribute(`data-mermaid-suppress-click`);return}let c=Array.from(r.querySelectorAll(rn)).indexOf(s);if(c<0)return;let l=s instanceof HTMLElement?s.getAttribute(`data-md-source`):null;if(!l||l.trim().length===0)return;let u=`Diagram ${c+1}`;a({open:!0,title:u,content:``,metadata:{tool:`mermaid-preview`,filename:u},mermaid:{url:`data:text/plain;charset=utf-8,${encodeURIComponent(l)}`,source:l,filename:u},previewSource:s instanceof HTMLElement?s:void 0})}),c=g(e=>{if(i||r)return;let t=e.target;t instanceof Element&&t.closest(`[data-markdown="mermaid-block"]`)&&e.stopPropagation()});_(`click`,s,e),G.useEffect(()=>{let t=e.current;if(t)return t.addEventListener(`wheel`,c,{capture:!0,passive:!0}),()=>{t.removeEventListener(`wheel`,c,!0)}},[e])},hi=24,gi=1,_i=12,vi=/[\s.,!?;:)\]]/,yi=(e,t)=>{let n=e<=12?2:e<=48?4:e<=96?8:Math.min(24,Math.ceil(e/8));return Math.max(1,Math.round(t/hi*n))},bi=(e,t)=>yi(e,t)*(1e3/t),xi=(e,t,n)=>{let r=Math.min(e.length,t+n);for(let t=r;t<Math.min(e.length,r+8);t+=1)if(vi.test(e[t]??``))return t+1;return r},Si=(e,t,n)=>{let[r,i]=G.useState(()=>t?0:e.length),a=G.useRef(r),o=G.useRef(0),s=G.useRef(null);return a.current=r,G.useEffect(()=>{if(!t||typeof window>`u`){o.current=0,s.current=null,i(e.length);return}a.current>e.length&&(a.current=e.length,o.current=0,i(e.length));let r=null,c=t=>{let l=Math.min(a.current,e.length);if(l>=e.length){r=null,s.current=null;return}let u=s.current;if(u===null){s.current=t,r=window.requestAnimationFrame(c);return}let d=Math.min(t-u,100);s.current=t,o.current+=bi(e.length-l,n)*(d/1e3);let f=Math.min(_i,Math.floor(o.current));if(f>=gi){o.current-=f;let t=xi(e,l,f);a.current=t,i(t)}r=window.requestAnimationFrame(c)};return a.current<e.length&&(r=window.requestAnimationFrame(c)),()=>{r!==null&&window.cancelAnimationFrame(r)}},[e,t,n]),t?e.slice(0,Math.min(r,e.length)):e},Ci=(e,t,r,i=li,a=n(),o=``,s=!1)=>{let{t:c}=y(),l=G.useMemo(()=>({copy:c(`markdownRenderer.code.actions.copyTitle`),copied:c(`markdownRenderer.code.actions.copiedTitle`),enableCodeWrap:c(`markdownRenderer.code.actions.enableWrapTitle`),disableCodeWrap:c(`markdownRenderer.code.actions.disableWrapTitle`),copyDiagram:c(`markdownRenderer.mermaid.actions.copySourceTitle`),downloadDiagram:c(`markdownRenderer.mermaid.actions.downloadSvgTitle`),zoomInDiagram:c(`markdownRenderer.mermaid.actions.zoomInTitle`),zoomOutDiagram:c(`markdownRenderer.mermaid.actions.zoomOutTitle`),resetDiagramView:c(`markdownRenderer.mermaid.actions.resetViewTitle`),previewLabel:c(`terminalView.preview.open`),previewTitle:c(`terminalView.preview.openTitle`)}),[c]),u=f(e=>e.codeBlockLineWrap),d=f(e=>e.setCodeBlockLineWrap),p=g(()=>{d(!f.getState().codeBlockLineWrap)});return G.useMemo(()=>({labels:l,mermaidControls:i,codeBlockLineWrap:u,deferCodeLineNumberSync:t,onToggleCodeBlockLineWrap:p,renderMermaid:t=>we(t,e),onPreviewLoopback:r,imageTransportIdentity:a,imageEffectiveDirectory:o,imagePreviewEnabled:s}),[e,l,i,u,t,r,a,o,s])},wi=({containerRef:e,text:t,streaming:n,cacheKey:r,syntaxVars:i,ctx:a,reconcileMarkdownImageResources:o,onRichContentReady:s})=>{G.useEffect(()=>{me()},[]);let c=G.useRef(null),l=g(()=>{s?.()}),u=g(()=>{let t=e.current;if(t){if(!c.current){if(!an(t))return;c.current=Tn(t);return}c.current.refresh()}});G.useLayoutEffect(()=>{let r=e.current,i=r?.querySelector(`[data-markdown-content]`)??r;if(i&&t&&i.childNodes.length===0){for(let e of zt(t)){let t=document.createElement(`div`);t.setAttribute(`data-md-block`,``),t.style.display=`contents`,t.innerHTML=e,Ar(t,a),i.appendChild(t)}o(i),n||l()}},[e,a,o,n,t]),G.useEffect(()=>()=>{c.current?.cleanup(),c.current=null},[]),G.useEffect(()=>{let i=e.current;if(!i)return;let s=i.querySelector(`[data-markdown-content]`)??i,c=!0,d=new AbortController,f=()=>{},p=()=>{},m=()=>{if(!c||n||d.signal.aborted)return;s.replaceChildren();let e=document.createElement(`div`);e.setAttribute(`data-md-block`,``),e.setAttribute(`data-md-render-fallback`,`text`),e.style.display=`contents`;let r=document.createElement(`span`);r.style.whiteSpace=`pre-wrap`,r.textContent=t,e.appendChild(r),s.appendChild(e),o(s),l()},h=e=>{if(!c)return;let t=Array.from(s.children);e.forEach((e,n)=>{let r=t[n];if(r||(r=document.createElement(`div`),r.setAttribute(`data-md-block`,``),r.style.display=`contents`,s.appendChild(r)),r.getAttribute(`data-md-id`)===e.id)return;let i=document.createElement(`div`);i.innerHTML=e.html,Ar(i,a);let o=an(r),c=an(i);ve(r,i,{childrenOnly:!0,onBeforeElUpdated:(e,t)=>{if(Pe(e,t))return!1;if(Qn(e,t),e instanceof HTMLImageElement&&t instanceof HTMLImageElement){let n=e.getAttribute(`data-md-image-source`);if(n&&n===t.getAttribute(`data-md-image-source`)){let n=e.getAttribute(`src`);n===null?t.removeAttribute(`src`):t.setAttribute(`src`,n),t.className=e.className;for(let n of[`data-md-image-state`,`data-md-placeholder-source`,`aria-busy`]){let r=e.getAttribute(n);r===null?t.removeAttribute(n):t.setAttribute(n,r)}}}return!e.isEqualNode(t)}}),r.setAttribute(`data-md-id`,e.id),(o||c||an(r))&&u()});let n=an(s),r=!1;for(let n=t.length-1;n>=e.length;--n){let e=t[n];e&&an(e)&&(r=!0),e?.remove()}(r||t.length>e.length&&n)&&u(),o(s),a.deferCodeLineNumberSync||fr(s,a.codeBlockLineWrap,a.labels),Re(s,oe,{signal:d.signal,priority:`visible`}),l()},g=e=>{try{h(e)}catch{m()}},_=()=>{Kt(t,n,r,d.signal).then(e=>{if(c){if(n){g(e);return}p=V(()=>g(e),{priority:`visible`})}}).catch(m)};return n?_():f=V(_,{priority:`visible`}),()=>{c=!1,d.abort(),f(),p()}},[e,t,n,r,a,o]),G.useEffect(()=>{let t=e.current;if(t)return Mr(t,a)},[e,a]),G.useEffect(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;if(n)for(let[e,t]of Object.entries(i))n.style.setProperty(e,t)},[e,i]),G.useEffect(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;n&&(a.deferCodeLineNumberSync||fr(n,a.codeBlockLineWrap,a.labels))},[e,a.codeBlockLineWrap,a.deferCodeLineNumberSync,a.labels]);let d=G.useRef(null),f=g(()=>{let t=e.current,n=t?.querySelector(`[data-markdown-content]`)??t;n&&(d.current!==null&&window.cancelAnimationFrame(d.current),d.current=window.requestAnimationFrame(()=>{d.current=null,ur(n)}))});h(e,f),G.useEffect(()=>()=>{d.current!==null&&window.cancelAnimationFrame(d.current)},[])},Ti=e=>e===`tool`?`markdown-content markdown-tool`:e===`reasoning`?`markdown-content markdown-reasoning`:`markdown-content leading-relaxed`,Ei=e=>{let t=(0,Se.c)(4),[n,r]=G.useState(e),i=G.useRef(e),a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=()=>{i.current||(i.current=!0,r(!0))},t[0]=a):a=t[0];let o=g(a),s;return t[1]!==o||t[2]!==n?(s=[n,o],t[1]=o,t[2]=n,t[3]=s):s=t[3],s},Di=(e,t,n)=>{let r=G.useRef(n);r.current=n;let i=G.useRef(t);i.current=t;let a=g(e=>{if(!r.current)return;let t=e[0];if(!t)return;let n=t.borderBoxSize?.[0],a=n?n.blockSize:t.contentRect.height,o=n?n.inlineSize:t.contentRect.width;ge(i.current,a,o)});h(e,a)},Oi=G.memo(e=>{let t=(0,Se.c)(54),{content:n,part:r,messageId:i,isAnimated:a,skipFadeIn:o,className:s,isStreaming:c,disableStreamAnimation:l,variant:u,onShowPopup:f,enableFileReferences:p}=e,m=a===void 0||a,h=o!==void 0&&o,_=c!==void 0&&c,v=l!==void 0&&l,y=u===void 0?`assistant`:u,x=p===void 0||p,S=ai(),{editor:C,runtime:w}=re(),T=G.useRef(null),E=se()??``,D=g(Mi),O;t[0]!==E||t[1]!==D?(O=e=>{E&&D(E,e)},t[0]=E,t[1]=D,t[2]=O):O=t[2];let ee=g(O),k=_&&!v,A;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(A=ue(d()),t[3]=A):A=t[3];let j=Si(n,k,A.markdownPaceMs),[M,te]=Ei(k),ne;t[4]===f?ne=t[5]:(ne={containerRef:T,onShowPopup:f,enableFullscreen:ui,enablePanZoom:li.showPanZoomControls},t[4]=f,t[5]=ne),mi(ne);let N=x&&!_,P;t[6]!==C||t[7]!==E||t[8]!==f||t[9]!==w.isVSCode||t[10]!==N?(P={containerRef:T,effectiveDirectory:E,editor:C,preferRuntimeEditor:w.isVSCode,onShowPopup:f,enabled:N},t[6]=C,t[7]=E,t[8]=f,t[9]=w.isVSCode,t[10]=N,t[11]=P):P=t[11],pi(P);let F;t[12]!==E||t[13]!==D?(F={containerRef:T,effectiveDirectory:E,openInAppBrowser:D},t[12]=E,t[13]=D,t[14]=F):F=t[14],oi(F);let I;t[15]!==E||t[16]!==f?(I={containerRef:T,effectiveDirectory:E,onShowPopup:f},t[15]=E,t[16]=f,t[17]=I):I=t[17];let{reconcileMarkdownImageResources:L,transportIdentity:ie}=ci(I),R;t[18]===S?R=t[19]:(R=pe(S),t[18]=S,t[19]=R);let ae=R,oe=Ci(S,k,E?ee:void 0,li,ie,E,!!f),z=`markdown-${r?.id?`part-${r.id}`:`message-${i}`}`,B;t[20]!==z||t[21]!==oe||t[22]!==k||t[23]!==j||t[24]!==L||t[25]!==te||t[26]!==ae?(B={containerRef:T,text:j,streaming:k,cacheKey:z,syntaxVars:ae,ctx:oe,reconcileMarkdownImageResources:L,onRichContentReady:te},t[20]=z,t[21]=oe,t[22]=k,t[23]=j,t[24]=L,t[25]=te,t[26]=ae,t[27]=B):B=t[27],wi(B);let V;t[28]!==n||t[29]!==y?(V=_e(n,y),t[28]=n,t[29]=y,t[30]=V):V=t[30],Di(T,V,M&&!k);let H=!M||void 0,le;t[31]===s?le=t[32]:(le=b(`relative break-words w-full min-w-0`,s),t[31]=s,t[32]=le);let de=M?`true`:`false`,fe=M?`ready`:`pending`,me;t[33]!==j||t[34]!==M||t[35]!==y?(me=!M&&(0,Q.jsx)(`div`,{className:b(Ti(y),`pointer-events-none absolute inset-0 overflow-clip`),children:(0,Q.jsx)(he,{content:j})}),t[33]=j,t[34]=M,t[35]=y,t[36]=me):me=t[36];let ge=!M||void 0,U;t[37]!==M||t[38]!==y?(U=b(Ti(y),!M&&`invisible`),t[37]=M,t[38]=y,t[39]=U):U=t[39];let ve;t[40]!==ge||t[41]!==U?(ve=(0,Q.jsx)(`div`,{"aria-hidden":ge,className:U,"data-markdown-content":!0}),t[40]=ge,t[41]=U,t[42]=ve):ve=t[42];let W;t[43]!==H||t[44]!==le||t[45]!==de||t[46]!==fe||t[47]!==me||t[48]!==ve?(W=(0,Q.jsxs)(`div`,{"aria-busy":H,className:le,"data-markdown-ready":de,"data-markdown-hydration":fe,ref:T,children:[me,ve]}),t[43]=H,t[44]=le,t[45]=de,t[46]=fe,t[47]=me,t[48]=ve,t[49]=W):W=t[49];let ye=W;if(m){let e;return t[50]!==z||t[51]!==ye||t[52]!==h?(e=(0,Q.jsx)(ce,{skipAnimation:h,children:ye},z),t[50]=z,t[51]=ye,t[52]=h,t[53]=e):e=t[53],e}return ye},(e,t)=>e.content===t.content&&e.isStreaming===t.isStreaming&&e.disableStreamAnimation===t.disableStreamAnimation&&e.variant===t.variant&&e.isAnimated===t.isAnimated&&e.skipFadeIn===t.skipFadeIn&&e.className===t.className&&e.messageId===t.messageId&&e.onShowPopup===t.onShowPopup&&e.enableFileReferences===t.enableFileReferences&&e.part?.id===t.part?.id),ki=G.memo(e=>{let t=(0,Se.c)(48),{content:n,className:r,variant:i,disableLinkSafety:a,stripFrontmatter:o,onShowPopup:s,mermaidControls:c,mermaidTheme:l,allowMermaidWheelEvents:u,enableFileReferences:d}=e,f=i===void 0?`assistant`:i,p=o!==void 0&&o,m=c===void 0?li:c,h=u!==void 0&&u,_=d===void 0||d,{editor:v,runtime:y}=re(),x=ai(),S=G.useRef(null),[C,w]=Ei(!1),T=se()??``,E;t[0]!==n||t[1]!==p?(E=p?di(n):n,t[0]=n,t[1]=p,t[2]=E):E=t[2];let D=E,O;t[3]!==h||t[4]!==m.showPanZoomControls||t[5]!==s?(O={containerRef:S,onShowPopup:s,enableFullscreen:ui,enablePanZoom:m.showPanZoomControls,allowMermaidWheelEvents:h},t[3]=h,t[4]=m.showPanZoomControls,t[5]=s,t[6]=O):O=t[6],mi(O);let ee=g(Ni),k;t[7]!==v||t[8]!==T||t[9]!==_||t[10]!==s||t[11]!==y.isVSCode?(k={containerRef:S,effectiveDirectory:T,editor:v,preferRuntimeEditor:y.isVSCode,onShowPopup:s,enabled:_},t[7]=v,t[8]=T,t[9]=_,t[10]=s,t[11]=y.isVSCode,t[12]=k):k=t[12],pi(k);let A=!a,j;t[13]!==T||t[14]!==ee||t[15]!==A?(j={containerRef:S,enabled:A,effectiveDirectory:T,openInAppBrowser:ee},t[13]=T,t[14]=ee,t[15]=A,t[16]=j):j=t[16],oi(j);let M;t[17]!==T||t[18]!==s?(M={containerRef:S,effectiveDirectory:T,onShowPopup:s},t[17]=T,t[18]=s,t[19]=M):M=t[19];let{reconcileMarkdownImageResources:te,transportIdentity:ne}=ci(M),N;t[20]===x?N=t[21]:(N=pe(x),t[20]=x,t[21]=N);let P=N,F=Ci(l??x,!1,void 0,m,ne,T,!!s),I=`simple:${f}`,L;t[22]!==F||t[23]!==te||t[24]!==D||t[25]!==w||t[26]!==P||t[27]!==I?(L={containerRef:S,text:D,streaming:!1,cacheKey:I,syntaxVars:P,ctx:F,reconcileMarkdownImageResources:te,onRichContentReady:w},t[22]=F,t[23]=te,t[24]=D,t[25]=w,t[26]=P,t[27]=I,t[28]=L):L=t[28],wi(L);let ie=!C||void 0,R;t[29]===r?R=t[30]:(R=b(`relative break-words w-full min-w-0`,r),t[29]=r,t[30]=R);let ae=C?`true`:`false`,oe=C?`ready`:`pending`,z;t[31]!==D||t[32]!==C||t[33]!==f?(z=!C&&(0,Q.jsx)(`div`,{className:b(Ti(f),`pointer-events-none absolute inset-0 overflow-clip`),children:(0,Q.jsx)(he,{content:D})}),t[31]=D,t[32]=C,t[33]=f,t[34]=z):z=t[34];let B=!C||void 0,V;t[35]!==C||t[36]!==f?(V=b(Ti(f),!C&&`invisible`),t[35]=C,t[36]=f,t[37]=V):V=t[37];let H;t[38]!==B||t[39]!==V?(H=(0,Q.jsx)(`div`,{"aria-hidden":B,className:V,"data-markdown-content":!0}),t[38]=B,t[39]=V,t[40]=H):H=t[40];let ce;return t[41]!==ie||t[42]!==R||t[43]!==ae||t[44]!==oe||t[45]!==z||t[46]!==H?(ce=(0,Q.jsxs)(`div`,{"aria-busy":ie,className:R,"data-markdown-ready":ae,"data-markdown-hydration":oe,ref:S,children:[z,H]}),t[41]=ie,t[42]=R,t[43]=ae,t[44]=oe,t[45]=z,t[46]=H,t[47]=ce):ce=t[47],ce},(e,t)=>{let n=e.mermaidControls??li,r=t.mermaidControls??li;return e.content===t.content&&e.variant===t.variant&&e.className===t.className&&e.disableLinkSafety===t.disableLinkSafety&&e.stripFrontmatter===t.stripFrontmatter&&e.onShowPopup===t.onShowPopup&&n.download===r.download&&n.copy===r.copy&&n.showPanZoomControls===r.showPanZoomControls&&e.mermaidTheme===t.mermaidTheme&&e.allowMermaidWheelEvents===t.allowMermaidWheelEvents&&e.enableFileReferences===t.enableFileReferences});function Ai(e){e.removeAttribute(`data-openchamber-file-link`),e.removeAttribute(`data-openchamber-file-ref`),e.removeAttribute(`data-openchamber-file-path`),e.removeAttribute(`data-openchamber-file-binary`),e.getAttribute(`title`)===`Open file`&&e.removeAttribute(`title`),e.tagName.toLowerCase()!==`a`&&(e.removeAttribute(`role`),e.removeAttribute(`tabindex`))}function ji(){}function Mi(e,t){f.getState().openContextBrowser(e,t)}function Ni(e,t){f.getState().openContextBrowser(e,t)}export{Zr as a,$r as c,Bn as d,Kn as f,Xe as h,Gr as i,ei as l,In as m,ii as n,ri as o,qn as p,Nr as r,Yr as s,Oi as t,zn as u};