sliccy 6.154.0 → 6.154.2

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 (180) hide show
  1. package/dist/node-server/browser-shutdown.d.ts +6 -1
  2. package/dist/node-server/browser-shutdown.js +3 -3
  3. package/dist/node-server/chrome-launch.d.ts +3 -0
  4. package/dist/node-server/chrome-launch.js +2 -1
  5. package/dist/node-server/electron-controller.d.ts +63 -2
  6. package/dist/node-server/electron-controller.js +86 -48
  7. package/dist/node-server/electron-runtime.d.ts +15 -1
  8. package/dist/node-server/electron-runtime.js +10 -10
  9. package/dist/node-server/fetch-proxy-gzip.js +5 -7
  10. package/dist/node-server/hosted-bootstrap.d.ts +1 -0
  11. package/dist/node-server/hosted-bootstrap.js +12 -14
  12. package/dist/node-server/hostfs.d.ts +37 -1
  13. package/dist/node-server/hostfs.js +5 -5
  14. package/dist/node-server/install-cli.d.ts +1 -0
  15. package/dist/node-server/install-cli.js +1 -1
  16. package/dist/node-server/launch-url.js +2 -6
  17. package/dist/node-server/leader-restart.d.ts +9 -0
  18. package/dist/node-server/leader-restart.js +1 -1
  19. package/dist/node-server/publish-chrome-web-store-main.d.ts +1 -0
  20. package/dist/node-server/publish-chrome-web-store-main.js +13 -0
  21. package/dist/node-server/publish-chrome-web-store.d.ts +2 -0
  22. package/dist/node-server/publish-chrome-web-store.js +2 -15
  23. package/dist/node-server/release-package-main.d.ts +1 -0
  24. package/dist/node-server/release-package-main.js +17 -0
  25. package/dist/node-server/release-package.d.ts +38 -3
  26. package/dist/node-server/release-package.js +46 -50
  27. package/dist/node-server/routes/fetch-proxy.d.ts +40 -1
  28. package/dist/node-server/routes/fetch-proxy.js +20 -12
  29. package/dist/node-server/routes/secrets.d.ts +23 -1
  30. package/dist/node-server/routes/secrets.js +34 -30
  31. package/dist/node-server/secrets/proxy-manager.d.ts +2 -1
  32. package/dist/node-server/secrets/proxy-manager.js +27 -26
  33. package/dist/node-server/secrets/session-id-file.d.ts +5 -1
  34. package/dist/node-server/secrets/session-id-file.js +4 -4
  35. package/dist/node-server/secrets/sign-and-forward.d.ts +8 -0
  36. package/dist/node-server/secrets/sign-and-forward.js +1 -1
  37. package/dist/node-server/sudo/select.d.ts +2 -0
  38. package/dist/node-server/sudo/select.js +1 -1
  39. package/dist/node-server/sudo/tty-backend.d.ts +1 -0
  40. package/dist/node-server/sudo/tty-backend.js +1 -1
  41. package/dist/ui/.vite/manifest.json +227 -201
  42. package/dist/ui/assets/{SKILL-B0M2f1rt.js → SKILL-S80DGuUz.js} +1 -1
  43. package/dist/ui/assets/{account-store-B3TDSGgR.js → account-store-BSWxmlJm.js} +1 -1
  44. package/dist/ui/assets/{account-store-Cbuyot6T.js → account-store-BZdeVW0x.js} +1 -1
  45. package/dist/ui/assets/{adobe-D0bVmcsi.js → adobe-BKDJ9PXB.js} +1 -1
  46. package/dist/ui/assets/{adobe-C1OxVKsW.js → adobe-Do7ppUu_.js} +1 -1
  47. package/dist/ui/assets/{agent-bridge-C2T3pN-e.js → agent-bridge-DKIVd0zM.js} +1 -1
  48. package/dist/ui/assets/{agent-panels-BF2KNcL6.js → agent-panels-CERHjYbV.js} +1 -1
  49. package/dist/ui/assets/{apply-layout-Bhjj4nPN.js → apply-layout-cMZU1oiO.js} +1 -1
  50. package/dist/ui/assets/{apps-C8k6TOsm.js → apps-DBeGXxMQ.js} +1 -1
  51. package/dist/ui/assets/{azure-openai-BUJ38VHr.js → azure-openai-B7F3oYWt.js} +1 -1
  52. package/dist/ui/assets/{azure-openai-DrtklPbQ.js → azure-openai-CYw20Rb5.js} +1 -1
  53. package/dist/ui/assets/{budget-usage-source-DVW8NROx.js → budget-usage-source-nJeiDJgA.js} +1 -1
  54. package/dist/ui/assets/{cdp-Clmi3S3f.js → cdp-C0EXef8t.js} +1 -1
  55. package/dist/ui/assets/{cerebras-Dh3T6Yuw.js → cerebras-B2Urbvva.js} +1 -1
  56. package/dist/ui/assets/{cerebras-B4AeTqby.js → cerebras-DmWJf3th.js} +1 -1
  57. package/dist/ui/assets/{composer-speech-Dqgg2NPa.js → composer-speech-BNHWaL3y.js} +1 -1
  58. package/dist/ui/assets/{connect-surface-BOV2o_6c.js → connect-surface-ig8ePsTv.js} +1 -1
  59. package/dist/ui/assets/{directed-approval-Pzx9_4nE.js → directed-approval-B-TQlMYu.js} +1 -1
  60. package/dist/ui/assets/dist-BPPG9gF6.js +12 -0
  61. package/dist/ui/assets/dist-BnmWpUNI.js +18 -0
  62. package/dist/ui/assets/{dist-DCrgApJQ.js → dist-CFI3XeIO.js} +1 -1
  63. package/dist/ui/assets/{dist-UJah3hVh.js → dist-Ciikigd5.js} +1 -1
  64. package/dist/ui/assets/{fs-BjSQWu2g.js → fs-CY5pwJnY.js} +1 -1
  65. package/dist/ui/assets/{fs-Ci2s9_2x.js → fs-D5MhOzXY.js} +2 -2
  66. package/dist/ui/assets/{github-Bh3bUxPz.js → github-B-Bd_nZ-.js} +2 -2
  67. package/dist/ui/assets/{github-DiRnoDll.js → github-C0Ge88be.js} +1 -1
  68. package/dist/ui/assets/{github-copilot-Ny3_Bzue.js → github-copilot-CZaiYWHF.js} +1 -1
  69. package/dist/ui/assets/{github-copilot-BD0-tQ4L.js → github-copilot-socdhqrE.js} +1 -1
  70. package/dist/ui/assets/{github-install-CB0ldULv.js → github-install-DuwYDOce.js} +1 -1
  71. package/dist/ui/assets/{github-zip-DwdgFfY8.js → github-zip-CatJM_Hn.js} +1 -1
  72. package/dist/ui/assets/{hear-BJOAYoZe.js → hear-Ghdnf7n1.js} +1 -1
  73. package/dist/ui/assets/{help-ChVsqTeK.js → help-hIoQhrvq.js} +1 -1
  74. package/dist/ui/assets/hid-operations-C97SZtrY.js +1 -0
  75. package/dist/ui/assets/{js-realm-worker-CYo2Tual.js → js-realm-worker-DWUez8Bj.js} +2 -2
  76. package/dist/ui/assets/{jsh-runtime-extensions-6coWmZ2q.js → jsh-runtime-extensions-D6vP9Uiw.js} +1 -1
  77. package/dist/ui/assets/{kernel-worker-BEtE6IOd.js → kernel-worker-DOOSpFVG.js} +637 -631
  78. package/dist/ui/assets/{local-llm-BxL33fhK.js → local-llm-Bi5_jnDv.js} +1 -1
  79. package/dist/ui/assets/{local-llm-DorNBm9B.js → local-llm-DUeCZi0o.js} +1 -1
  80. package/dist/ui/assets/main-BBsnqT-n.js +22 -0
  81. package/dist/ui/assets/{main-cherry-uc6uMkYk.js → main-cherry-Dx-6EGAA.js} +1 -1
  82. package/dist/ui/assets/{memory-curation-seam-bWfYQeB0.js → memory-curation-seam-6Ye5fb1z.js} +1 -1
  83. package/dist/ui/assets/{mount-B-Dls9WR.js → mount-BJWo4gr-.js} +3 -3
  84. package/dist/ui/assets/{mount-C_z-hY6d.js → mount-Dq_fD8nk.js} +1 -1
  85. package/dist/ui/assets/{mount-recovery-Wt3z_gJ-.js → mount-recovery-2IXcFTPg.js} +1 -1
  86. package/dist/ui/assets/{new-session-BpKQuazZ.js → new-session-yJbhj5MZ.js} +2 -2
  87. package/dist/ui/assets/{oauth-bootstrap-3rfPAY2v.js → oauth-bootstrap-B1nxEXuw.js} +2 -2
  88. package/dist/ui/assets/{onboarding-orchestrator-DaiC0k5A.js → onboarding-orchestrator-Bzd3eyDB.js} +1 -1
  89. package/dist/ui/assets/{openai-codex-BvfRwpBB.js → openai-codex-Blu70lOC.js} +1 -1
  90. package/dist/ui/assets/{openai-codex-DMTlCy3V.js → openai-codex-CRux_5Io.js} +1 -1
  91. package/dist/ui/assets/{openrouter-B7CGsX81.js → openrouter-BwyOovNP.js} +1 -1
  92. package/dist/ui/assets/{openrouter-mJmUIEt9.js → openrouter-D5FrXcZn.js} +1 -1
  93. package/dist/ui/assets/{openrouter-free-DGAFTlu5.js → openrouter-free-73roMQJB.js} +1 -1
  94. package/dist/ui/assets/{openrouter-free-BVdfCtlF.js → openrouter-free-C6PmJYd9.js} +1 -1
  95. package/dist/ui/assets/{openrouter-oauth-BlKX0bbF.js → openrouter-oauth-D6eTjtsZ.js} +1 -1
  96. package/dist/ui/assets/{openrouter-oauth-D0pKLLyl.js → openrouter-oauth-DWlKSVgT.js} +1 -1
  97. package/dist/ui/assets/panel-rpc-handlers-3YsyA58r.js +2 -0
  98. package/dist/ui/assets/{panelize-shell-D6XcVxaT.js → panelize-shell-DE_uUThR.js} +1 -1
  99. package/dist/ui/assets/{provider-BZm95oFT.js → provider-PKpn_LmL.js} +1 -1
  100. package/dist/ui/assets/{provider-C1hg69QS.js → provider-kiXfL_mq.js} +2 -2
  101. package/dist/ui/assets/provider-settings-DQML2w6d.js +1 -0
  102. package/dist/ui/assets/provider-store-access-BEmFKV-n.js +1 -0
  103. package/dist/ui/assets/provider-store-access-Cce46clP.js +1 -0
  104. package/dist/ui/assets/{providers-DGX5ohJc.js → providers-B7K9U_fm.js} +2 -2
  105. package/dist/ui/assets/{providers-CKUtckcc.js → providers-e1sU7s6k.js} +1 -1
  106. package/dist/ui/assets/{quick-llm-DjQH1IOR.js → quick-llm-fE1NE1pP.js} +1 -1
  107. package/dist/ui/assets/{recovery-screen-D3_zoZq2.js → recovery-screen-yZ7MZWap.js} +1 -1
  108. package/dist/ui/assets/{remote-terminal-view-D0AXaUk6.js → remote-terminal-view-DJrkDTkY.js} +1 -1
  109. package/dist/ui/assets/{run-BGcMWlan.js → run-CJHbh10K.js} +1 -1
  110. package/dist/ui/assets/{run-BiC8nBGs.js → run-Ce3yzmAj.js} +1 -1
  111. package/dist/ui/assets/{run-BoLpdccP.js → run-WYZqOFOH.js} +2 -2
  112. package/dist/ui/assets/{session-jsonl-1dH4qbYh.js → session-jsonl-1Tumjx5q.js} +1 -1
  113. package/dist/ui/assets/{setup-feature-flags-remote-CtLYq8_W.js → setup-feature-flags-remote-Bjk9XIgB.js} +1 -1
  114. package/dist/ui/assets/sidecar-repair-D9Vw_sYj.js +1 -0
  115. package/dist/ui/assets/{silent-renew-backoff-BlXWqqSS.js → silent-renew-backoff-Djz3wKFS.js} +1 -1
  116. package/dist/ui/assets/{skills-MQBhN1sp.js → skills-CyxZ_qdB.js} +1 -1
  117. package/dist/ui/assets/slicc-version-Be90TKG2.js +1 -0
  118. package/dist/ui/assets/{snapshot-D912sxnM.js → snapshot-3Qf38DNo.js} +1 -1
  119. package/dist/ui/assets/{snapshot-features-DQZYYxXB.js → snapshot-features-BPOMdL3k.js} +1 -1
  120. package/dist/ui/assets/{soundscape-CO_HIUUp.js → soundscape-B2mWrlHy.js} +1 -1
  121. package/dist/ui/assets/{speak-Ck274s4Y.js → speak-CDJ0RzHm.js} +1 -1
  122. package/dist/ui/assets/{sprinkle-manager-C3LieoqN.js → sprinkle-manager-CpaUQQdp.js} +1 -1
  123. package/dist/ui/assets/sprinkle-renderer-xqSZhBNo.js +333 -0
  124. package/dist/ui/assets/{state-BjKxySu5.js → state-C-GUxpCw.js} +1 -1
  125. package/dist/ui/assets/{store-BXnbNdZV.js → store-BpCQUWkE.js} +1 -1
  126. package/dist/ui/assets/{store-CCdCzj9v.js → store-DNbNsvQ5.js} +1 -1
  127. package/dist/ui/assets/{sudo-DS92DHjZ.js → sudo-HwABgE4V.js} +1 -1
  128. package/dist/ui/assets/{sync-dialog-3CGM9fe3.js → sync-dialog-BjaW5TBb.js} +1 -1
  129. package/dist/ui/assets/{transformers-env-CpAmyrH1.js → transformers-env-Xlg2tROb.js} +1 -1
  130. package/dist/ui/assets/{tray-sidecar-BH7UW8Mw.js → tray-sidecar-KbAtqLcw.js} +1 -1
  131. package/dist/ui/assets/{upgrade-detection-dJipOZ6Y.js → upgrade-detection-BWteE-0x.js} +1 -1
  132. package/dist/ui/assets/usb-claim-broker-CnZXiC75.js +1 -0
  133. package/dist/ui/assets/usb-claim-broker-Do2ZUpNv.js +1 -0
  134. package/dist/ui/assets/usb-device-registry--JwKRTYp.js +1 -0
  135. package/dist/ui/assets/usb-device-registry-DFzxaOky.js +1 -0
  136. package/dist/ui/assets/usb-operations-B1y8RuQp.js +2 -0
  137. package/dist/ui/assets/usb-picker-O-2gFMNl.js +1 -0
  138. package/dist/ui/assets/{voice-reply-BQBf7iL6.js → voice-reply-Bju5XMHK.js} +1 -1
  139. package/dist/ui/assets/{wc-attach-DR6gOK5A.js → wc-attach-Z0pwdH9M.js} +2 -2
  140. package/dist/ui/assets/{wc-extension-BgWh03_G.js → wc-extension-_Hj1HhGf.js} +2 -2
  141. package/dist/ui/assets/wc-follower-DVUdb9Um.js +17 -0
  142. package/dist/ui/assets/{wc-follower-oauth-CltSVU2I.js → wc-follower-oauth-BPx1gTgG.js} +1 -1
  143. package/dist/ui/assets/{wc-gelatiere-B9FmNfC2.js → wc-gelatiere-C0ySyH9N.js} +1 -1
  144. package/dist/ui/assets/{wc-live-C-zLgJHl.js → wc-live-DDos6Dzx.js} +7 -7
  145. package/dist/ui/assets/{wc-nav-BKLkTYHx.js → wc-nav-B2eDg6pO.js} +2 -2
  146. package/dist/ui/assets/{wc-onboarding-CFTANPjD.js → wc-onboarding-DboQnPWI.js} +2 -2
  147. package/dist/ui/assets/{wc-permissions-Ch85s0Vv.js → wc-permissions-BEmYiApA.js} +2 -2
  148. package/dist/ui/assets/wc-permissions-providers-wSXekwkO.js +2 -0
  149. package/dist/ui/assets/{wc-placeholder-DkoxYmZF.js → wc-placeholder-BjUEI-Mu.js} +3 -3
  150. package/dist/ui/assets/{wc-secret-request-C1F8vgx_.js → wc-secret-request-DceB-GYM.js} +1 -1
  151. package/dist/ui/assets/{wc-settings-BD0xKwbB.js → wc-settings-DSED486Z.js} +3 -3
  152. package/dist/ui/assets/{wc-shell-PJT-RMat.js → wc-shell-Dukh8kBp.js} +3 -3
  153. package/dist/ui/assets/{wc-shortcut-config-CDKMKCNS.js → wc-shortcut-config-BVLmA_4e.js} +1 -1
  154. package/dist/ui/assets/{wc-shortcuts-B3zqERjU.js → wc-shortcuts-DRoF52xJ.js} +1 -1
  155. package/dist/ui/assets/{wc-sprinkles-Cr-ptPKK.js → wc-sprinkles-D-gTuKDK.js} +2 -2
  156. package/dist/ui/assets/{wc-transcript-export-BUtKuj-Y.js → wc-transcript-export-NX12cq80.js} +2 -2
  157. package/dist/ui/assets/{wc-tray-B7y37GAV.js → wc-tray-CiypFS7u.js} +4 -4
  158. package/dist/ui/assets/welcome-detection-DS0NGHuw.js +1 -0
  159. package/dist/ui/assets/{whisper-session-CM5iXItI.js → whisper-session-B2k89xAM.js} +2 -2
  160. package/dist/ui/assets/{xai-grok-dfRTs5-h.js → xai-grok-DMR1ZtnC.js} +1 -1
  161. package/dist/ui/assets/{xai-grok-CGUxsbly.js → xai-grok-cDPFunWd.js} +1 -1
  162. package/dist/ui/index.html +3 -3
  163. package/dist/ui/packages/webapp/index.html +3 -3
  164. package/package.json +3 -3
  165. package/dist/ui/assets/dist-B3W7EgGh.js +0 -12
  166. package/dist/ui/assets/dist-CmI2JIly.js +0 -18
  167. package/dist/ui/assets/main-B07t7nYY.js +0 -22
  168. package/dist/ui/assets/panel-rpc-handlers-CbqSf72n.js +0 -2
  169. package/dist/ui/assets/provider-settings-NAiB7xVN.js +0 -1
  170. package/dist/ui/assets/provider-store-access-BQN0Yp9w.js +0 -1
  171. package/dist/ui/assets/provider-store-access-D_Bfdzd6.js +0 -1
  172. package/dist/ui/assets/sidecar-repair-CUe96gCg.js +0 -1
  173. package/dist/ui/assets/slicc-version-CveLv8QB.js +0 -1
  174. package/dist/ui/assets/sprinkle-renderer-BoyNomH_.js +0 -315
  175. package/dist/ui/assets/usb-device-registry-DmUBqrA-.js +0 -1
  176. package/dist/ui/assets/usb-operations-BsAiCAWF.js +0 -1
  177. package/dist/ui/assets/usb-picker-Cbm0jfjl.js +0 -1
  178. package/dist/ui/assets/wc-follower-CCvvo0Xw.js +0 -17
  179. package/dist/ui/assets/wc-permissions-providers-CVe-8jSH.js +0 -2
  180. package/dist/ui/assets/welcome-detection-CrQU2iTI.js +0 -1
@@ -1,22 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-feature-flags-remote-CtLYq8_W.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/bridge-protocol-06nbmp2X.js","assets/proxied-fetch-DyBveeCl.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/base64-DJRlyqZu.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/messages-zAgr7E2T.js","assets/feature-flags-O-TLmy2G.js","assets/sudo-DS92DHjZ.js","assets/logger-DDBAeTLF.js","assets/quick-llm-DjQH1IOR.js","assets/account-store-Cbuyot6T.js","assets/claude-model-version-CSATLzrT.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-DGX5ohJc.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-D5_bMrnB.js","assets/approval-decision-CS9Wwm5B.js","assets/capability-DQ10DnFn.js","assets/page-approval-service-BXlCsull.js","assets/extension-bridge-transport-B-i9vQpb.js","assets/pending-request-table-k-D7ZZsL.js","assets/lick-ws-bridge-BlInST5r.js","assets/tray-leader-BmmfZ-wo.js","assets/logger-BoSvu4mW.js","assets/cdp-Clmi3S3f.js","assets/navigation-watcher-BpA1OwJw.js","assets/wc-follower-oauth-CltSVU2I.js","assets/wc-shortcuts-B3zqERjU.js","assets/sprinkle-renderer-BoyNomH_.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/usb-operations-BsAiCAWF.js","assets/usb-device-registry-DmUBqrA-.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/theme-DFKCBK8N.js","assets/theme-engine-B5SkYf3E.js","assets/slicc-app-url-B9OxaBDe.js","assets/transcript-export-DP-r8eDz.js","assets/tray-follower-status-BAjnN7Ar.js","assets/record-CCQFJXn_.js","assets/export-spool-CuNzzI8a.js","assets/src-BWaKqLvQ.js","assets/main-cherry-uc6uMkYk.js","assets/synthetic-cdp-transport-OUVdC4zy.js","assets/oauth-service-BsW9nY_u.js","assets/permissions-surface-registry-CilCRwhh.js","assets/wc-shell-PJT-RMat.js","assets/telemetry-DJyRzh6X.js","assets/wc-shell-WkeczD9x.css","assets/wc-follower-CCvvo0Xw.js","assets/wc-live-C-zLgJHl.js","assets/slugify-BYJ6QVAt.js","assets/session-jsonl-1dH4qbYh.js","assets/types-Dgm4REV3.js","assets/provider-budget-LCzMPlKv.js","assets/browser-DGwroBSO.js","assets/wc-unit-context-DhQqWVxs.js","assets/wc-sprinkles-Cr-ptPKK.js","assets/wc-attach-DR6gOK5A.js","assets/wc-permissions-Ch85s0Vv.js","assets/oauth-bootstrap-3rfPAY2v.js","assets/legacy-styles-B3nS5QUo.js","assets/connect-surface-BOV2o_6c.js","assets/wc-extension-BgWh03_G.js","assets/wc-detached-F7FTH1YG.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./modulepreload-polyfill-P2Xu9kJm.js";import{A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,R as _,S as v,T as y,U as b,V as x,W as S,X as C,Y as ee,Z as te,_ as ne,a as re,b as ie,c as ae,d as oe,f as w,g as se,h as ce,i as T,j as le,k as ue,l as de,m as fe,n as pe,o as me,p as he,q as ge,s as _e,t as ve,u as ye,v as be,w as xe,x as Se,y as Ce,z as E}from"./account-store-Cbuyot6T.js";import{t as D}from"./preload-helper-Czpn1I53.js";import{t as O}from"./logger-DDBAeTLF.js";import{i as we,n as Te,r as Ee,t as De}from"./bridge-protocol-06nbmp2X.js";import"./proxied-fetch-DyBveeCl.js";import"./messages-zAgr7E2T.js";import{n as k,t as A}from"./runtime-env-Dlaokqg1.js";import{a as Oe,c as ke,o as Ae,s as je,t as Me,u as Ne}from"./tray-runtime-config-B9jN9kUJ.js";import{c as Pe,o as j,s as Fe}from"./api-endpoint-DGxXvrur.js";import{o as Ie,t as Le}from"./telemetry-DJyRzh6X.js";import{a as Re}from"./providers-DGX5ohJc.js";import{r as ze}from"./feature-flags-O-TLmy2G.js";import{t as Be}from"./tray-follower-status-BAjnN7Ar.js";import{n as Ve}from"./clipboard-eqmn97SP.js";import{n as He}from"./tray-join-url-BIvzbiFR.js";var Ue=`role`;function We(e){if(!e)return!1;let t=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e;return!!(t===`localhost`||t===`::1`||/^127(\.\d{1,3}){3}$/.test(t))}function Ge(e){try{let t=new URL(e);return`${t.protocol===`wss:`?`https:`:`http:`}//${t.host}`}catch{return null}}function Ke(e){try{let t=new URL(e);return`${t.protocol}//${t.host}/licks-ws`}catch{return null}}function qe(e){let t;try{t=new URLSearchParams(e)}catch{return null}let n=t.get(Ee),r=t.get(Te);if(!n||!r||!/^wss?:\/\//.test(n))return null;let i;try{i=new URL(n).hostname}catch{return null}if(!We(i))return null;let a=t.get(Ue),o=a===`leader`||a===`follower`?a:null;return{url:n,subprotocol:`${De}${r}`,token:r,apiBaseUrl:Ge(n),lickWsUrl:Ke(n),role:o}}var Je=`slicc:bridge-config`,Ye=`slicc:extension-delegate-config`;function Xe(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`slicc:ext-fetch`&&typeof t.extensionId==`string`&&!!t.request&&typeof t.request==`object`}var Ze=O(`boot/ext-fetch-delegate`);function Qe(){let e=globalThis.chrome?.runtime;return e&&typeof e.connect==`function`?e:null}function $e(e,t,n){let r=Qe();if(!r){try{t.postMessage({type:`response-error`,error:`extension-delegate: chrome.runtime.connect unavailable`})}catch{}t.close();return}let i=e.extensionId||n,a;try{a=r.connect(i,{name:`fetch-proxy.fetch`})}catch(e){try{t.postMessage({type:`response-error`,error:`extension-delegate: connect failed — ${e instanceof Error?e.message:String(e)}`})}catch{}t.close();return}let o=!1,s=()=>{o=!0;try{a.disconnect()}catch{}try{t.close()}catch{}};a.onMessage.addListener(e=>{if(o)return;let n=e;try{t.postMessage(n)}catch{}(n.type===`response-end`||n.type===`response-error`)&&s()}),a.onDisconnect.addListener(()=>{if(!o){try{t.postMessage({type:`response-error`,error:`extension-delegate: fetch-proxy port disconnected`})}catch{}s()}}),a.postMessage({type:`request`,...e.request})}function et(e){typeof navigator>`u`||!navigator.serviceWorker||navigator.serviceWorker.addEventListener(`message`,t=>{if(!Xe(t.data))return;let n=t.ports?.[0];if(!n){Ze.warn(`delegated fetch envelope arrived without a response port`);return}$e(t.data,n,e)})}var tt=`slicc_feature_flags_remote`;function nt(e){return`${tt}:${e}`}function rt(e,t){let n=at(t);ze(e,ot(n,e)??{})}function it(e,t,n){try{e?.setItem(nt(t),JSON.stringify(n))}catch{}}function at(e){if(e!==void 0)return e;try{let e=globalThis.localStorage;return typeof e?.getItem!=`function`||typeof e.setItem!=`function`?void 0:e}catch{return}}function ot(e,t){try{let n=e?.getItem(nt(t));return n?st(JSON.parse(n)):null}catch{return null}}function st(e){return!ct(e)||Object.values(e).some(e=>typeof e!=`string`)?null:e}function ct(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function lt(e,t,n){if(t){try{if(new URL(e).searchParams.has(`detached`))return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);if(t.searchParams.get(`connect`)===`1`)return`connect`;if(t.searchParams.get(`runtime`)===`hosted-leader`)return`hosted-leader`;if(t.searchParams.get(`cherry`)===`1`)return`cherry`;let r=n===void 0?typeof window<`u`?window.localStorage:null:n;return je(e,r)?`follower`:dt(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function ut(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function dt(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function ft(e,t){rt(e,t.storage),D(async()=>{let{refreshFeatureFlagsForPage:e,scheduleFeatureFlagsRefresh:t}=await import(`./setup-feature-flags-remote-CtLYq8_W.js`);return{refreshFeatureFlagsForPage:e,scheduleFeatureFlagsRefresh:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])).then(({refreshFeatureFlagsForPage:n,scheduleFeatureFlagsRefresh:r})=>(r(e,t),n(e,t))).catch(()=>{})}function pt(e){let t=lt(e.locationHref,e.isExtension,e.storage);return ft(t,e),t}function mt(){if(k())return;let e=new Blob([`
3
- let lastPong = Date.now();
4
- let frozen = false;
5
- setInterval(() => {
6
- postMessage({ type: 'ping' });
7
- const elapsed = Date.now() - lastPong;
8
- if (elapsed > 5000 && !frozen) {
9
- frozen = true;
10
- postMessage({ type: 'freeze-detected', elapsed });
11
- }
12
- }, 2000);
13
- self.onmessage = (e) => {
14
- if (e.data.type === 'pong') {
15
- lastPong = Date.now();
16
- if (frozen) {
17
- frozen = false;
18
- postMessage({ type: 'freeze-recovered' });
19
- }
20
- }
21
- };
22
- `],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}var ht=`slicc-nuke-control`,gt=[`slicc:welcome-flow-fired`,`slicc.trayJoinUrl`,`slicc.trayWorkerBaseUrl`];function _t(e=()=>location.reload()){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel(ht),n=t=>{let n=t.data;if(n?.type===`nuke-reload`){if(Array.isArray(n.keysToRemove)){for(let e of n.keysToRemove)if(typeof e==`string`)try{localStorage.removeItem(e)}catch{}}e()}};return t.addEventListener(`message`,n),()=>{t.removeEventListener(`message`,n),t.close()}}var M=null;function vt(){return M||(M=_t(),M)}O(`stale-asset`);var yt=`slicc-stale-asset-reload`;function bt(e,t){if(typeof BroadcastChannel!=`function`)return()=>{};let n=new BroadcastChannel(yt),r=n=>{let r=n.data;r?.type===`stale-asset-reload`&&r.instanceId===e&&t(r.replayTurn===!0)};return n.addEventListener(`message`,r),()=>{n.removeEventListener(`message`,r),n.close()}}var xt=`slicc:stale-asset-reloaded-at`,St=6e4,N=`slicc:stale-asset-replay`;function Ct(e=window.sessionStorage){try{e.setItem(N,`1`)}catch{}}function wt(e=window.sessionStorage){try{return e.getItem(N)===`1`&&(e.removeItem(N),!0)}catch{return!1}}function Tt(){return{reload:()=>window.location.reload(),storage:window.sessionStorage,now:()=>Date.now(),windowMs:St,storageKey:xt}}function Et(e,t,n){return e===null||t-e>=n}function P(e=Tt()){let t;try{t=e.storage.getItem(e.storageKey)}catch{return!1}let n=t===null?null:Number(t),r=n!==null&&Number.isFinite(n)?n:null,i=e.now();if(!Et(r,i,e.windowMs))return!1;try{e.storage.setItem(e.storageKey,String(i))}catch{return!1}return e.reload(),!0}var F=null,I=null;function Dt(e){F||(I={...Tt(),...e},F=e=>{P(I)&&e.preventDefault()},window.addEventListener(`vite:preloadError`,F))}var L=null;function Ot(e){return L||(L=bt(e,e=>{e&&Ct(),P(I??void 0)}),L)}var kt=`slicc-cdp-superseded-banner`;function At(e){if(e.getElementById(kt))return;let t=e.createElement(`div`);t.id=kt,t.setAttribute(`role`,`alert`),t.textContent=`Another SLICC tab or window has taken control of this browser instance. Only one tab can drive the browser per instance — close the other tabs, then reload this page to resume.`,t.style.cssText=[`position:fixed`,`top:0`,`left:0`,`right:0`,`z-index:2147483647`,`padding:10px 16px`,`background:#b3261e`,`color:#fff`,`font:13px/1.4 system-ui,sans-serif`,`text-align:center`,`box-shadow:0 1px 4px rgba(0,0,0,0.3)`].join(`;`),e.body.appendChild(t)}var jt=e({setupSudoExtension:()=>Mt,setupSudoStandalone:()=>R});async function R(e){let{createSudoBroker:t,installSudoTestHook:n}=await D(async()=>{let{createSudoBroker:e,installSudoTestHook:t}=await import(`./sudo-DS92DHjZ.js`);return{createSudoBroker:e,installSudoTestHook:t}},__vite__mapDeps([12,5,13,14,4,15,16,17,18,19,20,21,22,6,3,7,8,9,23,24,25,26,27,28,29,30,31,32,33,34,35])),{createRestCapabilityBroker:r}=await D(async()=>{let{createRestCapabilityBroker:e}=await import(`./capability-DQ10DnFn.js`).then(e=>e.t);return{createRestCapabilityBroker:e}},__vite__mapDeps([34,4,5]));n(t(r()))}async function Mt(e){let{installPanelSudoResponder:t}=await D(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-DS92DHjZ.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([12,5,13,14,4,15,16,17,18,19,20,21,22,6,3,7,8,9,23,24,25,26,27,28,29,30,31,32,33,34,35]));t()}function Nt(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function z(e){let t;try{t=new URLSearchParams(e)}catch{return null}if(t.get(`slicc`)!==`leader`)return null;let n=t.get(`ext`);return n?{extensionId:n}:null}var Pt=[100,200,400,800,1600];async function B(e,t,n,r=Pt,i=e=>new Promise(t=>setTimeout(t,e))){let a=r.length+1,o=null;for(let s=0;s<a;s++)try{await e.connect(t),s>0&&n.info(`CDP bridge connect succeeded after retry`,{attempt:s+1});return}catch(e){o=e,s<r.length&&await i(r[s]??0)}n.warn(`Initial CDP connect failed after retries; worker-forwarded commands will retry on demand`,o instanceof Error?o.message:String(o))}async function Ft(e,t,n){let{ExtensionBridgeTransport:r}=await D(async()=>{let{ExtensionBridgeTransport:e}=await import(`./extension-bridge-transport-B-i9vQpb.js`);return{ExtensionBridgeTransport:e}},__vite__mapDeps([36,13,37])),{mapDiscoveryPayloadToLickEvent:i,mapNavigatePayloadToLickEvent:a}=await D(async()=>{let{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}=await import(`./lick-ws-bridge-BlInST5r.js`);return{mapDiscoveryPayloadToLickEvent:e,mapNavigatePayloadToLickEvent:t}},__vite__mapDeps([38,13,39,4,3,5,6,7,8,9,1,2,10,40])),o=null,s=[],c=!1,l=e=>{o=e;for(let t of s)e.sendForwardedLick(t);s.length=0},u=e=>{if(e){if(o){o.sendForwardedLick(e);return}s.length>=50&&(s.shift(),c||(c=!0,n.warn(`extension-bridge lick buffer overflow (cap 50); dropping oldest pending licks until the kernel client attaches`))),s.push(e)}},d=new e(new r({extensionId:t,onLick:e=>{u(a(e))},onDiscovery:e=>{u(i(e))},onOpenSettings:()=>{globalThis.dispatchEvent(new CustomEvent(`slicc:open-settings-from-panel`))}}));return await B(d,void 0,n),{browser:d,attachLickForwardingClient:l}}async function It(e){let{runtimeMode:t,envBaseUrl:n,window:r,log:i,sleep:a}=e,o=t===`electron-overlay`;i.info(`setting up standalone page runtime (BrowserAPI + CDP)`,{runtimeMode:t});let{BrowserAPI:s}=await D(async()=>{let{BrowserAPI:e}=await import(`./cdp-Clmi3S3f.js`);return{BrowserAPI:e}},__vite__mapDeps([41,13,42,2,43,4,5,44,15,16,17,18,19,20,21,22,6,3,7,8,9,23,24,25,26,27,28,29,30,32,45,46,47,48,49,50,51,52,53,54,55,56,37,57,58,59]));await R({log:i});let c,l,u,d=null,f=null,p=null,m=null,h,g=t===`cherry`?null:z(r.location.search),_=!!g&&A(),v=t===`cherry`||_?null:qe(r.location.search);v?.apiBaseUrl&&(d=v.apiBaseUrl,Pe(v.apiBaseUrl),f=v.token,j(v.token)),v?.lickWsUrl&&(p=v.lickWsUrl);let y=t===`cherry`||_||v!==null,b=await Oe(),x=ut(t,b!==null)?Me:null;if(await ke({locationHref:r.location.href,storage:r.localStorage,envBaseUrl:n,defaultWorkerBaseUrl:x,runtimeConfigFetcher:async()=>b}),t===`cherry`){let{setupCherryFollower:e}=await D(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-uc6uMkYk.js`);return{setupCherryFollower:e}},__vite__mapDeps([60,13,55,37,41,42,2,43,4,5,44,15,16,17,18,19,20,21,22,6,3,7,8,9,23,24,25,26,27,28,29,30,32,45,46,47,48,49,50,51,52,53,54,56,57,58,59,61])),t=await e();c=t.browser,l=t.joinUrl,u=t.transport}else if(g&&A()){i.info(`Routing CDP through the extension bridge (leader tab)`);let e=await Ft(s,g.extensionId,i);c=e.browser,h=e.attachLickForwardingClient,m=g.extensionId,Fe(g.extensionId)}else{c=new s,v&&i.info(`Routing CDP through local standalone bridge`,{url:v.url,role:v.role??`(unset)`});let e=v?{url:v.url,protocols:v.subprotocol}:void 0;v?.role===`follower`?(i.info(`Skipping CDP connect for follower overlay tab`),c.primeConnectOptions(e)):(await B(c,e,i,void 0,a),c.setCdpSupersededHandler(()=>At(r.document)))}let S=c.getUnderlyingTransport();return globalThis.__slicc_browser=c,{browser:c,realCdpTransport:S,hasLocalCdpSurface:y,cherryJoinUrl:l,cherryTransport:u,instanceId:Nt(),isElectronOverlay:o,localApiBaseUrl:d,bridgeToken:f,localLickWsUrl:p,extensionDelegateId:m,attachLickForwardingClient:h}}var V=O(`storage-persist`);function Lt(){try{return globalThis.navigator?.storage}catch{return}}async function Rt(e=Lt()){try{return typeof e?.persist==`function`?typeof e.persisted==`function`&&await e.persisted()?`already-persisted`:await e.persist()?`granted`:`denied`:`unsupported`}catch(e){return V.warn(`storage persistence check failed`,e),`failed`}}var zt=!1;function Bt(){zt||(zt=!0,Rt().then(e=>{switch(e){case`granted`:V.info(`OPFS marked persistent — SLICC data is now exempt from disk-pressure eviction`);break;case`already-persisted`:V.debug(`OPFS already persistent`);break;case`denied`:V.warn(`Browser declined persistent storage — SLICC data can be evicted if the disk fills up`);break;case`unsupported`:V.debug(`navigator.storage.persist() unavailable in this runtime`)}}).catch(()=>{}))}var H=O(`boot/sw-registration`);async function Vt(e=null,t=null){let n=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&n&&await Wt())return`reload-pending`;if(!(`serviceWorker`in navigator)||n)return`ready`;try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),H.info(`Preview SW registered`),!k())try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),H.info(`LLM-proxy SW registered`)}catch(e){H.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`))return sessionStorage.setItem(`slicc-sw-reloaded`,`1`),H.info(`Reloading once to gain SW control`),location.reload(),`reload-pending`;sessionStorage.removeItem(`slicc-sw-reloaded`),e&&(Ht(e),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{Ht(e)})),t&&(Ut(t),navigator.serviceWorker.addEventListener(`controllerchange`,()=>{Ut(t)}))}catch(e){H.error(`Preview SW registration failed — preview feature will not work`,e)}return`ready`}function Ht(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:Je,apiBaseUrl:e.apiBaseUrl,token:e.token};try{t.postMessage(n)}catch(e){H.warn(`LLM-proxy SW bridge-config postMessage failed`,e)}}function Ut(e){let t=navigator.serviceWorker.controller;if(!t)return;let n={type:Ye,extensionId:e.extensionId};try{t.postMessage(n)}catch(e){H.warn(`LLM-proxy SW extension-delegate postMessage failed`,e)}}async function Wt(){try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`))return sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),H.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload(),!0;sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){H.error(`connect-mode SW cleanup failed`,e)}return!1}var Gt=e({ACCOUNTS_KEY:()=>ve,__test__:()=>pe,addAccount:()=>T,applyProviderDefaults:()=>re,clearAllSettings:()=>me,clearApiKey:()=>_e,clearBaseUrl:()=>ae,clearSelectedProvider:()=>de,describeInvalidJoinUrl:()=>He,downloadProviders:()=>Yt,ensureOAuthMaskReplica:()=>ye,exportProviders:()=>oe,getAccounts:()=>w,getAllAvailableModels:()=>he,getAllExtraOAuthDomains:()=>fe,getAlternativeModelProviders:()=>ce,getApiKey:()=>se,getApiKeyForProvider:()=>ne,getApiVersionForProvider:()=>be,getAvailableProviders:()=>Ce,getBaseUrl:()=>ie,getBaseUrlForProvider:()=>Se,getDeploymentForProvider:()=>v,getExtraOAuthDomains:()=>r,getOAuthAccountInfo:()=>xe,getProviderConfig:()=>y,getProviderModels:()=>a,getRawApiKeyForProvider:()=>i,getSelectedModelId:()=>h,getSelectedProvider:()=>ue,isModelHiddenFromPicker:()=>t,isUsableOAuthMaskReplica:()=>le,logoutOAuthAccount:()=>p,maskOAuthTokenWithRetry:()=>m,migrateLegacyAuthOnlySelection:()=>g,modelRunsOnProvider:()=>o,persistOAuthMaskViaServiceWorker:()=>l,policyVisible:()=>f,providerOffersLlmModels:()=>_,reloginOAuthAccount:()=>Qt,removeAccount:()=>E,resolveCurrentModel:()=>n,resolveModelById:()=>x,resolveModelByShorthand:()=>c,resolveModelIdForScoop:()=>b,resolveModelSelectionForScoop:()=>S,saveOAuthAccount:()=>s,setApiKey:()=>d,setBaseUrl:()=>ge,setExtraOAuthDomains:()=>u,setExtraOAuthDomainsAsync:()=>ee,setSelectedModelId:()=>C,setSelectedProvider:()=>te,showProviderSettings:()=>vn,testOnlyDispatchTrayJoinWithFailureFeedback:()=>qt}),Kt=O(`provider-settings`);function qt(e,t){return Jt(e,t)}function Jt(e,t){let n=`tray-join-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=!1,i,a=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),window.removeEventListener(`slicc:tray-join-failed`,o))},o=r=>{let i=r.detail;if(i.requestId!==void 0&&i.requestId!==n)return;if(a(),!t.isConnected){Kt.error(`Tray-join failure arrived after dialog dismissed (UX swallowed half-state)`,{joinUrl:e,error:i.error,requestId:n});return}let o=t.dataset.dismissTimer;if(o){let e=Number(o);Number.isFinite(e)&&clearTimeout(e),delete t.dataset.dismissTimer}t.textContent=`Sync failed: ${i.error}. Reload the page and try again.`,t.style.color=`var(--slicc-cone)`};return window.addEventListener(`slicc:tray-join-failed`,o),i=setTimeout(a,1e4),window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e,requestId:n}})),a}function Yt(){let e=JSON.stringify(oe(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}function Xt(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function U(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var W={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`],logout:[`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,`M16 17l5-5-5-5`,`M21 12H9`],login:[`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,`M10 17l5-5-5-5`,`M15 12H3`]},G=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;function K(e,t){e.addEventListener(`mouseenter`,()=>{e.style.color=t,e.style.borderColor=t}),e.addEventListener(`mouseleave`,()=>{e.style.color=`var(--s2-content-secondary)`,e.style.borderColor=`var(--s2-border-subtle)`})}function q(e){e.overlay.remove(),e.resolve((localStorage.getItem(`slicc_accounts`)??``)!==e.accountsBefore)}function J(e){e.options?.startInAddAccount?q(e):Y(e)}function Zt(e){let t=document.createElement(`div`);return t.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,e.loggedOut?(t.textContent=e.userName?`Logged out — was ${e.userName}`:`Logged out`,t.style.color=`var(--s2-content-disabled)`):t.textContent=e.userName?e.userName:e.accessToken?`Logged in`:Xt(e.apiKey),e.baseUrl&&(t.textContent+=` • `+e.baseUrl),t}async function Qt(e,t){let{createOAuthLauncher:n,createInterceptingOAuthLauncherForCurrentRuntime:r}=await D(async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await import(`./oauth-service-BsW9nY_u.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},__vite__mapDeps([62,5,3,4,6,7,8,9,29,63])),i={forceReauth:!0};if(e.onOAuthLoginIntercepted){let n=await r();n&&await e.onOAuthLoginIntercepted(n,t,i)}else if(e.onOAuthLogin){let r=n();await e.onOAuthLogin(r,t,i)}}function $t(e,t){let n=document.createElement(`button`);return n.style.cssText=G,n.setAttribute(`aria-label`,`Edit account`),n.appendChild(U(W.pen)),K(n,`var(--s2-accent)`),n.addEventListener(`click`,()=>Z(e,t)),n}function en(e,t,n){let r=document.createElement(`button`);return r.style.cssText=G,t.loggedOut===!0?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(U(W.login)),K(r,`var(--s2-accent)`),r.addEventListener(`click`,()=>{Qt(n,()=>Y(e))})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(U(W.logout)),K(r,`var(--s2-warning, #f59e0b)`),r.addEventListener(`click`,()=>{(async()=>{await p(t.providerId),Y(e)})()})),r}function tn(e,t){let n=document.createElement(`button`);return n.style.cssText=G,n.setAttribute(`aria-label`,`Remove account`),n.appendChild(U(W.trash)),K(n,`var(--s2-negative)`),n.addEventListener(`click`,()=>{(async()=>{await E(t.providerId),Y(e)})()}),n}function nn(e,t){let n=y(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a),i.appendChild(Zt(t)),r.appendChild(i);let o=document.createElement(`div`);return o.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`,o.appendChild($t(e,t)),n.isOAuth&&o.appendChild(en(e,t,n)),o.appendChild(tn(e,t)),r.appendChild(o),r}function rn(e){let t=document.createDocumentFragment(),n=document.createElement(`hr`);n.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.cssText=`font-weight: 600; margin-bottom: 8px;`,r.textContent=`Tray`,t.appendChild(r);let i=Be(),a=i.state!==`inactive`,o=Ae(window.localStorage);if(a||o){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${a?i.state:`configured`}`,i.error&&(e.textContent+=` — ${i.error}`,e.style.color=`var(--slicc-cone)`),t.appendChild(e)}let s=document.createElement(`button`);return s.className=`dialog__btn dialog__btn--secondary`,s.textContent=a||o?`Reconnect to other browser`:`Connect to another browser`,s.addEventListener(`click`,()=>Q(e)),t.appendChild(s),t}function Y(e){let{dialog:t}=e;t.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Accounts`,t.appendChild(n);let r=w();if(r.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,t.appendChild(e)}else{let n=document.createElement(`div`);n.style.cssText=`margin-bottom: 16px;`;for(let t of r)n.appendChild(nn(e,t));t.appendChild(n)}let i=document.createElement(`div`);i.style.cssText=`display: flex; gap: 8px;`;let a=document.createElement(`button`);a.className=r.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,a.style.flex=`1`,a.textContent=`Add Account`,a.addEventListener(`click`,()=>Z(e)),i.appendChild(a);let o=document.createElement(`button`);o.className=`dialog__btn dialog__btn--secondary`,o.style.flex=`1`,o.textContent=`Export`,o.addEventListener(`click`,()=>Yt()),i.appendChild(o),t.appendChild(i),t.appendChild(rn(e));let s=document.createElement(`hr`);s.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,t.appendChild(s);let c=document.createElement(`button`);c.className=`dialog__btn`,c.textContent=`Get Started`,c.addEventListener(`click`,()=>q(e)),t.appendChild(c)}function an(e,t){let n=document.createElement(`select`);if(n.className=`dialog__input`,n.style.marginBottom=`8px`,t){let e=y(t.providerId),r=document.createElement(`option`);return r.value=t.providerId,r.textContent=e.name,n.appendChild(r),n.disabled=!0,n.style.opacity=`0.7`,n}let r=document.createElement(`option`);r.value=``,r.textContent=`Select a provider…`,r.disabled=!0,r.selected=!0,r.hidden=!0,n.appendChild(r);let i=new Set(w().map(e=>e.providerId)),a=[...Ce()].sort((e,t)=>y(e).name.localeCompare(y(t).name));for(let t of a){if(i.has(t))continue;if(e?.providerFilter){if(!e.providerFilter(t))continue}else if(!_(t))continue;let r=document.createElement(`option`);r.value=t,r.textContent=y(t).name,n.appendChild(r)}return n}function on(e,t){let n=an(e,t),r=document.createElement(`div`);r.className=`dialog__desc`,r.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`;let i=document.createElement(`div`);i.style.cssText=`margin-bottom: 16px; display: none;`;let a=document.createElement(`button`);a.className=`dialog__btn`,a.textContent=`Login`,a.style.cssText=`width: 100%; margin-bottom: 8px;`,i.appendChild(a);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,i.appendChild(o);let s=document.createElement(`div`),c=document.createElement(`div`);c.className=`dialog__desc`,s.appendChild(c);let l=document.createElement(`input`);l.className=`dialog__input`,l.type=`password`,l.autocomplete=`off`,l.spellcheck=!1,t&&(l.value=t.apiKey),s.appendChild(l);let u=document.createElement(`div`),d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Base URL:`,u.appendChild(d);let f=document.createElement(`input`);f.className=`dialog__input`,f.type=`text`,f.autocomplete=`off`,f.spellcheck=!1,t?.baseUrl&&(f.value=t.baseUrl),u.appendChild(f);let p=document.createElement(`div`);p.className=`dialog__desc`,p.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,u.appendChild(p);let m=document.createElement(`div`);m.style.display=`none`;let h=document.createElement(`div`);h.className=`dialog__desc`,h.textContent=`Deployment:`,m.appendChild(h);let g=document.createElement(`input`);g.className=`dialog__input`,g.type=`text`,g.autocomplete=`off`,g.spellcheck=!1,t?.deployment&&(g.value=t.deployment),m.appendChild(g);let _=document.createElement(`div`);_.className=`dialog__desc`,_.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,m.appendChild(_);let v=document.createElement(`div`);v.style.display=`none`;let y=document.createElement(`div`);y.className=`dialog__desc`,y.textContent=`API Version:`,v.appendChild(y);let b=document.createElement(`input`);b.className=`dialog__input`,b.type=`text`,b.autocomplete=`off`,b.spellcheck=!1,t?.apiVersion&&(b.value=t.apiVersion),v.appendChild(b);let x=document.createElement(`div`);x.className=`dialog__desc`,x.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,v.appendChild(x);let S=document.createElement(`div`);S.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`;let C=document.createElement(`button`);return C.className=`dialog__btn`,C.textContent=t?`Save`:`Add`,{providerSelect:n,providerDesc:r,oauth:{section:i,loginBtn:a,status:o},apiKeySection:s,apiKeyLabel:c,apiKeyInput:l,baseUrlSection:u,baseUrlInput:f,baseUrlDesc:p,deploymentSection:m,deploymentInput:g,deploymentDesc:_,apiVersionSection:v,apiVersionInput:b,apiVersionDesc:x,errorEl:S,saveBtn:C}}function sn(e){let t=document.createElement(`div`);t.setAttribute(`data-slicc-device-code-prompt`,``),t.style.cssText=`display:flex;flex-direction:column;gap:8px`;let n=document.createElement(`div`);n.className=`dialog__desc`,n.textContent=`Verification code`,n.style.cssText=`font-size: 11px; color: var(--s2-content-tertiary);`;let r=document.createElement(`div`);r.textContent=e,r.style.cssText=[`font: 600 22px ui-monospace, SFMono-Regular, Menlo, monospace`,`letter-spacing: 2px`,`color: var(--s2-content-primary, #e6edf3)`,`background: var(--s2-bg-secondary, #161b22)`,`border: 1px solid var(--s2-border, #30363d)`,`border-radius: 6px`,`padding: 10px 12px`,`text-align: center`,`user-select: all`,`cursor: text`].join(`;`);let i=document.createElement(`div`);i.className=`dialog__desc`,i.style.cssText=`font-size: 12px; color: var(--s2-content-secondary);`,i.textContent=`Click Copy & Continue — we will open the GitHub authorization page in a new tab. Paste this code there if it is not already filled in.`;let a=document.createElement(`div`);a.style.cssText=`display:flex;gap:8px;justify-content:flex-end;margin-top:4px`;let o=document.createElement(`button`);o.type=`button`,o.className=`dialog__btn`,o.textContent=`Cancel`;let s=document.createElement(`button`);return s.type=`button`,s.className=`dialog__btn dialog__btn--primary`,s.textContent=`Copy & Continue`,a.appendChild(o),a.appendChild(s),t.appendChild(n),t.appendChild(r),t.appendChild(i),t.appendChild(a),{prompt:t,cancelBtn:o,continueBtn:s}}function cn(e){return t=>new Promise(n=>{let r=e.loginBtn.style.display,i=e.status.style.display;e.loginBtn.style.display=`none`,e.status.style.display=`none`;let{prompt:a,cancelBtn:o,continueBtn:s}=sn(t.userCode),c=()=>{try{a.remove()}catch{}e.loginBtn.style.display=r,e.status.style.display=i};o.addEventListener(`click`,()=>{c(),n(`cancel`)}),s.addEventListener(`click`,()=>{(async()=>{try{await Ve(t.userCode)}catch{}c(),e.status.style.display=i,e.status.textContent=`Waiting for you to authorize in the new tab…`,n(`continue`)})()}),e.section.appendChild(a)})}async function ln(e,t){let n=t.providerSelect.value;if(!n)return;let r=y(n);if(!r.onOAuthLogin&&!r.onOAuthLoginIntercepted)return;let{status:i}=t.oauth,a=w().some(e=>e.providerId===n),o=Se(n);if(r.requiresBaseUrl&&!t.baseUrlInput.value.trim()&&!o){i.textContent=`Base URL is required.`,i.style.color=`var(--slicc-cone)`,t.baseUrlInput.focus();return}r.requiresBaseUrl&&t.baseUrlInput.value.trim()&&T(n,``,t.baseUrlInput.value.trim()),i.textContent=`Opening login window...`;try{if(r.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:n}=await D(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([62,5,3,4,6,7,8,9,29,63])),i=await n();if(!i)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await r.onOAuthLoginIntercepted(i,()=>J(e),{presentDeviceCode:cn(t.oauth)})}else if(r.onOAuthLogin){let{createOAuthLauncher:t}=await D(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createOAuthLauncher:e}},__vite__mapDeps([62,5,3,4,6,7,8,9,29,63])),n=t();await r.onOAuthLogin(n,()=>J(e))}}catch(e){if(!a)try{await E(n)}catch{}Kt.error(`OAuth login failed`,{providerId:n,error:e instanceof Error?e.message:String(e)}),i.textContent=`Login failed: ${e instanceof Error?e.message:String(e)}`}}function un(e,t){if(t.isOAuth){e.oauth.section.style.display=``,e.apiKeySection.style.display=`none`,e.baseUrlSection.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(e.baseUrlInput.placeholder=t.baseUrlPlaceholder||`https://...`,e.baseUrlDesc.textContent=t.baseUrlDescription||``),e.oauth.loginBtn.textContent=`Login with ${t.name}`,e.saveBtn.style.display=`none`;return}e.oauth.section.style.display=`none`;let n=t.requiresApiKey?`API Key`:`API Key (optional)`;e.apiKeyLabel.textContent=`${n}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,e.apiKeyInput.placeholder=t.apiKeyPlaceholder||`API key`,e.apiKeySection.style.display=t.requiresApiKey||t.optionalApiKey?``:`none`,e.baseUrlInput.placeholder=t.baseUrlPlaceholder||`https://...`,e.baseUrlDesc.textContent=t.baseUrlDescription||``,e.baseUrlSection.style.display=t.requiresBaseUrl?``:`none`,e.saveBtn.style.display=``}function dn(e,t){t.requiresDeployment?(e.deploymentSection.style.display=``,e.deploymentInput.placeholder=t.deploymentPlaceholder||`deployment-name`,e.deploymentDesc.textContent=t.deploymentDescription||``):e.deploymentSection.style.display=`none`}function fn(e,t){t.requiresApiVersion?(e.apiVersionSection.style.display=``,!e.apiVersionInput.value&&t.apiVersionDefault&&(e.apiVersionInput.value=t.apiVersionDefault),e.apiVersionInput.placeholder=t.apiVersionDefault||`api-version`,e.apiVersionDesc.textContent=t.apiVersionDescription||``):e.apiVersionSection.style.display=`none`}function pn(e){let t=e.providerSelect.value;if(!t){e.providerDesc.textContent=``,e.oauth.section.style.display=`none`,e.apiKeySection.style.display=`none`,e.baseUrlSection.style.display=`none`,e.deploymentSection.style.display=`none`,e.apiVersionSection.style.display=`none`,e.saveBtn.style.display=`none`;return}let n=y(t);e.providerDesc.textContent=n.description,un(e,n),dn(e,n),fn(e,n)}function X(e,t){let n=t.providerSelect.value;if(!n)return;let r=y(n),i=(e,n)=>{t.errorEl.textContent=e,t.errorEl.style.display=``,n.focus()};if(r.requiresApiKey&&t.apiKeyInput.value.trim().length<5){i(`API key is required (at least 5 characters).`,t.apiKeyInput);return}if(r.requiresBaseUrl&&!t.baseUrlInput.value.trim()){i(`Base URL is required for this provider.`,t.baseUrlInput);return}if(r.requiresDeployment&&!t.deploymentInput.value.trim()){i(`Deployment name is required for this provider.`,t.deploymentInput);return}T(n,t.apiKeyInput.value.trim(),t.baseUrlInput.value.trim()||void 0,t.deploymentInput.value.trim()||void 0,t.apiVersionInput.value.trim()||void 0),J(e)}function mn(e,t){let{dialog:n,options:r}=e,i=w().length>0;if(r?.startInAddAccount){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Cancel`,t.addEventListener(`click`,()=>q(e)),n.appendChild(t)}else if(!t&&!i){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Connect to another browser`,t.addEventListener(`click`,()=>Q(e)),n.appendChild(t)}else if(i){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Back`,t.addEventListener(`click`,()=>Y(e)),n.appendChild(t)}}function Z(e,t){let{dialog:n}=e;n.innerHTML=``;let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=t?`Edit Account`:`Add Account`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=`Provider:`,n.appendChild(i);let a=on(e.options,t);n.appendChild(a.providerSelect),n.appendChild(a.providerDesc),a.oauth.loginBtn.addEventListener(`click`,()=>{ln(e,a)}),t?.userName&&(a.oauth.status.textContent=`Logged in as ${t.userName}`,a.oauth.loginBtn.textContent=`Re-login`),n.appendChild(a.oauth.section),n.appendChild(a.apiKeySection),n.appendChild(a.baseUrlSection),n.appendChild(a.deploymentSection),n.appendChild(a.apiVersionSection),n.appendChild(a.errorEl),a.providerSelect.addEventListener(`change`,()=>{a.errorEl.style.display=`none`,pn(a)}),pn(a),a.saveBtn.addEventListener(`click`,()=>X(e,a));let o=t=>{t.key===`Enter`&&X(e,a)};a.apiKeyInput.addEventListener(`keydown`,o),a.baseUrlInput.addEventListener(`keydown`,o),a.deploymentInput.addEventListener(`keydown`,o),a.apiVersionInput.addEventListener(`keydown`,o),n.appendChild(a.saveBtn),mn(e,!!t),requestAnimationFrame(()=>{let e=a.providerSelect.value;if(!e)return;let t=y(e);t.requiresApiKey?a.apiKeyInput.focus():t.requiresBaseUrl&&a.baseUrlInput.focus()})}function hn(e,t,n){Jt(t,n),n.textContent=`Connecting…`,n.style.display=``,n.style.color=`var(--s2-content-secondary)`;let r=setTimeout(()=>{e.overlay.remove(),e.resolve(!1)},800);n.dataset.dismissTimer=String(r)}function gn(e,t){let{dialog:n}=e;n.innerHTML=``;let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=`Connect this browser?`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.style.marginBottom=`12px`,i.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,n.appendChild(i);let a=document.createElement(`div`);a.className=`dialog__desc`,a.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,a.textContent=t.length>80?t.slice(0,40)+`…`+t.slice(-37):t,n.appendChild(a);let o=document.createElement(`div`);o.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,n.appendChild(o);let s=document.createElement(`button`);s.className=`dialog__btn`,s.textContent=`Connect`,s.addEventListener(`click`,()=>{let n=Ne(window.localStorage,t);if(!n){o.textContent=`Invalid sync URL.`,o.style.display=``,o.style.color=`var(--slicc-cone)`;return}hn(e,n.joinUrl,o)}),n.appendChild(s);let c=document.createElement(`button`);c.className=`dialog__btn dialog__btn--secondary`,c.style.marginTop=`8px`,c.textContent=`Set up an account instead`,c.addEventListener(`click`,()=>Z(e)),n.appendChild(c)}function _n(){let e=document.createElement(`details`);e.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let t=document.createElement(`summary`);t.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,t.textContent=`How do I get the sync URL?`,e.appendChild(t);let n=document.createElement(`div`);n.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let r=document.createElement(`ol`);r.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,r.appendChild(t)}return n.appendChild(r),e.appendChild(n),e}function Q(e){let{dialog:t}=e;t.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect to another browser`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.marginBottom=`12px`,r.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,t.appendChild(r),t.appendChild(_n());let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=`Sync URL:`,t.appendChild(i);let a=document.createElement(`input`);a.className=`dialog__input`,a.type=`text`,a.autocomplete=`off`,a.spellcheck=!1,a.placeholder=`${we}/join/<token>`,t.appendChild(a);let o=document.createElement(`div`);o.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,t.appendChild(o);let s=document.createElement(`div`);s.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let c=document.createElement(`button`);c.className=`dialog__btn`,c.textContent=`Connect`,c.addEventListener(`click`,()=>{let t=a.value.trim();if(!t){o.textContent=`Paste a sync URL to continue.`,o.style.display=``,a.focus();return}let n=Ne(window.localStorage,t);if(!n){o.textContent=He(t),o.style.display=``,a.focus();return}hn(e,n.joinUrl,s)}),t.appendChild(c),t.appendChild(s);let l=document.createElement(`button`);l.className=`dialog__btn dialog__btn--secondary`,l.style.marginTop=`8px`,l.textContent=`Back`,l.addEventListener(`click`,()=>Z(e)),t.appendChild(l),a.addEventListener(`input`,()=>{o.style.display=`none`}),a.addEventListener(`keydown`,e=>{e.key===`Enter`&&c.click()}),requestAnimationFrame(()=>a.focus())}function vn(e){return Ie(`button`),new Promise(t=>{let n=document.createElement(`div`);n.className=`dialog-overlay`;let r=document.createElement(`div`);r.className=`dialog`,r.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`;let i={overlay:n,dialog:r,options:e,accountsBefore:localStorage.getItem(`slicc_accounts`)??``,resolve:t};e?.startInAddAccount?Z(i):w().length>0?Y(i):e?.autoJoinUrl?gn(i,e.autoJoinUrl):e?.preferTrayJoin?Q(i):Z(i),n.appendChild(r),document.body.appendChild(n)})}var $=O(`main`);function yn(e){try{return new URL(e).searchParams.has(`ui-fixture`)}catch{return!1}}async function bn(){Dt();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);let t=k(),n=pt({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,isDev:!1,isExtension:t});if(yn(window.location.href)){let{mountWcUiPreview:t}=await D(async()=>{let{mountWcUiPreview:e}=await import(`./wc-shell-PJT-RMat.js`).then(e=>e.s);return{mountWcUiPreview:e}},__vite__mapDeps([64,4,15,5,16,17,18,19,20,21,22,13,6,3,7,8,9,23,24,25,26,27,28,29,30,44,32,51,2,65,66]));t(e);return}mt(),vt(),Bt(),n!==`connect`&&Le({isExtensionRealm:t}).catch(()=>{});let r=qe(window.location.search),i=n===`cherry`?null:z(window.location.search),a=!!i&&A();if(await Vt(r?{apiBaseUrl:r.apiBaseUrl,token:r.token}:null,a&&i?{extensionId:i.extensionId}:null)===`reload-pending`)return;if(!t&&(n===`follower`||n===`cherry`)){let{bootFollowerFloat:t}=await D(async()=>{let{bootFollowerFloat:e}=await import(`./wc-follower-CCvvo0Xw.js`);return{bootFollowerFloat:e}},__vite__mapDeps([67,5,13,55,43,4,44,15,16,17,18,19,20,21,22,6,3,7,8,9,23,24,25,26,27,28,29,30,32,45,46,47,48,49,50,51,52,53,54,2,56,37,57,58,59,1,10,68,69,70,71,65,11,72,63,73,39,64,66,74,75,76,77]));return t(e,$,n)}await Re(),re(),r?.apiBaseUrl&&!a&&(Pe(r.apiBaseUrl),j(r.token));let{bootstrapOAuthReplicas:o}=await D(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-3rfPAY2v.js`);return{bootstrapOAuthReplicas:e}},__vite__mapDeps([78,15,4,5,16,17,18,19,20,21,22,13,6,3,7,8,9,23,24,25,26,27,28,29,30,40]));if(await Promise.race([o().catch(e=>{$.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),n===`connect`){globalThis.__slicc_connect_mode=!0;let{loadLegacyStyles:t}=await D(async()=>{let{loadLegacyStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadLegacyStyles:e}},__vite__mapDeps([79,5]));await t();let{mountConnectSurface:n}=await D(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-BOV2o_6c.js`);return{mountConnectSurface:e}},__vite__mapDeps([80,15,4,5,16,17,18,19,20,21,22,13,6,3,7,8,9,23,24,25,26,27,28,29,30]));await n(e);return}if(t){let{bootExtensionFloat:t}=await D(async()=>{let{bootExtensionFloat:e}=await import(`./wc-extension-BgWh03_G.js`);return{bootExtensionFloat:e}},__vite__mapDeps([81,5,68,4,15,16,17,18,19,20,21,22,13,6,3,7,8,9,23,24,25,26,27,28,29,30,44,32,45,46,47,48,49,50,51,52,53,69,55,70,71,1,2,10,65,11,56,59,72,63,73,39,57,64,66,74,82]));return t(e,$,n===`extension-detached`)}a&&i&&et(i.extensionId);let{bootLeaderFloat:s}=await D(async()=>{let{bootLeaderFloat:e}=await import(`./wc-live-C-zLgJHl.js`).then(e=>e.n);return{bootLeaderFloat:e}},__vite__mapDeps([68,4,15,5,16,17,18,19,20,21,22,13,6,3,7,8,9,23,24,25,26,27,28,29,30,44,32,45,46,47,48,49,50,51,52,53,69,55,70,71,1,2,10,65,11,56,59,72,63,73,39,57,64,66,74]));return s(e,$,n)}function xn(e,t){let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.textContent=`Failed to start`;let i=document.createElement(`p`);i.textContent=t instanceof Error?t.message:String(t);let a=document.createElement(`button`);a.type=`button`,a.textContent=`Reload`,a.addEventListener(`click`,()=>location.reload()),n.append(r,i,a),e.replaceChildren(n)}async function Sn(e,t){let n;try{({renderBootRecoveryScreen:n}=await D(()=>import(`./recovery-screen-D3_zoZq2.js`),[]))}catch{xn(e,t);return}if(n(e,t),t instanceof Error&&t.message.includes(`did not signal ready`))try{let{triageModuleWorkerHealth:r}=await D(async()=>{let{triageModuleWorkerHealth:e}=await import(`./worker-triage-BvsMZrdR.js`);return{triageModuleWorkerHealth:e}},[]),i=await r();i===`browser-wedged`&&n(e,t,{verdict:i})}catch{}}bn().catch(e=>{$.error(`Fatal error`,e);let t=document.getElementById(`app`);t&&Sn(t,e)});export{wt as a,gt as c,We as d,jt as i,at as l,vn as n,P as o,It as r,Ot as s,Gt as t,it as u};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secrets-bridge-client--VZ3E0yk.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/port-bridge-client-Dn8JtUyP.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-DyBveeCl.js","assets/base64-DJRlyqZu.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/mount-bridge-client-DQaM1wCj.js","assets/types-Dgm4REV3.js","assets/page-approval-service-BXlCsull.js","assets/float-topology-YtctpJaG.js","assets/speak-Ck274s4Y.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-CpAmyrH1.js","assets/wc-shortcuts-B3zqERjU.js","assets/account-store-Cbuyot6T.js","assets/claude-model-version-CSATLzrT.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/secret-topology-DLJBhHOi.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-DGX5ohJc.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/icons-D5_bMrnB.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/hear-BJOAYoZe.js","assets/permissions-surface-registry-CilCRwhh.js","assets/whisper-session-CM5iXItI.js","assets/esptool-operations-CiccBbBW.js","assets/rom-eeWiO07Z.js","assets/mount-picker-popup--ijSfN8u.js","assets/picker-popup-sQtXmfAo.js","assets/theme-engine-B5SkYf3E.js"])))=>i.map(i=>d[i]);
2
- import{J as e,m as t}from"./account-store-Cbuyot6T.js";import{t as n}from"./preload-helper-Czpn1I53.js";import"./proxied-fetch-DyBveeCl.js";import{a as r,t as i}from"./api-endpoint-DGxXvrur.js";import"./main-B07t7nYY.js";import{n as a,r as o}from"./hid-device-registry-B2R-0rNt.js";import{a as s,i as c}from"./serial-port-registry-CCqklAEr.js";import{A as l,C as u,D as d,E as ee,M as te,O as ne,S as re,T as ie,_ as ae,a as oe,b as se,c as ce,d as le,f as ue,g as f,h as p,i as m,j as h,k as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,w as D,x as O,y as k}from"./usb-operations-BsAiCAWF.js";import{i as A,r as j}from"./usb-device-registry-DmUBqrA-.js";function M(e={}){let t=new Map;return{...R(),...z(e),...de(),...B(e),...V(e),...H(),...fe(e,t),...pe(),...me(e),...he(e),..._e(e),...L(),...F(),...I(),...N(),...P(),...Te(),...Ee()}}function N(){return{"secrets-bridge":async({type:e,payload:t})=>{let{callSecretsBridge:r}=await n(async()=>{let{callSecretsBridge:e}=await import(`./secrets-bridge-client--VZ3E0yk.js`).then(e=>e.t);return{callSecretsBridge:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));return{response:await r(e,t)}}}}function P(){return{"mount-sign-and-forward":async({type:e,envelope:t})=>{let{callMountBridge:r}=await n(async()=>{let{callMountBridge:e}=await import(`./mount-bridge-client-DQaM1wCj.js`);return{callMountBridge:e}},__vite__mapDeps([10,2,3,4,5,1,6,7,8,9,11]));return{response:await r(e,t)}}}}function F(){return{"sudo-request":async({request:e,mode:t})=>{let{resolveSudoApprovalInPage:r}=await n(async()=>{let{resolveSudoApprovalInPage:e}=await import(`./page-approval-service-BXlCsull.js`);return{resolveSudoApprovalInPage:e}},__vite__mapDeps([12,4,13,5,1,3,6,7,8,9]));return r(e,t??`resolve`)}}}function I(){return{"secret-request":async e=>{let{getSecretRequestSurface:t}=await n(async()=>{let{getSecretRequestSurface:e}=await import(`./secret-request-registry-DrOMKR1H.js`);return{getSecretRequestSurface:e}},[]),r=t();return r?r(e):{stored:!1,reason:`unavailable`}}}}function L(){return{"proxied-fetch":async({url:e,method:t,headers:r,body:i})=>{let{collectViaExtensionDelegate:a}=await n(async()=>{let{collectViaExtensionDelegate:e}=await import(`./proxied-fetch-DyBveeCl.js`).then(e=>e.i);return{collectViaExtensionDelegate:e}},__vite__mapDeps([5,1,3,6,7,8,9])),{head:o,body:s}=await a(e,{method:t,headers:r,body:i});return{head:o,body:s}}}}function R(){return{"page-info":()=>({origin:window.location.origin,href:window.location.href,title:document.title||``}),screencapture:async({mimeType:e,quality:t})=>{let n=await Ce(e,t),r=await n.arrayBuffer(),i=await we(n);return{bytes:r,width:i.width,height:i.height,mimeType:e}},"speak-text":async({text:e,lang:t,voice:r,rate:i,pitch:a,volume:o})=>{let{speak:s}=await n(async()=>{let{speak:e}=await import(`./speak-Ck274s4Y.js`);return{speak:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,13,26,0,2,27,28,29,30,31,32,33]));return await s({text:e,lang:t,voice:r,rate:i,pitch:a,volume:o}),{done:!0}},"list-voices":async()=>{let{kokoroVoicesIfReady:e}=await n(async()=>{let{kokoroVoicesIfReady:e}=await import(`./speak-Ck274s4Y.js`);return{kokoroVoicesIfReady:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,13,26,0,2,27,28,29,30,31,32,33])),t=e().map(e=>({name:e.id,lang:e.lang,default:!1,onDevice:e.onDevice}));if(typeof speechSynthesis>`u`){if(t.length>0)return{voices:t};throw Error(`speechSynthesis is unavailable in this page`)}let r=speechSynthesis.getVoices();if(r.length>0)return{voices:[...t,...r.map(Z)]};let i=await new Promise(e=>{let t=()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())};speechSynthesis.addEventListener(`voiceschanged`,t),setTimeout(()=>{speechSynthesis.removeEventListener(`voiceschanged`,t),e(speechSynthesis.getVoices())},1e3)});return{voices:[...t,...i.map(Z)]}},"speak-status":async()=>{let{kokoroStatus:e}=await n(async()=>{let{kokoroStatus:e}=await import(`./speak-Ck274s4Y.js`);return{kokoroStatus:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,13,26,0,2,27,28,29,30,31,32,33]));return e()},"speak-warmup":async()=>{let{kokoroWarmup:e}=await n(async()=>{let{kokoroWarmup:e}=await import(`./speak-Ck274s4Y.js`);return{kokoroWarmup:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,13,26,0,2,27,28,29,30,31,32,33]));return e()},"synthesize-to-wav":async({text:e,lang:t,voice:r,rate:i})=>{let{synthesizeToWav:a}=await n(async()=>{let{synthesizeToWav:e}=await import(`./speak-Ck274s4Y.js`);return{synthesizeToWav:e}},__vite__mapDeps([14,3,4,9,15,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,13,26,0,2,27,28,29,30,31,32,33])),o=await a({text:e,...t===void 0?{}:{lang:t},...r===void 0?{}:{voice:r},...i===void 0?{}:{rate:i}});return{bytes:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}},"play-audio":async({bytes:e,volume:t})=>{if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let n=new AudioContext;try{let r=await n.decodeAudioData(e.slice(0)),i=n.createBufferSource();if(i.buffer=r,t!==void 0){let e=n.createGain();e.gain.value=Math.max(0,Math.min(1,t)),i.connect(e),e.connect(n.destination)}else i.connect(n.destination);await new Promise(e=>{i.onended=()=>e(),i.start()})}finally{try{await n.close()}catch{}}return{done:!0}},"play-chime":async({tone:e})=>{let t={success:[880,1320],error:[440,220],notify:[660,660]},[n,r]=t[e??`notify`]??t.notify;if(typeof AudioContext>`u`)throw Error(`Web Audio API is unavailable in this page`);let i=new AudioContext;try{let e=i.currentTime;for(let[t,a]of[n,r].entries()){let n=i.createOscillator();n.type=`sine`,n.frequency.value=a;let r=i.createGain();r.gain.setValueAtTime(1e-4,e+t*.18),r.gain.exponentialRampToValueAtTime(.2,e+t*.18+.02),r.gain.exponentialRampToValueAtTime(1e-4,e+t*.18+.18),n.connect(r),r.connect(i.destination),n.start(e+t*.18),n.stop(e+t*.18+.2)}await new Promise(e=>setTimeout(e,450))}finally{try{await i.close()}catch{}}return{done:!0}}}}function z(e={}){return{"clipboard-read-text":async()=>{if(!navigator.clipboard?.readText)throw Error(`clipboard API unavailable`);return{text:await navigator.clipboard.readText()}},"clipboard-write-text":async({text:e})=>{if(!navigator.clipboard?.writeText)throw Error(`clipboard API unavailable`);return await $(),await navigator.clipboard.writeText(e),{done:!0}},"clipboard-write-image":async({bytes:e,mimeType:t})=>{if(!navigator.clipboard?.write||typeof ClipboardItem>`u`)throw Error(`clipboard image API unavailable`);let n,r=new Blob([e],{type:t});return n=t===`image/png`?r:await Q(r),await $(),await navigator.clipboard.write([new ClipboardItem({"image/png":n})]),{done:!0}},"window-open":async({url:e,target:t,features:n})=>({opened:window.open(e,t??`_blank`,n??`noopener,noreferrer`)!==null}),"oauth-popup":async({url:t})=>{let n=await e.delegateOAuthLogin?.(t);return n?.delegated?{redirectUrl:n.redirectUrl,error:n.error}:{redirectUrl:await xe(t,e.getPermissionsSurface)}},"oauth-route":async()=>({delegate:await e.shouldDelegateOAuth?.()===!0}),"capture-camera":async e=>await ye(e),"enumerate-media-devices":async()=>{if(!navigator.mediaDevices?.enumerateDevices)throw Error(`enumerateDevices is not supported in this browser`);let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}}}}function de(){return{"hear-capture":async e=>{let{hearCapture:t}=await n(async()=>{let{hearCapture:e}=await import(`./hear-BJOAYoZe.js`);return{hearCapture:e}},__vite__mapDeps([34,4,35,36,3,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,9,13,26,0,2,27,28,29,30,31,32,33]));return await t(e??{})},"hear-transcribe":async({bytes:e,lang:t})=>{let{hearTranscribe:r}=await n(async()=>{let{hearTranscribe:e}=await import(`./hear-BJOAYoZe.js`);return{hearTranscribe:e}},__vite__mapDeps([34,4,35,36,3,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,9,13,26,0,2,27,28,29,30,31,32,33]));return await r(e,t)},"hear-status":async()=>{let{hearStatus:e}=await n(async()=>{let{hearStatus:e}=await import(`./hear-BJOAYoZe.js`);return{hearStatus:e}},__vite__mapDeps([34,4,35,36,3,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,9,13,26,0,2,27,28,29,30,31,32,33]));return e()},"hear-warmup":async()=>{let{hearWarmup:e}=await n(async()=>{let{hearWarmup:e}=await import(`./hear-BJOAYoZe.js`);return{hearWarmup:e}},__vite__mapDeps([34,4,35,36,3,16,17,1,18,19,20,21,22,23,24,25,6,5,7,8,9,13,26,0,2,27,28,29,30,31,32,33]));return e()}}}function B(r){return{"tray-reset":async()=>{if(!r.resetTray)throw Error(`host reset: no active tray session to reset`);return await r.resetTray()},"tray-webhook-rotate":async()=>{if(!r.rotateWebhook)throw Error(`webhook rotate: no active leader tray`);return await r.rotateWebhook()},"tray-webhook-revoke":async e=>{if(!r.revokeWebhook)throw Error(`webhook delete: no active leader tray`);return await r.revokeWebhook(e.webhookId),{ok:!0}},"tray-open-preview":async e=>{if(!r.mintPreview)throw Error(`serve: no active leader tray; cannot mint preview`);return await r.mintPreview(e)},"tray-revoke-preview":async e=>{if(!r.revokePreview)throw Error(`serve: no active leader tray; cannot revoke preview`);return await r.revokePreview(e)},"tray-list-previews":async()=>{if(!r.listPreviews)throw Error(`serve: no active leader tray; cannot list previews`);return await r.listPreviews()},"tray-mint-biscotto":async e=>{if(!r.mintBiscotto)throw Error(`biscotto: no active leader tray; cannot mint a seat`);return await r.mintBiscotto(e)},"tray-revoke-biscotto":async e=>{if(!r.revokeBiscotto)throw Error(`biscotto revoke: no active leader tray; cannot revoke a seat`);return await r.revokeBiscotto(e)},"tray-list-biscotti":async()=>{if(!r.listBiscotti)throw Error(`biscotti: no active leader tray; cannot list seats`);return await r.listBiscotti()},"tray-preview-logs":async({previewToken:e})=>{if(!r.getPreviewLifecycleRecords)throw Error(`serve --logs: no active leader tray; cannot read preview logs`);return r.getPreviewLifecycleRecords(e)},"tray-preview-truncate":async({previewToken:e})=>{if(!r.truncatePreviewLifecycleRecords)throw Error(`serve --truncate: no active leader tray; cannot truncate preview logs`);return r.truncatePreviewLifecycleRecords(e)},"tray-leave":async({workerBaseUrl:e,requestId:t})=>{if(!r.leaveTray)throw Error(`host leave: tray leave is not available in this environment`);return await r.leaveTray({workerBaseUrl:e,requestId:t})},"tray-join":async({joinUrl:e,requestId:t})=>{if(!r.joinTray)throw Error(`host join: tray join is not available in this environment`);return await r.joinTray({joinUrl:e,requestId:t})},"cherry-emit":async({runtimeId:e,name:t,detail:n})=>{if(!r.emitCherrySliccEvent)throw Error(`cherry-emit: not available in this environment`);return{delivered:r.emitCherrySliccEvent(e,t,n)}},"tray-exec":async e=>{if(!r.execOnRemote)throw Error(`ssh: no active leader tray in this environment`);return await r.execOnRemote(e)},"tray-exec-signal":({execToken:e})=>(r.signalRemoteExec?.({execToken:e}),{ok:!0}),"oauth-extras-set":({providerId:n,domains:r})=>(e(n,r),{storeAfter:t()}),"silent-renew":async({providerId:e})=>{let{getRegisteredProviderConfig:t}=await n(async()=>{let{getRegisteredProviderConfig:e}=await import(`./providers-DGX5ohJc.js`).then(e=>e.r);return{getRegisteredProviderConfig:e}},__vite__mapDeps([28,1,3])),r=t(e);return r?.onSilentRenew?{accessToken:await r.onSilentRenew()}:{accessToken:null}},"save-oauth-accounts":({accountsJson:e})=>(localStorage.setItem(`slicc_accounts`,e),{storedJson:localStorage.getItem(`slicc_accounts`)??e})}}function V(e){let t=new Map,n=()=>{if(!e.sliccSidecar)throw Error(`slicc: sidecar attachments are not available in this environment`);return e.sliccSidecar},r=async(e,r)=>{let i=n(),a=new AbortController;t.set(e,a);try{return await r(i,a.signal)}finally{t.delete(e)}};return{"slicc-attach":async({joinUrl:e,name:t,connectTimeoutMs:r})=>await n().attach({joinUrl:e,name:t,connectTimeoutMs:r}),"slicc-detach":({name:e})=>({detached:n().detach(e)}),"slicc-list":()=>({attachments:n().list()}),"slicc-prompt":async({name:e,text:t,runToken:n,steer:i,timeoutMs:a})=>await r(n,async(n,r)=>await n.prompt(e,t,{steer:i,timeoutMs:a,signal:r})),"slicc-exec":async({name:e,command:t,runToken:n,cwd:i,env:a,timeoutMs:o,stdin:s})=>await r(n,async(n,r)=>await n.exec(e,t,{cwd:i,env:a,timeoutMs:o,stdin:s,signal:r})),"slicc-watch":async({name:e,runToken:t,durationMs:n,scoopJid:i,untilIdle:a})=>await r(t,async(t,r)=>await t.watch(e,{durationMs:n,scoopJid:i,untilIdle:a,signal:r})),"slicc-cancel":({runToken:e})=>(t.get(e)?.abort(),{ok:!0})}}function H(){return{"usb-list":async()=>({devices:await C(U(),W())}),"usb-request":async({filters:e})=>({device:await T(U(),W(),e)}),"usb-device-info":({handle:e})=>({device:b(U(),e)}),"usb-open":async({handle:e})=>(await ce(U(),e),{done:!0}),"usb-close":async({handle:e})=>(await S(U(),e),{done:!0}),"usb-select-configuration":async({handle:e,configurationValue:t})=>(await ue(U(),e,t),{done:!0}),"usb-claim-interface":async({handle:e,interfaceNumber:t})=>(await w(U(),e,t),{done:!0}),"usb-release-interface":async({handle:e,interfaceNumber:t})=>(await _(U(),e,t),{done:!0}),"usb-control-transfer-in":async({handle:e,setup:t,length:n})=>m(U(),e,t,n),"usb-control-transfer-out":async({handle:e,setup:t,bytes:n})=>oe(U(),e,t,n),"usb-transfer-in":async({handle:e,endpointNumber:t,length:n})=>x(U(),e,t,n),"usb-transfer-out":async({handle:e,endpointNumber:t,bytes:n})=>v(U(),e,t,n),"usb-reset":async({handle:e})=>(await le(U(),e),{done:!0}),"usb-clear-halt":async({handle:e,direction:t,endpointNumber:n})=>(await y(U(),e,t,n),{done:!0})}}function fe(e,t){return{"hid-list":async()=>({devices:await ae(G(),K())}),"hid-request":async({filters:e})=>({devices:await se(G(),K(),e)}),"hid-device-info":({handle:e})=>({device:f(G(),e)}),"hid-open":async({handle:e})=>(await E(G(),e),{done:!0}),"hid-close":async({handle:e})=>(await p(G(),e),{done:!0}),"hid-send-report":async({handle:e,reportId:t,bytes:n})=>(await re(G(),e,t,n),{done:!0}),"hid-send-feature-report":async({handle:e,reportId:t,bytes:n})=>(await O(G(),e,t,n),{done:!0}),"hid-receive-feature-report":async({handle:e,reportId:t})=>k(G(),e,t),"hid-subscribe-input-reports":async({handle:n})=>{t.get(n)?.();let r=await u(G(),n,t=>{e.emitEvent?.(`hid-input-report`,{handle:n,reportId:t.reportId,bytes:t.bytes})});return t.set(n,r),{done:!0}},"hid-unsubscribe-input-reports":({handle:e})=>(t.get(e)?.(),t.delete(e),{done:!0})}}function pe(){return{"serial-list":async()=>({devices:await d(q(),J())}),"serial-request":async({filters:e})=>({device:await l(q(),J(),e)}),"serial-device-info":({handle:e})=>({device:ie(q(),e)}),"serial-open":async({handle:e,options:t})=>(await ne(q(),e,t),{done:!0}),"serial-close":async({handle:e})=>(await D(q(),e),{done:!0}),"serial-read":async({handle:e,maxBytes:t,until:n,timeoutMs:r})=>{let i=await g(q(),e,{maxBytes:t,until:n?new Uint8Array(n):void 0,timeoutMs:r});return{bytes:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength)}},"serial-write":async({handle:e,bytes:t})=>({bytesWritten:await te(q(),e,new Uint8Array(t))}),"serial-get-signals":async({handle:e})=>({signals:await ee(q(),e)}),"serial-set-signals":async({handle:e,signals:t})=>(await h(q(),e,t),{done:!0})}}function me(e){return{"esptool-chip-info":async({handle:t,baudRate:r})=>(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolChipInfo(q(),t,r,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),"esptool-read-mac":async({handle:t,baudRate:r})=>(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolReadMac(q(),t,r,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),"esptool-erase-flash":async({handle:t,baudRate:r})=>(await(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolEraseFlash(q(),t,r,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),{done:!0}),"esptool-flash":async({handle:t,baudRate:r,eraseAll:i,segments:a})=>(await(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolFlash(q(),t,r,i,a.map(e=>({address:e.address,data:new Uint8Array(e.bytes)})),n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),{done:!0}),"esptool-read-flash":async({handle:t,baudRate:r,address:i,size:a})=>{let o=await(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolReadFlash(q(),t,r,i,a,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n}));return{bytes:o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}},"esptool-read-reg":async({handle:t,baudRate:r,address:i})=>(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolReadReg(q(),t,r,i,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),"esptool-flash-id":async({handle:t,baudRate:r})=>(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolFlashId(q(),t,r,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),"esptool-erase-region":async({handle:t,baudRate:r,address:i,size:a})=>(await(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolEraseRegion(q(),t,r,i,a,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),{done:!0}),"esptool-run":async({handle:t,baudRate:r})=>(await(await n(()=>import(`./esptool-operations-CiccBbBW.js`),__vite__mapDeps([37,1,3,38]))).esptoolRun(q(),t,r,n=>e.emitEvent?.(`esptool-progress`,{handle:t,line:n})),{done:!0})}}function he(e){return{"list-remote-targets":async()=>e.listRemoteTargets?{targets:(await e.listRemoteTargets()).filter(e=>e.targetId.includes(`:`)).map(e=>({targetId:e.targetId,title:e.title,url:e.url}))}:{targets:[]},"remote-cdp-send":async({runtimeId:t,localTargetId:n,method:r,params:i,sessionId:a,timeout:o})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.send({runtimeId:t,localTargetId:n,method:r,params:i,sessionId:a,timeout:o})},"remote-cdp-subscribe":async({runtimeId:t,localTargetId:n,event:r})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.subscribe({runtimeId:t,localTargetId:n,event:r})},"remote-cdp-unsubscribe":async({runtimeId:t,localTargetId:n,event:r})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.unsubscribe({runtimeId:t,localTargetId:n,event:r})},"remote-cdp-detach":async({runtimeId:t,localTargetId:n})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.detach({runtimeId:t,localTargetId:n})},"remote-open-tab":async({runtimeId:t,url:n})=>{if(!e.remoteCdp)throw Error(`remote-cdp bridge not available`);return e.remoteCdp.openTab({runtimeId:t,url:n})}}}function ge(e,t){return t===void 0?e.length>0&&e.every(e=>e===`camera`||e===`microphone`):t}function _e(e){return{"permission-request":async t=>{let r=e.getPermissionsSurface?.()??null;if(!r)throw Error(`permission-request: permission surface unavailable`);let i=await r.prompt({kinds:t.kinds,description:t.description,heading:t.heading,grantLabel:t.grantLabel,cancelLabel:t.cancelLabel,skipIfGranted:ge(t.kinds,t.skipIfGranted)});if(i.status!==`granted`){let e=i.message?`: ${i.message}`:``;throw Error(`permission-request: ${i.reason??i.status}${e}`)}let a=[];for(let e of i.grants)switch(e.kind){case`usb`:{let t=U().register(e.device);a.push({kind:`usb`,handle:t});break}case`hid`:{let t=G().register(e.device);a.push({kind:`hid`,handle:t});break}case`serial`:{let t=q().register(e.port);a.push({kind:`serial`,handle:t});break}case`filesystem`:{let{storePendingHandle:t}=await n(async()=>{let{storePendingHandle:e}=await import(`./mount-picker-popup--ijSfN8u.js`);return{storePendingHandle:e}},__vite__mapDeps([39,4,40,9])),r=`pendingMount:rpc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;await t(r,e.handle),a.push({kind:`filesystem`,idbKey:r,dirName:e.handle.name});break}case`camera`:case`microphone`:case`screenshare`:for(let t of e.stream.getTracks())t.stop();a.push({kind:e.kind,ok:!0})}return{grants:a}}}}function U(){return A()}function W(){let e=j();if(!e)throw Error(`WebUSB is unavailable in this browser`);return e}function G(){return o()}function K(){let e=a();if(!e)throw Error(`WebHID is unavailable in this browser`);return e}function q(){return s()}function J(){let e=c();if(!e)throw Error(`Web Serial is unavailable in this browser`);return e}var ve=1500;async function ye(e){if(!navigator.mediaDevices?.getUserMedia)throw Error(`getUserMedia is not supported in this browser`);let t=e.mode===`photo`||e.captureVideo!==!1,n=!!e.captureAudio&&e.mode===`video`;if(!t&&!n)throw Error(`camera capture: at least one of video or audio must be requested`);let r=await be({wantVideo:t,videoDeviceId:t?await Y(e.deviceId,`videoinput`):void 0,audioDeviceId:n?await Y(e.audioDeviceId,`audioinput`):void 0,wantAudio:n,width:e.width,height:e.height,frameRate:e.frameRate,exact:!!e.exactSize});try{let n=null,i=0,a=0;if(t){n=document.createElement(`video`),n.srcObject=r,n.muted=!0,n.playsInline=!0;let e=n;await new Promise((t,n)=>{e.onloadedmetadata=()=>e.play().then(()=>t()).catch(n),e.onerror=()=>n(Error(`Failed to load camera stream`))}),await new Promise(e=>requestAnimationFrame(()=>e())),await new Promise(e=>requestAnimationFrame(()=>e())),i=e.videoWidth,a=e.videoHeight}if(e.mode===`photo`){if(!n)throw Error(`photo capture requires a video track`);let t=e.warmupMs??ve;t>0&&await new Promise(e=>setTimeout(e,t));let r=document.createElement(`canvas`);r.width=i,r.height=a;let o=r.getContext(`2d`);if(!o)throw Error(`Failed to get canvas context`);o.drawImage(n,0,0,i,a);let s=await new Promise((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to encode photo`)),e.mimeType,e.quality)});return{bytes:await s.arrayBuffer(),mimeType:s.type||e.mimeType,width:i,height:a}}let o=Math.max(100,Math.min(e.durationMs??5e3,6e4)),s=typeof MediaRecorder<`u`&&MediaRecorder.isTypeSupported(e.mimeType)?e.mimeType:`video/webm`,c=new MediaRecorder(r,{mimeType:s}),l=[];c.ondataavailable=e=>{e.data&&e.data.size>0&&l.push(e.data)};let u=new Promise(e=>{c.onstop=()=>e()});c.start(),await new Promise(e=>setTimeout(e,o)),c.stop(),await u;let d=new Blob(l,{type:s});return{bytes:await d.arrayBuffer(),mimeType:d.type||s,width:i,height:a,durationMs:o}}finally{r.getTracks().forEach(e=>{e.stop()})}}async function Y(e,t){if(e===void 0||e===``)return;if(!/^\d+$/.test(e))return e;if(!navigator.mediaDevices?.enumerateDevices)return;let n=parseInt(e,10);return(await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===t)[n]?.deviceId}async function be(e){let t=t=>{if(!e.wantVideo)return!1;let n={};return e.videoDeviceId&&(n.deviceId={exact:e.videoDeviceId}),e.width&&(n.width=t===`exact`?{exact:e.width}:{ideal:e.width}),e.height&&(n.height=t===`exact`?{exact:e.height}:{ideal:e.height}),e.frameRate&&(n.frameRate=t===`exact`?{exact:e.frameRate}:{ideal:e.frameRate}),Object.keys(n).length>0?n:!0},n=()=>e.wantAudio?!e.audioDeviceId||{deviceId:{exact:e.audioDeviceId}}:!1;try{return await navigator.mediaDevices.getUserMedia({video:t(e.exact?`exact`:`ideal`),audio:n()})}catch(r){let i=r?.name;if(!e.exact||i!==`OverconstrainedError`&&i!==`NotReadableError`)throw r;return console.warn(`panel-rpc:capture-camera: exact ${e.width??`?`}x${e.height??`?`}@${e.frameRate??`?`} unmet, falling back to ideal`),await navigator.mediaDevices.getUserMedia({video:t(`ideal`),audio:n()})}}async function xe(e,t){if((typeof navigator<`u`?navigator.userActivation:void 0)?.isActive===!0)return X(window.open(e,`_blank`,`width=500,height=700,popup=yes`));let n=t?.()??null;if(n){let t=await Se(n,e);return t===void 0?null:X(t)}return X(window.open(e,`_blank`,`width=500,height=700,popup=yes`))}function X(e){return new Promise(t=>{let n=!1,a=null,o=()=>{n||(n=!0,window.removeEventListener(`message`,s),clearTimeout(c),a&&clearInterval(a))},s=n=>{if(n.data?.type!==`oauth-callback`||n.origin!==window.location.origin||e&&n.source!==e)return;if(o(),n.data.error){console.error(`[panel-rpc:oauth-popup] OAuth error:`,n.data.error),t(null);return}let r=n.data.redirectUrl;(typeof r==`string`||r==null)&&t(r??null)};window.addEventListener(`message`,s),a=setInterval(async()=>{if(!n)try{let e=await fetch(r(`/api/oauth-result`),{headers:i()});if(e.status===204||!e.ok)return;let a=await e.json();if(n)return;if(o(),a.error){console.error(`[panel-rpc:oauth-popup] Server relay OAuth error:`,a.error),t(null);return}t(a.redirectUrl??null)}catch(e){console.warn(`[panel-rpc:oauth-popup] Poll failed:`,e instanceof Error?e.message:String(e))}},1e3);let c=setTimeout(()=>{o();try{e?.close()}catch{}t(null)},12e4)})}async function Se(e,t){let n=await e.prompt({kinds:[`popup`],description:`Continue to sign in. A new window will open to the provider.`,grantLabel:`Continue`,requestOptions:{popup:{url:t}}});if(n.status!==`granted`)return;let r=n.grants.find(e=>e.kind===`popup`);return r&&r.kind===`popup`?r.window:null}function Z(e){return{name:e.name,lang:e.lang,default:e.default,onDevice:!1}}async function Ce(e,t){if(!navigator.mediaDevices?.getDisplayMedia)throw Error(`screen capture is not supported in this browser`);let n=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let r=document.createElement(`video`);r.srcObject=n,r.muted=!0,r.playsInline=!0,await new Promise((e,t)=>{r.onloadedmetadata=()=>r.play().then(()=>e()).catch(t),r.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100));let i=r.videoWidth,a=r.videoHeight,o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);return s.drawImage(r,0,0,i,a),await new Promise((n,r)=>{o.toBlob(e=>e?n(e):r(Error(`Failed to create image blob`)),e,t)})}finally{n.getTracks().forEach(e=>{e.stop()})}}async function we(e){let t=URL.createObjectURL(e);try{let e=new Image;return await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to decode capture`)),e.src=t}),{width:e.naturalWidth,height:e.naturalHeight}}finally{URL.revokeObjectURL(t)}}async function Q(e){let t=URL.createObjectURL(e);try{let e=new Image;await new Promise((n,r)=>{e.onload=()=>n(),e.onerror=()=>r(Error(`Failed to load image for clipboard conversion`)),e.src=t});let n=document.createElement(`canvas`);n.width=e.naturalWidth,n.height=e.naturalHeight;let r=n.getContext(`2d`);if(!r)throw Error(`Failed to get canvas context`);return r.drawImage(e,0,0),await new Promise((e,t)=>{n.toBlob(n=>n?e(n):t(Error(`PNG re-encode failed`)),`image/png`)})}finally{URL.revokeObjectURL(t)}}async function $(e=3e5){typeof document>`u`||typeof document.hasFocus==`function`&&(document.hasFocus()||await new Promise((t,n)=>{let r=()=>{window.removeEventListener(`focus`,i),document.removeEventListener(`visibilitychange`,a),clearTimeout(o)},i=()=>{document.hasFocus()&&(r(),t())},a=()=>{document.visibilityState===`visible`&&document.hasFocus()&&(r(),t())},o=setTimeout(()=>{r(),n(Error(`timed out waiting for window focus`))},e);window.addEventListener(`focus`,i),document.addEventListener(`visibilitychange`,a)}))}function Te(){return{"theme-apply":async({themeJson:e,action:t})=>{let{importTheme:r,saveCustomTheme:i,setActiveTheme:a,clearActiveTheme:o,applyThemeOverrides:s}=await n(async()=>{let{importTheme:e,saveCustomTheme:t,setActiveTheme:n,clearActiveTheme:r,applyThemeOverrides:i}=await import(`./theme-engine-B5SkYf3E.js`).then(e=>e.m);return{importTheme:e,saveCustomTheme:t,setActiveTheme:n,clearActiveTheme:r,applyThemeOverrides:i}},__vite__mapDeps([41,1,4]));if(t===`reset`)return o(),s(),{applied:null};if(e){let t=r(e);return i(t),a(t.id),s(),{applied:t.id}}return{applied:null}}}}function Ee(){return{"layout-apply":async e=>{let{getLayoutApplier:t}=await n(async()=>{let{getLayoutApplier:e}=await import(`./layout-apply-registry-Cw730jao.js`);return{getLayoutApplier:e}},[]),r=t();return r?await r(e)??{applied:!0}:{applied:!1,error:`no layout is mounted`}}}}export{M as createStandalonePanelRpcHandlers};
@@ -1 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import"./account-store-B3TDSGgR.js";import"./core-D59qaXEb.js";import"./tray-runtime-config--rtR6Gxd.js";e(`provider-settings`);
@@ -1 +0,0 @@
1
- import{t as e}from"./store-CCdCzj9v.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-C1hg69QS.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{i as e,n as t}from"./fs-Ci2s9_2x.js";export{t as repairOpfsMetadataSidecar,e as resolveWithSidecarRepair};
@@ -1 +0,0 @@
1
- function e(){return{version:`6.154.0`,releasedAt:`2026-09-14T17:37:41Z`,buildId:`6.154.0-mu1j040x`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
@@ -1,315 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slicc-editor-BwV9b9S6.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/upgrade-own-properties-DI0JKxGt.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{J as t}from"./wc-shortcuts-B3zqERjU.js";import{n,r}from"./hid-device-registry-B2R-0rNt.js";import{a as i,i as a}from"./serial-port-registry-CCqklAEr.js";import{A as o,C as s,D as c,O as l,S as u,T as d,_ as f,a as p,b as m,c as h,d as g,f as ee,g as te,h as ne,i as re,l as _,m as ie,n as ae,o as oe,p as v,r as y,s as b,t as x,u as S,v as C,w}from"./usb-operations-BsAiCAWF.js";import{i as se,r as T}from"./usb-device-registry-DmUBqrA-.js";import"./shared-mBEktoxE.js";import{a as E,n as ce,r as le}from"./theme-DFKCBK8N.js";function D(){try{let e=globalThis.window??globalThis;return e.self!==e.top}catch{return!0}}var O=new WeakSet;function k(e,t){if(O.has(e)){t?.();return}let n=!1;A(e,t,()=>{n=!0}),setTimeout(()=>{n||e.isConnected&&A(e)},500)}function A(e,t,n){if(O.has(e)){t?.();return}O.add(e);let r=e.style.display;e.style.display=`none`;let i=!1,a=a=>{i||(i=!0,e.style.display=r,O.delete(e),a&&n?.(),t?.())},o=globalThis.requestAnimationFrame;typeof o==`function`&&o(()=>{o(()=>a(!0))}),setTimeout(()=>a(!1),100)}var j=`
3
- var _themeOverrideKeys = [];
4
- var _themeCssStyle = null;
5
- function applyIframeTheme(event) {
6
- if (event.source !== parent) return;
7
- var msg = event.data;
8
- document.documentElement.classList.toggle('theme-light', !!msg.isLight);
9
- var rootStyle = document.documentElement.style;
10
- _themeOverrideKeys.forEach(function(key) { rootStyle.removeProperty(key); });
11
- _themeOverrideKeys = [];
12
- Object.entries(msg.overrides || {}).forEach(function(entry) {
13
- if (entry[0].startsWith('--') && typeof entry[1] === 'string') {
14
- rootStyle.setProperty(entry[0], entry[1]);
15
- _themeOverrideKeys.push(entry[0]);
16
- }
17
- });
18
- if (typeof msg.css === 'string' && msg.css) {
19
- if (!_themeCssStyle) {
20
- _themeCssStyle = document.createElement('style');
21
- _themeCssStyle.id = 'slicc-iframe-theme-overrides';
22
- document.head.appendChild(_themeCssStyle);
23
- }
24
- _themeCssStyle.textContent = msg.css;
25
- } else if (_themeCssStyle) {
26
- _themeCssStyle.remove();
27
- _themeCssStyle = null;
28
- }
29
- }
30
- `;function M(e,t){return e||(typeof document<`u`&&t===document.body?`document.body`:`container`)}function N(e,t,n){return`Element has zero dimensions (`+e+`, `+t+`x`+n+`)`}function P(e,t,n,r,i,a){let o=`Screenshot rendering failed (`+e+`; `+t+` `+n+`x`+r;return i&&(o+=`; serialised SVG `+i+` bytes`),a&&(o+=`; data URL `+a+` bytes`),o+`)`}function F(e,t,n){let r=e;return e.indexOf(`xmlns="http://www.w3.org/1999/xhtml"`)===-1&&(r=`<div xmlns="http://www.w3.org/1999/xhtml">`+e+`</div>`),`<svg xmlns="http://www.w3.org/2000/svg" width="`+t+`" height="`+n+`"><foreignObject width="100%" height="100%" xmlns="http://www.w3.org/1999/xhtml">`+r+`</foreignObject></svg>`}function I(){return`var screenshotTargetLabel = `+M.toString()+`;
31
- var screenshotZeroDimensionError = `+N.toString()+`;
32
- var screenshotRasteriseError = `+P.toString()+`;
33
- var buildScreenshotSvg = `+F.toString()+`;
34
- `}async function L(e,t){let n=t??document.body,r=e?n.querySelector(e):n,i=M(e,r);if(!r)throw Error(`Element not found: `+(e||i));let a=r.getBoundingClientRect(),o=Math.ceil(a.width),s=Math.ceil(a.height);if(o===0||s===0)throw Error(N(i,a.width,a.height));let c=document.createElement(`canvas`),l=window.devicePixelRatio||1;c.width=o*l,c.height=s*l;let u=c.getContext(`2d`);if(!u)throw Error(P(`canvas context unavailable`,i,o,s));u.scale(l,l);let d=r.cloneNode(!0);R(d);let f;try{f=new XMLSerializer().serializeToString(d)}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(P(`XMLSerializer threw: `+t,i,o,s))}return z(F(f,o,s),u,c,i,o,s)}function R(e){if(!(`querySelectorAll`in e))return;let t=e.querySelectorAll(`script, link[rel="stylesheet"]`);for(let e=0;e<t.length;e++)t[e].parentNode?.removeChild(t[e])}function z(e,t,n,r,i,a){let o=e.length,s;try{s=`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(e)}catch{return Promise.reject(Error(P(`data-URL too large`,r,i,a,o)))}let c=s.length,l=B(e,s,c,r,i,a);return l instanceof Error?Promise.reject(l):new Promise((e,s)=>{let u=new Image,d=()=>{if(l.blobUrl)try{URL.revokeObjectURL(l.blobUrl)}catch{}};u.onload=()=>{d(),t.drawImage(u,0,0),e(n.toDataURL(`image/png`))},u.onerror=()=>{d();let e=!l.blobUrl&&c>2097152?`data-URL too large`:`image decode failed`;s(Error(P(e,r,i,a,o,c)))},u.src=l.src})}function B(e,t,n,r,i,a){let o=()=>Error(P(`data-URL too large`,r,i,a,e.length,n));if(typeof URL<`u`&&typeof URL.createObjectURL==`function`)try{let t=URL.createObjectURL(new Blob([e],{type:`image/svg+xml;charset=utf-8`}));return{src:t,blobUrl:t}}catch{return n>2097152?o():{src:t,blobUrl:null}}return n>2097152?o():{src:t,blobUrl:null}}var V=`SLICCJSH`;function H(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}function U(e,t){return`var REQ=${JSON.stringify({op:e,args:t})};var P=${JSON.stringify(V)};function emit(o){process.stdout.write(P+JSON.stringify(o));}try{var op=REQ.op,a=REQ.args||[],out;if(op==='fetch'){var r=await fetch(a[0],a[1]||undefined);var h={};r.headers.forEach(function(v,k){h[k]=v;});var u=new Uint8Array(await r.arrayBuffer());var bin="",C=0x8000;for(var i=0;i<u.length;i+=C){bin+=String.fromCharCode.apply(null,u.subarray(i,i+C));}out={ok:r.ok,status:r.status,statusText:r.statusText,url:r.url,headers:h,bodyBase64:btoa(bin)};}else if(op==='http'){var http=require("sliccy:http");var c=http.client(a[0]||{});var res=await c[a[1]](a[2],Object.assign({},a[3]||{},{raw:true}));out={status:res.status,headers:res.headers,body:res.body};}else if(op==='browser'){var browser=require("sliccy:browser");var m=a[0];if(typeof browser[m]!=="function")throw new Error("browser."+m+" is not available over the sprinkle bridge");out=await browser[m].apply(browser,a.slice(1));}else if(op==='spawn'){out=await require("sliccy:exec").spawn(a[0]);}else if(op==='fetchToFile'){out=await require("node:fs").fetchToFile(a[0],a[1]);}else{throw new Error("unknown jsh op: "+op);}emit({ok:true,value:out});}catch(e){emit({ok:false,error:(e&&e.message)?e.message:String(e)});}`}function W(e,t){return`node -e ${H(U(e,t))}`}function ue(e){let t=e.stdout.lastIndexOf(V);if(t===-1){let t=e.stderr.trim()||e.stdout.trim()||`exit code ${e.exitCode}`;throw Error(`jsh bridge: no result (${t})`)}let n;try{n=JSON.parse(e.stdout.slice(t+10))}catch{throw Error(`jsh bridge: malformed result`)}if(!n.ok)throw Error(n.error||`jsh bridge error`);return n.value}async function G(e,t,n){return ue(await e(W(t,n)))}function K(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(e),t}function q(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}function J(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function de(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){let t=e;return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}if(Array.isArray(e))return new Uint8Array(e);throw Error(`expected Uint8Array, ArrayBuffer, or number[]`)}function Y(e){let t=atob(e.bodyBase64),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);let r=e.status===101||e.status===103||e.status===204||e.status===205||e.status===304?null:n,i=new Headers(e.headers);try{let t=new Response(r,{status:e.status,statusText:e.statusText,headers:i});return Object.defineProperty(t,"url",{value:e.url,configurable:!0}),t}catch{let t=new Response(r,{headers:i}),n=e.status>=200&&e.status<300;return Object.defineProperty(t,"status",{value:e.status,configurable:!0}),Object.defineProperty(t,"statusText",{value:e.statusText,configurable:!0}),Object.defineProperty(t,"ok",{value:n,configurable:!0}),Object.defineProperty(t,"url",{value:e.url,configurable:!0}),t}}function fe(){return`var buildFetchResponse = `+Y.toString()+`;
35
- `}function X(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}var pe=class{listeners=new Map;lickHandler;fs;closeHandler;minimizeHandler;stopConeHandler;attachImageHandler;captureScreenHandler;execHandler;hidSubs=new Map;iframePusher;constructor(e,t,n,r,i,a,o,s,c){this.fs=e,this.lickHandler=t,this.closeHandler=n,this.minimizeHandler=r,this.stopConeHandler=i,this.attachImageHandler=a,this.captureScreenHandler=o,this.execHandler=s,this.iframePusher=c}setIframePusher(e){this.iframePusher=e}async hidOp(e,t,i){let a=r();switch(t){case`list`:{let e=n();if(!e)throw Error(`WebHID is unavailable in this browser`);return f(a,e)}case`request`:{let e=n();if(!e)throw Error(`WebHID is unavailable in this browser`);return m(a,e,i[0]??[])}case`info`:return te(a,i[0]);case`open`:{let t=i[0];return await C(a,t),await this.attachHidInputReports(e,t),{ok:!0}}case`close`:{let t=i[0];return await this.detachHidInputReports(e,t),await ne(a,t),{ok:!0}}case`sendReport`:{let e=i[0],t=i[1],n=de(i[2]),r=n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);return await u(a,e,t,r),{ok:!0}}default:throw Error(`hid: unknown op '${t}'`)}}async serialOp(e,t,n){let r=i();switch(t){case`list`:{let e=a();if(!e)throw Error(`Web Serial is unavailable in this browser`);return c(r,e)}case`request`:{let e=a();if(!e)throw Error(`Web Serial is unavailable in this browser`);return o(r,e,n[0]??[])}case`info`:return d(r,n[0]);case`open`:{let e=n[0],t=n[1]??{baudRate:9600};return await l(r,e,t),{ok:!0}}case`close`:{let e=n[0];return await w(r,e),{ok:!0}}default:throw Error(`serial: unknown op '${t}'`)}}async usbOp(e,t,n){let r=se();switch(t){case`list`:{let e=T();if(!e)throw Error(`WebUSB is unavailable in this browser`);return b(r,e)}case`request`:{let e=T();if(!e)throw Error(`WebUSB is unavailable in this browser`);return S(r,e,n[0]??[])}case`info`:return oe(r,n[0]);case`open`:return await h(r,n[0]),{ok:!0};case`close`:return await y(r,n[0]),{ok:!0};case`reset`:return await g(r,n[0]),{ok:!0};case`selectConfig`:return await ee(r,n[0],n[1]),{ok:!0};case`claim`:return await x(r,n[0],n[1]),{ok:!0};case`release`:return await _(r,n[0],n[1]),{ok:!0};case`clearHalt`:return await ae(r,n[0],n[1],n[2]),{ok:!0};case`controlIn`:{let e=await re(r,n[0],n[1],n[2]);return{status:e.status,base64:q(new Uint8Array(e.bytes))}}case`controlOut`:{let e=await p(r,n[0],n[1],K(J(n[2])));return{status:e.status,bytesWritten:e.bytesWritten}}case`transferIn`:{let e=await v(r,n[0],n[1],n[2]);return{status:e.status,base64:q(new Uint8Array(e.bytes))}}case`transferOut`:{let e=await ie(r,n[0],n[1],K(J(n[2])));return{status:e.status,bytesWritten:e.bytesWritten}}default:throw Error(`usb: unknown op '${t}'`)}}async deviceOp(e,t,n,r){if(t===`hid`)return this.hidOp(e,n,r);if(t===`serial`)return this.serialOp(e,n,r);if(t===`usb`)return this.usbOp(e,n,r);throw Error(`unknown device channel '${t}'`)}async attachHidInputReports(e,t){let n=this.hidSubs.get(e);if(n||(n=new Map,this.hidSubs.set(e,n)),n.has(t))return;let i=await s(r(),t,n=>{let r=n.bytes instanceof Uint8Array?n.bytes:new Uint8Array(n.bytes);this.deliverHidInputReport(e,{handle:t,reportId:n.reportId,data:r})});n.set(t,i)}async detachHidInputReports(e,t){let n=this.hidSubs.get(e);if(!n)return;let r=n.get(t);if(r){n.delete(t);try{await Promise.resolve(r())}catch{}}n.size===0&&this.hidSubs.delete(e)}deliverHidInputReport(e,t){let n=this.listeners.get(`${e}:hid:inputreport`);if(n)for(let e of n){let r=n;setTimeout(()=>{if(r.has(e))try{e(t)}catch{}},0)}try{this.iframePusher?.(e,`hid:inputreport`,t)}catch{}}async runExec(e){if(!this.execHandler)return{stdout:``,stderr:`exec: shell bridge not available
36
- `,exitCode:127};try{return await this.execHandler(e)}catch(e){return{stdout:``,stderr:`exec: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async jshDispatch(e,t){return e===`readFileBinary`?{base64:q(await this.fs.readFile(t[0],{encoding:`binary`}))}:e===`writeFileBinary`?(await this.fs.writeFile(t[0],J(t[1])),!0):G(e=>this.runExec(e),e,t)}createLickHandler(e,t){return n=>{let r=typeof n==`string`?n:n.action,i=typeof n==`string`?void 0:n.data,a={type:`sprinkle`,sprinkleName:e,targetScoop:typeof n==`string`?void 0:n.target,timestamp:new Date().toISOString(),body:{action:r,data:i}};this.lickHandler(a,t())}}createScreenshotHandler(e){return async t=>e?L(t,e):``}createAgentHandler(){return async(e,t)=>{let n=t?.cwd??`.`,r=t?.allowedCommands??`*`,i=[`agent`];t?.model&&i.push(`--model`,X(t.model)),t?.thinking&&i.push(`--thinking`,X(t.thinking)),t?.readOnly&&i.push(`--read-only`,X(t.readOnly)),i.push(X(n),X(r),X(e));let a=await this.runExec(i.join(` `));return{stdout:a.stdout||a.stderr,exitCode:a.exitCode}}}createHidApi(e){return{list:()=>this.hidOp(e,`list`,[]),request:t=>this.hidOp(e,`request`,[t??[]]),open:async t=>{await this.hidOp(e,`open`,[t])},close:async t=>{await this.hidOp(e,`close`,[t])},sendReport:async(t,n,r)=>{await this.hidOp(e,`sendReport`,[t,n,r])},on:(t,n)=>{if(t!==`inputreport`)return;let r=`${e}:hid:inputreport`,i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n)},off:(t,n)=>{t===`inputreport`&&this.listeners.get(`${e}:hid:inputreport`)?.delete(n)}}}createSerialApi(e){return{list:()=>this.serialOp(e,`list`,[]),request:t=>this.serialOp(e,`request`,[t??[]]),open:async(t,n)=>{await this.serialOp(e,`open`,[t,n])},close:async t=>{await this.serialOp(e,`close`,[t])}}}createUsbApi(e){return{list:()=>this.usbOp(e,`list`,[]),request:t=>this.usbOp(e,`request`,[t??[]]),open:async t=>{await this.usbOp(e,`open`,[t])},close:async t=>{await this.usbOp(e,`close`,[t])},reset:async t=>{await this.usbOp(e,`reset`,[t])},selectConfiguration:async(t,n)=>{await this.usbOp(e,`selectConfig`,[t,n])},claimInterface:async(t,n)=>{await this.usbOp(e,`claim`,[t,n])},releaseInterface:async(t,n)=>{await this.usbOp(e,`release`,[t,n])},clearHalt:async(t,n,r)=>{await this.usbOp(e,`clearHalt`,[t,n,r])},controlTransferIn:async(t,n,r)=>{let i=await this.usbOp(e,`controlIn`,[t,n,r]);return{status:i.status,bytes:J(i.base64)}},controlTransferOut:async(t,n,r)=>this.usbOp(e,`controlOut`,[t,n,q(r)]),transferIn:async(t,n,r)=>{let i=await this.usbOp(e,`transferIn`,[t,n,r]);return{status:i.status,bytes:J(i.base64)}},transferOut:async(t,n,r)=>this.usbOp(e,`transferOut`,[t,n,q(r)])}}createHttpClient(e){let t=t=>(n,r)=>this.jshDispatch(`http`,[e,t,n,r??null]);return{get:t(`get`),post:t(`post`),put:t(`put`),patch:t(`patch`),delete:t(`delete`)}}createAPI(e,n=()=>void 0){let r={name:e,lick:this.createLickHandler(e,n),on:(t,n)=>{let r=`${e}:${t}`,i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n)},off:(t,n)=>{let r=`${e}:${t}`;this.listeners.get(r)?.delete(n)},readFile:async e=>await this.fs.readFile(e,{encoding:`utf-8`}),writeFile:async(e,t)=>{await this.fs.writeFile(e,t)},readDir:async e=>(await this.fs.readDir(e)).map(e=>({name:e.name,type:e.type})),exists:async e=>this.fs.exists(e),stat:async e=>{let t=await this.fs.stat(e);return{type:t.type,size:t.size}},mkdir:async e=>{await this.fs.mkdir(e,{recursive:!0})},rm:async e=>{await this.fs.rm(e)},screenshot:e=>this.createScreenshotHandler(r._container)(e),setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch{}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch{return null}},open:e=>{let n=/^https?:|^chrome-extension:/.test(e)?e:t(e);window.open(n,`_blank`)},close:()=>this.closeHandler(e),minimize:()=>this.minimizeHandler(e),stopCone:()=>this.stopConeHandler(),attachImage:(e,t,n)=>this.attachImageHandler(e,t,n),captureScreen:()=>this.captureScreenHandler(),exec:Object.assign(e=>this.runExec(e),{spawn:e=>this.jshDispatch(`spawn`,[e])}),fetch:async(e,t)=>Y(await this.jshDispatch(`fetch`,[e,t??null])),http:{client:e=>this.createHttpClient(e)},browser:{findTab:e=>this.jshDispatch(`browser`,[`findTab`,e]),ensureTab:(e,t)=>this.jshDispatch(`browser`,[`ensureTab`,e,t??{}]),eval:(e,t)=>this.jshDispatch(`browser`,[`eval`,e,t]),evalAsync:(e,t)=>this.jshDispatch(`browser`,[`evalAsync`,e,t]),cookie:(e,t)=>this.jshDispatch(`browser`,[`cookie`,e,t]),localStorage:(e,t)=>this.jshDispatch(`browser`,[`localStorage`,e,t]),fetch:(e,t,n)=>this.jshDispatch(`browser`,[`fetch`,e,t,n??{}])},hid:this.createHidApi(e),serial:this.createSerialApi(e),usb:this.createUsbApi(e),readFileBinary:async e=>J((await this.jshDispatch(`readFileBinary`,[e])).base64),writeFileBinary:async(e,t)=>{await this.jshDispatch(`writeFileBinary`,[e,q(t)])},fetchToFile:(e,t)=>this.jshDispatch(`fetchToFile`,[e,t]),_jsh:(e,t)=>this.jshDispatch(e,t),_device:(t,n,r)=>this.deviceOp(e,t,n,r),agent:this.createAgentHandler()};return r}pushUpdate(e,t){let n=`${e}:update`,r=this.listeners.get(n);if(r)for(let e of r){let n=r;setTimeout(()=>{if(n.has(e))try{e(t)}catch{}},0)}}removeSprinkle(e){for(let t of this.listeners.keys())t.startsWith(`${e}:`)&&this.listeners.delete(t);let t=this.hidSubs.get(e);if(t){for(let e of t.values())try{Promise.resolve(e()).catch(()=>{})}catch{}this.hidSubs.delete(e)}}};function me(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}function he(e){return`width: 100%; height: 100%; flex: 1; border: none; min-height: 0;`+(e?` transform: translateZ(0);`:``)}function ge(e,t){let n=t.clientWidth,r=t.clientHeight;return n<=0||r<=0?!1:(e.style.width=`${n}px`,e.style.height=`${r}px`,!0)}function _e(e){e.style.width=`100%`,e.style.height=`100%`}function ve(e,t){let n=e.match(/<head\b[^>]*>/i);if(n){let r=n.index+n[0].length;return e.slice(0,r)+t+e.slice(r)}let r=e.match(/<script\b/i);if(r)return e.slice(0,r.index)+t+e.slice(r.index);let i=e.match(/<html\b[^>]*>/i);if(i){let n=i.index+i[0].length;return e.slice(0,n)+t+e.slice(n)}return t+e}function ye(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`full-doc iframe load timed out`))},5e3);e.addEventListener(`load`,()=>{clearTimeout(i),t(),n()},{once:!0}),e.addEventListener(`error`,()=>{clearTimeout(i),r(Error(`full-doc iframe failed to load`))},{once:!0})})}function Z(e,t,n,r={}){let i=e.contentWindow;if(i)try{i.postMessage({type:t,id:n,...r},`*`)}catch(e){if(r.error!==void 0)return;let a=e instanceof Error?e.message:String(e);try{i.postMessage({type:t,id:n,error:a},`*`)}catch{}}}function Q(e,t,n,r,i){r.then(r=>Z(e,t,n,i(r)),r=>Z(e,t,n,{error:r instanceof Error?r.message:String(r)}))}function be(e){return{"sprinkle-lick":(t,n)=>e.lick({action:n.action,data:n.data,target:n.target}),"sprinkle-set-state":(t,n)=>e.setState(n.data),"sprinkle-close":()=>e.close(),"sprinkle-minimize":()=>e.minimize(),"sprinkle-stop-cone":()=>e.stopCone(),"sprinkle-attach-image":(t,n)=>e.attachImage(n.base64,n.name,n.mimeType),"sprinkle-readfile":(t,n)=>Q(t,`sprinkle-readfile-response`,n.id,e.readFile(n.path),e=>({content:e})),"sprinkle-writefile":(t,n)=>Q(t,`sprinkle-writefile-response`,n.id,e.writeFile(n.path,n.content),()=>({})),"sprinkle-readdir":(t,n)=>Q(t,`sprinkle-readdir-response`,n.id,e.readDir(n.path),e=>({entries:e})),"sprinkle-exists":(t,n)=>Q(t,`sprinkle-exists-response`,n.id,e.exists(n.path),e=>({exists:e})),"sprinkle-stat":(t,n)=>Q(t,`sprinkle-stat-response`,n.id,e.stat(n.path),e=>({stat:e})),"sprinkle-mkdir":(t,n)=>Q(t,`sprinkle-mkdir-response`,n.id,e.mkdir(n.path),()=>({})),"sprinkle-rm":(t,n)=>Q(t,`sprinkle-rm-response`,n.id,e.rm(n.path),()=>({})),"sprinkle-capture-screen":(t,n)=>Q(t,`sprinkle-capture-screen-response`,n.id,e.captureScreen(),e=>({base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType})),"sprinkle-exec":(t,n)=>Q(t,`sprinkle-exec-response`,n.id,e.exec(n.cmd),e=>({result:e})),"sprinkle-agent":(t,n)=>Q(t,`sprinkle-agent-response`,n.id,e.agent(n.prompt,n.opts),e=>({result:e})),"sprinkle-jsh":(t,n)=>Q(t,`sprinkle-jsh-response`,n.id,e._jsh(n.op,n.args),e=>({result:e})),"sprinkle-device-op":(t,n)=>Q(t,`sprinkle-device-op-response`,n.id,e._device(n.channel,n.op,n.args??[]),e=>({result:e}))}}function xe(e,t){return n=>{if(n.source!==e.contentWindow)return;let r=n.data;r?.type&&t[r.type]?.(e,r)}}function Se(t){if(t.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&e(()=>import(`./slicc-editor-BwV9b9S6.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3])),t.includes(`<slicc-diff`)&&!customElements.get(`slicc-diff`)){let e=document.createElement(`script`);e.src=`/slicc-diff.js`,document.head.appendChild(e)}}function Ce(e){for(let t of e.querySelectorAll(`.fill[data-value]`)){let e=parseFloat(t.dataset.value||`0`);e>=0&&e<=100&&(t.style.width=`${e}%`)}}function we(e,t){let n=`window.__slicc_sprinkles[${JSON.stringify(t)}]`;for(let t of e.querySelectorAll(`[onclick]`)){let e=t.getAttribute(`onclick`)||``;/\b(slicc|bridge)\b/.test(e)&&t.setAttribute(`onclick`,e.replace(/\b(slicc|bridge)\b/g,n))}return n}function Te(e){let t=new Set;for(let n of e.querySelectorAll(`[onclick]`)){let e=n.getAttribute(`onclick`)||``;for(let n of e.matchAll(/\b(\w+)\s*\(/g)){let e=n[1];[`slicc`,`bridge`,`lick`,`close`,`exec`,`agent`].includes(e)||t.add(e)}}return t}function Ee(e,t){let n=[];for(let r of Array.from(e.querySelectorAll(`script`))){r.remove();let i=document.createElement(`script`);for(let e of r.attributes)i.setAttribute(e.name,e.value);if(!r.src){let n=[...Te(e)].map(e=>`if (typeof ${e} === 'function') window.${e} = ${e};`).join(`
37
- `);i.textContent=`(function() { var slicc = ${t}; var bridge = slicc;\n`+r.textContent+(n?`
38
- `+n:``)+`
39
- })();`}e.appendChild(i),n.push(i)}return n}var De=class{container;bridge;scripts=[];iframe=null;iframeLoadHandler=null;registeredWindow=null;messageHandler=null;visibilityObserver=null;bridgeLifecycleReady=!1;pendingBridgeLifecycle=[];constructor(e,t){this.container=e,this.bridge=t}async render(e,t){if(this.dispose(),me(e))try{await this.renderFullDoc(e,t)}catch(e){throw this.dispose(),e}else this.renderInline(e,t)}activateBridgeLifecycle(){for(this.bridgeLifecycleReady=!0;this.bridgeLifecycleReady&&this.pendingBridgeLifecycle.length>0;)this.pendingBridgeLifecycle.shift()()}pushUpdate(e){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-update`,data:e},`*`)}pushDeviceEvent(e,t){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-device-event`,channel:e,payload:t},`*`)}collectThemeCSS(){return $()}generateBridgeScript(){return`(function() {
40
- var _updateListeners = new Set();
41
- var _hidInputReportListeners = new Set();
42
- var _sprinkleName = '';
43
- var _state = null;
44
- var _cbId = 0;
45
- var _callbacks = {};
46
- ${j}
47
-
48
- window.addEventListener('message', function(event) {
49
- var msg = event.data;
50
- if (!msg || !msg.type) return;
51
- if (msg.type === 'sprinkle-init') {
52
- _sprinkleName = msg.name || '';
53
- _state = msg.savedState || null;
54
- if (window.slicc) window.slicc.name = _sprinkleName;
55
- } else if (msg.type === 'sprinkle-update') {
56
- _updateListeners.forEach(function(cb) { try { cb(msg.data); } catch(e) { console.error(e); } });
57
- } else if (msg.type === 'sprinkle-device-event') {
58
- if (msg.channel === 'hid:inputreport') {
59
- _hidInputReportListeners.forEach(function(cb) {
60
- try { cb(msg.payload); } catch(e) { console.error(e); }
61
- });
62
- }
63
- } else if (msg.type === 'slicc-theme') {
64
- applyIframeTheme(event);
65
- } else if (msg.id && _callbacks[msg.id]) {
66
- var cb = _callbacks[msg.id];
67
- delete _callbacks[msg.id];
68
- cb(msg);
69
- }
70
- });
71
-
72
- function _vfsCall(type, params, extractResult) {
73
- return new Promise(function(resolve, reject) {
74
- var id = ++_cbId;
75
- _callbacks[id] = function(msg) {
76
- if (msg.error) reject(new Error(msg.error));
77
- else resolve(extractResult ? extractResult(msg) : undefined);
78
- };
79
- var m = { type: type, id: id };
80
- if (params) { for (var k in params) m[k] = params[k]; }
81
- parent.postMessage(m, '*');
82
- });
83
- }
84
-
85
- function _jshCall(op, args) {
86
- return _vfsCall('sprinkle-jsh', { op: op, args: args }, function(m) { return m.result; });
87
- }
88
- function _deviceCall(channel, op, args) {
89
- return _vfsCall('sprinkle-device-op', { channel: channel, op: op, args: args || [] },
90
- function(m) { return m.result; });
91
- }
92
- function _b64ToU8(b64) {
93
- var bin = atob(b64); var u8 = new Uint8Array(bin.length);
94
- for (var i = 0; i < bin.length; i++) u8[i] = bin.charCodeAt(i);
95
- return u8;
96
- }
97
- function _u8ToB64(bytes) {
98
- var bin = ''; for (var i = 0; i < bytes.length; i++) bin += String.fromCharCode(bytes[i]);
99
- return btoa(bin);
100
- }
101
-
102
- ${I()}
103
- ${fe()}
104
-
105
- var api = {
106
- lick: function(event) {
107
- var action, data, target;
108
- if (typeof event === 'string') { action = event; } else { action = event.action; data = event.data; target = event.target; }
109
- parent.postMessage({ type: 'sprinkle-lick', action: action, data: data, target: target }, '*');
110
- },
111
- on: function(event, callback) { if (event === 'update') _updateListeners.add(callback); },
112
- off: function(event, callback) { if (event === 'update') _updateListeners.delete(callback); },
113
- readFile: function(path) {
114
- return _vfsCall('sprinkle-readfile', { path: path }, function(m) { return m.content; });
115
- },
116
- writeFile: function(path, content) {
117
- return _vfsCall('sprinkle-writefile', { path: path, content: content });
118
- },
119
- readDir: function(path) {
120
- return _vfsCall('sprinkle-readdir', { path: path }, function(m) { return m.entries; });
121
- },
122
- exists: function(path) {
123
- return _vfsCall('sprinkle-exists', { path: path }, function(m) { return m.exists; });
124
- },
125
- stat: function(path) {
126
- return _vfsCall('sprinkle-stat', { path: path }, function(m) { return m.stat; });
127
- },
128
- mkdir: function(path) {
129
- return _vfsCall('sprinkle-mkdir', { path: path });
130
- },
131
- rm: function(path) {
132
- return _vfsCall('sprinkle-rm', { path: path });
133
- },
134
- screenshot: function(selector) {
135
- // Keep in lockstep with captureSprinkleScreenshot in sprinkle-screenshot.ts.
136
- return new Promise(function(resolve, reject) {
137
- try {
138
- var target = selector ? document.querySelector(selector) : document.body;
139
- var label = screenshotTargetLabel(selector, target);
140
- if (!target) { reject(new Error('Element not found: ' + (selector || label))); return; }
141
- var rect = target.getBoundingClientRect();
142
- var w = Math.ceil(rect.width);
143
- var h = Math.ceil(rect.height);
144
- if (w === 0 || h === 0) {
145
- reject(new Error(screenshotZeroDimensionError(label, rect.width, rect.height)));
146
- return;
147
- }
148
- var canvas = document.createElement('canvas');
149
- var dpr = window.devicePixelRatio || 1;
150
- canvas.width = w * dpr;
151
- canvas.height = h * dpr;
152
- var ctx = canvas.getContext('2d');
153
- if (!ctx) {
154
- reject(new Error(screenshotRasteriseError('canvas context unavailable', label, w, h)));
155
- return;
156
- }
157
- ctx.scale(dpr, dpr);
158
- var clone = target.cloneNode(true);
159
- if (clone.querySelectorAll) {
160
- var junk = clone.querySelectorAll('script, link[rel="stylesheet"]');
161
- for (var i = 0; i < junk.length; i++) {
162
- if (junk[i].parentNode) junk[i].parentNode.removeChild(junk[i]);
163
- }
164
- }
165
- var xhtml;
166
- try {
167
- xhtml = new XMLSerializer().serializeToString(clone);
168
- } catch (serErr) {
169
- var serMsg = serErr && serErr.message ? serErr.message : String(serErr);
170
- reject(new Error(screenshotRasteriseError('XMLSerializer threw: ' + serMsg, label, w, h)));
171
- return;
172
- }
173
- var svg = buildScreenshotSvg(xhtml, w, h);
174
- var svgBytes = svg.length;
175
- var dataUrl;
176
- try {
177
- dataUrl = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);
178
- } catch (encErr) {
179
- reject(new Error(screenshotRasteriseError('data-URL too large', label, w, h, svgBytes)));
180
- return;
181
- }
182
- var dataUrlBytes = dataUrl.length;
183
- var src = dataUrl;
184
- var blobUrl = null;
185
- if (typeof URL !== 'undefined' && URL.createObjectURL) {
186
- try {
187
- blobUrl = URL.createObjectURL(new Blob([svg], { type: 'image/svg+xml;charset=utf-8' }));
188
- src = blobUrl;
189
- } catch (blobErr) {
190
- if (dataUrlBytes > 2097152) {
191
- reject(new Error(screenshotRasteriseError('data-URL too large', label, w, h, svgBytes, dataUrlBytes)));
192
- return;
193
- }
194
- }
195
- } else if (dataUrlBytes > 2097152) {
196
- reject(new Error(screenshotRasteriseError('data-URL too large', label, w, h, svgBytes, dataUrlBytes)));
197
- return;
198
- }
199
- var img = new Image();
200
- img.onload = function() {
201
- if (blobUrl) { try { URL.revokeObjectURL(blobUrl); } catch (e) {} }
202
- ctx.drawImage(img, 0, 0);
203
- resolve(canvas.toDataURL('image/png'));
204
- };
205
- img.onerror = function() {
206
- if (blobUrl) { try { URL.revokeObjectURL(blobUrl); } catch (e) {} }
207
- var reason = !blobUrl && dataUrlBytes > 2097152 ? 'data-URL too large' : 'image decode failed';
208
- reject(new Error(screenshotRasteriseError(reason, label, w, h, svgBytes, dataUrlBytes)));
209
- };
210
- img.src = src;
211
- } catch(e) { reject(e); }
212
- });
213
- },
214
- setState: function(data) { _state = data; parent.postMessage({ type: 'sprinkle-set-state', data: data }, '*'); },
215
- getState: function() { return _state; },
216
- close: function() { parent.postMessage({ type: 'sprinkle-close' }, '*'); },
217
- minimize: function() { parent.postMessage({ type: 'sprinkle-minimize' }, '*'); },
218
- stopCone: function() { parent.postMessage({ type: 'sprinkle-stop-cone' }, '*'); },
219
- attachImage: function(base64, name, mimeType) { parent.postMessage({ type: 'sprinkle-attach-image', base64: base64, name: name, mimeType: mimeType }, '*'); },
220
- captureScreen: function() {
221
- return _vfsCall('sprinkle-capture-screen', {}, function(m) {
222
- return { base64: m.base64, width: m.width, height: m.height, mimeType: m.mimeType };
223
- });
224
- },
225
- exec: Object.assign(function(cmd) {
226
- return _vfsCall('sprinkle-exec', { cmd: cmd }, function(m) { return m.result; });
227
- }, { spawn: function(argv) { return _jshCall('spawn', [argv]); } }),
228
- agent: function(prompt, opts) {
229
- return _vfsCall('sprinkle-agent', { prompt: prompt, opts: opts }, function(m) { return m.result; });
230
- },
231
- fetch: function(url, init) {
232
- return _jshCall('fetch', [url, init || null]).then(function(v) { return buildFetchResponse(v); });
233
- },
234
- http: {
235
- client: function(cfg) {
236
- function mk(method) { return function(path, opts) { return _jshCall('http', [cfg, method, path, opts || null]); }; }
237
- return { get: mk('get'), post: mk('post'), put: mk('put'), patch: mk('patch'), 'delete': mk('delete') };
238
- }
239
- },
240
- browser: {
241
- findTab: function(q) { return _jshCall('browser', ['findTab', q]); },
242
- ensureTab: function(url, options) { return _jshCall('browser', ['ensureTab', url, options || {}]); },
243
- eval: function(tab, code) { return _jshCall('browser', ['eval', tab, code]); },
244
- evalAsync: function(tab, code) { return _jshCall('browser', ['evalAsync', tab, code]); },
245
- cookie: function(tab, name) { return _jshCall('browser', ['cookie', tab, name]); },
246
- localStorage: function(tab, key) { return _jshCall('browser', ['localStorage', tab, key]); },
247
- fetch: function(tab, url, opts) { return _jshCall('browser', ['fetch', tab, url, opts || {}]); }
248
- },
249
- hid: {
250
- list: function() { return _deviceCall('hid', 'list', []); },
251
- request: function(filters) { return _deviceCall('hid', 'request', [filters || []]); },
252
- open: function(handle) { return _deviceCall('hid', 'open', [handle]).then(function() {}); },
253
- close: function(handle) { return _deviceCall('hid', 'close', [handle]).then(function() {}); },
254
- sendReport: function(handle, reportId, data) {
255
- return _deviceCall('hid', 'sendReport', [handle, reportId, data]).then(function() {});
256
- },
257
- on: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.add(cb); },
258
- off: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners['delete'](cb); }
259
- },
260
- serial: {
261
- list: function() { return _deviceCall('serial', 'list', []); },
262
- request: function(filters) { return _deviceCall('serial', 'request', [filters || []]); },
263
- open: function(handle, options) { return _deviceCall('serial', 'open', [handle, options]).then(function() {}); },
264
- close: function(handle) { return _deviceCall('serial', 'close', [handle]).then(function() {}); }
265
- },
266
- usb: {
267
- list: function() { return _deviceCall('usb', 'list', []); },
268
- request: function(filters) { return _deviceCall('usb', 'request', [filters || []]); },
269
- open: function(handle) { return _deviceCall('usb', 'open', [handle]).then(function() {}); },
270
- close: function(handle) { return _deviceCall('usb', 'close', [handle]).then(function() {}); },
271
- reset: function(handle) { return _deviceCall('usb', 'reset', [handle]).then(function() {}); },
272
- selectConfiguration: function(handle, value) {
273
- return _deviceCall('usb', 'selectConfig', [handle, value]).then(function() {});
274
- },
275
- claimInterface: function(handle, n) {
276
- return _deviceCall('usb', 'claim', [handle, n]).then(function() {});
277
- },
278
- releaseInterface: function(handle, n) {
279
- return _deviceCall('usb', 'release', [handle, n]).then(function() {});
280
- },
281
- clearHalt: function(handle, direction, ep) {
282
- return _deviceCall('usb', 'clearHalt', [handle, direction, ep]).then(function() {});
283
- },
284
- // Payloads cross as base64 — see the note on SprinkleUsbApi.
285
- controlTransferIn: function(handle, setup, length) {
286
- return _deviceCall('usb', 'controlIn', [handle, setup, length]).then(function(r) {
287
- return { status: r.status, bytes: _b64ToU8(r.base64) };
288
- });
289
- },
290
- controlTransferOut: function(handle, setup, bytes) {
291
- return _deviceCall('usb', 'controlOut', [handle, setup, _u8ToB64(bytes)]);
292
- },
293
- transferIn: function(handle, ep, length) {
294
- return _deviceCall('usb', 'transferIn', [handle, ep, length]).then(function(r) {
295
- return { status: r.status, bytes: _b64ToU8(r.base64) };
296
- });
297
- },
298
- transferOut: function(handle, ep, bytes) {
299
- return _deviceCall('usb', 'transferOut', [handle, ep, _u8ToB64(bytes)]);
300
- }
301
- },
302
- readFileBinary: function(path) { return _jshCall('readFileBinary', [path]).then(function(r) { return _b64ToU8(r.base64); }); },
303
- writeFileBinary: function(path, bytes) { return _jshCall('writeFileBinary', [path, _u8ToB64(bytes)]); },
304
- fetchToFile: function(url, path) { return _jshCall('fetchToFile', [url, path]); },
305
- _jsh: function(op, args) { return _jshCall(op, args); },
306
- name: ''
307
- };
308
- window.slicc = api;
309
- window.bridge = api;
310
- })();`}async renderFullDoc(e,t){let n=`<script>${this.generateBridgeScript()}<\/script>`,r=this.collectThemeCSS(),i=r?`<style>${r}</style>`:``,a=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,o=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,s=ve(e,`<script>(function(){try{if(${ce()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+n+i+a+o+`<script src="/lucide-icons.js"><\/script>`),c=document.createElement(`iframe`),l=D(),u=l?`allow-scripts allow-same-origin allow-popups`:`allow-scripts allow-same-origin`;c.setAttribute(`sandbox`,u),c.style.cssText=he(l);let d=ge(c,this.container);c.srcdoc=s,this.iframe=c;let f=be(this.bridge);for(let e of[`sprinkle-close`,`sprinkle-minimize`]){let t=f[e];f[e]=(e,n)=>{if(!this.bridgeLifecycleReady){this.pendingBridgeLifecycle.push(()=>t(e,n));return}t(e,n)}}this.messageHandler=xe(c,f),window.addEventListener(`message`,this.messageHandler),this.iframeLoadHandler=()=>{E(this.registeredWindow),this.registeredWindow=c.contentWindow,le(this.registeredWindow);let e=this.bridge.getState();c.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:e},`*`)},c.addEventListener(`load`,this.iframeLoadHandler);let p=ye(c,()=>{c.getBoundingClientRect(),d&&_e(c),l&&k(c)});if(this.container.appendChild(c),await p,l&&typeof IntersectionObserver<`u`){let e=!1,t=new IntersectionObserver(n=>{if(n[n.length-1].isIntersecting){if(e){e=!1;return}t.unobserve(c),k(c,()=>{e=!0,t.observe(c)})}});this.visibilityObserver=t,t.observe(c)}}renderInline(e,t){Se(e),window.__slicc_sprinkles||(window.__slicc_sprinkles={}),window.__slicc_sprinkles[t]=this.bridge,this.bridge._container=this.container;let n=document.createElement(`div`);n.className=`sprinkle-content`,n.innerHTML=e,this.container.appendChild(n),Ce(n);let r=we(n,t);this.scripts=Ee(n,r)}dispose(){this.bridgeLifecycleReady=!1,this.pendingBridgeLifecycle=[],this.visibilityObserver&&=(this.visibilityObserver.disconnect(),null),this.messageHandler&&=(window.removeEventListener(`message`,this.messageHandler),null),this.iframe&&=(this.iframeLoadHandler&&=(this.iframe.removeEventListener(`load`,this.iframeLoadHandler),null),E(this.registeredWindow),this.registeredWindow=null,this.iframe.remove(),null);for(let e of this.scripts)e.remove();this.scripts=[];let e=this.container.querySelector(`.sprinkle-content`);e&&e.remove(),window.__slicc_sprinkles&&delete window.__slicc_sprinkles[this.bridge.name]}};function Oe(e,t){return e.replace(/url\(\s*['"]?([^'")]+)['"]?\s*\)/g,(e,n)=>{if(/^(https?:|data:|blob:)/i.test(n))return`url('${n}')`;try{return`url('${new URL(n,t).href}')`}catch{return`url('${n}')`}})}function $(){if(typeof getComputedStyle!=`function`)return``;let e=[],t=[],n=[],r=location.href,i=e=>e===`:root`||e===`:root.theme-light`||e.startsWith(`.theme-light `)||e===`.theme-light`||e.split(`,`).some(e=>{let t=e.trim();return t===`:root`||t===`:root.theme-light`||t.startsWith(`.theme-light `)||t===`.theme-light`});for(let a of document.styleSheets)if(a.ownerNode?.id!==`slicc-theme-overrides`)try{for(let o of a.cssRules)if(o instanceof CSSFontFaceRule)e.push(Oe(o.cssText,r));else if(o instanceof CSSStyleRule){let e=o.selectorText;i(e)&&t.push(o.cssText),(e.includes(`.sprinkle-`)||e.includes(`.fill`))&&n.push(o.cssText)}}catch{}return e.join(`
311
- `)+`
312
- `+t.join(`
313
- `)+`
314
- `+n.join(`
315
- `)}export{j as a,G as i,$ as n,D as o,pe as r,k as s,De as t};
@@ -1 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";var t=e({DeviceHandleRegistry:()=>i,MAX_USB_TRANSFER_BYTES:()=>s,deviceToInfo:()=>d,getNavigatorUsb:()=>n,getSharedUsbRegistry:()=>o});function n(){return globalThis.navigator?.usb??null}function r(e,t){return e===t||e.vendorId===t.vendorId&&e.productId===t.productId&&(e.serialNumber??``)===(t.serialNumber??``)&&!!e.serialNumber}var i=class{byHandle=new Map;counter=0;register(e){for(let[t,n]of this.byHandle)if(r(n,e))return this.byHandle.set(t,e),t;let t=`usb${++this.counter}`;return this.byHandle.set(t,e),t}get(e){return this.byHandle.get(e)}remove(e){return this.byHandle.delete(e)}list(){return[...this.byHandle].map(([e,t])=>({handle:e,device:t}))}},a=null;function o(){return a||=new i,a}var s=4194304,c=new Set([`in`,`out`]),l=new Set([`bulk`,`interrupt`,`isochronous`]);function u(e){return e.map(e=>({configurationValue:e.configurationValue,...e.configurationName?{configurationName:e.configurationName}:{},interfaces:(e.interfaces??[]).map(e=>({interfaceNumber:e.interfaceNumber,claimed:!!e.claimed,alternates:(e.alternates??[]).map(e=>({alternateSetting:e.alternateSetting,interfaceClass:e.interfaceClass,interfaceSubclass:e.interfaceSubclass,interfaceProtocol:e.interfaceProtocol,...e.interfaceName?{interfaceName:e.interfaceName}:{},endpoints:(e.endpoints??[]).filter(e=>c.has(e.direction)&&l.has(e.type)).map(e=>({endpointNumber:e.endpointNumber,direction:e.direction,type:e.type,packetSize:e.packetSize}))}))}))}))}function d(e,t){return{handle:e,vendorId:t.vendorId,productId:t.productId,...t.productName?{productName:t.productName}:{},...t.manufacturerName?{manufacturerName:t.manufacturerName}:{},...t.serialNumber?{serialNumber:t.serialNumber}:{},opened:t.opened,...t.configurations?{configurations:u(t.configurations)}:{}}}export{t as a,o as i,d as n,n as r,s as t};
@@ -1 +0,0 @@
1
- import{i as e,t}from"./hid-device-registry-B2R-0rNt.js";import{n,r}from"./serial-port-registry-CCqklAEr.js";import{n as i,t as a}from"./usb-device-registry-DmUBqrA-.js";function o(e,t){let n=e.get(t);if(!n)throw Error(`unknown serial handle '${t}'`);return n}function s(e,t){let n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}function c(e,t,n){if(t.length===0)return-1;outer:for(let r=Math.max(0,n);r+t.length<=e.length;r++){for(let n=0;n<t.length;n++)if(e[r+n]!==t[n])continue outer;return r}return-1}async function l(e){if(e.reader){try{await e.reader.cancel()}catch{}try{e.reader.releaseLock()}catch{}e.reader=void 0}if(e.pendingRead=void 0,e.leftover=void 0,e.writer){try{e.writer.releaseLock()}catch{}e.writer=void 0}}async function u(e){if(await l(e),e.opened){try{await e.port.close()}catch{}e.opened=!1}}async function d(e,t){let n=await t.getPorts();for(let{entry:t}of e.retainOnly(n))await u(t);return n.map(t=>{let n=e.register(t);return r(n,e.get(n))})}async function f(e,t,n){let i=await t.requestPort(n.length?{filters:n}:{}),a=e.register(i);return r(a,e.get(a))}function p(e,t){return r(t,o(e,t))}async function m(e,t,n){let r=o(e,t);try{await r.port.open(n)}catch(e){throw Error(`${e instanceof Error?e.message:String(e)} (handle '${t}' may be stale after a device reset — re-run 'serial list' to pick up the current handle)`)}r.opened=!0}async function h(e,t){let n=o(e,t);await l(n);try{await n.port.close()}catch(e){if(!g(e))throw e}n.opened=!1}function g(e){let t=e instanceof Error?e.message:String(e);return/already closed|not open/i.test(t)}function _(e){if(!e.reader){if(!e.port.readable)throw Error(`serial port is not readable (is it open?)`);e.reader=e.port.readable.getReader()}return e.reader}function v(e){if(!e.writer){if(!e.port.writable)throw Error(`serial port is not writable (is it open?)`);e.writer=e.port.writable.getWriter()}return e.writer}async function y(e,t,r){let i=o(e,t),a=Math.min(r.maxBytes??4194304,n),l=r.until?.length?r.until:void 0,u=r.timeoutMs??1e3,d=Date.now()+Math.max(0,u),f=i.leftover??new Uint8Array;i.leftover=void 0;let p=0,m=()=>{if(l){let e=c(f,l,Math.max(0,p-(l.length-1)));if(e>=0){let t=e+l.length;return i.leftover=f.slice(t),f.slice(0,t)}}return f.length>=a?(i.leftover=f.slice(a),f.slice(0,a)):null},h=m();if(h)return h;let g=_(i);for(;Date.now()<d;){let e=d-Date.now(),t=i.pendingRead??g.read();i.pendingRead=t;let n,r=new Promise(t=>{n=setTimeout(()=>t(`__timeout`),e)}),a;try{a=await Promise.race([t,r])}finally{n&&clearTimeout(n)}if(a===`__timeout`)break;if(i.pendingRead=void 0,a.done){i.reader=void 0;break}if(a.value?.length){p=f.length,f=s(f,a.value);let e=m();if(e)return e}}return f}async function b(e,t,r){if(r.length>4194304)throw Error(`serial write payload exceeds the ${n}-byte (4 MiB) v1 limit`);return await v(o(e,t)).write(r),r.length}async function x(e,t){return o(e,t).port.getSignals()}async function S(e,t,n){await o(e,t).port.setSignals(n)}function C(e,t){let n=e.get(t);if(!n)throw Error(`unknown hid handle '${t}'`);return n}async function w(e){e.opened||await e.open()}function T(e,n){if(e>4194304)throw Error(`${n} exceeds the ${t}-byte (4 MiB) v1 limit`)}function E(e){let t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),t}async function D(t,n){return(await n.getDevices()).map(n=>e(t.register(n),n))}async function O(t,n,r){let i=await n.requestDevice({filters:r});if(i.length===0)throw Error(`No device selected.`);return i.map(n=>e(t.register(n),n))}function k(t,n){return e(n,C(t,n))}async function A(e,t){await C(e,t).open()}async function j(e,t){await C(e,t).close()}async function M(e,t,n,r){T(r.byteLength,`send report payload`);let i=C(e,t);await w(i),await i.sendReport(n,r)}async function N(e,t,n,r){T(r.byteLength,`send feature report payload`);let i=C(e,t);await w(i),await i.sendFeatureReport(n,r)}async function P(e,t,n){let r=C(e,t);return await w(r),{reportId:n,bytes:E(await r.receiveFeatureReport(n))}}async function F(e,t,n){let r=C(e,t);await w(r);let i=e=>{n({reportId:e.reportId,bytes:E(e.data)})};return r.addEventListener(`inputreport`,i),()=>r.removeEventListener(`inputreport`,i)}function I(e,t){let n=e.get(t);if(!n)throw Error(`unknown usb handle '${t}'`);return n}function L(e,t){if(e>4194304)throw Error(`${t} exceeds the ${a}-byte (4 MiB) v1 limit`)}function R(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}async function z(e,t){return(await t.getDevices()).map(t=>i(e.register(t),t))}async function B(e,t,n){let r=await t.requestDevice({filters:n});return i(e.register(r),r)}function V(e,t){return i(t,I(e,t))}async function H(e,t){await I(e,t).open()}async function U(e,t){await I(e,t).close()}async function W(e,t,n){await I(e,t).selectConfiguration(n)}async function G(e,t,n){await I(e,t).claimInterface(n)}async function K(e,t,n){await I(e,t).releaseInterface(n)}async function q(e,t,n,r){L(r,`control-in length`);let i=await I(e,t).controlTransferIn(n,r);return{status:i.status??`ok`,bytes:i.data?R(i.data):new ArrayBuffer(0)}}async function J(e,t,n,r){L(r.byteLength,`control-out payload`);let i=await I(e,t).controlTransferOut(n,r);return{status:i.status??`ok`,bytesWritten:i.bytesWritten}}async function Y(e,t,n,r){L(r,`transfer-in length`);let i=await I(e,t).transferIn(n,r);return{status:i.status??`ok`,bytes:i.data?R(i.data):new ArrayBuffer(0)}}async function X(e,t,n,r){L(r.byteLength,`transfer-out payload`);let i=await I(e,t).transferOut(n,r);return{status:i.status??`ok`,bytesWritten:i.bytesWritten}}async function Z(e,t){await I(e,t).reset()}async function Q(e,t,n,r){await I(e,t).clearHalt(n,r)}export{f as A,F as C,d as D,x as E,b as M,m as O,M as S,p as T,D as _,J as a,O as b,H as c,Z as d,W as f,k as g,j as h,q as i,S as j,y as k,K as l,X as m,Q as n,V as o,Y as p,U as r,z as s,G as t,B as u,A as v,h as w,N as x,P as y};