sliccy 4.28.2 → 4.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/README.md +17 -16
  2. package/dist/node-server/bridge-security.d.ts +26 -0
  3. package/dist/node-server/bridge-security.js +41 -2
  4. package/dist/node-server/chrome-launch.d.ts +62 -1
  5. package/dist/node-server/chrome-launch.js +168 -2
  6. package/dist/node-server/electron-controller.d.ts +115 -5
  7. package/dist/node-server/electron-controller.js +167 -28
  8. package/dist/node-server/electron-main.js +37 -2
  9. package/dist/node-server/electron-runtime.d.ts +0 -2
  10. package/dist/node-server/electron-runtime.js +63 -68
  11. package/dist/node-server/fetch-proxy-headers.d.ts +25 -0
  12. package/dist/node-server/fetch-proxy-headers.js +36 -0
  13. package/dist/node-server/index.js +46 -11
  14. package/dist/node-server/routes/fetch-proxy.js +12 -12
  15. package/dist/ui/assets/account-store-lwRLg8qZ.js +38 -0
  16. package/dist/ui/assets/account-store-o8Dx0iny.js +99 -0
  17. package/dist/ui/assets/adobe-oauth-state-DJ7nvXJJ.js +1 -0
  18. package/dist/ui/assets/adobe-oauth-state-fjk_YXgL.js +1 -0
  19. package/dist/ui/assets/adobe-t0y7yh0d.js +2 -0
  20. package/dist/ui/assets/adobe-w6Q7iSKn.js +1 -0
  21. package/dist/ui/assets/{agent-message-to-chat-DQErB0Zj.js → agent-message-to-chat-yezUzugT.js} +1 -1
  22. package/dist/ui/assets/{anthropic-BaI_sJYa.js → anthropic-DwYAPtk5.js} +1 -1
  23. package/dist/ui/assets/{apps-BAXGsVHu.js → apps-D-6_Des4.js} +1 -1
  24. package/dist/ui/assets/{azure-openai-CKd81QhZ.js → azure-openai-BUQWXp4U.js} +1 -1
  25. package/dist/ui/assets/{azure-openai-DTsNmcxo.js → azure-openai-Cza179on.js} +1 -1
  26. package/dist/ui/assets/{azure-openai-responses-CMjHELHX.js → azure-openai-responses-Bnxym5u-.js} +1 -1
  27. package/dist/ui/assets/backend-local-mrUgrni5.js +9 -0
  28. package/dist/ui/assets/{bedrock-camp-DS1dgU6g.js → bedrock-camp-C1lmRgcD.js} +2 -2
  29. package/dist/ui/assets/bsh-watchdog-aV3rA0w_.js +60 -0
  30. package/dist/ui/assets/cdp-bridge-CUqQUcaF.js +1 -0
  31. package/dist/ui/assets/{cdp-D4JkCTey.js → cdp-z9uzg44m.js} +5 -5
  32. package/dist/ui/assets/composer-speech-BJF-32Qm.js +1 -0
  33. package/dist/ui/assets/{connect-surface-CyQMJFj3.js → connect-surface-v46dKJYB.js} +1 -1
  34. package/dist/ui/assets/dip-Iosy_HJh.js +1 -0
  35. package/dist/ui/assets/{dist-CVvNIY9j.js → dist-BHeXHQU_.js} +1 -1
  36. package/dist/ui/assets/{dist-Ciobg3J4.js → dist-Fdgn9mju.js} +2 -2
  37. package/dist/ui/assets/ensure-speech-assets-CILvdvdL.js +1 -0
  38. package/dist/ui/assets/{es-DjQZltrp.js → es-Z-wNZ0C3.js} +4 -4
  39. package/dist/ui/assets/esp8266-CL1TORn3.js +1 -0
  40. package/dist/ui/assets/{esptool-operations-SV6FPHJC.js → esptool-operations-CYdcX9Mk.js} +2 -2
  41. package/dist/ui/assets/extension-bridge-transport-DYOF2OYC.js +1 -0
  42. package/dist/ui/assets/fetch-body-D2PwksUW.js +1 -0
  43. package/dist/ui/assets/fetch-body-DDu_AU5I.js +1 -0
  44. package/dist/ui/assets/{fs-Bv2avR3Y.js → fs-CruOlxoS.js} +2 -2
  45. package/dist/ui/assets/{fs-B-yB8nmS.js → fs-crZm8xnS.js} +1 -1
  46. package/dist/ui/assets/github-CQtjJB1r.js +2 -0
  47. package/dist/ui/assets/github-FUziE_96.js +1 -0
  48. package/dist/ui/assets/{github-copilot--B7IUER8.js → github-copilot-DOj1kxaL.js} +1 -1
  49. package/dist/ui/assets/{github-copilot-CFeOxiAY.js → github-copilot-yTNPvKEy.js} +1 -1
  50. package/dist/ui/assets/{google-yB8wbiw4.js → google-CSaY-DQE.js} +1 -1
  51. package/dist/ui/assets/{google-shared-CeGHiQ17.js → google-shared-RiqqHuiz.js} +1 -1
  52. package/dist/ui/assets/{google-vertex-Dbruz2uo.js → google-vertex-CBHKHWKe.js} +1 -1
  53. package/dist/ui/assets/hear-COc8-jz9.js +1 -0
  54. package/dist/ui/assets/hear-Ca-dJ63I.js +1 -0
  55. package/dist/ui/assets/hid-picker-DUJBI46p.js +1 -0
  56. package/dist/ui/assets/{intercepted-oauth-tLpKagkf.js → intercepted-oauth-E9BfBX02.js} +1 -1
  57. package/dist/ui/assets/js-realm-worker-BIJifCVd.js +47 -0
  58. package/dist/ui/assets/{json-parse-BIGBjpLL.js → json-parse-CWht3lea.js} +1 -1
  59. package/dist/ui/assets/kernel-worker-CFGgP28u.js +10060 -0
  60. package/dist/ui/assets/{kokoro-IuvgZkZk.js → kokoro-B5jJ2WUJ.js} +2 -2
  61. package/dist/ui/assets/{kokoro-pZaPWf_-.js → kokoro-BdpwC7DT.js} +2 -2
  62. package/dist/ui/assets/kokoro-engine-io4cnyoV.js +1 -0
  63. package/dist/ui/assets/{lick-ws-bridge-CbVQgXpI.js → lick-ws-bridge-s5Y2i_Ua.js} +1 -1
  64. package/dist/ui/assets/{local-llm-FEU-X2iM.js → local-llm-CKo8wJkz.js} +1 -1
  65. package/dist/ui/assets/magick-wasm-oRIuPV7a.js +43 -0
  66. package/dist/ui/assets/main-CY_go8Ex.js +24 -0
  67. package/dist/ui/assets/{main-cherry-B1mI8ArD.js → main-cherry-BRV9Q0tu.js} +1 -1
  68. package/dist/ui/assets/{mistral-CJVvXrOL.js → mistral-BTNTllXI.js} +1 -1
  69. package/dist/ui/assets/mount-DlwSk_tU.js +1 -0
  70. package/dist/ui/assets/mount-bridge-client-DDnAgZEL.js +2 -0
  71. package/dist/ui/assets/mount-id-_7_PCY9F.js +1 -0
  72. package/dist/ui/assets/mount-pc-SiJqJ.js +2 -0
  73. package/dist/ui/assets/mount-picker-popup-Hrvzr69c.js +1 -0
  74. package/dist/ui/assets/{mount-table-store-CQJEV6Ij.js → mount-table-store-ggb440m4.js} +1 -1
  75. package/dist/ui/assets/new-session-CfjGoE_n.js +2 -0
  76. package/dist/ui/assets/oauth-bootstrap-Le_gIjYT.js +2 -0
  77. package/dist/ui/assets/oauth-service-D4iuqFv6.js +1 -0
  78. package/dist/ui/assets/oauth-service-YGl8VFS-.js +1 -0
  79. package/dist/ui/assets/{openai-codex-BpHxok9y.js → openai-codex-CU65yKca.js} +1 -1
  80. package/dist/ui/assets/{openai-codex-DIIqvcoZ.js → openai-codex-Dx5taSaF.js} +1 -1
  81. package/dist/ui/assets/{openai-codex-responses-CLrAtex4.js → openai-codex-responses-7JN1dUxK.js} +1 -1
  82. package/dist/ui/assets/{openai-completions-CyC3I8Ls.js → openai-completions-YNL_qr9N.js} +1 -1
  83. package/dist/ui/assets/{openai-responses-D3BggRn6.js → openai-responses-nczmKECx.js} +1 -1
  84. package/dist/ui/assets/{openai-responses-shared-GJLWYx-P.js → openai-responses-shared-9YVaeX5D.js} +1 -1
  85. package/dist/ui/assets/panel-responder-BKgfV-nl.js +1 -0
  86. package/dist/ui/assets/{panel-rpc-Ck8CVyMh.js → panel-rpc-D0J5pskz.js} +1 -1
  87. package/dist/ui/assets/panel-rpc-handlers-BFGsncpn.js +2 -0
  88. package/dist/ui/assets/{picker-approval-tzbkMw-e.js → picker-approval-Dc390nC7.js} +1 -1
  89. package/dist/ui/assets/picker-popup-CpulHQsi.js +1 -0
  90. package/dist/ui/assets/preview-vfs-responder-CSDC7Oy2.js +1 -0
  91. package/dist/ui/assets/provider-Lb9gUmQt.js +2 -0
  92. package/dist/ui/assets/provider-store-access-COfmBqcb.js +1 -0
  93. package/dist/ui/assets/provider-store-access-CjPYCH1J.js +1 -0
  94. package/dist/ui/assets/{provider-UGTRh0sb.js → provider-vMORCKxQ.js} +1 -1
  95. package/dist/ui/assets/{providers-C-thqKYx.js → providers-CkeJGhLV.js} +1 -1
  96. package/dist/ui/assets/proxied-fetch-CKDBmEMl.js +2 -0
  97. package/dist/ui/assets/proxied-fetch-CM0jk_Mr.js +1 -0
  98. package/dist/ui/assets/py-realm-worker-hOFi8vjM.js +242 -0
  99. package/dist/ui/assets/{pyodide-BvA4c-59.js → pyodide-CqQhZelL.js} +2 -2
  100. package/dist/ui/assets/{quick-llm-pCxnbK4A.js → quick-llm-CksvHcNV.js} +1 -1
  101. package/dist/ui/assets/{remote-cache-BffIqHgi.js → remote-cache-BL6NRenp.js} +1 -1
  102. package/dist/ui/assets/remote-terminal-view-Qv9yhXQm.js +5 -0
  103. package/dist/ui/assets/remote-vfs-client-Z2qM01yP.js +1 -0
  104. package/dist/ui/assets/secret-env-DncfFSea.js +1 -0
  105. package/dist/ui/assets/secret-topology-bwXIzzAK.js +1 -0
  106. package/dist/ui/assets/secrets-bridge-client-BSipj-5f.js +2 -0
  107. package/dist/ui/assets/serial-picker-B6s4NeaB.js +1 -0
  108. package/dist/ui/assets/session-freezer-1tkfzApv.js +1 -0
  109. package/dist/ui/assets/shared-Bn9ltvMZ.js +1 -0
  110. package/dist/ui/assets/speak-Bri-_DZL.js +1 -0
  111. package/dist/ui/assets/speak-D9WnbzxD.js +2 -0
  112. package/dist/ui/assets/speech-assets-bridge-B8NqCAE8.js +1 -0
  113. package/dist/ui/assets/speech-assets-bridge-BUDIvdid.js +1 -0
  114. package/dist/ui/assets/{sprinkle-bridge-DrAUCEC_.js → sprinkle-bridge-Du2dCM8G.js} +1 -1
  115. package/dist/ui/assets/{sprinkle-manager-C3_2AgeR.js → sprinkle-manager-BhhaIwAz.js} +1 -1
  116. package/dist/ui/assets/{sql-wasm-Cu5Uk_6k.js → sql-wasm-BWbkWL23.js} +1 -1
  117. package/dist/ui/assets/{store-DSwnBJEJ.js → store-iS53cbT5.js} +1 -1
  118. package/dist/ui/assets/sudo-DH2Ru5S3.js +5 -0
  119. package/dist/ui/assets/tool-ui-DfXu6quJ.js +1 -0
  120. package/dist/ui/assets/tool-ui-t6ocn6AG.js +1 -0
  121. package/dist/ui/assets/transformers-env-2Uj9Fgd2.js +1 -0
  122. package/dist/ui/assets/transformers-env-CgaV7qpU.js +1 -0
  123. package/dist/ui/assets/transformers.web-BxHOGVSB.js +45 -0
  124. package/dist/ui/assets/transformers.web-CuUo4MLm.js +39 -0
  125. package/dist/ui/assets/{tray-leave-runtime-Dk3OSbMO.js → tray-leave-runtime-ND08HLeb.js} +1 -1
  126. package/dist/ui/assets/{upgrade-detection-Dcc69AtK.js → upgrade-detection-Y3TdGYus.js} +1 -1
  127. package/dist/ui/assets/usb-picker-D_K0weAY.js +1 -0
  128. package/dist/ui/assets/{voice-reply-UcYXGV0I.js → voice-reply-DfKSbOma.js} +1 -1
  129. package/dist/ui/assets/wc-attach-BvytbCpS.js +13 -0
  130. package/dist/ui/assets/{wc-detached-CJFrvQ5w.js → wc-detached-Bw0mLsiP.js} +1 -1
  131. package/dist/ui/assets/wc-extension-DS-jtOJw.js +2 -0
  132. package/dist/ui/assets/wc-live-B3kXelNl.js +253 -0
  133. package/dist/ui/assets/wc-nav-tMI3vvSL.js +2 -0
  134. package/dist/ui/assets/wc-onboarding-Dm8BUVRJ.js +2 -0
  135. package/dist/ui/assets/wc-permissions-mVh0SOdZ.js +3 -0
  136. package/dist/ui/assets/wc-permissions-providers-BufEXbhX.js +2 -0
  137. package/dist/ui/assets/wc-permissions-registry-CR1rTd2H.js +1 -0
  138. package/dist/ui/assets/wc-permissions-registry-Dx-BRiKK.js +1 -0
  139. package/dist/ui/assets/wc-placeholder-DEo1-1V5.js +4 -0
  140. package/dist/ui/assets/wc-settings-D3QCZnur.js +24 -0
  141. package/dist/ui/assets/{wc-shell-BGaEWRGh.js → wc-shell-DgOdmKyR.js} +603 -101
  142. package/dist/ui/assets/wc-sprinkles-D5si03_4.js +2 -0
  143. package/dist/ui/assets/wc-tray-lTqtwMFb.js +5 -0
  144. package/dist/ui/assets/whisper-engine-Emfsg6Pq.js +1 -0
  145. package/dist/ui/assets/whisper-session-Dt-B3KmT.js +2 -0
  146. package/dist/ui/assets/worker-D1KsWRGg.js +1 -1
  147. package/dist/ui/assets/writable-vfs-client-BKZGifKZ.js +1 -0
  148. package/dist/ui/assets/{xai-grok-BX1SWx3y.js → xai-grok-D4a_2yZf.js} +1 -1
  149. package/dist/ui/assets/{xai-grok-CggP425A.js → xai-grok-Dpq_7ZV8.js} +1 -1
  150. package/dist/ui/electron-overlay-entry.css +37 -0
  151. package/dist/ui/electron-overlay-entry.js +5853 -222
  152. package/dist/ui/index.html +7 -3
  153. package/dist/ui/llm-proxy-sw.js +1 -1
  154. package/dist/ui/packages/webapp/index.html +7 -3
  155. package/dist/ui/preview-sw.js +1 -1
  156. package/package.json +6 -1
  157. package/dist/ui/assets/__vite-browser-external-CM3Eme-n.js +0 -1
  158. package/dist/ui/assets/account-store-Dha2nLml.js +0 -38
  159. package/dist/ui/assets/account-store-DmjUSua_.js +0 -99
  160. package/dist/ui/assets/adobe-CpNl5eLk.js +0 -2
  161. package/dist/ui/assets/adobe-CtI7bDCt.js +0 -1
  162. package/dist/ui/assets/backend-local-CMfz45hs.js +0 -9
  163. package/dist/ui/assets/biome_wasm-DEjrJMqV.js +0 -1
  164. package/dist/ui/assets/bsh-watchdog-B27e-Og-.js +0 -74
  165. package/dist/ui/assets/cdn-url-builder-Cq7LLgru.js +0 -1
  166. package/dist/ui/assets/chunk-CMxvf4Kt.js +0 -1
  167. package/dist/ui/assets/common-ewBM5he1.js +0 -1
  168. package/dist/ui/assets/composer-speech-DYshRh0w.js +0 -1
  169. package/dist/ui/assets/dip-De30SVSa.js +0 -1
  170. package/dist/ui/assets/dist-DElqKLgF.js +0 -43
  171. package/dist/ui/assets/esp32-BTVUAltJ.js +0 -1
  172. package/dist/ui/assets/esp32c2-Cvhq9547.js +0 -1
  173. package/dist/ui/assets/esp32c3-D9lOBWYZ.js +0 -1
  174. package/dist/ui/assets/esp32c5-D2poFXyG.js +0 -1
  175. package/dist/ui/assets/esp32c6-Ct3LxBMw.js +0 -1
  176. package/dist/ui/assets/esp32c61-BsudQf3e.js +0 -1
  177. package/dist/ui/assets/esp32h2-CPO25efF.js +0 -1
  178. package/dist/ui/assets/esp32p4-GHiT8voO.js +0 -1
  179. package/dist/ui/assets/esp32s2-DrH4e7iJ.js +0 -1
  180. package/dist/ui/assets/esp32s3-BHbeScNz.js +0 -1
  181. package/dist/ui/assets/esp8266-DNz2CP4r.js +0 -1
  182. package/dist/ui/assets/github-DRvbws57.js +0 -2
  183. package/dist/ui/assets/github-DcwUCUyU.js +0 -1
  184. package/dist/ui/assets/hear-20YdcW5b.js +0 -1
  185. package/dist/ui/assets/hear-BOsXTls8.js +0 -1
  186. package/dist/ui/assets/js-realm-worker-BWFis6jC.js +0 -5
  187. package/dist/ui/assets/kernel-worker-DuaByjq4.js +0 -9820
  188. package/dist/ui/assets/kokoro-engine-CHIq9iyX.js +0 -2
  189. package/dist/ui/assets/kokoro-engine-CjyxHaAM.js +0 -1
  190. package/dist/ui/assets/magick-wasm-BvNy9LFP.js +0 -1
  191. package/dist/ui/assets/main-D-3iO2Pb.js +0 -24
  192. package/dist/ui/assets/mount-B60ugIMY.js +0 -1
  193. package/dist/ui/assets/mount-TPowGzXN.js +0 -2
  194. package/dist/ui/assets/mount-id-DtHfwjbZ.js +0 -1
  195. package/dist/ui/assets/mount-picker-popup-BORxgnGu.js +0 -1
  196. package/dist/ui/assets/new-session-BjrjaQDu.js +0 -2
  197. package/dist/ui/assets/nodejs-BQ9Oov1A.js +0 -1
  198. package/dist/ui/assets/oauth-bootstrap-D15vXH8k.js +0 -2
  199. package/dist/ui/assets/oauth-service-CoJ-pYVD.js +0 -1
  200. package/dist/ui/assets/oauth-service-D49nt7eJ.js +0 -1
  201. package/dist/ui/assets/panel-rpc-handlers-Ca3yEyOL.js +0 -2
  202. package/dist/ui/assets/preview-vfs-responder-dyQBWIl5.js +0 -1
  203. package/dist/ui/assets/provider-CT4MGofi.js +0 -2
  204. package/dist/ui/assets/provider-store-access-BHHITTJF.js +0 -1
  205. package/dist/ui/assets/provider-store-access-BSS9maA7.js +0 -1
  206. package/dist/ui/assets/proxied-fetch-BBO8HwcV.js +0 -1
  207. package/dist/ui/assets/py-realm-worker-BnG_DxBd.js +0 -242
  208. package/dist/ui/assets/remote-terminal-view-CSqiig2G.js +0 -6
  209. package/dist/ui/assets/remote-vfs-client-BwJhhtIV.js +0 -1
  210. package/dist/ui/assets/secret-env-DcfTe28K.js +0 -1
  211. package/dist/ui/assets/session-freezer-NFd-CALu.js +0 -1
  212. package/dist/ui/assets/setup-sudo-KPDfIsQ7.js +0 -1
  213. package/dist/ui/assets/shared-B7TdM-Ik.js +0 -1
  214. package/dist/ui/assets/speak-D511iTBd.js +0 -1
  215. package/dist/ui/assets/speak-EKtIqp6j.js +0 -1
  216. package/dist/ui/assets/sudo-B4yfntyh.js +0 -4
  217. package/dist/ui/assets/tool-ui-N76-EdVc.js +0 -1
  218. package/dist/ui/assets/tool-ui-YOPqzMmL.js +0 -1
  219. package/dist/ui/assets/transformers-env-6vj5CcH9.js +0 -1
  220. package/dist/ui/assets/transformers-env-O5Vtz_xj.js +0 -1
  221. package/dist/ui/assets/transformers.web-C9_H_wuQ.js +0 -37
  222. package/dist/ui/assets/transformers.web-DJfCkvxA.js +0 -43
  223. package/dist/ui/assets/typescript-qBO0Z4wm.js +0 -448
  224. package/dist/ui/assets/wc-attach-B62W7N_T.js +0 -13
  225. package/dist/ui/assets/wc-extension-C1CIBnT2.js +0 -2
  226. package/dist/ui/assets/wc-live-B3Dxlxlf.js +0 -253
  227. package/dist/ui/assets/wc-nav-DWMYNnDA.js +0 -2
  228. package/dist/ui/assets/wc-onboarding-DpKk5u_V.js +0 -2
  229. package/dist/ui/assets/wc-placeholder-CGPP_IEm.js +0 -4
  230. package/dist/ui/assets/wc-settings-DjqUSzpO.js +0 -24
  231. package/dist/ui/assets/wc-sprinkles-B5_aCIM5.js +0 -2
  232. package/dist/ui/assets/wc-tray-kVPhrwG1.js +0 -5
  233. package/dist/ui/assets/web-BMWiUYJ-.js +0 -1
  234. package/dist/ui/assets/whisper-session-D89gZWHf.js +0 -2
  235. package/dist/ui/assets/writable-vfs-client-DMYsajEE.js +0 -1
@@ -1 +1 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import{n as t,t as n}from"./panel-rpc-DqT2FG7c.js";import{c as r}from"./main-D-3iO2Pb.js";import{t as i}from"./sprinkle-bridge-DrAUCEC_.js";import{t as a}from"./sprinkle-renderer-GiRRbdBx.js";var o=[`/shared/sprinkles`],s=new Set([`welcome`,`connect-llm`]);async function c(e){let t=new Map;for(let n of o)await e.exists(n)&&await l(e,n,t);return await l(e,`/`,t),t}async function l(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=u(r);if(!s.has(t)&&!n.has(t)){let i;try{i=await e.readFile(r,{encoding:`utf-8`})??``}catch{i=``}n.set(t,{name:t,path:r,title:d(i,t),autoOpen:f(i),icon:p(i)})}}}function u(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function d(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function f(e){return/data-sprinkle-autoopen\b/.test(e)}function p(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=m(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=h(i,`href`);if(a!==void 0)return a.trim()}let r=h(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function m(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function h(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var g=e(`sprinkle-manager`),_=`slicc-open-sprinkles`,v=`sprinkles`;function y(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(v);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function b(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(v):t.searchParams.set(v,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var x=`slicc-known-sprinkles`;function S(e){try{let t=new Set(e),n=C().filter(e=>t.has(e));localStorage.setItem(x,JSON.stringify(n))}catch{}}function C(){try{let e=localStorage.getItem(x);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}var w=`slicc-autoopened-once`,T=[`/workspace`,`/shared`,`/scoops`],E=250,D=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,r,a,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,r=t(),i=n();if(!r&&!i)throw Error(`Screen capture unavailable in this environment`);if(r&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let a,o,s;if(r){let t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),o=n.videoWidth,s=n.videoHeight;let r=document.createElement(`canvas`);r.width=o,r.height=s;let i=r.getContext(`2d`);if(!i)throw Error(`Failed to get canvas context`);i.drawImage(n,0,0,o,s),a=await(await new Promise((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await i.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:5*6e4});a=t.bytes,o=t.width,s=t.height}let c=new Uint8Array(a),l=[],u=8192;for(let e=0;e<c.length;e+=u)l.push(String.fromCharCode(...c.subarray(e,e+u)));return{base64:btoa(l.join(``)),width:o,height:s,mimeType:e}};this.bridge=new i(e,r,e=>this.close(e),e=>this.minimize(e),o,s.onAttachImage??(()=>{}),c,s.execHandler,(e,t,n)=>{this.openSprinkles.get(e)?.renderer.pushDeviceEvent(t,n)}),this.callbacks=a,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&g.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=y();if(e!==null){await this.reopenInBackground(e);return}let t=localStorage.getItem(_);t?await this.restoreFromLegacyStorage(t):await this.autoOpenFirstRun()}catch{}await this.surfaceUnseenSprinkles()}async reopenInBackground(e){for(let t of e)try{await this.open(t,void 0,{background:!0})}catch{g.warn(`Failed to restore sprinkle`,{name:t})}}async restoreFromLegacyStorage(e){try{await this.reopenInBackground(JSON.parse(e))}finally{try{localStorage.removeItem(_)}catch{}}}async autoOpenFirstRun(){let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(!(!r.autoOpen||t.has(r.name)))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{g.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:i.autoOpen?n:!0}),i.autoOpen&&r.add(i.name),g.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{g.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){return new Set(C())}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(x,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(w);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(w,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(_,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,b([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<E))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name))if(i=!0,a.autoOpen){if(n.has(a.name)){g.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),g.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{g.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),g.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{g.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await c(this.fs),g.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){g.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){g.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){g.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,t,n={}){if(this.openSprinkles.has(e)){g.info(`Sprinkle already open`,{name:e});return}let i=this.availableSprinkles.get(e);if(i||=(await this.refresh(),this.availableSprinkles.get(e)),!i)throw Error(`Sprinkle not found: ${e}`);let o=await this.fs.readFile(i.path,{encoding:`utf-8`});if(o==null)throw Error(`Failed to read sprinkle content: ${i.path} (file may be corrupted or missing)`);let s=typeof o==`string`?o:new TextDecoder(`utf-8`).decode(o),c=document.createElement(`div`);c.className=`sprinkle-panel`,c.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto;`,c.dataset.sprinkle=e,this.openSprinkles.set(e,{renderer:null,container:c}),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,i.title,c,t,{...n,icon:i.icon});let l=new a(c,this.bridge.createAPI(e));await l.render(s,e),this.openSprinkles.get(e).renderer=l,this.persistOpenSprinkles(),r(e),g.info(`Sprinkle opened`,{name:e,title:i.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),g.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t){if(this.attentionOnly.has(e)){this.markActivated(e);return}if(!this.openSprinkles.has(e))try{await this.open(e,t)}catch(t){g.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),g.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),g.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}setupWatcher(e){let t=null,n=()=>{t||=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{g.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=T.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),n));this.watcherUnsub=()=>{for(let e of r)e();t&&=(clearTimeout(t),null)}}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t){let n=this.openSprinkles.get(e);if(!n){g.warn(`Cannot send to closed sprinkle`,{name:e});return}if(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),this.onSendToSprinkle)try{this.onSendToSprinkle(e,t)}catch(t){g.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}};export{D as SprinkleManager,S as pruneKnownSprinkleNames,C as readKnownSprinkleNames};
1
+ import{t as e}from"./logger-DDBAeTLF.js";import{n as t,t as n}from"./panel-rpc-DqT2FG7c.js";import{o as r}from"./main-CY_go8Ex.js";import{t as i}from"./sprinkle-bridge-Du2dCM8G.js";import{t as a}from"./sprinkle-renderer-GiRRbdBx.js";var o=[`/shared/sprinkles`],s=new Set([`welcome`,`connect-llm`]);async function c(e){let t=new Map;for(let n of o)await e.exists(n)&&await l(e,n,t);return await l(e,`/`,t),t}async function l(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=u(r);if(!s.has(t)&&!n.has(t)){let i;try{i=await e.readFile(r,{encoding:`utf-8`})??``}catch{i=``}n.set(t,{name:t,path:r,title:d(i,t),autoOpen:f(i),icon:p(i)})}}}function u(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function d(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function f(e){return/data-sprinkle-autoopen\b/.test(e)}function p(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=m(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=h(i,`href`);if(a!==void 0)return a.trim()}let r=h(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function m(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function h(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var g=e(`sprinkle-manager`),_=`slicc-open-sprinkles`,v=`sprinkles`;function y(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(v);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function b(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(v):t.searchParams.set(v,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var x=`slicc-known-sprinkles`;function S(e){try{let t=new Set(e),n=C().filter(e=>t.has(e));localStorage.setItem(x,JSON.stringify(n))}catch{}}function C(){try{let e=localStorage.getItem(x);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}var w=`slicc-autoopened-once`,T=[`/workspace`,`/shared`,`/scoops`],E=250,D=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,r,a,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,r=t(),i=n();if(!r&&!i)throw Error(`Screen capture unavailable in this environment`);if(r&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let a,o,s;if(r){let t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),o=n.videoWidth,s=n.videoHeight;let r=document.createElement(`canvas`);r.width=o,r.height=s;let i=r.getContext(`2d`);if(!i)throw Error(`Failed to get canvas context`);i.drawImage(n,0,0,o,s),a=await(await new Promise((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await i.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:5*6e4});a=t.bytes,o=t.width,s=t.height}let c=new Uint8Array(a),l=[],u=8192;for(let e=0;e<c.length;e+=u)l.push(String.fromCharCode(...c.subarray(e,e+u)));return{base64:btoa(l.join(``)),width:o,height:s,mimeType:e}};this.bridge=new i(e,r,e=>this.close(e),e=>this.minimize(e),o,s.onAttachImage??(()=>{}),c,s.execHandler,(e,t,n)=>{this.openSprinkles.get(e)?.renderer.pushDeviceEvent(t,n)}),this.callbacks=a,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&g.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=y();if(e!==null){await this.reopenInBackground(e);return}let t=localStorage.getItem(_);t?await this.restoreFromLegacyStorage(t):await this.autoOpenFirstRun()}catch{}await this.surfaceUnseenSprinkles()}async reopenInBackground(e){for(let t of e)try{await this.open(t,void 0,{background:!0})}catch{g.warn(`Failed to restore sprinkle`,{name:t})}}async restoreFromLegacyStorage(e){try{await this.reopenInBackground(JSON.parse(e))}finally{try{localStorage.removeItem(_)}catch{}}}async autoOpenFirstRun(){let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(!(!r.autoOpen||t.has(r.name)))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{g.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:i.autoOpen?n:!0}),i.autoOpen&&r.add(i.name),g.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{g.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){return new Set(C())}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(x,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(w);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(w,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(_,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,b([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<E))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name))if(i=!0,a.autoOpen){if(n.has(a.name)){g.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),g.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{g.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),g.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{g.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await c(this.fs),g.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){g.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){g.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){g.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,t,n={}){if(this.openSprinkles.has(e)){g.info(`Sprinkle already open`,{name:e});return}let i=this.availableSprinkles.get(e);if(i||=(await this.refresh(),this.availableSprinkles.get(e)),!i)throw Error(`Sprinkle not found: ${e}`);let o=await this.fs.readFile(i.path,{encoding:`utf-8`});if(o==null)throw Error(`Failed to read sprinkle content: ${i.path} (file may be corrupted or missing)`);let s=typeof o==`string`?o:new TextDecoder(`utf-8`).decode(o),c=document.createElement(`div`);c.className=`sprinkle-panel`,c.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto;`,c.dataset.sprinkle=e,this.openSprinkles.set(e,{renderer:null,container:c}),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,i.title,c,t,{...n,icon:i.icon});let l=new a(c,this.bridge.createAPI(e));await l.render(s,e),this.openSprinkles.get(e).renderer=l,this.persistOpenSprinkles(),r(e),g.info(`Sprinkle opened`,{name:e,title:i.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),g.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t){if(this.attentionOnly.has(e)){this.markActivated(e);return}if(!this.openSprinkles.has(e))try{await this.open(e,t)}catch(t){g.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),g.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),g.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}setupWatcher(e){let t=null,n=()=>{t||=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{g.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=T.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),n));this.watcherUnsub=()=>{for(let e of r)e();t&&=(clearTimeout(t),null)}}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t){let n=this.openSprinkles.get(e);if(!n){g.warn(`Cannot send to closed sprinkle`,{name:e});return}if(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),this.onSendToSprinkle)try{this.onSendToSprinkle(e,t)}catch(t){g.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}};export{D as SprinkleManager,S as pruneKnownSprinkleNames,C as readKnownSprinkleNames};
@@ -1,2 +1,2 @@
1
- import{t as e}from"./chunk-CMxvf4Kt.js";import{t}from"./__vite-browser-external-CM3Eme-n.js";var n=e(((e,n)=>{var r=void 0,i=function(e){return r||(r=new Promise(function(r,i){var a=e===void 0?{}:e,o=a.onAbort;a.onAbort=function(e){i(Error(e)),o&&o(e)},a.postRun=a.postRun||[],a.postRun.push(function(){r(a)}),n=void 0;var s;s||=a===void 0?{}:a;var c=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,u=globalThis.process?.versions?.node&&globalThis.process?.type!=`renderer`;s.onRuntimeInitialized=function(){function e(e,t){switch(typeof t){case`boolean`:O(e,+!!t);break;case`number`:ge(e,t);break;case`string`:T(e,t,-1,-1);break;case`object`:if(t===null)_e(e);else if(t.length!=null){var n=Ft(t.length);v.set(t,n),E(e,n,t.length,-1),Z(n)}else A(e,`Wrong API use : tried to return a value of an unknown type (`+t+`).`,-1);break;default:_e(e)}}function t(e,t){for(var n=[],r=0;r<e;r+=1){var i=D(t+4*r,`i32`),a=de(i);if(a===1||a===2)i=he(i);else if(a===3)i=pe(i);else if(a===4){a=i,i=fe(a),a=me(a);for(var o=new Uint8Array(i),s=0;s<i;s+=1)o[s]=v[a+s];i=o}else i=null;n.push(i)}return n}function n(e,t){this.Qa=e,this.db=t,this.Oa=1,this.lb=[]}function r(e,t){if(this.db=t,this.eb=kt(e),this.eb===null)throw Error(`Unable to allocate memory for the SQL string`);this.kb=this.eb,this.Za=this.qb=null}function i(e){if(this.filename=`dbfile_`+(4294967295*Math.random()>>>0),e!=null){var t=this.filename,n=`/`,r=t;if(n&&(n=typeof n==`string`?n:Ve(n),r=t?be(n+`/`+t):n),t=Me(!0,!0),r=nt(r,t),e){if(typeof e==`string`){n=Array(e.length);for(var i=0,o=e.length;i<o;++i)n[i]=e.charCodeAt(i);e=n}lt(r,t|146),n=G(r,577),mt(n,e,0,e.length,0),dt(n),lt(r,t)}}this.handleError(c(this.filename,a)),this.db=D(a,`i32`),ye(this.db),this.fb={},this.Sa={}}var a=Q(4),o=s.cwrap,c=o(`sqlite3_open`,`number`,[`string`,`number`]),l=o(`sqlite3_close_v2`,`number`,[`number`]),u=o(`sqlite3_exec`,`number`,[`number`,`string`,`number`,`number`,`number`]),ee=o(`sqlite3_changes`,`number`,[`number`]),te=o(`sqlite3_prepare_v2`,`number`,[`number`,`string`,`number`,`number`,`number`]),ne=o(`sqlite3_sql`,`string`,[`number`]),d=o(`sqlite3_normalized_sql`,`string`,[`number`]),f=o(`sqlite3_prepare_v2`,`number`,[`number`,`number`,`number`,`number`,`number`]),p=o(`sqlite3_bind_text`,`number`,[`number`,`number`,`number`,`number`,`number`]),m=o(`sqlite3_bind_blob`,`number`,[`number`,`number`,`number`,`number`,`number`]),re=o(`sqlite3_bind_double`,`number`,[`number`,`number`,`number`]),h=o(`sqlite3_bind_int`,`number`,[`number`,`number`,`number`]),g=o(`sqlite3_bind_parameter_index`,`number`,[`number`,`string`]),ie=o(`sqlite3_step`,`number`,[`number`]),ae=o(`sqlite3_errmsg`,`string`,[`number`]),_=o(`sqlite3_column_count`,`number`,[`number`]),y=o(`sqlite3_data_count`,`number`,[`number`]),b=o(`sqlite3_column_double`,`number`,[`number`,`number`]),x=o(`sqlite3_column_text`,`string`,[`number`,`number`]),S=o(`sqlite3_column_blob`,`number`,[`number`,`number`]),oe=o(`sqlite3_column_bytes`,`number`,[`number`,`number`]),se=o(`sqlite3_column_type`,`number`,[`number`,`number`]),C=o(`sqlite3_column_name`,`string`,[`number`,`number`]),ce=o(`sqlite3_reset`,`number`,[`number`]),w=o(`sqlite3_clear_bindings`,`number`,[`number`]),le=o(`sqlite3_finalize`,`number`,[`number`]),ue=o(`sqlite3_create_function_v2`,`number`,`number string number number number number number number number`.split(` `)),de=o(`sqlite3_value_type`,`number`,[`number`]),fe=o(`sqlite3_value_bytes`,`number`,[`number`]),pe=o(`sqlite3_value_text`,`string`,[`number`]),me=o(`sqlite3_value_blob`,`number`,[`number`]),he=o(`sqlite3_value_double`,`number`,[`number`]),ge=o(`sqlite3_result_double`,``,[`number`,`number`]),_e=o(`sqlite3_result_null`,``,[`number`]),T=o(`sqlite3_result_text`,``,[`number`,`string`,`number`,`number`]),E=o(`sqlite3_result_blob`,``,[`number`,`number`,`number`,`number`]),O=o(`sqlite3_result_int`,``,[`number`,`number`]),A=o(`sqlite3_result_error`,``,[`number`,`string`,`number`]),ve=o(`sqlite3_aggregate_context`,`number`,[`number`,`number`]),ye=o(`RegisterExtensionFunctions`,`number`,[`number`]),xe=o(`sqlite3_update_hook`,`number`,[`number`,`number`,`number`]);n.prototype.bind=function(e){if(!this.Qa)throw`Statement closed`;return this.reset(),Array.isArray(e)?this.Cb(e):typeof e==`object`&&e?this.Db(e):!0},n.prototype.step=function(){if(!this.Qa)throw`Statement closed`;this.Oa=1;var e=ie(this.Qa);switch(e){case 100:return!0;case 101:return!1;default:throw this.db.handleError(e)}},n.prototype.wb=function(e){return e??(e=this.Oa,this.Oa+=1),b(this.Qa,e)},n.prototype.Gb=function(e){if(e??(e=this.Oa,this.Oa+=1),e=x(this.Qa,e),typeof BigInt!=`function`)throw Error(`BigInt is not supported`);return BigInt(e)},n.prototype.Hb=function(e){return e??(e=this.Oa,this.Oa+=1),x(this.Qa,e)},n.prototype.getBlob=function(e){e??(e=this.Oa,this.Oa+=1);var t=oe(this.Qa,e);e=S(this.Qa,e);for(var n=new Uint8Array(t),r=0;r<t;r+=1)n[r]=v[e+r];return n},n.prototype.get=function(e,t){t||={},e!=null&&this.bind(e)&&this.step(),e=[];for(var n=y(this.Qa),r=0;r<n;r+=1)switch(se(this.Qa,r)){case 1:var i=t.useBigInt?this.Gb(r):this.wb(r);e.push(i);break;case 2:e.push(this.wb(r));break;case 3:e.push(this.Hb(r));break;case 4:e.push(this.getBlob(r));break;default:e.push(null)}return e},n.prototype.getColumnNames=function(){for(var e=[],t=_(this.Qa),n=0;n<t;n+=1)e.push(C(this.Qa,n));return e},n.prototype.getAsObject=function(e,t){e=this.get(e,t),t=this.getColumnNames();for(var n={},r=0;r<t.length;r+=1)n[t[r]]=e[r];return n},n.prototype.getSQL=function(){return ne(this.Qa)},n.prototype.getNormalizedSQL=function(){return d(this.Qa)},n.prototype.run=function(e){return e!=null&&this.bind(e),this.step(),this.reset()},n.prototype.tb=function(e,t){t??(t=this.Oa,this.Oa+=1),e=kt(e),this.lb.push(e),this.db.handleError(p(this.Qa,t,e,-1,0))},n.prototype.Bb=function(e,t){t??(t=this.Oa,this.Oa+=1);var n=Ft(e.length);v.set(e,n),this.lb.push(n),this.db.handleError(m(this.Qa,t,n,e.length,0))},n.prototype.sb=function(e,t){t??(t=this.Oa,this.Oa+=1),this.db.handleError((e===(e|0)?h:re)(this.Qa,t,e))},n.prototype.Eb=function(e){e??(e=this.Oa,this.Oa+=1),m(this.Qa,e,0,0,0)},n.prototype.ub=function(e,t){switch(t??(t=this.Oa,this.Oa+=1),typeof e){case`string`:this.tb(e,t);return;case`number`:this.sb(e,t);return;case`bigint`:this.tb(e.toString(),t);return;case`boolean`:this.sb(e+0,t);return;case`object`:if(e===null){this.Eb(t);return}if(e.length!=null){this.Bb(e,t);return}}throw`Wrong API use : tried to bind a value of an unknown type (`+e+`).`},n.prototype.Db=function(e){var t=this;return Object.keys(e).forEach(function(n){var r=g(t.Qa,n);r!==0&&t.ub(e[n],r)}),!0},n.prototype.Cb=function(e){for(var t=0;t<e.length;t+=1)this.ub(e[t],t+1);return!0},n.prototype.reset=function(){return this.freemem(),w(this.Qa)===0&&ce(this.Qa)===0},n.prototype.freemem=function(){for(var e;(e=this.lb.pop())!==void 0;)Z(e)},n.prototype.free=function(){this.freemem();var e=le(this.Qa)===0;return delete this.db.fb[this.Qa],this.Qa=0,e},r.prototype.next=function(){if(this.eb===null)return{done:!0};if(this.Za!==null&&(this.Za.free(),this.Za=null),!this.db.db)throw this.nb(),Error(`Database closed`);var e=zt(),t=Q(4);k(a),k(t);try{this.db.handleError(f(this.db.db,this.kb,-1,a,t)),this.kb=D(t,`i32`);var r=D(a,`i32`);return r===0?(this.nb(),{done:!0}):(this.Za=new n(r,this.db),this.db.fb[r]=this.Za,{value:this.Za,done:!1})}catch(e){throw this.qb=j(this.kb),this.nb(),e}finally{Rt(e)}},r.prototype.nb=function(){Z(this.eb),this.eb=null},r.prototype.getRemainingSQL=function(){return this.qb===null?j(this.kb):this.qb},typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`&&(r.prototype[Symbol.iterator]=function(){return this}),i.prototype.run=function(e,t){if(!this.db)throw`Database closed`;if(t){e=this.prepare(e,t);try{e.step()}finally{e.free()}}else this.handleError(u(this.db,e,0,0,a));return this},i.prototype.exec=function(e,t,r){if(!this.db)throw`Database closed`;var i=null,o=null,s=null;try{s=o=kt(e);var c=Q(4);for(e=[];D(s,`i8`)!==0;){k(a),k(c),this.handleError(f(this.db,s,-1,a,c));var l=D(a,`i32`);if(s=D(c,`i32`),l!==0){var u=null;for(i=new n(l,this),t!=null&&i.bind(t);i.step();)u===null&&(u={columns:i.getColumnNames(),values:[]},e.push(u)),u.values.push(i.get(null,r));i.free()}}return e}catch(e){throw i&&i.free(),e}finally{o&&Z(o)}},i.prototype.each=function(e,t,n,r,i){typeof t==`function`&&(r=n,n=t,t=void 0),e=this.prepare(e,t);try{for(;e.step();)n(e.getAsObject(null,i))}finally{e.free()}if(typeof r==`function`)return r()},i.prototype.prepare=function(e,t){if(k(a),this.handleError(te(this.db,e,-1,a,0)),e=D(a,`i32`),e===0)throw`Nothing to prepare`;var r=new n(e,this);return t!=null&&r.bind(t),this.fb[e]=r},i.prototype.iterateStatements=function(e){return new r(e,this)},i.prototype.export=function(){Object.values(this.fb).forEach(function(e){e.free()}),Object.values(this.Sa).forEach(X),this.Sa={},this.handleError(l(this.db));var e=ht(this.filename);return this.handleError(c(this.filename,a)),this.db=D(a,`i32`),ye(this.db),e},i.prototype.close=function(){this.db!==null&&(Object.values(this.fb).forEach(function(e){e.free()}),Object.values(this.Sa).forEach(X),this.Sa={},this.Ya&&=(X(this.Ya),void 0),this.handleError(l(this.db)),ot(`/`+this.filename),this.db=null)},i.prototype.handleError=function(e){if(e===0)return null;throw e=ae(this.db),Error(e)},i.prototype.getRowsModified=function(){return ee(this.db)},i.prototype.create_function=function(n,r){Object.prototype.hasOwnProperty.call(this.Sa,n)&&(X(this.Sa[n]),delete this.Sa[n]);var i=Pt(function(n,i,a){i=t(i,a);try{var o=r.apply(null,i)}catch(e){A(n,e,-1);return}e(n,o)},`viii`);return this.Sa[n]=i,this.handleError(ue(this.db,n,r.length,1,0,i,0,0,0)),this},i.prototype.create_aggregate=function(n,r){var i=r.init||function(){return null},a=r.finalize||function(e){return e},o=r.step;if(!o)throw`An aggregate function must have a step function in `+n;var s={};Object.hasOwnProperty.call(this.Sa,n)&&(X(this.Sa[n]),delete this.Sa[n]),r=n+`__finalize`,Object.hasOwnProperty.call(this.Sa,r)&&(X(this.Sa[r]),delete this.Sa[r]);var c=Pt(function(e,n,r){var a=ve(e,1);Object.hasOwnProperty.call(s,a)||(s[a]=i()),n=t(n,r),n=[s[a]].concat(n);try{s[a]=o.apply(null,n)}catch(t){delete s[a],A(e,t,-1)}},`viii`),l=Pt(function(t){var n=ve(t,1);try{var r=a(s[n])}catch(e){delete s[n],A(t,e,-1);return}e(t,r),delete s[n]},`vi`);return this.Sa[n]=c,this.Sa[r]=l,this.handleError(ue(this.db,n,o.length-1,1,0,0,c,l,0)),this},i.prototype.updateHook=function(e){return this.Ya&&=(xe(this.db,0,0),X(this.Ya),void 0),e?(this.Ya=Pt(function(t,n,r,i,a){switch(n){case 18:t=`insert`;break;case 23:t=`update`;break;case 9:t=`delete`;break;default:throw`unknown operationCode in updateHook callback: `+n}if(r=j(r),i=j(i),a>2**53-1)throw`rowId too big to fit inside a Number`;e(t,r,i,Number(a))},`viiiij`),xe(this.db,this.Ya,0),this):this},s.Database=i};var ee=`./this.program`,te=(e,t)=>{throw t},ne=globalThis.document?.currentScript?.src;typeof __filename<`u`?ne=__filename:l&&(ne=self.location.href);var d=``,f,p;if(u){var m=t();d=__dirname+`/`,p=e=>(e=_(e)?new URL(e):e,m.readFileSync(e)),f=async e=>(e=_(e)?new URL(e):e,m.readFileSync(e,void 0)),1<process.argv.length&&(ee=process.argv[1].replace(/\\/g,`/`)),process.argv.slice(2),n!==void 0&&(n.exports=s),te=(e,t)=>{throw process.exitCode=e,t}}else if(c||l){try{d=new URL(`.`,ne).href}catch{}l&&(p=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),f=async e=>{if(_(e))return new Promise((t,n)=>{var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{r.status==200||r.status==0&&r.response?t(r.response):n(r.status)},r.onerror=n,r.send(null)});var t=await fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)}}var re=console.log.bind(console),h=console.error.bind(console),g,ie=!1,ae,_=e=>e.startsWith(`file://`),v,y,b,x,S,oe,se,C;function ce(){var e=Bt.buffer;v=new Int8Array(e),b=new Int16Array(e),y=new Uint8Array(e),new Uint16Array(e),x=new Int32Array(e),S=new Uint32Array(e),oe=new Float32Array(e),se=new Float64Array(e),C=new BigInt64Array(e),new BigUint64Array(e)}function w(e){throw s.onAbort?.(e),e=`Aborted(`+e+`)`,h(e),ie=!0,new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`)}var le;async function ue(e){if(!g)try{var t=await f(e);return new Uint8Array(t)}catch{}if(e==le&&g)e=new Uint8Array(g);else if(p)e=p(e);else throw`both async and sync fetching of the wasm failed`;return e}async function de(e,t){try{var n=await ue(e);return await WebAssembly.instantiate(n,t)}catch(e){h(`failed to asynchronously prepare wasm: ${e}`),w(e)}}async function fe(e){var t=le;if(!g&&!_(t)&&!u)try{var n=fetch(t,{credentials:`same-origin`});return await WebAssembly.instantiateStreaming(n,e)}catch(e){h(`wasm streaming compile failed: ${e}`),h(`falling back to ArrayBuffer instantiation`)}return de(t,e)}class pe{name=`ExitStatus`;constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var me=e=>{for(;0<e.length;)e.shift()(s)},he=[],ge=[],_e=()=>{var e=s.preRun.shift();ge.push(e)},T=0,E=null;function D(e,t=`i8`){switch(t.endsWith(`*`)&&(t=`*`),t){case`i1`:return v[e];case`i8`:return v[e];case`i16`:return b[e>>1];case`i32`:return x[e>>2];case`i64`:return C[e>>3];case`float`:return oe[e>>2];case`double`:return se[e>>3];case`*`:return S[e>>2];default:w(`invalid type for getValue: ${t}`)}}var O=!0;function k(e){var t=`i32`;switch(t.endsWith(`*`)&&(t=`*`),t){case`i1`:v[e]=0;break;case`i8`:v[e]=0;break;case`i16`:b[e>>1]=0;break;case`i32`:x[e>>2]=0;break;case`i64`:C[e>>3]=BigInt(0);break;case`float`:oe[e>>2]=0;break;case`double`:se[e>>3]=0;break;case`*`:S[e>>2]=0;break;default:w(`invalid type for setValue: ${t}`)}}var A=new TextDecoder,ve=(e,t,n,r)=>{if(n=t+n,r)return n;for(;e[t]&&!(t>=n);)++t;return t},j=(e,t,n)=>e?A.decode(y.subarray(e,ve(y,e,t,n))):``,ye=(e,t)=>{for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},be=e=>{var t=e.charAt(0)===`/`,n=e.slice(-1)===`/`;return(e=ye(e.split(`/`).filter(e=>!!e),!t).join(`/`))||t||(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},xe=e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],!e&&!t?`.`:(t&&=t.slice(0,-1),e+t)},Se=e=>e&&e.match(/([^\/]+|\/)\/*$/)[1],Ce=()=>{if(u){var e=t();return t=>e.randomFillSync(t)}return e=>crypto.getRandomValues(e)},we=e=>{(we=Ce())(e)},Te=(...e)=>{for(var t=``,n=!1,r=e.length-1;-1<=r&&!n;r--){if(n=0<=r?e[r]:`/`,typeof n!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!n)return``;t=n+`/`+t,n=n.charAt(0)===`/`}return t=ye(t.split(`/`).filter(e=>!!e),!n).join(`/`),(n?`/`:``)+t||`.`},M=e=>{var t=ve(e,0);return A.decode(e.buffer?e.subarray(0,t):new Uint8Array(e.slice(0,t)))},Ee=[],N=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);127>=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},P=(e,t,n,r)=>{if(!(0<r))return 0;var i=n;r=n+r-1;for(var a=0;a<e.length;++a){var o=e.codePointAt(a);if(127>=o){if(n>=r)break;t[n++]=o}else if(2047>=o){if(n+1>=r)break;t[n++]=192|o>>6,t[n++]=128|o&63}else if(65535>=o){if(n+2>=r)break;t[n++]=224|o>>12,t[n++]=128|o>>6&63,t[n++]=128|o&63}else{if(n+3>=r)break;t[n++]=240|o>>18,t[n++]=128|o>>12&63,t[n++]=128|o>>6&63,t[n++]=128|o&63,a++}}return t[n]=0,n-i},De=[];function Oe(e,t){De[e]={input:[],output:[],cb:t},$e(e,ke)}var ke={open(e){var t=De[e.node.rdev];if(!t)throw new R(43);e.tty=t,e.seekable=!1},close(e){e.tty.cb.fsync(e.tty)},fsync(e){e.tty.cb.fsync(e.tty)},read(e,t,n,r){if(!e.tty||!e.tty.cb.xb)throw new R(60);for(var i=0,a=0;a<r;a++){try{var o=e.tty.cb.xb(e.tty)}catch{throw new R(29)}if(o===void 0&&i===0)throw new R(6);if(o==null)break;i++,t[n+a]=o}return i&&(e.node.atime=Date.now()),i},write(e,t,n,r){if(!e.tty||!e.tty.cb.rb)throw new R(60);try{for(var i=0;i<r;i++)e.tty.cb.rb(e.tty,t[n+i])}catch{throw new R(29)}return r&&(e.node.mtime=e.node.ctime=Date.now()),i}},Ae={xb(){a:{if(!Ee.length){var e=null;if(u){var t=Buffer.alloc(256),n=0,r=process.stdin.fd;try{n=m.readSync(r,t,0,256)}catch(e){if(e.toString().includes(`EOF`))n=0;else throw e}0<n&&(e=t.slice(0,n).toString(`utf-8`))}else globalThis.window?.prompt&&(e=window.prompt(`Input: `),e!==null&&(e+=`
1
+ import{t as e}from"./chunk-aKtaBQYM.js";import{t}from"./__vite-browser-external-C7iut881.js";var n=e(((e,n)=>{var r=void 0,i=function(e){return r||(r=new Promise(function(r,i){var a=e===void 0?{}:e,o=a.onAbort;a.onAbort=function(e){i(Error(e)),o&&o(e)},a.postRun=a.postRun||[],a.postRun.push(function(){r(a)}),n=void 0;var s;s||=a===void 0?{}:a;var c=!!globalThis.window,l=!!globalThis.WorkerGlobalScope,u=globalThis.process?.versions?.node&&globalThis.process?.type!=`renderer`;s.onRuntimeInitialized=function(){function e(e,t){switch(typeof t){case`boolean`:O(e,+!!t);break;case`number`:ge(e,t);break;case`string`:T(e,t,-1,-1);break;case`object`:if(t===null)_e(e);else if(t.length!=null){var n=Ft(t.length);v.set(t,n),E(e,n,t.length,-1),Z(n)}else A(e,`Wrong API use : tried to return a value of an unknown type (`+t+`).`,-1);break;default:_e(e)}}function t(e,t){for(var n=[],r=0;r<e;r+=1){var i=D(t+4*r,`i32`),a=de(i);if(a===1||a===2)i=he(i);else if(a===3)i=pe(i);else if(a===4){a=i,i=fe(a),a=me(a);for(var o=new Uint8Array(i),s=0;s<i;s+=1)o[s]=v[a+s];i=o}else i=null;n.push(i)}return n}function n(e,t){this.Qa=e,this.db=t,this.Oa=1,this.lb=[]}function r(e,t){if(this.db=t,this.eb=kt(e),this.eb===null)throw Error(`Unable to allocate memory for the SQL string`);this.kb=this.eb,this.Za=this.qb=null}function i(e){if(this.filename=`dbfile_`+(4294967295*Math.random()>>>0),e!=null){var t=this.filename,n=`/`,r=t;if(n&&(n=typeof n==`string`?n:Ve(n),r=t?be(n+`/`+t):n),t=Me(!0,!0),r=nt(r,t),e){if(typeof e==`string`){n=Array(e.length);for(var i=0,o=e.length;i<o;++i)n[i]=e.charCodeAt(i);e=n}lt(r,t|146),n=G(r,577),mt(n,e,0,e.length,0),dt(n),lt(r,t)}}this.handleError(c(this.filename,a)),this.db=D(a,`i32`),ye(this.db),this.fb={},this.Sa={}}var a=Q(4),o=s.cwrap,c=o(`sqlite3_open`,`number`,[`string`,`number`]),l=o(`sqlite3_close_v2`,`number`,[`number`]),u=o(`sqlite3_exec`,`number`,[`number`,`string`,`number`,`number`,`number`]),ee=o(`sqlite3_changes`,`number`,[`number`]),te=o(`sqlite3_prepare_v2`,`number`,[`number`,`string`,`number`,`number`,`number`]),ne=o(`sqlite3_sql`,`string`,[`number`]),d=o(`sqlite3_normalized_sql`,`string`,[`number`]),f=o(`sqlite3_prepare_v2`,`number`,[`number`,`number`,`number`,`number`,`number`]),p=o(`sqlite3_bind_text`,`number`,[`number`,`number`,`number`,`number`,`number`]),m=o(`sqlite3_bind_blob`,`number`,[`number`,`number`,`number`,`number`,`number`]),re=o(`sqlite3_bind_double`,`number`,[`number`,`number`,`number`]),h=o(`sqlite3_bind_int`,`number`,[`number`,`number`,`number`]),g=o(`sqlite3_bind_parameter_index`,`number`,[`number`,`string`]),ie=o(`sqlite3_step`,`number`,[`number`]),ae=o(`sqlite3_errmsg`,`string`,[`number`]),_=o(`sqlite3_column_count`,`number`,[`number`]),y=o(`sqlite3_data_count`,`number`,[`number`]),b=o(`sqlite3_column_double`,`number`,[`number`,`number`]),x=o(`sqlite3_column_text`,`string`,[`number`,`number`]),S=o(`sqlite3_column_blob`,`number`,[`number`,`number`]),oe=o(`sqlite3_column_bytes`,`number`,[`number`,`number`]),se=o(`sqlite3_column_type`,`number`,[`number`,`number`]),C=o(`sqlite3_column_name`,`string`,[`number`,`number`]),ce=o(`sqlite3_reset`,`number`,[`number`]),w=o(`sqlite3_clear_bindings`,`number`,[`number`]),le=o(`sqlite3_finalize`,`number`,[`number`]),ue=o(`sqlite3_create_function_v2`,`number`,`number string number number number number number number number`.split(` `)),de=o(`sqlite3_value_type`,`number`,[`number`]),fe=o(`sqlite3_value_bytes`,`number`,[`number`]),pe=o(`sqlite3_value_text`,`string`,[`number`]),me=o(`sqlite3_value_blob`,`number`,[`number`]),he=o(`sqlite3_value_double`,`number`,[`number`]),ge=o(`sqlite3_result_double`,``,[`number`,`number`]),_e=o(`sqlite3_result_null`,``,[`number`]),T=o(`sqlite3_result_text`,``,[`number`,`string`,`number`,`number`]),E=o(`sqlite3_result_blob`,``,[`number`,`number`,`number`,`number`]),O=o(`sqlite3_result_int`,``,[`number`,`number`]),A=o(`sqlite3_result_error`,``,[`number`,`string`,`number`]),ve=o(`sqlite3_aggregate_context`,`number`,[`number`,`number`]),ye=o(`RegisterExtensionFunctions`,`number`,[`number`]),xe=o(`sqlite3_update_hook`,`number`,[`number`,`number`,`number`]);n.prototype.bind=function(e){if(!this.Qa)throw`Statement closed`;return this.reset(),Array.isArray(e)?this.Cb(e):typeof e==`object`&&e?this.Db(e):!0},n.prototype.step=function(){if(!this.Qa)throw`Statement closed`;this.Oa=1;var e=ie(this.Qa);switch(e){case 100:return!0;case 101:return!1;default:throw this.db.handleError(e)}},n.prototype.wb=function(e){return e??(e=this.Oa,this.Oa+=1),b(this.Qa,e)},n.prototype.Gb=function(e){if(e??(e=this.Oa,this.Oa+=1),e=x(this.Qa,e),typeof BigInt!=`function`)throw Error(`BigInt is not supported`);return BigInt(e)},n.prototype.Hb=function(e){return e??(e=this.Oa,this.Oa+=1),x(this.Qa,e)},n.prototype.getBlob=function(e){e??(e=this.Oa,this.Oa+=1);var t=oe(this.Qa,e);e=S(this.Qa,e);for(var n=new Uint8Array(t),r=0;r<t;r+=1)n[r]=v[e+r];return n},n.prototype.get=function(e,t){t||={},e!=null&&this.bind(e)&&this.step(),e=[];for(var n=y(this.Qa),r=0;r<n;r+=1)switch(se(this.Qa,r)){case 1:var i=t.useBigInt?this.Gb(r):this.wb(r);e.push(i);break;case 2:e.push(this.wb(r));break;case 3:e.push(this.Hb(r));break;case 4:e.push(this.getBlob(r));break;default:e.push(null)}return e},n.prototype.getColumnNames=function(){for(var e=[],t=_(this.Qa),n=0;n<t;n+=1)e.push(C(this.Qa,n));return e},n.prototype.getAsObject=function(e,t){e=this.get(e,t),t=this.getColumnNames();for(var n={},r=0;r<t.length;r+=1)n[t[r]]=e[r];return n},n.prototype.getSQL=function(){return ne(this.Qa)},n.prototype.getNormalizedSQL=function(){return d(this.Qa)},n.prototype.run=function(e){return e!=null&&this.bind(e),this.step(),this.reset()},n.prototype.tb=function(e,t){t??(t=this.Oa,this.Oa+=1),e=kt(e),this.lb.push(e),this.db.handleError(p(this.Qa,t,e,-1,0))},n.prototype.Bb=function(e,t){t??(t=this.Oa,this.Oa+=1);var n=Ft(e.length);v.set(e,n),this.lb.push(n),this.db.handleError(m(this.Qa,t,n,e.length,0))},n.prototype.sb=function(e,t){t??(t=this.Oa,this.Oa+=1),this.db.handleError((e===(e|0)?h:re)(this.Qa,t,e))},n.prototype.Eb=function(e){e??(e=this.Oa,this.Oa+=1),m(this.Qa,e,0,0,0)},n.prototype.ub=function(e,t){switch(t??(t=this.Oa,this.Oa+=1),typeof e){case`string`:this.tb(e,t);return;case`number`:this.sb(e,t);return;case`bigint`:this.tb(e.toString(),t);return;case`boolean`:this.sb(e+0,t);return;case`object`:if(e===null){this.Eb(t);return}if(e.length!=null){this.Bb(e,t);return}}throw`Wrong API use : tried to bind a value of an unknown type (`+e+`).`},n.prototype.Db=function(e){var t=this;return Object.keys(e).forEach(function(n){var r=g(t.Qa,n);r!==0&&t.ub(e[n],r)}),!0},n.prototype.Cb=function(e){for(var t=0;t<e.length;t+=1)this.ub(e[t],t+1);return!0},n.prototype.reset=function(){return this.freemem(),w(this.Qa)===0&&ce(this.Qa)===0},n.prototype.freemem=function(){for(var e;(e=this.lb.pop())!==void 0;)Z(e)},n.prototype.free=function(){this.freemem();var e=le(this.Qa)===0;return delete this.db.fb[this.Qa],this.Qa=0,e},r.prototype.next=function(){if(this.eb===null)return{done:!0};if(this.Za!==null&&(this.Za.free(),this.Za=null),!this.db.db)throw this.nb(),Error(`Database closed`);var e=zt(),t=Q(4);k(a),k(t);try{this.db.handleError(f(this.db.db,this.kb,-1,a,t)),this.kb=D(t,`i32`);var r=D(a,`i32`);return r===0?(this.nb(),{done:!0}):(this.Za=new n(r,this.db),this.db.fb[r]=this.Za,{value:this.Za,done:!1})}catch(e){throw this.qb=j(this.kb),this.nb(),e}finally{Rt(e)}},r.prototype.nb=function(){Z(this.eb),this.eb=null},r.prototype.getRemainingSQL=function(){return this.qb===null?j(this.kb):this.qb},typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`&&(r.prototype[Symbol.iterator]=function(){return this}),i.prototype.run=function(e,t){if(!this.db)throw`Database closed`;if(t){e=this.prepare(e,t);try{e.step()}finally{e.free()}}else this.handleError(u(this.db,e,0,0,a));return this},i.prototype.exec=function(e,t,r){if(!this.db)throw`Database closed`;var i=null,o=null,s=null;try{s=o=kt(e);var c=Q(4);for(e=[];D(s,`i8`)!==0;){k(a),k(c),this.handleError(f(this.db,s,-1,a,c));var l=D(a,`i32`);if(s=D(c,`i32`),l!==0){var u=null;for(i=new n(l,this),t!=null&&i.bind(t);i.step();)u===null&&(u={columns:i.getColumnNames(),values:[]},e.push(u)),u.values.push(i.get(null,r));i.free()}}return e}catch(e){throw i&&i.free(),e}finally{o&&Z(o)}},i.prototype.each=function(e,t,n,r,i){typeof t==`function`&&(r=n,n=t,t=void 0),e=this.prepare(e,t);try{for(;e.step();)n(e.getAsObject(null,i))}finally{e.free()}if(typeof r==`function`)return r()},i.prototype.prepare=function(e,t){if(k(a),this.handleError(te(this.db,e,-1,a,0)),e=D(a,`i32`),e===0)throw`Nothing to prepare`;var r=new n(e,this);return t!=null&&r.bind(t),this.fb[e]=r},i.prototype.iterateStatements=function(e){return new r(e,this)},i.prototype.export=function(){Object.values(this.fb).forEach(function(e){e.free()}),Object.values(this.Sa).forEach(X),this.Sa={},this.handleError(l(this.db));var e=ht(this.filename);return this.handleError(c(this.filename,a)),this.db=D(a,`i32`),ye(this.db),e},i.prototype.close=function(){this.db!==null&&(Object.values(this.fb).forEach(function(e){e.free()}),Object.values(this.Sa).forEach(X),this.Sa={},this.Ya&&=(X(this.Ya),void 0),this.handleError(l(this.db)),ot(`/`+this.filename),this.db=null)},i.prototype.handleError=function(e){if(e===0)return null;throw e=ae(this.db),Error(e)},i.prototype.getRowsModified=function(){return ee(this.db)},i.prototype.create_function=function(n,r){Object.prototype.hasOwnProperty.call(this.Sa,n)&&(X(this.Sa[n]),delete this.Sa[n]);var i=Pt(function(n,i,a){i=t(i,a);try{var o=r.apply(null,i)}catch(e){A(n,e,-1);return}e(n,o)},`viii`);return this.Sa[n]=i,this.handleError(ue(this.db,n,r.length,1,0,i,0,0,0)),this},i.prototype.create_aggregate=function(n,r){var i=r.init||function(){return null},a=r.finalize||function(e){return e},o=r.step;if(!o)throw`An aggregate function must have a step function in `+n;var s={};Object.hasOwnProperty.call(this.Sa,n)&&(X(this.Sa[n]),delete this.Sa[n]),r=n+`__finalize`,Object.hasOwnProperty.call(this.Sa,r)&&(X(this.Sa[r]),delete this.Sa[r]);var c=Pt(function(e,n,r){var a=ve(e,1);Object.hasOwnProperty.call(s,a)||(s[a]=i()),n=t(n,r),n=[s[a]].concat(n);try{s[a]=o.apply(null,n)}catch(t){delete s[a],A(e,t,-1)}},`viii`),l=Pt(function(t){var n=ve(t,1);try{var r=a(s[n])}catch(e){delete s[n],A(t,e,-1);return}e(t,r),delete s[n]},`vi`);return this.Sa[n]=c,this.Sa[r]=l,this.handleError(ue(this.db,n,o.length-1,1,0,0,c,l,0)),this},i.prototype.updateHook=function(e){return this.Ya&&=(xe(this.db,0,0),X(this.Ya),void 0),e?(this.Ya=Pt(function(t,n,r,i,a){switch(n){case 18:t=`insert`;break;case 23:t=`update`;break;case 9:t=`delete`;break;default:throw`unknown operationCode in updateHook callback: `+n}if(r=j(r),i=j(i),a>2**53-1)throw`rowId too big to fit inside a Number`;e(t,r,i,Number(a))},`viiiij`),xe(this.db,this.Ya,0),this):this},s.Database=i};var ee=`./this.program`,te=(e,t)=>{throw t},ne=globalThis.document?.currentScript?.src;typeof __filename<`u`?ne=__filename:l&&(ne=self.location.href);var d=``,f,p;if(u){var m=t();d=__dirname+`/`,p=e=>(e=_(e)?new URL(e):e,m.readFileSync(e)),f=async e=>(e=_(e)?new URL(e):e,m.readFileSync(e,void 0)),1<process.argv.length&&(ee=process.argv[1].replace(/\\/g,`/`)),process.argv.slice(2),n!==void 0&&(n.exports=s),te=(e,t)=>{throw process.exitCode=e,t}}else if(c||l){try{d=new URL(`.`,ne).href}catch{}l&&(p=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),f=async e=>{if(_(e))return new Promise((t,n)=>{var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{r.status==200||r.status==0&&r.response?t(r.response):n(r.status)},r.onerror=n,r.send(null)});var t=await fetch(e,{credentials:`same-origin`});if(t.ok)return t.arrayBuffer();throw Error(t.status+` : `+t.url)}}var re=console.log.bind(console),h=console.error.bind(console),g,ie=!1,ae,_=e=>e.startsWith(`file://`),v,y,b,x,S,oe,se,C;function ce(){var e=Bt.buffer;v=new Int8Array(e),b=new Int16Array(e),y=new Uint8Array(e),new Uint16Array(e),x=new Int32Array(e),S=new Uint32Array(e),oe=new Float32Array(e),se=new Float64Array(e),C=new BigInt64Array(e),new BigUint64Array(e)}function w(e){throw s.onAbort?.(e),e=`Aborted(`+e+`)`,h(e),ie=!0,new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`)}var le;async function ue(e){if(!g)try{var t=await f(e);return new Uint8Array(t)}catch{}if(e==le&&g)e=new Uint8Array(g);else if(p)e=p(e);else throw`both async and sync fetching of the wasm failed`;return e}async function de(e,t){try{var n=await ue(e);return await WebAssembly.instantiate(n,t)}catch(e){h(`failed to asynchronously prepare wasm: ${e}`),w(e)}}async function fe(e){var t=le;if(!g&&!_(t)&&!u)try{var n=fetch(t,{credentials:`same-origin`});return await WebAssembly.instantiateStreaming(n,e)}catch(e){h(`wasm streaming compile failed: ${e}`),h(`falling back to ArrayBuffer instantiation`)}return de(t,e)}class pe{name=`ExitStatus`;constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var me=e=>{for(;0<e.length;)e.shift()(s)},he=[],ge=[],_e=()=>{var e=s.preRun.shift();ge.push(e)},T=0,E=null;function D(e,t=`i8`){switch(t.endsWith(`*`)&&(t=`*`),t){case`i1`:return v[e];case`i8`:return v[e];case`i16`:return b[e>>1];case`i32`:return x[e>>2];case`i64`:return C[e>>3];case`float`:return oe[e>>2];case`double`:return se[e>>3];case`*`:return S[e>>2];default:w(`invalid type for getValue: ${t}`)}}var O=!0;function k(e){var t=`i32`;switch(t.endsWith(`*`)&&(t=`*`),t){case`i1`:v[e]=0;break;case`i8`:v[e]=0;break;case`i16`:b[e>>1]=0;break;case`i32`:x[e>>2]=0;break;case`i64`:C[e>>3]=BigInt(0);break;case`float`:oe[e>>2]=0;break;case`double`:se[e>>3]=0;break;case`*`:S[e>>2]=0;break;default:w(`invalid type for setValue: ${t}`)}}var A=new TextDecoder,ve=(e,t,n,r)=>{if(n=t+n,r)return n;for(;e[t]&&!(t>=n);)++t;return t},j=(e,t,n)=>e?A.decode(y.subarray(e,ve(y,e,t,n))):``,ye=(e,t)=>{for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},be=e=>{var t=e.charAt(0)===`/`,n=e.slice(-1)===`/`;return(e=ye(e.split(`/`).filter(e=>!!e),!t).join(`/`))||t||(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},xe=e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],!e&&!t?`.`:(t&&=t.slice(0,-1),e+t)},Se=e=>e&&e.match(/([^\/]+|\/)\/*$/)[1],Ce=()=>{if(u){var e=t();return t=>e.randomFillSync(t)}return e=>crypto.getRandomValues(e)},we=e=>{(we=Ce())(e)},Te=(...e)=>{for(var t=``,n=!1,r=e.length-1;-1<=r&&!n;r--){if(n=0<=r?e[r]:`/`,typeof n!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!n)return``;t=n+`/`+t,n=n.charAt(0)===`/`}return t=ye(t.split(`/`).filter(e=>!!e),!n).join(`/`),(n?`/`:``)+t||`.`},M=e=>{var t=ve(e,0);return A.decode(e.buffer?e.subarray(0,t):new Uint8Array(e.slice(0,t)))},Ee=[],N=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);127>=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},P=(e,t,n,r)=>{if(!(0<r))return 0;var i=n;r=n+r-1;for(var a=0;a<e.length;++a){var o=e.codePointAt(a);if(127>=o){if(n>=r)break;t[n++]=o}else if(2047>=o){if(n+1>=r)break;t[n++]=192|o>>6,t[n++]=128|o&63}else if(65535>=o){if(n+2>=r)break;t[n++]=224|o>>12,t[n++]=128|o>>6&63,t[n++]=128|o&63}else{if(n+3>=r)break;t[n++]=240|o>>18,t[n++]=128|o>>12&63,t[n++]=128|o>>6&63,t[n++]=128|o&63,a++}}return t[n]=0,n-i},De=[];function Oe(e,t){De[e]={input:[],output:[],cb:t},$e(e,ke)}var ke={open(e){var t=De[e.node.rdev];if(!t)throw new R(43);e.tty=t,e.seekable=!1},close(e){e.tty.cb.fsync(e.tty)},fsync(e){e.tty.cb.fsync(e.tty)},read(e,t,n,r){if(!e.tty||!e.tty.cb.xb)throw new R(60);for(var i=0,a=0;a<r;a++){try{var o=e.tty.cb.xb(e.tty)}catch{throw new R(29)}if(o===void 0&&i===0)throw new R(6);if(o==null)break;i++,t[n+a]=o}return i&&(e.node.atime=Date.now()),i},write(e,t,n,r){if(!e.tty||!e.tty.cb.rb)throw new R(60);try{for(var i=0;i<r;i++)e.tty.cb.rb(e.tty,t[n+i])}catch{throw new R(29)}return r&&(e.node.mtime=e.node.ctime=Date.now()),i}},Ae={xb(){a:{if(!Ee.length){var e=null;if(u){var t=Buffer.alloc(256),n=0,r=process.stdin.fd;try{n=m.readSync(r,t,0,256)}catch(e){if(e.toString().includes(`EOF`))n=0;else throw e}0<n&&(e=t.slice(0,n).toString(`utf-8`))}else globalThis.window?.prompt&&(e=window.prompt(`Input: `),e!==null&&(e+=`
2
2
  `));if(!e){e=null;break a}t=Array(N(e)+1),e=P(e,t,0,t.length),t.length=e,Ee=t}e=Ee.shift()}return e},rb(e,t){t===null||t===10?(re(M(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){0<e.output?.length&&(re(M(e.output)),e.output=[])},Tb(){return{Ob:25856,Qb:5,Nb:191,Pb:35387,Mb:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},Ub(){return 0},Vb(){return[24,80]}},je={rb(e,t){t===null||t===10?(h(M(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){0<e.output?.length&&(h(M(e.output)),e.output=[])}},F={Wa:null,Xa(){return F.createNode(null,`/`,16895,0)},createNode(e,t,n,r){if((n&61440)==24576||(n&61440)==4096)throw new R(63);return F.Wa||={dir:{node:{Ta:F.La.Ta,Ua:F.La.Ua,lookup:F.La.lookup,hb:F.La.hb,rename:F.La.rename,unlink:F.La.unlink,rmdir:F.La.rmdir,readdir:F.La.readdir,symlink:F.La.symlink},stream:{Va:F.Ma.Va}},file:{node:{Ta:F.La.Ta,Ua:F.La.Ua},stream:{Va:F.Ma.Va,read:F.Ma.read,write:F.Ma.write,ib:F.Ma.ib,jb:F.Ma.jb}},link:{node:{Ta:F.La.Ta,Ua:F.La.Ua,readlink:F.La.readlink},stream:{}},vb:{node:{Ta:F.La.Ta,Ua:F.La.Ua},stream:Qe}},n=We(e,t,n,r),V(n.mode)?(n.La=F.Wa.dir.node,n.Ma=F.Wa.dir.stream,n.Na={}):(n.mode&61440)==32768?(n.La=F.Wa.file.node,n.Ma=F.Wa.file.stream,n.Ra=0,n.Na=null):(n.mode&61440)==40960?(n.La=F.Wa.link.node,n.Ma=F.Wa.link.stream):(n.mode&61440)==8192&&(n.La=F.Wa.vb.node,n.Ma=F.Wa.vb.stream),n.atime=n.mtime=n.ctime=Date.now(),e&&(e.Na[t]=n,e.atime=e.mtime=e.ctime=n.atime),n},Sb(e){return e.Na?e.Na.subarray?e.Na.subarray(0,e.Ra):new Uint8Array(e.Na):new Uint8Array},La:{Ta(e){var t={};return t.dev=(e.mode&61440)==8192?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,V(e.mode)?t.size=4096:(e.mode&61440)==32768?t.size=e.Ra:(e.mode&61440)==40960?t.size=e.link.length:t.size=0,t.atime=new Date(e.atime),t.mtime=new Date(e.mtime),t.ctime=new Date(e.ctime),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},Ua(e,t){for(var n of[`mode`,`atime`,`mtime`,`ctime`])t[n]!=null&&(e[n]=t[n]);t.size!==void 0&&(t=t.size,e.Ra!=t&&(t==0?(e.Na=null,e.Ra=0):(n=e.Na,e.Na=new Uint8Array(t),n&&e.Na.set(n.subarray(0,Math.min(t,e.Ra))),e.Ra=t)))},lookup(){throw F.mb||(F.mb=new R(44),F.mb.stack=`<generic error, no stack>`),F.mb},hb(e,t,n,r){return F.createNode(e,t,n,r)},rename(e,t,n){try{var r=B(t,n)}catch{}if(r){if(V(e.mode))for(var i in r.Na)throw new R(55);Ue(r)}delete e.parent.Na[e.name],t.Na[n]=e,e.name=n,t.ctime=t.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,t){delete e.Na[t],e.ctime=e.mtime=Date.now()},rmdir(e,t){var n=B(e,t),r;for(r in n.Na)throw new R(55);delete e.Na[t],e.ctime=e.mtime=Date.now()},readdir(e){return[`.`,`..`,...Object.keys(e.Na)]},symlink(e,t,n){return e=F.createNode(e,t,41471,0),e.link=n,e},readlink(e){if((e.mode&61440)!=40960)throw new R(28);return e.link}},Ma:{read(e,t,n,r,i){var a=e.node.Na;if(i>=e.node.Ra)return 0;if(e=Math.min(e.node.Ra-i,r),8<e&&a.subarray)t.set(a.subarray(i,i+e),n);else for(r=0;r<e;r++)t[n+r]=a[i+r];return e},write(e,t,n,r,i,a){if(t.buffer===v.buffer&&(a=!1),!r)return 0;if(e=e.node,e.mtime=e.ctime=Date.now(),t.subarray&&(!e.Na||e.Na.subarray)){if(a)return e.Na=t.subarray(n,n+r),e.Ra=r;if(e.Ra===0&&i===0)return e.Na=t.slice(n,n+r),e.Ra=r;if(i+r<=e.Ra)return e.Na.set(t.subarray(n,n+r),i),r}a=i+r;var o=e.Na?e.Na.length:0;if(o>=a||(a=Math.max(a,o*(1048576>o?2:1.125)>>>0),o!=0&&(a=Math.max(a,256)),o=e.Na,e.Na=new Uint8Array(a),0<e.Ra&&e.Na.set(o.subarray(0,e.Ra),0)),e.Na.subarray&&t.subarray)e.Na.set(t.subarray(n,n+r),i);else for(a=0;a<r;a++)e.Na[i+a]=t[n+a];return e.Ra=Math.max(e.Ra,i+r),r},Va(e,t,n){if(n===1?t+=e.position:n===2&&(e.node.mode&61440)==32768&&(t+=e.node.Ra),0>t)throw new R(28);return t},ib(e,t,n,r,i){if((e.node.mode&61440)!=32768)throw new R(43);if(e=e.node.Na,i&2||!e||e.buffer!==v.buffer){i=!0,r=65536*Math.ceil(t/65536);var a=It(65536,r);if(a&&y.fill(0,a,a+r),r=a,!r)throw new R(48);e&&((0<n||n+t<e.length)&&(e=e.subarray?e.subarray(n,n+t):Array.prototype.slice.call(e,n,n+t)),v.set(e,r))}else i=!1,r=e.byteOffset;return{Kb:r,Ab:i}},jb(e,t,n,r){return F.Ma.write(e,t,0,r,n,!1),0}}},Me=(e,t)=>{var n=0;return e&&(n|=365),t&&(n|=146),n},Ne=null,Pe={},I=[],Fe=1,L=null,Ie=!1,Le=!0,Re={},R=class{name=`ErrnoError`;constructor(e){this.Pa=e}},ze=class{gb={};node=null;get flags(){return this.gb.flags}set flags(e){this.gb.flags=e}get position(){return this.gb.position}set position(e){this.gb.position=e}},Be=class{La={};Ma={};ab=null;constructor(e,t,n,r){e||=this,this.parent=e,this.Xa=e.Xa,this.id=Fe++,this.name=t,this.mode=n,this.rdev=r,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&365)==365}set read(e){e?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)==146}set write(e){e?this.mode|=146:this.mode&=-147}};function z(e,t={}){if(!e)throw new R(44);t.ob??=!0,e.charAt(0)===`/`||(e=`//`+e);var n=0;a:for(;40>n;n++){e=e.split(`/`).filter(e=>!!e);for(var r=Ne,i=`/`,a=0;a<e.length;a++){var o=a===e.length-1;if(o&&t.parent)break;if(e[a]!==`.`)if(e[a]===`..`)if(i=xe(i),r===r.parent){e=i+`/`+e.slice(a+1).join(`/`),n--;continue a}else r=r.parent;else{i=be(i+`/`+e[a]);try{r=B(r,e[a])}catch(e){if(e?.Pa===44&&o&&t.Jb)return{path:i};throw e}if(!r.ab||o&&!t.ob||(r=r.ab.root),(r.mode&61440)==40960&&(!o||t.$a)){if(!r.La.readlink)throw new R(52);r=r.La.readlink(r),r.charAt(0)===`/`||(r=xe(i)+`/`+r),e=r+`/`+e.slice(a+1).join(`/`);continue a}}}return{path:i,node:r}}throw new R(32)}function Ve(e){for(var t;;){if(e===e.parent)return e=e.Xa.zb,t?e[e.length-1]===`/`?e+t:`${e}/${t}`:e;t=t?`${e.name}/${t}`:e.name,e=e.parent}}function He(e,t){for(var n=0,r=0;r<t.length;r++)n=(n<<5)-n+t.charCodeAt(r)|0;return(e+n>>>0)%L.length}function Ue(e){var t=He(e.parent.id,e.name);if(L[t]===e)L[t]=e.bb;else for(t=L[t];t;){if(t.bb===e){t.bb=e.bb;break}t=t.bb}}function B(e,t){var n=V(e.mode)?(n=H(e,`x`))?n:e.La.lookup?0:2:54;if(n)throw new R(n);for(n=L[He(e.id,t)];n;n=n.bb){var r=n.name;if(n.parent.id===e.id&&r===t)return n}return e.La.lookup(e,t)}function We(e,t,n,r){return e=new Be(e,t,n,r),t=He(e.parent.id,e.name),e.bb=L[t],L[t]=e}function V(e){return(e&61440)==16384}function Ge(e){var t=[`r`,`w`,`rw`][e&3];return e&512&&(t+=`w`),t}function H(e,t){if(Le)return 0;if(!t.includes(`r`)||e.mode&292){if(t.includes(`w`)&&!(e.mode&146)||t.includes(`x`)&&!(e.mode&73))return 2}else return 2;return 0}function Ke(e,t){if(!V(e.mode))return 54;try{return B(e,t),20}catch{}return H(e,`wx`)}function qe(e,t,n){try{var r=B(e,t)}catch(e){return e.Pa}if(e=H(e,`wx`))return e;if(n){if(!V(r.mode))return 54;if(r===r.parent||Ve(r)===`/`)return 10}else if(V(r.mode))return 31;return 0}function Je(e){if(!e)throw new R(63);return e}function U(e){if(e=I[e],!e)throw new R(8);return e}function Ye(e,t=-1){if(e=Object.assign(new ze,e),t==-1)a:{for(t=0;4096>=t;t++)if(!I[t])break a;throw new R(33)}return e.fd=t,I[t]=e}function Xe(e,t=-1){return e=Ye(e,t),e.Ma?.Rb?.(e),e}function Ze(e,t,n){var r=e?.Ma.Ua;e=r?e:t,r??=t.La.Ua,Je(r),r(e,n)}var Qe={open(e){e.Ma=Pe[e.node.rdev].Ma,e.Ma.open?.(e)},Va(){throw new R(70)}};function $e(e,t){Pe[e]={Ma:t}}function et(e,t){var n=t===`/`;if(n&&Ne)throw new R(10);if(!n&&t){var r=z(t,{ob:!1});if(t=r.path,r=r.node,r.ab)throw new R(10);if(!V(r.mode))throw new R(54)}t={type:e,Wb:{},zb:t,Ib:[]},e=e.Xa(t),e.Xa=t,t.root=e,n?Ne=e:r&&(r.ab=t,r.Xa&&r.Xa.Ib.push(t))}function tt(e,t,n){var r=z(e,{parent:!0}).node;if(e=Se(e),!e)throw new R(28);if(e===`.`||e===`..`)throw new R(20);var i=Ke(r,e);if(i)throw new R(i);if(!r.La.hb)throw new R(63);return r.La.hb(r,e,t,n)}function nt(e,t=438){return tt(e,t&4095|32768,0)}function W(e,t=511){return tt(e,t&1023|16384,0)}function rt(e,t,n){n===void 0&&(n=t,t=438),tt(e,t|8192,n)}function it(e,t){if(!Te(e))throw new R(44);var n=z(t,{parent:!0}).node;if(!n)throw new R(44);t=Se(t);var r=Ke(n,t);if(r)throw new R(r);if(!n.La.symlink)throw new R(63);n.La.symlink(n,t,e)}function at(e){var t=z(e,{parent:!0}).node;e=Se(e);var n=B(t,e),r=qe(t,e,!0);if(r)throw new R(r);if(!t.La.rmdir)throw new R(63);if(n.ab)throw new R(10);t.La.rmdir(t,e),Ue(n)}function ot(e){var t=z(e,{parent:!0}).node;if(!t)throw new R(44);e=Se(e);var n=B(t,e),r=qe(t,e,!1);if(r)throw new R(r);if(!t.La.unlink)throw new R(63);if(n.ab)throw new R(10);t.La.unlink(t,e),Ue(n)}function st(e,t){return e=z(e,{$a:!t}).node,Je(e.La.Ta)(e)}function ct(e,t,n,r){Ze(e,t,{mode:n&4095|t.mode&-4096,ctime:Date.now(),Fb:r})}function lt(e,t){e=typeof e==`string`?z(e,{$a:!0}).node:e,ct(null,e,t)}function ut(e,t,n){if(V(t.mode))throw new R(31);if((t.mode&61440)!=32768)throw new R(28);var r=H(t,`w`);if(r)throw new R(r);Ze(e,t,{size:n,timestamp:Date.now()})}function G(e,t,n=438){if(e===``)throw new R(44);if(typeof t==`string`){var r={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[t];if(r===void 0)throw Error(`Unknown file open mode: ${t}`);t=r}if(n=t&64?n&4095|32768:0,typeof e==`object`)r=e;else{var i=e.endsWith(`/`);e=z(e,{$a:!(t&131072),Jb:!0}),r=e.node,e=e.path}var a=!1;if(t&64)if(r){if(t&128)throw new R(20)}else{if(i)throw new R(31);r=tt(e,n|511,0),a=!0}if(!r)throw new R(44);if((r.mode&61440)==8192&&(t&=-513),t&65536&&!V(r.mode))throw new R(54);if(!a&&(i=r?(r.mode&61440)==40960?32:V(r.mode)&&(Ge(t)!==`r`||t&576)?31:H(r,Ge(t)):44))throw new R(i);return t&512&&!a&&(i=r,i=typeof i==`string`?z(i,{$a:!0}).node:i,ut(null,i,0)),t&=-131713,i=Ye({node:r,path:Ve(r),flags:t,seekable:!0,position:0,Ma:r.Ma,Lb:[],error:!1}),i.Ma.open&&i.Ma.open(i),a&&lt(r,n&511),!s.logReadFiles||t&1||e in Re||(Re[e]=1),i}function dt(e){if(e.fd===null)throw new R(8);e.pb&&=null;try{e.Ma.close&&e.Ma.close(e)}catch(e){throw e}finally{I[e.fd]=null}e.fd=null}function ft(e,t,n){if(e.fd===null)throw new R(8);if(!e.seekable||!e.Ma.Va)throw new R(70);if(n!=0&&n!=1&&n!=2)throw new R(28);e.position=e.Ma.Va(e,t,n),e.Lb=[]}function pt(e,t,n,r,i){if(0>r||0>i)throw new R(28);if(e.fd===null||(e.flags&2097155)==1)throw new R(8);if(V(e.node.mode))throw new R(31);if(!e.Ma.read)throw new R(28);var a=i!==void 0;if(!a)i=e.position;else if(!e.seekable)throw new R(70);return t=e.Ma.read(e,t,n,r,i),a||(e.position+=t),t}function mt(e,t,n,r,i){if(0>r||0>i)throw new R(28);if(e.fd===null||!(e.flags&2097155))throw new R(8);if(V(e.node.mode))throw new R(31);if(!e.Ma.write)throw new R(28);e.seekable&&e.flags&1024&&ft(e,0,2);var a=i!==void 0;if(!a)i=e.position;else if(!e.seekable)throw new R(70);return t=e.Ma.write(e,t,n,r,i,void 0),a||(e.position+=t),t}function ht(e){var t=t||0,n=`binary`;n!==`utf8`&&n!==`binary`&&w(`Invalid encoding type "${n}"`),t=G(e,t),e=st(e).size;var r=new Uint8Array(e);return pt(t,r,0,e,0),n===`utf8`&&(r=M(r)),dt(t),r}function K(e,t,n){e=be(`/dev/`+e);var r=Me(!!t,!!n);K.yb??=64;var i=K.yb++<<8|0;$e(i,{open(e){e.seekable=!1},close(){n?.buffer?.length&&n(10)},read(e,n,r,i){for(var a=0,o=0;o<i;o++){try{var s=t()}catch{throw new R(29)}if(s===void 0&&a===0)throw new R(6);if(s==null)break;a++,n[r+o]=s}return a&&(e.node.atime=Date.now()),a},write(e,t,r,i){for(var a=0;a<i;a++)try{n(t[r+a])}catch{throw new R(29)}return i&&(e.node.mtime=e.node.ctime=Date.now()),a}}),rt(e,r,i)}var q={};function J(e,t,n){if(t.charAt(0)===`/`)return t;if(e=e===-100?`/`:U(e).path,t.length==0){if(!n)throw new R(44);return e}return e+`/`+t}function gt(e,t){S[e>>2]=t.dev,S[e+4>>2]=t.mode,S[e+8>>2]=t.nlink,S[e+12>>2]=t.uid,S[e+16>>2]=t.gid,S[e+20>>2]=t.rdev,C[e+24>>3]=BigInt(t.size),x[e+32>>2]=4096,x[e+36>>2]=t.blocks;var n=t.atime.getTime(),r=t.mtime.getTime(),i=t.ctime.getTime();return C[e+40>>3]=BigInt(Math.floor(n/1e3)),S[e+48>>2]=n%1e3*1e6,C[e+56>>3]=BigInt(Math.floor(r/1e3)),S[e+64>>2]=r%1e3*1e6,C[e+72>>3]=BigInt(Math.floor(i/1e3)),S[e+80>>2]=i%1e3*1e6,C[e+88>>3]=BigInt(t.ino),0}var _t=void 0,vt=()=>{var e=x[_t>>2];return _t+=4,e},yt=0,bt=[0,31,60,91,121,152,182,213,244,274,305,335],xt=[0,31,59,90,120,151,181,212,243,273,304,334],St={},Ct=e=>{ae=e,O||0<yt||(s.onExit?.(e),ie=!0),te(e,new pe(e))},wt=e=>{if(!ie)try{e()}catch(e){e instanceof pe||e==`unwind`||te(1,e)}finally{if(!(O||0<yt))try{ae=e=ae,Ct(e)}catch(e){e instanceof pe||e==`unwind`||te(1,e)}}},Tt={},Et=()=>{if(!Dt){var e={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(globalThis.navigator?.language??`C`).replace(`-`,`_`)+`.UTF-8`,_:ee||`./this.program`},t;for(t in Tt)Tt[t]===void 0?delete e[t]:e[t]=Tt[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);Dt=n}return Dt},Dt,Ot=(e,t,n,r)=>{var i={string:e=>{var t=0;if(e!=null&&e!==0){t=N(e)+1;var n=Q(t);P(e,y,n,t),t=n}return t},array:e=>{var t=Q(e.length);return v.set(e,t),t}};e=s[`_`+e];var a=[],o=0;if(r)for(var c=0;c<r.length;c++){var l=i[n[c]];l?(o===0&&(o=zt()),a[c]=l(r[c])):a[c]=r[c]}return n=e(...a),n=function(e){return o!==0&&Rt(o),t===`string`?j(e):t===`boolean`?!!e:e}(n)},kt=e=>{var t=N(e)+1,n=Ft(t);return n&&P(e,y,n,t),n},Y,At=[],X=e=>{Y.delete($.get(e)),$.set(e,null),At.push(e)},jt=e=>{let t=e.length;return[t%128|128,t>>7,...e]},Mt={i:127,p:127,j:126,f:125,d:124,e:111},Nt=e=>jt(Array.from(e,e=>Mt[e])),Pt=(e,t)=>{if(!Y){Y=new WeakMap;var n=$.length;if(Y)for(var r=0;r<0+n;r++){var i=$.get(r);i&&Y.set(i,r)}}if(n=Y.get(e)||0)return n;n=At.length?At.pop():$.grow(1);try{$.set(n,e)}catch(r){if(!(r instanceof TypeError))throw r;t=Uint8Array.of(0,97,115,109,1,0,0,0,1,...jt([1,96,...Nt(t.slice(1)),...Nt(t[0]===`v`?``:t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),t=new WebAssembly.Module(t),t=new WebAssembly.Instance(t,{e:{f:e}}).exports.f,$.set(n,t)}return Y.set(e,n),n};if(L=Array(4096),et(F,`/`),W(`/tmp`),W(`/home`),W(`/home/web_user`),(function(){W(`/dev`),$e(259,{read:()=>0,write:(e,t,n,r)=>r,Va:()=>0}),rt(`/dev/null`,259),Oe(1280,Ae),Oe(1536,je),rt(`/dev/tty`,1280),rt(`/dev/tty1`,1536);var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(we(e),t=e.byteLength),e[--t]);K(`random`,n),K(`urandom`,n),W(`/dev/shm`),W(`/dev/shm/tmp`)})(),(function(){W(`/proc`);var e=W(`/proc/self`);W(`/proc/self/fd`),et({Xa(){var t=We(e,`fd`,16895,73);return t.Ma={Va:F.Ma.Va},t.La={lookup(e,t){e=+t;var n=U(e);return e={parent:null,Xa:{zb:`fake`},La:{readlink:()=>n.path},id:e+1},e.parent=e},readdir(){return Array.from(I.entries()).filter(([,e])=>e).map(([e])=>e.toString())}},t}},`/proc/self/fd`)})(),s.noExitRuntime&&(O=s.noExitRuntime),s.print&&(re=s.print),s.printErr&&(h=s.printErr),s.wasmBinary&&(g=s.wasmBinary),s.thisProgram&&(ee=s.thisProgram),s.preInit)for(typeof s.preInit==`function`&&(s.preInit=[s.preInit]);0<s.preInit.length;)s.preInit.shift()();s.stackSave=()=>zt(),s.stackRestore=e=>Rt(e),s.stackAlloc=e=>Q(e),s.cwrap=(e,t,n,r)=>{var i=!n||n.every(e=>e===`number`||e===`boolean`);return t!==`string`&&i&&!r?s[`_`+e]:(...r)=>Ot(e,t,n,r)},s.addFunction=Pt,s.removeFunction=X,s.UTF8ToString=j,s.stringToNewUTF8=kt,s.writeArrayToMemory=(e,t)=>{v.set(e,t)};var Ft,Z,It,Lt,Rt,Q,zt,Bt,$,Vt={a:(e,t,n,r)=>w(`Assertion failed: ${j(e)}, at: `+[t?j(t):`unknown filename`,n,r?j(r):`unknown function`]),i:function(e,t){try{return e=j(e),lt(e,t),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},L:function(e,t,n){try{if(t=j(t),t=J(e,t),n&-8)return-28;var r=z(t,{$a:!0}).node;return r?(e=``,n&4&&(e+=`r`),n&2&&(e+=`w`),n&1&&(e+=`x`),e&&H(r,e)?-2:0):-44}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},j:function(e,t){try{var n=U(e);return ct(n,n.node,t,!1),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},h:function(e){try{var t=U(e);return Ze(t,t.node,{timestamp:Date.now(),Fb:!1}),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},b:function(e,t,n){_t=n;try{var r=U(e);switch(t){case 0:var i=vt();if(0>i)break;for(;I[i];)i++;return Xe(r,i).fd;case 1:case 2:return 0;case 3:return r.flags;case 4:return i=vt(),r.flags|=i,0;case 12:return i=vt(),b[i+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},g:function(e,t){try{var n=U(e),r=n.node,i=n.Ma.Ta;return e=i?n:r,i??=r.La.Ta,Je(i),gt(t,i(e))}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},H:function(e,t){t=-9007199254740992>t||9007199254740992<t?NaN:Number(t);try{if(isNaN(t))return-61;var n=U(e);if(0>t||!(n.flags&2097155))throw new R(28);return ut(n,n.node,t),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},G:function(e,t){try{if(t===0)return-28;var n=N(`/`)+1;return t<n?-68:(P(`/`,y,e,t),n)}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},K:function(e,t){try{return e=j(e),gt(t,st(e,!0))}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},C:function(e,t,n){try{return t=j(t),t=J(e,t),W(t,n),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},J:function(e,t,n,r){try{t=j(t);var i=r&256;return t=J(e,t,r&4096),gt(n,i?st(t,!0):st(t))}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},x:function(e,t,n,r){_t=r;try{t=j(t),t=J(e,t);var i=r?vt():0;return G(t,n,i).fd}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},v:function(e,t,n,r){try{if(t=j(t),t=J(e,t),0>=r)return-28;var i=z(t).node;if(!i)throw new R(44);if(!i.La.readlink)throw new R(28);var a=i.La.readlink(i),o=Math.min(r,N(a)),s=v[n+o];return P(a,y,n,r+1),v[n+o]=s,o}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},u:function(e){try{return e=j(e),at(e),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},f:function(e,t){try{return e=j(e),gt(t,st(e))}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},r:function(e,t,n){try{if(t=j(t),t=J(e,t),n)if(n===512)at(t);else return-28;else ot(t);return 0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},q:function(e,t,n){try{t=j(t),t=J(e,t,!0);var r=Date.now(),i,a;if(n){var o=S[n>>2]+4294967296*x[n+4>>2],s=x[n+8>>2];i=s==1073741823?r:s==1073741822?null:1e3*o+s/1e6,n+=16,o=S[n>>2]+4294967296*x[n+4>>2],s=x[n+8>>2],a=s==1073741823?r:s==1073741822?null:1e3*o+s/1e6}else a=i=r;if((a??i)!==null){e=i;var c=z(t,{$a:!0}).node;Je(c.La.Ua)(c,{atime:e,mtime:a})}return 0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},m:()=>w(``),l:()=>{O=!1,yt=0},A:function(e,t){e=-9007199254740992>e||9007199254740992<e?NaN:Number(e),e=new Date(1e3*e),x[t>>2]=e.getSeconds(),x[t+4>>2]=e.getMinutes(),x[t+8>>2]=e.getHours(),x[t+12>>2]=e.getDate(),x[t+16>>2]=e.getMonth(),x[t+20>>2]=e.getFullYear()-1900,x[t+24>>2]=e.getDay();var n=e.getFullYear();x[t+28>>2]=(n%4!=0||n%100==0&&n%400!=0?xt:bt)[e.getMonth()]+e.getDate()-1|0,x[t+36>>2]=-(60*e.getTimezoneOffset()),n=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();x[t+32>>2]=(n!=r&&e.getTimezoneOffset()==Math.min(r,n))|0},y:function(e,t,n,r,i,a,o){i=-9007199254740992>i||9007199254740992<i?NaN:Number(i);try{var s=U(r);if(t&2&&!(n&2)&&(s.flags&2097155)!=2||(s.flags&2097155)==1)throw new R(2);if(!s.Ma.ib)throw new R(43);if(!e)throw new R(28);var c=s.Ma.ib(s,e,i,t,n),l=c.Kb;return x[a>>2]=c.Ab,S[o>>2]=l,0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},z:function(e,t,n,r,i,a){a=-9007199254740992>a||9007199254740992<a?NaN:Number(a);try{var o=U(i);if(n&2){if(n=a,(o.node.mode&61440)!=32768)throw new R(43);if(!(r&2)){var s=y.slice(e,e+t);o.Ma.jb&&o.Ma.jb(o,s,n,t,r)}}}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return-e.Pa}},n:(e,t)=>(St[e]&&(clearTimeout(St[e].id),delete St[e]),t&&(St[e]={id:setTimeout(()=>{delete St[e],wt(()=>Lt(e,performance.now()))},t),Xb:t}),0),B:(e,t,n,r)=>{var i=new Date().getFullYear(),a=new Date(i,0,1).getTimezoneOffset();i=new Date(i,6,1).getTimezoneOffset(),S[e>>2]=60*Math.max(a,i),x[t>>2]=Number(a!=i),t=e=>{var t=Math.abs(e);return`UTC${0<=e?`-`:`+`}${String(Math.floor(t/60)).padStart(2,`0`)}${String(t%60).padStart(2,`0`)}`},e=t(a),t=t(i),i<a?(P(e,y,n,17),P(t,y,r,17)):(P(e,y,r,17),P(t,y,n,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:e=>{var t=y.length;if(e>>>=0,2147483648<e)return!1;for(var n=1;4>=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);a:{r=(Math.min(2147483648,65536*Math.ceil(Math.max(e,r)/65536))-Bt.buffer.byteLength+65535)/65536|0;try{Bt.grow(r),ce();var i=1;break a}catch{}i=void 0}if(i)return!0}return!1},E:(e,t)=>{var n=0,r=0,i;for(i of Et()){var a=t+n;S[e+r>>2]=a,n+=P(i,y,a,1/0)+1,r+=4}return 0},F:(e,t)=>{var n=Et();S[e>>2]=n.length,e=0;for(var r of n)e+=N(r)+1;return S[t>>2]=e,0},e:function(e){try{return dt(U(e)),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return e.Pa}},p:function(e,t){try{var n=U(e);return v[t]=n.tty?2:V(n.mode)?3:(n.mode&61440)==40960?7:4,b[t+2>>1]=0,C[t+8>>3]=BigInt(0),C[t+16>>3]=BigInt(0),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return e.Pa}},w:function(e,t,n,r){try{a:{var i=U(e);e=t;for(var a,o=t=0;o<n;o++){var s=S[e>>2],c=S[e+4>>2];e+=8;var l=pt(i,v,s,c,a);if(0>l){var u=-1;break a}if(t+=l,l<c)break;a!==void 0&&(a+=l)}u=t}return S[r>>2]=u,0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return e.Pa}},D:function(e,t,n,r){t=-9007199254740992>t||9007199254740992<t?NaN:Number(t);try{if(isNaN(t))return 61;var i=U(e);return ft(i,t,n),C[r>>3]=BigInt(i.position),i.pb&&t===0&&n===0&&(i.pb=null),0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return e.Pa}},I:function(e){try{var t=U(e);return t.Ma?.fsync?.(t)}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return e.Pa}},t:function(e,t,n,r){try{a:{var i=U(e);e=t;for(var a,o=t=0;o<n;o++){var s=S[e>>2],c=S[e+4>>2];e+=8;var l=mt(i,v,s,c,a);if(0>l){var u=-1;break a}if(t+=l,l<c)break;a!==void 0&&(a+=l)}u=t}return S[r>>2]=u,0}catch(e){if(q===void 0||e.name!==`ErrnoError`)throw e;return e.Pa}},k:Ct};function Ht(){function e(){if(s.calledRun=!0,!ie){if(!s.noFSInit&&!Ie){var e,t;Ie=!0,e??=s.stdin,t??=s.stdout,n??=s.stderr,e?K(`stdin`,e):it(`/dev/tty`,`/dev/stdin`),t?K(`stdout`,null,t):it(`/dev/tty`,`/dev/stdout`),n?K(`stderr`,null,n):it(`/dev/tty1`,`/dev/stderr`),G(`/dev/stdin`,0),G(`/dev/stdout`,1),G(`/dev/stderr`,1)}if(Ut.N(),Le=!1,s.onRuntimeInitialized?.(),s.postRun)for(typeof s.postRun==`function`&&(s.postRun=[s.postRun]);s.postRun.length;){var n=s.postRun.shift();he.push(n)}me(he)}}if(0<T)E=Ht;else{if(s.preRun)for(typeof s.preRun==`function`&&(s.preRun=[s.preRun]);s.preRun.length;)_e();me(ge),0<T?E=Ht:s.setStatus?(s.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>s.setStatus(``),1),e()},1)):e()}}var Ut;return(async function(){function e(e){return e=Ut=e.exports,s._sqlite3_free=e.P,s._sqlite3_value_text=e.Q,s._sqlite3_prepare_v2=e.R,s._sqlite3_step=e.S,s._sqlite3_reset=e.T,s._sqlite3_exec=e.U,s._sqlite3_finalize=e.V,s._sqlite3_column_name=e.W,s._sqlite3_column_text=e.X,s._sqlite3_column_type=e.Y,s._sqlite3_errmsg=e.Z,s._sqlite3_clear_bindings=e._,s._sqlite3_value_blob=e.$,s._sqlite3_value_bytes=e.aa,s._sqlite3_value_double=e.ba,s._sqlite3_value_int=e.ca,s._sqlite3_value_type=e.da,s._sqlite3_result_blob=e.ea,s._sqlite3_result_double=e.fa,s._sqlite3_result_error=e.ga,s._sqlite3_result_int=e.ha,s._sqlite3_result_int64=e.ia,s._sqlite3_result_null=e.ja,s._sqlite3_result_text=e.ka,s._sqlite3_aggregate_context=e.la,s._sqlite3_column_count=e.ma,s._sqlite3_data_count=e.na,s._sqlite3_column_blob=e.oa,s._sqlite3_column_bytes=e.pa,s._sqlite3_column_double=e.qa,s._sqlite3_bind_blob=e.ra,s._sqlite3_bind_double=e.sa,s._sqlite3_bind_int=e.ta,s._sqlite3_bind_text=e.ua,s._sqlite3_bind_parameter_index=e.va,s._sqlite3_sql=e.wa,s._sqlite3_normalized_sql=e.xa,s._sqlite3_changes=e.ya,s._sqlite3_close_v2=e.za,s._sqlite3_create_function_v2=e.Aa,s._sqlite3_update_hook=e.Ba,s._sqlite3_open=e.Ca,Ft=s._malloc=e.Da,Z=s._free=e.Ea,s._RegisterExtensionFunctions=e.Fa,It=e.Ga,Lt=e.Ha,Rt=e.Ia,Q=e.Ja,zt=e.Ka,Bt=e.M,$=e.O,ce(),T--,s.monitorRunDependencies?.(T),T==0&&E&&(e=E,E=null,e()),Ut}T++,s.monitorRunDependencies?.(T);var t={a:Vt};return s.instantiateWasm?new Promise(n=>{s.instantiateWasm(t,(t,r)=>{n(e(t,r))})}):(le??=s.locateFile?s.locateFile(`sql-wasm.wasm`,d):d+`sql-wasm.wasm`,e((await fe(t)).instance))})(),Ht(),a}),r)};typeof e==`object`&&typeof n==`object`?(n.exports=i,n.exports.default=i):typeof define==`function`&&define.amd?define([],function(){return i}):typeof e==`object`&&(e.Module=i)}));export default n();
@@ -1 +1 @@
1
- import{r as e}from"./chunk-CMxvf4Kt.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-idfTVsM8.js";import{l as r}from"./kernel-worker-DuaByjq4.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>_,getServer:()=>h,listServers:()=>v,readMcpAuthEntries:()=>b,readMcpAuthEntry:()=>y,readServersFile:()=>p,setServer:()=>g,writeServersFile:()=>m});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-B-yB8nmS.js`).then(e=>e.t),s}async function u(e){if(e)return e;if(c&&c.dbName===`slicc-fs-global`)return c.instance;let{VirtualFS:t}=await l(),n=await t.create({dbName:r});return c={instance:n,dbName:r},n}function d(){return{version:1,servers:{}}}function f(e){if(!e||typeof e!=`object`)return d();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function p(e){try{let t=await(await u(e)).readFile(o,{encoding:`utf-8`});try{return f(JSON.parse(t))}catch(e){return a.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),d()}}catch(e){return e instanceof n&&e.code===`ENOENT`||a.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),d()}}async function m(e,t){let n=await u(t);await n.mkdir(`/workspace/.mcp`,{recursive:!0});let r={version:e.version||1,servers:e.servers??{}};await n.writeFile(o,JSON.stringify(r,null,2))}async function h(e,t){return(await p(t)).servers[e]??null}async function g(e,t,n){let r=await p(n),i={...r.servers[e],...t};return r.servers[e]=i,await m(r,n),i}async function _(e,t){let n=await p(t);return e in n.servers?(delete n.servers[e],await m(n,t),!0):!1}async function v(e){return(await p(e)).servers}async function y(e){let t=await h(e);return!t?.url||!t.auth?.clientId?null:{name:e,serverUrl:t.url,auth:t.auth}}async function b(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}export{y as n,i as r,b as t};
1
+ import{n as e}from"./chunk-aKtaBQYM.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-idfTVsM8.js";import{f as r}from"./kernel-worker-CFGgP28u.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>_,getServer:()=>h,listServers:()=>v,readMcpAuthEntries:()=>b,readMcpAuthEntry:()=>y,readServersFile:()=>p,setServer:()=>g,writeServersFile:()=>m});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-crZm8xnS.js`).then(e=>e.t),s}async function u(e){if(e)return e;if(c&&c.dbName===`slicc-fs-global`)return c.instance;let{VirtualFS:t}=await l(),n=await t.create({dbName:r});return c={instance:n,dbName:r},n}function d(){return{version:1,servers:{}}}function f(e){if(!e||typeof e!=`object`)return d();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function p(e){try{let t=await(await u(e)).readFile(o,{encoding:`utf-8`});try{return f(JSON.parse(t))}catch(e){return a.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),d()}}catch(e){return e instanceof n&&e.code===`ENOENT`||a.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),d()}}async function m(e,t){let n=await u(t);await n.mkdir(`/workspace/.mcp`,{recursive:!0});let r={version:e.version||1,servers:e.servers??{}};await n.writeFile(o,JSON.stringify(r,null,2))}async function h(e,t){return(await p(t)).servers[e]??null}async function g(e,t,n){let r=await p(n),i={...r.servers[e],...t};return r.servers[e]=i,await m(r,n),i}async function _(e,t){let n=await p(t);return e in n.servers?(delete n.servers[e],await m(n,t),!0):!1}async function v(e){return(await p(e)).servers}async function y(e){let t=await h(e);return!t?.url||!t.auth?.clientId?null:{name:e,serverUrl:t.url,auth:t.auth}}async function b(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}export{y as n,i as r,b as t};
@@ -0,0 +1,5 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-DqT2FG7c.js","assets/chunk-aKtaBQYM.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-zJ_50EbN.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,t as i}from"./proxied-fetch-CKDBmEMl.js";import{t as a}from"./quick-llm-CksvHcNV.js";import{installPanelSudoResponder as o,n as s}from"./panel-responder-BKgfV-nl.js";var c=t(`sudo-suggest`),l=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
3
+ `),u=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
4
+ `);async function d(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim(),r=e.kind===`command`?l:u,i=null;try{i=await a({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){c.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return f(i)||n}function f(e){if(!e)return null;let t=(e.split(`
5
+ `,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}var p=t(`sudo-ext`);function m(e={}){let t=e.suggest??d;return{async requestApproval(e){let n;try{n=await t(e)}catch{n=e.detail}return h({...e,suggestedPattern:n})}}}function h(e){return new Promise(t=>{let n=globalThis.chrome?.runtime;if(!n||typeof n.sendMessage!=`function`){p.warn(`chrome.runtime.sendMessage unavailable — denying`),t({decision:`deny`});return}let r=r=>{let i=n.lastError;if(i){p.warn(`sudo relay lastError — denying`,{error:i.message}),t({decision:`deny`});return}if(!r||typeof r!=`object`){p.warn(`sudo relay empty response — denying`),t({decision:`deny`});return}let a=r;if(!a.ok||!a.decision){p.warn(`sudo relay error response — denying`,{error:a.error}),t({decision:`deny`});return}t(g(a.decision,e.suggestedPattern??e.detail))};try{n.sendMessage({source:`offscreen`,payload:{type:s,request:e}},r)}catch(e){p.warn(`sudo relay threw — denying`,{error:e instanceof Error?e.message:String(e)}),t({decision:`deny`})}})}function g(e,t){return e.decision===`allow`?{decision:`allow`}:e.decision===`always`?{decision:`always`,pattern:typeof e.pattern==`string`&&e.pattern.trim().length>0?e.pattern.trim():t}:{decision:`deny`}}var _=t(`sudo-http`);function v(e={}){let t=e.fetchImpl??globalThis.fetch.bind(globalThis),r=e.path??`/api/sudo-approve`,a=e.suggest??d;return{async requestApproval(e){let o;try{o=await a(e)}catch{o=e.detail}try{let a=await t(n(r),{method:`POST`,headers:i({"Content-Type":`application/json`}),body:JSON.stringify({kind:e.kind,detail:e.detail,suggestedPattern:o})});return a.ok?y(await a.json(),o):(_.warn(`sudo endpoint returned non-OK status — denying`,{status:a.status}),{decision:`deny`})}catch(e){return _.warn(`sudo endpoint request failed — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}}}}function y(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e.decision;if(n===`allow`)return{decision:`allow`};if(n===`always`){let n=e.pattern;return{decision:`always`,pattern:typeof n==`string`&&n.trim().length>0?n.trim():t}}return{decision:`deny`}}var b=t(`sudo-panel-rpc`),x=6e5;function S(t={}){let n=t.suggest??d,r=t.timeoutMs??x,i=t.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-DqT2FG7c.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1]));return t()});return{async requestApproval(e){let t;try{t=await n(e)}catch{t=e.detail}let a={...e,suggestedPattern:t},o;try{o=await i()}catch(e){return b.warn(`panel-RPC client lookup threw — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}if(!o)return b.warn(`panel-RPC client unavailable in worker realm — denying`),{decision:`deny`};try{let{decision:e}=await o.call(`sudo-request`,{request:a},{timeoutMs:r});return C(e,t)}catch(e){return b.warn(`sudo panel-RPC relay failed — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}}}}function C(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e.decision;if(n===`allow`)return{decision:`allow`};if(n===`always`){let n=e.pattern;return{decision:`always`,pattern:typeof n==`string`&&n.trim().length>0?n.trim():t}}return{decision:`deny`}}var w=t(`sudo`),T=`__slicc_sudo`;function E(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function D(){return typeof chrome>`u`&&r()!==null}function O(){return E()?m():D()?S():v()}function k(e=O()){let t={requestApproval:t=>e.requestApproval(t)};return globalThis[T]=t,w.info(`sudo broker test hook published on globalThis.__slicc_sudo`),t}export{o as installPanelSudoResponder,k as installSudoTestHook};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-DDBAeTLF.js";var t=e(`tool-ui`),n=`__mounted`,r=new class{pending=new Map;idCounter=0;mounted=new Set;mountWaiters=new Map;generateId(){return`tool-ui-${++this.idCounter}-${Date.now().toString(36)}`}register(e,n,r,i){this.mounted.delete(e),this.pending.set(e,{request:n,resolve:r,reject:i}),t.info(`Tool UI registered`,{id:e})}async handleAction(e,n){let r=this.pending.get(e);if(!r){t.warn(`Action for unknown tool UI`,{id:e,action:n.action});return}t.info(`Tool UI action`,{id:e,action:n.action});try{let e;e=r.request.onAction?await r.request.onAction(n.action,n.data):n,r.resolve(e)}catch(e){r.reject(e instanceof Error?e:Error(String(e)))}finally{this.pending.delete(e),this.clearMountWaiter(e,`tool ui completed`)}}cancel(e,n=`cancelled`){let r=this.pending.get(e);r&&(r.reject(Error(n)),this.pending.delete(e),t.info(`Tool UI cancelled`,{id:e,reason:n})),this.clearMountWaiter(e,n),this.mounted.delete(e)}cancelAll(e=`cancelled`){let n=this.pending.size;for(let[t,n]of this.pending)n.reject(Error(e));this.pending.clear();for(let t of[...this.mountWaiters.keys()])this.clearMountWaiter(t,e);this.mounted.clear(),n>0&&t.info(`All tool UIs cancelled`,{reason:e,count:n})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}markMounted(e){this.mounted.add(e);let t=this.mountWaiters.get(e);t&&(clearTimeout(t.timeoutHandle),this.mountWaiters.delete(e),t.resolve())}waitForMount(e,t){return this.mounted.has(e)?Promise.resolve():new Promise((n,r)=>{let i=setTimeout(()=>{this.mountWaiters.delete(e),r(Error(`tool UI ${e} was not mounted by any panel within ${t}ms — check the chat panel`))},t);this.mountWaiters.set(e,{resolve:n,reject:r,timeoutHandle:i})})}clearMountWaiter(e,t){let n=this.mountWaiters.get(e);n&&(clearTimeout(n.timeoutHandle),this.mountWaiters.delete(e),n.reject(Error(t)))}};async function i(e,n){let i=e.id??r.generateId(),a,o,s=new Promise((e,t)=>{a=e,o=t});return r.register(i,e,a,o),n?n({content:[{type:`tool_ui`,requestId:i,html:e.html}]}):t.warn(`showToolUI called without onUpdate callback — UI may not render`),s.finally(()=>{n&&n({content:[{type:`tool_ui_done`,requestId:i}]})})}export{i as n,r,n as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-LESFN7Hj.js";const t=e(`tool-ui`),n=`__mounted`,r=new class{pending=new Map;idCounter=0;mounted=new Set;mountWaiters=new Map;generateId(){return`tool-ui-${++this.idCounter}-${Date.now().toString(36)}`}register(e,n,r,i){this.mounted.delete(e),this.pending.set(e,{request:n,resolve:r,reject:i}),t.info(`Tool UI registered`,{id:e})}async handleAction(e,n){let r=this.pending.get(e);if(!r){t.warn(`Action for unknown tool UI`,{id:e,action:n.action});return}t.info(`Tool UI action`,{id:e,action:n.action});try{let e;e=r.request.onAction?await r.request.onAction(n.action,n.data):n,r.resolve(e)}catch(e){r.reject(e instanceof Error?e:Error(String(e)))}finally{this.pending.delete(e),this.clearMountWaiter(e,`tool ui completed`)}}cancel(e,n=`cancelled`){let r=this.pending.get(e);r&&(r.reject(Error(n)),this.pending.delete(e),t.info(`Tool UI cancelled`,{id:e,reason:n})),this.clearMountWaiter(e,n),this.mounted.delete(e)}cancelAll(e=`cancelled`){let n=this.pending.size;for(let[t,n]of this.pending)n.reject(Error(e));this.pending.clear();for(let t of[...this.mountWaiters.keys()])this.clearMountWaiter(t,e);this.mounted.clear(),n>0&&t.info(`All tool UIs cancelled`,{reason:e,count:n})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}markMounted(e){this.mounted.add(e);let t=this.mountWaiters.get(e);t&&(clearTimeout(t.timeoutHandle),this.mountWaiters.delete(e),t.resolve())}waitForMount(e,t){return this.mounted.has(e)?Promise.resolve():new Promise((n,r)=>{let i=setTimeout(()=>{this.mountWaiters.delete(e),r(Error(`tool UI ${e} was not mounted by any panel within ${t}ms — check the chat panel`))},t);this.mountWaiters.set(e,{resolve:n,reject:r,timeoutHandle:i})})}clearMountWaiter(e,t){let n=this.mountWaiters.get(e);n&&(clearTimeout(n.timeoutHandle),this.mountWaiters.delete(e),n.reject(Error(t)))}};async function i(e,n){let i=e.id??r.generateId(),a,o,s=new Promise((e,t)=>{a=e,o=t});return r.register(i,e,a,o),n?n({content:[{type:`tool_ui`,requestId:i,html:e.html}]}):t.warn(`showToolUI called without onUpdate callback — UI may not render`),s.finally(()=>{n&&n({content:[{type:`tool_ui_done`,requestId:i}]})})}const a=[];function o(e){return a.push(e),e}function s(e){let t=a.lastIndexOf(e);t!==-1&&a.splice(t,1)}function c(){return a.length>0?a[a.length-1]:null}async function l(e){let n=c();return n?i(e,n.onUpdate):(t.warn(`showToolUIFromContext called without execution context`),null)}export{i as a,o as i,c as n,l as o,s as r,r as s,n as t};
@@ -0,0 +1 @@
1
+ import{o as e,t}from"./proxied-fetch-CM0jk_Mr.js";import{l as n,u as r}from"./kernel-worker-CFGgP28u.js";function i(e=()=>Date.now()){let t=new Map,n=null,r=0,i=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(a,o,s){t.set(a,{loaded:Math.max(0,o),total:Math.max(t.get(a)?.total??0,s,o)}),n===null&&(n=e(),r=i().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:a}=i(),o=null;if(n!==null&&a>0&&t<a){let i=e()-n,s=t-r;if(i>=1e3&&s>0){let e=s/i;o=(a-t)/e/1e3}}return a>0&&t>=a&&(o=0),{loaded:t,total:a,etaSeconds:o}}}}const a=Symbol.for(`slicc.transformers-env.fetch-wrapped`),o=()=>typeof chrome<`u`&&!!chrome?.runtime?.id,s=`/workspace/node_modules/onnxruntime-web/dist/`,c=`/workspace/models/`;function l(e){return typeof e==`string`?e:e instanceof URL?e.toString():e.url}function u(e){let t=l(e);return t.startsWith(`http://`)||t.startsWith(`https://`)}function d(){return globalThis.location?.origin??null}function f(e){let t=d();if(!t)return!1;try{return new URL(l(e)).origin===t}catch{return!1}}async function p(n,r){let i=l(n),a={};r?.headers&&new Headers(r.headers).forEach((e,t)=>{a[t]=e});let o=t({...a,"X-Target-URL":i}),s=(r?.method??`GET`).toUpperCase(),c={method:s,headers:o,cache:`no-store`};return r?.body&&s!==`GET`&&s!==`HEAD`&&(c.body=r.body),fetch(e(`/api/fetch-proxy`),c)}const m=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort.wasm`],h=Symbol.for(`slicc.transformers-env.vfs-enoent`);function g(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable in this realm`));let t=new BroadcastChannel(`preview-vfs`),n=`tfx-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,s),t.close(),e()},o=setTimeout(()=>{let t=Error(`ENOENT: ${e} (preview-vfs responder timed out)`);t[h]=!0,a(()=>i(t))},3e4),s=t=>{let s=t.data;if(s?.type!==`preview-vfs-response`||s.id!==n)return;if(clearTimeout(o),typeof s.error==`string`){let e=Error(s.error);s.error.includes(`ENOENT`)&&(e[h]=!0),a(()=>i(e));return}let c=s.content;if(c instanceof Uint8Array){a(()=>r(c));return}if(typeof c==`string`){a(()=>r(new TextEncoder().encode(c)));return}a(()=>i(Error(`Unexpected empty preview-vfs response for ${e}`)))};t.addEventListener(`message`,s),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}function _(e){return!!e?.[h]}function v(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}function y(e,t){return!t||!e.startsWith(t)?null:`${c}${e.slice(t.length).split(`?`)[0].split(`#`)[0]}`}async function b(e,t){let r;try{r=await g(e)}catch(t){if(_(t))return new Response(`Not found: ${e}`,{status:404,headers:{"Content-Type":`text/plain`}});throw t}let i=n(e);return(t?.headers?new Headers(t.headers).get(`range`):null)===`bytes=0-0`?new Response(null,{status:206,headers:{"Content-Type":i,"Content-Length":String(r.byteLength),"Content-Range":`bytes 0-0/${r.byteLength}`}}):new Response(v(r),{status:200,headers:{"Content-Type":i,"Content-Length":String(r.byteLength)}})}let x=null;async function S(){if(typeof URL>`u`||typeof URL.createObjectURL!=`function`)throw Error(`onnxruntime-web blob URLs require URL.createObjectURL (browser realm only)`);let e={};if(await Promise.all(m.map(async t=>{try{let r=await g(`${s}${t}`),i=new Blob([v(r)],{type:n(t)});e[t]=URL.createObjectURL(i)}catch(e){if(!_(e))throw e}})),Object.keys(e).length===0)throw Error("onnxruntime-web is not installed — run `ipk add onnxruntime-web` to stage the wasm runtime in /workspace/node_modules/.");return e}function C(){return x||=S(),x}function w(e){let t=e.backends?.onnx?.wasm;if(t&&(t.wasmPaths=r(s)),e.allowRemoteModels=!1,e.allowLocalModels=!0,e.localModelPath=r(c),o())return;e.allowRemoteModels=!0,e.remoteHost=e.localModelPath,e.remotePathTemplate=`{model}/`,t&&C().then(e=>{t.wasmPaths=e},()=>{});let n=e.fetch;if(n?.[a])return;let i=n,d=e.localModelPath,m=async(e,t)=>{let n=y(l(e),d);return n===null?!u(e)||f(e)?i?i(e,t):fetch(e,t):p(e,t):b(n,t)};m[a]=!0,e.fetch=m}async function T(e){let t=`weights for ${e} are missing — run \`hf download ${e}\` to fetch them into /workspace/models/.`;try{await g(`${c}${e}/config.json`)}catch(e){if(_(e))throw Error(t);let n=e instanceof Error?e.message:String(e);throw Error(`${t} (probe failed: ${n})`)}}export{i as a,w as i,m as n,T as r,s as t};
@@ -0,0 +1 @@
1
+ import{a as e,t}from"./proxied-fetch-CKDBmEMl.js";import{r as n,t as r}from"./shared-Bn9ltvMZ.js";var i=1e3;function a(e=()=>Date.now()){let t=new Map,n=null,r=0,a=()=>{let e=0,n=0;for(let r of t.values())e+=r.loaded,n+=r.total;return{loaded:e,total:n}};return{update(i,o,s){t.set(i,{loaded:Math.max(0,o),total:Math.max(t.get(i)?.total??0,s,o)}),n===null&&(n=e(),r=a().loaded)},complete(e){let n=t.get(e);n&&(n.loaded=n.total)},snapshot(){let{loaded:t,total:o}=a(),s=null;if(n!==null&&o>0&&t<o){let a=e()-n,c=t-r;if(a>=i&&c>0){let e=c/a;s=(o-t)/e/1e3}}return o>0&&t>=o&&(s=0),{loaded:t,total:o,etaSeconds:s}}}}var o=Symbol.for(`slicc.transformers-env.fetch-wrapped`),s=()=>typeof chrome<`u`&&!!chrome?.runtime?.id,c=`/workspace/node_modules/onnxruntime-web/dist/`,l=`/workspace/models/`;function u(e){return typeof e==`string`?e:e instanceof URL?e.toString():e.url}function d(e){let t=u(e);return t.startsWith(`http://`)||t.startsWith(`https://`)}function f(){return globalThis.location?.origin??null}function p(e){let t=f();if(!t)return!1;try{return new URL(u(e)).origin===t}catch{return!1}}async function m(n,r){let i=u(n),a={};r?.headers&&new Headers(r.headers).forEach((e,t)=>{a[t]=e});let o=t({...a,"X-Target-URL":i}),s=(r?.method??`GET`).toUpperCase(),c={method:s,headers:o,cache:`no-store`};return r?.body&&s!==`GET`&&s!==`HEAD`&&(c.body=r.body),fetch(e(`/api/fetch-proxy`),c)}var h=3e4,g=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort.wasm`],_=Symbol.for(`slicc.transformers-env.vfs-enoent`);function v(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable in this realm`));let t=new BroadcastChannel(`preview-vfs`),n=`tfx-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,s),t.close(),e()},o=setTimeout(()=>{let t=Error(`ENOENT: ${e} (preview-vfs responder timed out)`);t[_]=!0,a(()=>i(t))},h),s=t=>{let s=t.data;if(s?.type!==`preview-vfs-response`||s.id!==n)return;if(clearTimeout(o),typeof s.error==`string`){let e=Error(s.error);s.error.includes(`ENOENT`)&&(e[_]=!0),a(()=>i(e));return}let c=s.content;if(c instanceof Uint8Array){a(()=>r(c));return}if(typeof c==`string`){a(()=>r(new TextEncoder().encode(c)));return}a(()=>i(Error(`Unexpected empty preview-vfs response for ${e}`)))};t.addEventListener(`message`,s),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}function y(e){return!!e?.[_]}function b(e){let t=new ArrayBuffer(e.byteLength),n=new Uint8Array(t);return n.set(e),n}function x(e,t){return!t||!e.startsWith(t)?null:`${l}${e.slice(t.length).split(`?`)[0].split(`#`)[0]}`}async function S(e,t){let n;try{n=await v(e)}catch(t){if(y(t))return new Response(`Not found: ${e}`,{status:404,headers:{"Content-Type":`text/plain`}});throw t}let i=r(e);return(t?.headers?new Headers(t.headers).get(`range`):null)===`bytes=0-0`?new Response(null,{status:206,headers:{"Content-Type":i,"Content-Length":String(n.byteLength),"Content-Range":`bytes 0-0/${n.byteLength}`}}):new Response(b(n),{status:200,headers:{"Content-Type":i,"Content-Length":String(n.byteLength)}})}var C=null;async function w(){if(typeof URL>`u`||typeof URL.createObjectURL!=`function`)throw Error(`onnxruntime-web blob URLs require URL.createObjectURL (browser realm only)`);let e={};if(await Promise.all(g.map(async t=>{try{let n=await v(`${c}${t}`),i=new Blob([b(n)],{type:r(t)});e[t]=URL.createObjectURL(i)}catch(e){if(!y(e))throw e}})),Object.keys(e).length===0)throw Error("onnxruntime-web is not installed — run `ipk add onnxruntime-web` to stage the wasm runtime in /workspace/node_modules/.");return e}function T(){return C||=w(),C}function E(e){let t=e.backends?.onnx?.wasm;if(t&&(t.wasmPaths=n(c)),e.allowRemoteModels=!1,e.allowLocalModels=!0,e.localModelPath=n(l),s())return;e.allowRemoteModels=!0,e.remoteHost=e.localModelPath,e.remotePathTemplate=`{model}/`,t&&T().then(e=>{t.wasmPaths=e},()=>{});let r=e.fetch;if(r?.[o])return;let i=r,a=e.localModelPath,f=async(e,t)=>{let n=x(u(e),a);return n===null?!d(e)||p(e)?i?i(e,t):fetch(e,t):m(e,t):S(n,t)};f[o]=!0,e.fetch=f}async function D(e){let t=`weights for ${e} are missing — run \`hf download ${e}\` to fetch them into /workspace/models/.`;try{await v(`${l}${e}/config.json`)}catch(e){if(y(e))throw Error(t);let n=e instanceof Error?e.message:String(e);throw Error(`${t} (probe failed: ${n})`)}}export{E as n,a as r,D as t};